Skip to content

Commit cd0f132

Browse files
YunaiVgitee-org
authored andcommitted
!712 BPM-子流程
Merge pull request !712 from Lesan/feature/bpm-子流程
2 parents a061265 + 2f8f545 commit cd0f132

File tree

13 files changed

+567
-24
lines changed

13 files changed

+567
-24
lines changed

src/assets/svgs/bpm/child-process.svg

Lines changed: 1 addition & 0 deletions
Loading

src/components/SimpleProcessDesignerV2/src/NodeHandler.vue

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,12 @@
6363
</div>
6464
<div class="handler-item-text">触发器</div>
6565
</div>
66+
<div class="handler-item" @click="addNode(NodeType.CHILD_PROCESS_NODE)">
67+
<div class="handler-item-icon child-process">
68+
<span class="iconfont icon-size icon-child-process"></span>
69+
</div>
70+
<div class="handler-item-text">子流程</div>
71+
</div>
6672
</div>
6773
<template #reference>
6874
<div class="add-icon"><Icon icon="ep:plus" /></div>
@@ -283,6 +289,25 @@ const addNode = (type: number) => {
283289
}
284290
emits('update:childNode', data)
285291
}
292+
if (type === NodeType.CHILD_PROCESS_NODE) {
293+
const data: SimpleFlowNode = {
294+
id: 'Activity_' + generateUUID(),
295+
name: NODE_DEFAULT_NAME.get(NodeType.CHILD_PROCESS_NODE) as string,
296+
showText: '',
297+
type: NodeType.CHILD_PROCESS_NODE,
298+
childNode: props.childNode,
299+
childProcessSetting: {
300+
calledProcessDefinitionKey: '',
301+
calledProcessDefinitionName: '',
302+
async: false,
303+
skipStartUserNode: false,
304+
startUserSetting: {
305+
type: 1
306+
}
307+
}
308+
}
309+
emits('update:childNode', data)
310+
}
286311
}
287312
</script>
288313

src/components/SimpleProcessDesignerV2/src/ProcessNodeTree.vue

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,18 @@
5454
:flow-node="currentNode"
5555
@update:flow-node="handleModelValueUpdate"
5656
/>
57-
<!-- 触发器节点 -->
58-
<TriggerNode
57+
<!-- 触发器节点 -->
58+
<TriggerNode
5959
v-if="currentNode && currentNode.type === NodeType.TRIGGER_NODE"
6060
:flow-node="currentNode"
6161
@update:flow-node="handleModelValueUpdate"
6262
/>
63+
<!-- 子流程节点 -->
64+
<ChildProcessNode
65+
v-if="currentNode && currentNode.type === NodeType.CHILD_PROCESS_NODE"
66+
:flow-node="currentNode"
67+
@update:flow-node="handleModelValueUpdate"
68+
/>
6369
<!-- 递归显示孩子节点 -->
6470
<ProcessNodeTree
6571
v-if="currentNode && currentNode.childNode"
@@ -85,6 +91,7 @@ import InclusiveNode from './nodes/InclusiveNode.vue'
8591
import DelayTimerNode from './nodes/DelayTimerNode.vue'
8692
import RouterNode from './nodes/RouterNode.vue'
8793
import TriggerNode from './nodes/TriggerNode.vue'
94+
import ChildProcessNode from './nodes/ChildProcessNode.vue'
8895
import { SimpleFlowNode, NodeType } from './consts'
8996
import { useWatchNode } from './node'
9097
defineOptions({

src/components/SimpleProcessDesignerV2/src/consts.ts

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ export enum NodeType {
3838
*/
3939
TRIGGER_NODE = 15,
4040

41+
/**
42+
* 子流程节点
43+
*/
44+
CHILD_PROCESS_NODE = 20,
45+
4146
/**
4247
* 条件节点
4348
*/
@@ -128,6 +133,8 @@ export interface SimpleFlowNode {
128133
reasonRequire?: boolean
129134
// 触发器设置
130135
triggerSetting?: TriggerSetting
136+
// 子流程
137+
childProcessSetting?: ChildProcessSetting
131138
}
132139
// 候选人策略枚举 ( 用于审批节点。抄送节点 )
133140
export enum CandidateStrategy {
@@ -512,6 +519,7 @@ NODE_DEFAULT_TEXT.set(NodeType.DELAY_TIMER_NODE, '请设置延迟器')
512519
NODE_DEFAULT_TEXT.set(NodeType.ROUTER_BRANCH_NODE, '请设置路由节点')
513520
NODE_DEFAULT_TEXT.set(NodeType.TRIGGER_NODE, '请设置触发器')
514521
NODE_DEFAULT_TEXT.set(NodeType.TRANSACTOR_NODE, '请设置办理人')
522+
NODE_DEFAULT_TEXT.set(NodeType.CHILD_PROCESS_NODE, '请设置子流程')
515523

516524
export const NODE_DEFAULT_NAME = new Map<number, string>()
517525
NODE_DEFAULT_NAME.set(NodeType.USER_TASK_NODE, '审批人')
@@ -522,6 +530,7 @@ NODE_DEFAULT_NAME.set(NodeType.DELAY_TIMER_NODE, '延迟器')
522530
NODE_DEFAULT_NAME.set(NodeType.ROUTER_BRANCH_NODE, '路由分支')
523531
NODE_DEFAULT_NAME.set(NodeType.TRIGGER_NODE, '触发器')
524532
NODE_DEFAULT_NAME.set(NodeType.TRANSACTOR_NODE, '办理人')
533+
NODE_DEFAULT_NAME.set(NodeType.CHILD_PROCESS_NODE, '子流程')
525534

526535
// 候选人策略。暂时不从字典中取。 后续可能调整。控制显示顺序
527536
export const CANDIDATE_STRATEGY: DictDataVO[] = [
@@ -788,12 +797,38 @@ export type FormTriggerSetting = {
788797
// 更新表单字段配置
789798
updateFormFields?: Record<string, any>,
790799
// 删除表单字段配置
791-
deleteFields?: string[]
800+
deleteFields?: string[]
792801
}
793802

794803
export const TRIGGER_TYPES: DictDataVO[] = [
795804
{ label: 'HTTP 请求', value: TriggerTypeEnum.HTTP_REQUEST },
796805
{ label: '异步 HTTP 请求', value: TriggerTypeEnum.ASYNC_HTTP_REQUEST },
797806
{ label: '修改表单数据', value: TriggerTypeEnum.FORM_UPDATE },
798-
{ label: '删除表单数据', value: TriggerTypeEnum.FORM_DELETE }
807+
{ label: '删除表单数据', value: TriggerTypeEnum.FORM_DELETE }
799808
]
809+
810+
/**
811+
* 子流程节点结构定义
812+
*/
813+
export type ChildProcessSetting = {
814+
calledProcessDefinitionKey: string
815+
calledProcessDefinitionName: string
816+
async: boolean,
817+
inVariables?: IOParameter[],
818+
outVariables?: IOParameter[],
819+
skipStartUserNode: boolean,
820+
startUserSetting: StartUserSetting,
821+
}
822+
823+
export type IOParameter = {
824+
source: string
825+
sourceExpression: string
826+
target: string
827+
targetExpression: string
828+
}
829+
830+
export type StartUserSetting = {
831+
type: number
832+
formField?: string
833+
emptyType?: number
834+
}

0 commit comments

Comments
 (0)