update - 完善 BPMN 协议转换逻辑
This commit is contained in:
parent
f04abb0960
commit
8d79f2a11b
@ -0,0 +1,63 @@
|
||||
package cn.axzo.workflow.core.common.utils;
|
||||
|
||||
import cn.axzo.workflow.common.model.request.bpmn.BpmnCondition;
|
||||
|
||||
/**
|
||||
* 表达式翻译器
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2023/11/16 23:30
|
||||
*/
|
||||
public final class BpmnExpressionTranslator {
|
||||
private BpmnExpressionTranslator() {}
|
||||
|
||||
public static String translateNumber(BpmnCondition condition) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
if ("between".equals(condition.getOperator())) {
|
||||
sb.append("var:")
|
||||
.append(condition.getLeftOperator())
|
||||
.append("('")
|
||||
.append(condition.getFieldCode())
|
||||
.append("', ")
|
||||
.append(condition.getLeftValue())
|
||||
.append(")")
|
||||
.append(" && ")
|
||||
.append("var:")
|
||||
.append(condition.getRightOperator())
|
||||
.append("('")
|
||||
.append(condition.getFieldCode())
|
||||
.append("', ")
|
||||
.append(condition.getRightValue())
|
||||
.append(")");
|
||||
} else {
|
||||
sb.append("var:")
|
||||
.append(condition.getOperator())
|
||||
.append("('")
|
||||
.append(condition.getFieldCode())
|
||||
.append("', ")
|
||||
.append(condition.getDefaultValue())
|
||||
.append(")");
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static String translateRadio(BpmnCondition condition) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
//TODO
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static String translateCheckbox(BpmnCondition condition) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
//TODO
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static String translateString(BpmnCondition condition) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
//TODO
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
}
|
||||
@ -393,36 +393,37 @@ public final class BpmnJsonConverterUtil {
|
||||
} else if (Lists.newArrayList(preNodeIds).size() == 1 && !NODE_CONDITION.equals(bpmnJsonNode.getType())) {
|
||||
mainProcess.addFlowElement(convertJsonToElement(SequenceFlow.class, bpmnJsonNode, mainProcess));
|
||||
} else {
|
||||
// 网关的 SequenceFlow, 需要在这里设置网关的 DefaultFlow, 同时也需要解析这些 SequenceFlow 的条件
|
||||
// 将网关分支的最末级节点 ID 关联到网关的 children 节点上,网关协议转换才算闭环
|
||||
Arrays.stream(preNodeIds).forEach(income -> {
|
||||
bpmnJsonNode.setIncoming(Lists.newArrayList(income));
|
||||
FlowElement sequenceFlow = convertJsonToElement(SequenceFlow.class, bpmnJsonNode, mainProcess);
|
||||
mainProcess.addFlowElement(sequenceFlow);
|
||||
|
||||
setDefaultFlow(bpmnJsonNode, mainProcess, sequenceFlow);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
// 只有网关才会涉及到 branch
|
||||
List<String> conditions = new ArrayList<>();
|
||||
List<String> branchLastNodeIds = new ArrayList<>();
|
||||
if (!CollectionUtils.isEmpty(bpmnJsonNode.getBranches())) {
|
||||
Gateway gateway = (Gateway) flowElement;
|
||||
for (BpmnJsonNode branch : bpmnJsonNode.getBranches()) {
|
||||
|
||||
// branch == node_condition
|
||||
if (Objects.nonNull(branch.getChildren())) {
|
||||
conditions.add(create(branch.getChildren(), mainProcess, bpmnModel, flowElement.getId()));
|
||||
} else {
|
||||
bpmnJsonNode.getChildren().setIncoming(Lists.newArrayList(bpmnJsonNode.getId()));
|
||||
FlowElement sequenceFlow = convertJsonToElement(SequenceFlow.class, bpmnJsonNode.getChildren(),
|
||||
mainProcess);
|
||||
mainProcess.addFlowElement(sequenceFlow);
|
||||
BpmnJsonNode nextJsonNode = Objects.isNull(branch.getChildren()) ? bpmnJsonNode.getChildren() :
|
||||
branch.getChildren();
|
||||
nextJsonNode.setIncoming(Lists.newArrayList(gateway.getId()));
|
||||
|
||||
// 判断这个是不是默认流
|
||||
if (Objects.nonNull(branch.getProperty()) && Boolean.TRUE.equals(branch.getProperty().getDefaultBranch())) {
|
||||
Gateway gateway = (Gateway) flowElement;
|
||||
gateway.setDefaultFlow(sequenceFlow.getId());
|
||||
}
|
||||
// 将 node_condition 放入计算节点的上级属性中,方便顺序流转换器对条件进行处理
|
||||
nextJsonNode.setPreJsonNode(branch);
|
||||
SequenceFlow sequenceFlow = (SequenceFlow) convertJsonToElement(SequenceFlow.class, nextJsonNode,
|
||||
mainProcess);
|
||||
mainProcess.addFlowElement(sequenceFlow);
|
||||
|
||||
// 设置网关默认流
|
||||
if (Objects.nonNull(branch.getProperty()) && Boolean.TRUE.equals(branch.getProperty().getDefaultBranch())) {
|
||||
gateway.setDefaultFlow(sequenceFlow.getId());
|
||||
}
|
||||
|
||||
if (Objects.nonNull(branch.getChildren())) {
|
||||
branchLastNodeIds.add(create(branch.getChildren(), mainProcess, bpmnModel));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -432,12 +433,10 @@ public final class BpmnJsonConverterUtil {
|
||||
if (Objects.isNull(children) || Objects.equals(NODE_EMPTY, children.getType()) || !StringUtils.hasLength(children.getId())) {
|
||||
return flowElement.getId();
|
||||
} else {
|
||||
if (!CollectionUtils.isEmpty(conditions)) {
|
||||
// 由于不是通过 create 方法解析 node_condition, 所以单独用一个字段来传递它
|
||||
children.setPreJsonNode(bpmnJsonNode);
|
||||
return create(children, mainProcess, bpmnModel, conditions.toArray(new String[0]));
|
||||
if (CollectionUtils.isEmpty(branchLastNodeIds)) {
|
||||
return create(children, mainProcess, bpmnModel, flowElement.getId());
|
||||
}
|
||||
return create(children, mainProcess, bpmnModel, flowElement.getId());
|
||||
return create(children, mainProcess, bpmnModel, branchLastNodeIds.toArray(new String[0]));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -79,7 +79,7 @@
|
||||
<jsonValue><![CDATA[{"id":"1","parentId":"0","type":"NODE_STARTER","name":"发起人"}]]></jsonValue>
|
||||
</extensionElements>
|
||||
</userTask>
|
||||
<sequenceFlow id="SequenceFlowId_8e353e5818344191a2cfd7f38bee6710" sourceRef="startEventNode"
|
||||
<sequenceFlow id="SequenceFlowId_cfb406084aa14934a68dabc8583b17de" sourceRef="startEventNode"
|
||||
targetRef="1"></sequenceFlow>
|
||||
<userTask id="2" name="一级审批" flowable:assignee="${assigneeName}"
|
||||
flowable:skipExpression="${_INTERNAL_SKIP_USER_TASK}">
|
||||
@ -145,10 +145,11 @@
|
||||
<completionCondition>${nrOfInstances == nrOfCompletedInstances}</completionCondition>
|
||||
</multiInstanceLoopCharacteristics>
|
||||
</userTask>
|
||||
<sequenceFlow id="SequenceFlowId_fc554bfb59f741db937cad57e35a097a" sourceRef="1" targetRef="2"></sequenceFlow>
|
||||
<sequenceFlow id="SequenceFlowId_6a8071c849854242904efe3dbcaa92cc" sourceRef="1" targetRef="2"></sequenceFlow>
|
||||
<exclusiveGateway id="3" name="排它网关"
|
||||
default="SequenceFlowId_78565be4afe34c83958b99f0a04c6e63"></exclusiveGateway>
|
||||
<sequenceFlow id="SequenceFlowId_43aa19e917dd4cf7a4e9100b816f2de4" sourceRef="2" targetRef="3"></sequenceFlow>
|
||||
default="SequenceFlowId_180b9ce16f3049cd8e93036ab3b7d93a"></exclusiveGateway>
|
||||
<sequenceFlow id="SequenceFlowId_c65a855af7394c4f9fb2a9e7d37bffdd" sourceRef="2" targetRef="3"></sequenceFlow>
|
||||
<sequenceFlow id="SequenceFlowId_7ba21602ba2240b68bba3262e3305b19" sourceRef="3" targetRef="7"></sequenceFlow>
|
||||
<userTask id="7" name="条件1审核节点" flowable:assignee="${assigneeName}"
|
||||
flowable:skipExpression="${_INTERNAL_SKIP_USER_TASK}">
|
||||
<extensionElements>
|
||||
@ -213,7 +214,6 @@
|
||||
<completionCondition>${nrOfInstances == nrOfCompletedInstances}</completionCondition>
|
||||
</multiInstanceLoopCharacteristics>
|
||||
</userTask>
|
||||
<sequenceFlow id="SequenceFlowId_b6cd939ce7704661ba661ca682dbc024" sourceRef="3" targetRef="7"></sequenceFlow>
|
||||
<serviceTask id="8" name="条件1抄送节点">
|
||||
<extensionElements>
|
||||
<nodeType><![CDATA[NODE_CARBON_COPY]]></nodeType>
|
||||
@ -221,7 +221,8 @@
|
||||
<![CDATA[{"id":"8","parentId":"7","type":"NODE_CARBON_COPY","name":"条件1抄送节点"}]]></jsonValue>
|
||||
</extensionElements>
|
||||
</serviceTask>
|
||||
<sequenceFlow id="SequenceFlowId_ada2b583302e4d61bc9636e830948992" sourceRef="7" targetRef="8"></sequenceFlow>
|
||||
<sequenceFlow id="SequenceFlowId_5f3f0fc3cc7945d3a85df2d83e92a076" sourceRef="7" targetRef="8"></sequenceFlow>
|
||||
<sequenceFlow id="SequenceFlowId_5639fdc0199949be8e27f5ab771117e3" sourceRef="3" targetRef="9"></sequenceFlow>
|
||||
<receiveTask id="9" name="条件2业务节点">
|
||||
<extensionElements>
|
||||
<nodeType><![CDATA[NODE_BUSINESS]]></nodeType>
|
||||
@ -229,7 +230,6 @@
|
||||
<![CDATA[{"id":"9","parentId":"5","type":"NODE_BUSINESS","name":"条件2业务节点","property":{"approvalMethod":"nobody","isMultiTask":true,"groupsType":"and"}}]]></jsonValue>
|
||||
</extensionElements>
|
||||
</receiveTask>
|
||||
<sequenceFlow id="SequenceFlowId_efe82a3aa4bf4e7a8ae4b70128da75c1" sourceRef="3" targetRef="9"></sequenceFlow>
|
||||
<userTask id="10" name="条件2审批节点" flowable:assignee="${assigneeName}"
|
||||
flowable:skipExpression="${_INTERNAL_SKIP_USER_TASK}">
|
||||
<extensionElements>
|
||||
@ -253,7 +253,7 @@
|
||||
<completionCondition>${nrOfInstances == nrOfCompletedInstances}</completionCondition>
|
||||
</multiInstanceLoopCharacteristics>
|
||||
</userTask>
|
||||
<sequenceFlow id="SequenceFlowId_7f64c1f2d23f49988d0c55db2767e374" sourceRef="9" targetRef="10"></sequenceFlow>
|
||||
<sequenceFlow id="SequenceFlowId_32c6e1520b004fa799dfbd8032cc2663" sourceRef="9" targetRef="10"></sequenceFlow>
|
||||
<userTask id="13" name="业务节点有审批人" flowable:assignee="${assigneeName}">
|
||||
<extensionElements>
|
||||
<flowable:executionListener event="start"
|
||||
@ -276,8 +276,8 @@
|
||||
<completionCondition>${nrOfInstances == nrOfCompletedInstances}</completionCondition>
|
||||
</multiInstanceLoopCharacteristics>
|
||||
</userTask>
|
||||
<sequenceFlow id="SequenceFlowId_70f9983c76c647988b3393de3e96c901" sourceRef="10" targetRef="13"></sequenceFlow>
|
||||
<sequenceFlow id="SequenceFlowId_78565be4afe34c83958b99f0a04c6e63" sourceRef="3" targetRef="11"></sequenceFlow>
|
||||
<sequenceFlow id="SequenceFlowId_e75b300b48b645acab032cee2cb7550d" sourceRef="10" targetRef="13"></sequenceFlow>
|
||||
<sequenceFlow id="SequenceFlowId_180b9ce16f3049cd8e93036ab3b7d93a" sourceRef="3" targetRef="11"></sequenceFlow>
|
||||
<serviceTask id="11" name="主流程抄送节点">
|
||||
<extensionElements>
|
||||
<nodeType><![CDATA[NODE_CARBON_COPY]]></nodeType>
|
||||
@ -285,16 +285,16 @@
|
||||
<![CDATA[{"id":"11","parentId":"3","type":"NODE_CARBON_COPY","name":"主流程抄送节点"}]]></jsonValue>
|
||||
</extensionElements>
|
||||
</serviceTask>
|
||||
<sequenceFlow id="SequenceFlowId_62c9b56969134213a32bc9ee64235ae9" sourceRef="8" targetRef="11"></sequenceFlow>
|
||||
<sequenceFlow id="SequenceFlowId_112e496257bb4060a6a8c422aa3b52bf" sourceRef="13" targetRef="11"></sequenceFlow>
|
||||
<sequenceFlow id="SequenceFlowId_ae7ec83595e04b69a7927e2e3788d088" sourceRef="8" targetRef="11"></sequenceFlow>
|
||||
<sequenceFlow id="SequenceFlowId_592c79d29f6d4eb08e525d8744860d5d" sourceRef="13" targetRef="11"></sequenceFlow>
|
||||
<endEvent id="endEventNode"></endEvent>
|
||||
<sequenceFlow id="SequenceFlowId_1d2b292c6be54882a5eebfaff6efd276" sourceRef="11"
|
||||
<sequenceFlow id="SequenceFlowId_ae627745e0b642bd9b0cc17ed0693114" sourceRef="11"
|
||||
targetRef="endEventNode"></sequenceFlow>
|
||||
</process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_id">
|
||||
<bpmndi:BPMNPlane bpmnElement="id" id="BPMNPlane_id">
|
||||
<bpmndi:BPMNShape bpmnElement="11" id="BPMNShape_11">
|
||||
<omgdc:Bounds height="60.0" width="100.0" x="920.0" y="101.0"></omgdc:Bounds>
|
||||
<omgdc:Bounds height="60.0" width="100.0" x="920.0" y="158.0"></omgdc:Bounds>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="1" id="BPMNShape_1">
|
||||
<omgdc:Bounds height="60.0" width="100.0" x="80.0" y="130.0"></omgdc:Bounds>
|
||||
@ -303,7 +303,7 @@
|
||||
<omgdc:Bounds height="60.0" width="100.0" x="230.0" y="130.0"></omgdc:Bounds>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="13" id="BPMNShape_13">
|
||||
<omgdc:Bounds height="60.0" width="100.0" x="770.0" y="230.0"></omgdc:Bounds>
|
||||
<omgdc:Bounds height="60.0" width="100.0" x="770.0" y="30.0"></omgdc:Bounds>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="3" id="BPMNShape_3">
|
||||
<omgdc:Bounds height="40.0" width="40.0" x="380.0" y="140.0"></omgdc:Bounds>
|
||||
@ -312,94 +312,94 @@
|
||||
<omgdc:Bounds height="30.0" width="30.0" x="0.0" y="145.0"></omgdc:Bounds>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="7" id="BPMNShape_7">
|
||||
<omgdc:Bounds height="60.0" width="100.0" x="470.0" y="0.0"></omgdc:Bounds>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="8" id="BPMNShape_8">
|
||||
<omgdc:Bounds height="60.0" width="100.0" x="620.0" y="0.0"></omgdc:Bounds>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="9" id="BPMNShape_9">
|
||||
<omgdc:Bounds height="60.0" width="100.0" x="470.0" y="260.0"></omgdc:Bounds>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="endEventNode" id="BPMNShape_endEventNode">
|
||||
<omgdc:Bounds height="30.0" width="30.0" x="1070.0" y="116.0"></omgdc:Bounds>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="10" id="BPMNShape_10">
|
||||
<bpmndi:BPMNShape bpmnElement="8" id="BPMNShape_8">
|
||||
<omgdc:Bounds height="60.0" width="100.0" x="620.0" y="260.0"></omgdc:Bounds>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_112e496257bb4060a6a8c422aa3b52bf"
|
||||
id="BPMNEdge_SequenceFlowId_112e496257bb4060a6a8c422aa3b52bf">
|
||||
<omgdi:waypoint x="870.0" y="260.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="882.0" y="260.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="882.0" y="131.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="920.0" y="131.0"></omgdi:waypoint>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_ada2b583302e4d61bc9636e830948992"
|
||||
id="BPMNEdge_SequenceFlowId_ada2b583302e4d61bc9636e830948992">
|
||||
<bpmndi:BPMNShape bpmnElement="9" id="BPMNShape_9">
|
||||
<omgdc:Bounds height="60.0" width="100.0" x="470.0" y="0.0"></omgdc:Bounds>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="endEventNode" id="BPMNShape_endEventNode">
|
||||
<omgdc:Bounds height="30.0" width="30.0" x="1070.0" y="173.0"></omgdc:Bounds>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="10" id="BPMNShape_10">
|
||||
<omgdc:Bounds height="60.0" width="100.0" x="620.0" y="0.0"></omgdc:Bounds>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_32c6e1520b004fa799dfbd8032cc2663"
|
||||
id="BPMNEdge_SequenceFlowId_32c6e1520b004fa799dfbd8032cc2663">
|
||||
<omgdi:waypoint x="570.0" y="30.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="582.0" y="30.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="582.0" y="30.000000000000007"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="620.0" y="30.000000000000007"></omgdi:waypoint>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_fc554bfb59f741db937cad57e35a097a"
|
||||
id="BPMNEdge_SequenceFlowId_fc554bfb59f741db937cad57e35a097a">
|
||||
<omgdi:waypoint x="180.0" y="160.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="230.0" y="160.0"></omgdi:waypoint>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_43aa19e917dd4cf7a4e9100b816f2de4"
|
||||
id="BPMNEdge_SequenceFlowId_43aa19e917dd4cf7a4e9100b816f2de4">
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_c65a855af7394c4f9fb2a9e7d37bffdd"
|
||||
id="BPMNEdge_SequenceFlowId_c65a855af7394c4f9fb2a9e7d37bffdd">
|
||||
<omgdi:waypoint x="330.0" y="160.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="380.0" y="160.0"></omgdi:waypoint>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_70f9983c76c647988b3393de3e96c901"
|
||||
id="BPMNEdge_SequenceFlowId_70f9983c76c647988b3393de3e96c901">
|
||||
<omgdi:waypoint x="720.0" y="290.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="732.0" y="290.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="732.0" y="260.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="770.0" y="260.0"></omgdi:waypoint>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_b6cd939ce7704661ba661ca682dbc024"
|
||||
id="BPMNEdge_SequenceFlowId_b6cd939ce7704661ba661ca682dbc024">
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_5639fdc0199949be8e27f5ab771117e3"
|
||||
id="BPMNEdge_SequenceFlowId_5639fdc0199949be8e27f5ab771117e3">
|
||||
<omgdi:waypoint x="420.0" y="150.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="432.0" y="150.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="432.0" y="30.000000000000007"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="470.0" y="30.000000000000007"></omgdi:waypoint>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_7f64c1f2d23f49988d0c55db2767e374"
|
||||
id="BPMNEdge_SequenceFlowId_7f64c1f2d23f49988d0c55db2767e374">
|
||||
<omgdi:waypoint x="570.0" y="290.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="620.0" y="290.0"></omgdi:waypoint>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_62c9b56969134213a32bc9ee64235ae9"
|
||||
id="BPMNEdge_SequenceFlowId_62c9b56969134213a32bc9ee64235ae9">
|
||||
<omgdi:waypoint x="720.0" y="30.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="732.0" y="30.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="732.0" y="131.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="920.0" y="131.0"></omgdi:waypoint>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_1d2b292c6be54882a5eebfaff6efd276"
|
||||
id="BPMNEdge_SequenceFlowId_1d2b292c6be54882a5eebfaff6efd276">
|
||||
<omgdi:waypoint x="1020.0" y="131.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="1070.0" y="131.0"></omgdi:waypoint>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_8e353e5818344191a2cfd7f38bee6710"
|
||||
id="BPMNEdge_SequenceFlowId_8e353e5818344191a2cfd7f38bee6710">
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_cfb406084aa14934a68dabc8583b17de"
|
||||
id="BPMNEdge_SequenceFlowId_cfb406084aa14934a68dabc8583b17de">
|
||||
<omgdi:waypoint x="30.0" y="160.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="80.0" y="160.0"></omgdi:waypoint>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_78565be4afe34c83958b99f0a04c6e63"
|
||||
id="BPMNEdge_SequenceFlowId_78565be4afe34c83958b99f0a04c6e63">
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_5f3f0fc3cc7945d3a85df2d83e92a076"
|
||||
id="BPMNEdge_SequenceFlowId_5f3f0fc3cc7945d3a85df2d83e92a076">
|
||||
<omgdi:waypoint x="570.0" y="290.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="620.0" y="290.0"></omgdi:waypoint>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_ae7ec83595e04b69a7927e2e3788d088"
|
||||
id="BPMNEdge_SequenceFlowId_ae7ec83595e04b69a7927e2e3788d088">
|
||||
<omgdi:waypoint x="720.0" y="290.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="732.0" y="290.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="732.0" y="188.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="920.0" y="188.0"></omgdi:waypoint>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_592c79d29f6d4eb08e525d8744860d5d"
|
||||
id="BPMNEdge_SequenceFlowId_592c79d29f6d4eb08e525d8744860d5d">
|
||||
<omgdi:waypoint x="870.0" y="60.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="882.0" y="60.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="882.0" y="188.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="920.0" y="188.0"></omgdi:waypoint>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_ae627745e0b642bd9b0cc17ed0693114"
|
||||
id="BPMNEdge_SequenceFlowId_ae627745e0b642bd9b0cc17ed0693114">
|
||||
<omgdi:waypoint x="1020.0" y="188.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="1070.0" y="188.0"></omgdi:waypoint>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_180b9ce16f3049cd8e93036ab3b7d93a"
|
||||
id="BPMNEdge_SequenceFlowId_180b9ce16f3049cd8e93036ab3b7d93a">
|
||||
<omgdi:waypoint x="420.0" y="160.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="434.0" y="160.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="434.0" y="131.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="920.0" y="131.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="434.0" y="188.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="920.0" y="188.0"></omgdi:waypoint>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_efe82a3aa4bf4e7a8ae4b70128da75c1"
|
||||
id="BPMNEdge_SequenceFlowId_efe82a3aa4bf4e7a8ae4b70128da75c1">
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_7ba21602ba2240b68bba3262e3305b19"
|
||||
id="BPMNEdge_SequenceFlowId_7ba21602ba2240b68bba3262e3305b19">
|
||||
<omgdi:waypoint x="420.0" y="170.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="432.0" y="170.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="432.0" y="290.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="470.0" y="290.0"></omgdi:waypoint>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_6a8071c849854242904efe3dbcaa92cc"
|
||||
id="BPMNEdge_SequenceFlowId_6a8071c849854242904efe3dbcaa92cc">
|
||||
<omgdi:waypoint x="180.0" y="160.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="230.0" y="160.0"></omgdi:waypoint>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlowId_e75b300b48b645acab032cee2cb7550d"
|
||||
id="BPMNEdge_SequenceFlowId_e75b300b48b645acab032cee2cb7550d">
|
||||
<omgdi:waypoint x="720.0" y="30.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="732.0" y="30.0"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="732.0" y="60.00000000000001"></omgdi:waypoint>
|
||||
<omgdi:waypoint x="770.0" y="60.00000000000001"></omgdi:waypoint>
|
||||
</bpmndi:BPMNEdge>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</definitions>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user