仿钉钉流程设计-并行网关的实现

This commit is contained in:
jason
2024-04-07 15:37:25 +08:00
parent 32809c3edb
commit df936deeca
2 changed files with 18 additions and 3 deletions

View File

@@ -385,12 +385,14 @@ public class BpmnModelUtils {
switch (nodeType) {
case START_EVENT_NODE:
case APPROVE_USER_NODE:
case SCRIPT_TASK_NODE: {
case SCRIPT_TASK_NODE:
case PARALLEL_GATEWAY_JOIN_NODE:{
addBpmnSequenceFlowElement(mainProcess, node.getId(), childNode.getId(), null, null);
// 递归调用后续节点
addBpmnSequenceFlow(mainProcess, childNode, endId);
break;
}
case PARALLEL_GATEWAY_FORK_NODE:
case EXCLUSIVE_GATEWAY_NODE: {
String gateWayEndId = (childNode == null || childNode.getId() == null) ? BpmnModelConstants.END_EVENT_ID : childNode.getId();
List<BpmSimpleModelNodeVO> conditionNodes = node.getConditionNodes();
@@ -449,6 +451,10 @@ public class BpmnModelUtils {
case EXCLUSIVE_GATEWAY_NODE:
addBpmnExclusiveGatewayNode(mainProcess, simpleModelNode);
break;
case PARALLEL_GATEWAY_FORK_NODE:
case PARALLEL_GATEWAY_JOIN_NODE:
addBpmnParallelGatewayNode(mainProcess, simpleModelNode);
break;
default: {
// TODO 其它节点类型的实现
}
@@ -472,6 +478,12 @@ public class BpmnModelUtils {
}
}
private static void addBpmnParallelGatewayNode(Process mainProcess, BpmSimpleModelNodeVO node) {
ParallelGateway parallelGateway = new ParallelGateway();
parallelGateway.setId(node.getId());
mainProcess.addFlowElement(parallelGateway);
}
private static void addBpmnScriptTaSskNode(Process mainProcess, BpmSimpleModelNodeVO node) {
ScriptTask scriptTask = new ScriptTask();
scriptTask.setId(node.getId());