Skip to content

Commit fe55d2a

Browse files
committed
add script view
1 parent 1b9687e commit fe55d2a

20 files changed

Lines changed: 530 additions & 27 deletions

File tree

flow-engine-framework/src/main/java/com/codingapi/flow/script/node/TriggerScript.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public class TriggerScript {
1414
public static final String SCRIPT_DEFAULT = """
1515
// @SCRIPT_TITLE 示例触发节点(打印触发日志)
1616
def run(request){
17-
print('hello trigger node.\n');
17+
print('hello trigger node.\\n');
1818
}
1919
""";
2020

frontend/packages/flow-pc/flow-pc-design/src/components/design-editor/node-components/condition/index.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {Button, Form, Space} from "antd";
33
import React from "react";
44
import {GroovyScriptPreview} from "@/components/script/components/groovy-script-preview";
55
import {EditOutlined} from "@ant-design/icons";
6+
import {ConditionConfigModal} from "@/components/script/modal/condition-config-modal";
67

78
/**
89
* 条件配置
@@ -11,6 +12,7 @@ import {EditOutlined} from "@ant-design/icons";
1112
export const ConditionScript = ()=>{
1213

1314
const [form] = Form.useForm();
15+
const [visible,setVisible] = React.useState(false);
1416

1517
return (
1618
<Form
@@ -35,11 +37,19 @@ export const ConditionScript = ()=>{
3537
<Button
3638
icon={<EditOutlined/>}
3739
onClick={() => {
40+
setVisible(true);
3841
}}
3942
style={{borderRadius: '0 6px 6px 0'}}
4043
>
4144
编辑
4245
</Button>
46+
47+
<ConditionConfigModal
48+
open={visible}
49+
onCancel={()=>{setVisible(false);}}
50+
onConfirm={(value)=>{onChange(value)}}
51+
script={value}
52+
/>
4353
</Space.Compact>
4454
)}
4555
/>

frontend/packages/flow-pc/flow-pc-design/src/components/design-editor/node-components/strategy/router.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
import React from "react";
2-
import {Button, Form, Input, Space} from "antd";
2+
import {Button, Form, Space} from "antd";
33
import {Field, FieldRenderProps} from "@flowgram.ai/fixed-layout-editor";
44
import {GroovyScriptPreview} from "@/components/script/components/groovy-script-preview";
5-
import { EditOutlined } from "@ant-design/icons";
5+
import {EditOutlined} from "@ant-design/icons";
6+
import {RouterConfigModal} from "@/components/script/modal/router-config-modal";
67

78
/**
89
* 路由策略配置
910
* @constructor
1011
*/
1112
export const RouterStrategy:React.FC = () => {
1213
const [form] = Form.useForm();
14+
const [visible,setVisible] = React.useState(false);
1315

1416
return (
1517
<Form
@@ -34,11 +36,21 @@ export const RouterStrategy:React.FC = () => {
3436
<Button
3537
icon={<EditOutlined/>}
3638
onClick={() => {
39+
setVisible(true);
3740
}}
3841
style={{borderRadius: '0 6px 6px 0'}}
3942
>
4043
编辑
4144
</Button>
45+
46+
<RouterConfigModal
47+
open={visible}
48+
script={value}
49+
onCancel={()=>{setVisible(false);}}
50+
onConfirm={(value)=>{
51+
onChange(value);
52+
}}
53+
/>
4254
</Space.Compact>
4355
)}
4456
/>

frontend/packages/flow-pc/flow-pc-design/src/components/design-editor/node-components/strategy/sub-process.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
import React from "react";
2-
import {Button, Form, Input,Space,Switch} from "antd";
2+
import {Button, Form, Space, Switch} from "antd";
33
import {Field, FieldRenderProps} from "@flowgram.ai/fixed-layout-editor";
44
import {GroovyScriptPreview} from "@/components/script/components/groovy-script-preview";
5-
import { EditOutlined } from "@ant-design/icons";
5+
import {EditOutlined} from "@ant-design/icons";
6+
import {SubProcessConfigModal} from "@/components/script/modal/sub-process-config-modal";
67

78
/**
89
* 子流程任务策略
910
* @constructor
1011
*/
1112
export const SubProcessStrategy:React.FC = () => {
1213
const [form] = Form.useForm();
14+
const [visible,setVisible] = React.useState(false);
1315

1416
return (
1517
<Form
@@ -34,11 +36,21 @@ export const SubProcessStrategy:React.FC = () => {
3436
<Button
3537
icon={<EditOutlined/>}
3638
onClick={() => {
39+
setVisible(true);
3740
}}
3841
style={{borderRadius: '0 6px 6px 0'}}
3942
>
4043
编辑
4144
</Button>
45+
46+
<SubProcessConfigModal
47+
open={visible}
48+
onCancel={()=>{setVisible(false);}}
49+
onConfirm={(value)=>{
50+
onChange(value)
51+
}}
52+
script={value}
53+
/>
4254
</Space.Compact>
4355
)}
4456
/>

frontend/packages/flow-pc/flow-pc-design/src/components/design-editor/node-components/strategy/trigger.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
import React from "react";
2-
import {Button, Form, Input, Space} from "antd";
2+
import {Button, Form, Space} from "antd";
33
import {Field, FieldRenderProps} from "@flowgram.ai/fixed-layout-editor";
44
import {GroovyScriptPreview} from "@/components/script/components/groovy-script-preview";
5-
import { EditOutlined } from "@ant-design/icons";
5+
import {EditOutlined} from "@ant-design/icons";
6+
import {TriggerConfigModal} from "@/components/script/modal/trigger-config-modal";
67

78
/**
89
* 触发策略配置
910
* @constructor
1011
*/
1112
export const TriggerStrategy:React.FC = () => {
1213
const [form] = Form.useForm();
14+
const [visible,setVisible] = React.useState(false);
1315

1416
return (
1517
<Form
@@ -34,11 +36,19 @@ export const TriggerStrategy:React.FC = () => {
3436
<Button
3537
icon={<EditOutlined/>}
3638
onClick={() => {
39+
setVisible(true);
3740
}}
3841
style={{borderRadius: '0 6px 6px 0'}}
3942
>
4043
编辑
4144
</Button>
45+
46+
<TriggerConfigModal
47+
open={visible}
48+
onCancel={()=>{setVisible(false);}}
49+
onConfirm={(value)=>{onChange(value)}}
50+
script={value}
51+
/>
4252
</Space.Compact>
4353
)}
4454
/>
Lines changed: 50 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,59 @@
11

22
// 默认发起人范围设置脚本,任意人员
3-
export const DEFAULT_OPERATOR_CREATE_SCRIPT = `
4-
// @SCRIPT_TITLE 任意人员
5-
def run(request){
6-
return true;
7-
}
8-
`;
3+
export const DEFAULT_OPERATOR_CREATE_SCRIPT = `// @SCRIPT_TITLE 任意人员
4+
def run(request){
5+
return true;
6+
}
7+
`;
98

109

1110
// 默认操作人配置脚本,流程创建者
12-
export const DEFAULT_OPERATOR_LOAD_SCRIPT = `
13-
// @SCRIPT_TITLE 流程创建者
14-
def run(request){
15-
return [request.getCreatedOperator()]
16-
}
17-
`;
11+
export const DEFAULT_OPERATOR_LOAD_SCRIPT = `// @SCRIPT_TITLE 流程创建者
12+
def run(request){
13+
return [request.getCreatedOperator()]
14+
}
15+
`;
1816

1917
// 默认节点标题配置脚本,您有一条待办消息
20-
export const DEFAULT_NODE_TITLE_SCRIPT = `
21-
// @SCRIPT_TITLE 您有一条待办消息
22-
def run(request){
23-
return "您有一条待办消息"
24-
}
18+
export const DEFAULT_NODE_TITLE_SCRIPT = `// @SCRIPT_TITLE 您有一条待办消息
19+
def run(request){
20+
return "您有一条待办消息"
21+
}
2522
`
2623

24+
25+
// 默认异常触发,回退至开始节点
26+
export const DEFAULT_ERROR_TRIGGER_SCRIPT = `// @SCRIPT_TITLE 回退至开始节点
27+
def run(request){
28+
return $bind.createErrorThrow(request.getStartNode());
29+
}
30+
`
31+
32+
// 默认条件脚本,默认条件(允许执行)
33+
export const DEFAULT_CONDITION_SCRIPT = `// @SCRIPT_TITLE 默认条件(允许执行)
34+
def run(request){
35+
return true;
36+
}
37+
`
38+
39+
// 默认路由脚本,发起节点
40+
export const DEFAULT_ROUTER_SCRIPT = `// @SCRIPT_TITLE 发起节点
41+
def run(request){
42+
return request.getStartNode().getId();
43+
}
44+
`
45+
46+
// 默认触发脚本,示例触发节点(打印触发日志)
47+
export const DEFAULT_TRIGGER_SCRIPT = `// @SCRIPT_TITLE 示例触发节点(打印触发日志)
48+
def run(request){
49+
print('hello trigger node.\\n');
50+
}
51+
`
52+
53+
54+
// 子流程脚本,创建当前流程
55+
export const DEFAULT_SUB_PROCESS_SCRIPT = `// @SCRIPT_TITLE 创建当前流程
56+
def run(request){
57+
return request.toCreateRequest()
58+
}
59+
`
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import React from "react";
2+
import {GroovyVariableMapping, ScriptType} from "@/components/script/typings";
3+
import {GroovyScriptContent, GroovyScriptModal} from "@/components/script/components/groovy-script-modal";
4+
import {GroovyScriptConvertorUtil} from "@/components/script/utils/convertor";
5+
import {AdvancedScriptEditor} from "@/components/script/components/advanced-script-editor";
6+
import {DEFAULT_CONDITION_SCRIPT} from "@/components/script/default-script";
7+
import {ConditionPluginView} from "@/components/script/plugins/view/condition-view";
8+
9+
export interface ConditionConfigModalProps {
10+
/** 是否展示 **/
11+
open: boolean;
12+
/** 当前脚本 */
13+
script: string;
14+
/** 表单字段(用于动态生成变量) */
15+
variables?: GroovyVariableMapping[];
16+
/** 取消回调 */
17+
onCancel: () => void;
18+
/** 确认回调 */
19+
onConfirm: (script: string) => void;
20+
}
21+
22+
23+
24+
const ConditionConfigContent: React.FC<GroovyScriptContent> = (props) => {
25+
const isAdvance = GroovyScriptConvertorUtil.isCustomScript(props.script);
26+
27+
return (
28+
<>
29+
{isAdvance && (
30+
<AdvancedScriptEditor
31+
{...props}
32+
resetScript={()=>{
33+
return DEFAULT_CONDITION_SCRIPT;
34+
}}
35+
/>
36+
)}
37+
{!isAdvance && (
38+
<ConditionPluginView {...props} />
39+
)}
40+
</>
41+
);
42+
}
43+
44+
export const ConditionConfigModal:React.FC<ConditionConfigModalProps> = (props) => {
45+
return (
46+
<GroovyScriptModal
47+
type={ScriptType.CONDITION}
48+
open={props.open}
49+
script={props.script}
50+
variables={props.variables || []}
51+
onConfirm={props.onConfirm}
52+
onCancel={props.onCancel}
53+
title="条件配置"
54+
content={ConditionConfigContent}
55+
/>
56+
);
57+
}

frontend/packages/flow-pc/flow-pc-design/src/components/script/modal/error-trigger-config-modal.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {GroovyVariableMapping, ScriptType} from "@/components/script/typings";
33
import {GroovyScriptContent, GroovyScriptModal} from "@/components/script/components/groovy-script-modal";
44
import {GroovyScriptConvertorUtil} from "@/components/script/utils/convertor";
55
import {AdvancedScriptEditor} from "@/components/script/components/advanced-script-editor";
6-
import {DEFAULT_NODE_TITLE_SCRIPT} from "@/components/script/default-script";
6+
import {DEFAULT_ERROR_TRIGGER_SCRIPT} from "@/components/script/default-script";
77
import {ErrorTriggerPluginView} from "@/components/script/plugins/view/error-trigger-view";
88

99
export interface ErrorTriggerConfigModalProps {
@@ -30,7 +30,7 @@ const ErrorTriggerConfigContent: React.FC<GroovyScriptContent> = (props) => {
3030
<AdvancedScriptEditor
3131
{...props}
3232
resetScript={()=>{
33-
return DEFAULT_NODE_TITLE_SCRIPT;
33+
return DEFAULT_ERROR_TRIGGER_SCRIPT;
3434
}}
3535
/>
3636
)}
@@ -44,7 +44,7 @@ const ErrorTriggerConfigContent: React.FC<GroovyScriptContent> = (props) => {
4444
export const ErrorTriggerConfigModal:React.FC<ErrorTriggerConfigModalProps> = (props) => {
4545
return (
4646
<GroovyScriptModal
47-
type={ScriptType.TITLE}
47+
type={ScriptType.ERROR_TRIGGER}
4848
open={props.open}
4949
script={props.script}
5050
variables={props.variables || []}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import React from "react";
2+
import {GroovyVariableMapping, ScriptType} from "@/components/script/typings";
3+
import {GroovyScriptContent, GroovyScriptModal} from "@/components/script/components/groovy-script-modal";
4+
import {GroovyScriptConvertorUtil} from "@/components/script/utils/convertor";
5+
import {AdvancedScriptEditor} from "@/components/script/components/advanced-script-editor";
6+
import {DEFAULT_ROUTER_SCRIPT} from "@/components/script/default-script";
7+
import {RouterPluginView} from "@/components/script/plugins/view/router-view";
8+
9+
export interface RouterConfigModalProps {
10+
/** 是否展示 **/
11+
open: boolean;
12+
/** 当前脚本 */
13+
script: string;
14+
/** 表单字段(用于动态生成变量) */
15+
variables?: GroovyVariableMapping[];
16+
/** 取消回调 */
17+
onCancel: () => void;
18+
/** 确认回调 */
19+
onConfirm: (script: string) => void;
20+
}
21+
22+
23+
24+
const RouterConfigContent: React.FC<GroovyScriptContent> = (props) => {
25+
const isAdvance = GroovyScriptConvertorUtil.isCustomScript(props.script);
26+
27+
return (
28+
<>
29+
{isAdvance && (
30+
<AdvancedScriptEditor
31+
{...props}
32+
resetScript={()=>{
33+
return DEFAULT_ROUTER_SCRIPT;
34+
}}
35+
/>
36+
)}
37+
{!isAdvance && (
38+
<RouterPluginView {...props} />
39+
)}
40+
</>
41+
);
42+
}
43+
44+
export const RouterConfigModal:React.FC<RouterConfigModalProps> = (props) => {
45+
return (
46+
<GroovyScriptModal
47+
type={ScriptType.ROUTER}
48+
open={props.open}
49+
script={props.script}
50+
variables={props.variables || []}
51+
onConfirm={props.onConfirm}
52+
onCancel={props.onCancel}
53+
title="理由配置"
54+
content={RouterConfigContent}
55+
/>
56+
);
57+
}

0 commit comments

Comments
 (0)