2
1
yuedefeng 6 жил өмнө
parent
commit
b70855644b

+ 59 - 1
src/main/java/com/common/workflow/service/activiti/ActivitiService.java

@@ -17,6 +17,8 @@ import javax.imageio.ImageIO;
 import javax.servlet.http.HttpServletResponse;
 
 import com.common.workflow.service.dto.ActiHistoricTaskDTO;
+import com.common.workflow.web.rest.vm.MultiActiCompleteVM;
+import com.common.workflow.web.rest.vm.MultiOrgAuditVM;
 import org.activiti.bpmn.model.BpmnModel;
 import org.activiti.bpmn.model.FlowNode;
 import org.activiti.bpmn.model.SequenceFlow;
@@ -106,6 +108,55 @@ public class ActivitiService {
         //taskService.complete(myTask.getId(), vars, true);
 
 
+    }
+
+    /**
+     *
+     * <p>描述: 多实例,下一步</p>
+     */
+    public void multiCompleteTask(String processKey, String businessKey, String userNames, List<MultiOrgAuditVM> multiOrgAudits, String userId, String result, String remarks) {
+
+        Task myTask = taskService.createTaskQuery()
+            .processDefinitionKey(processKey)
+            .taskCandidateOrAssigned(userId)
+            //.taskAssignee(userId)
+            .processVariableValueEquals("businessKey", businessKey)
+            .singleResult();
+
+        /*List<Task> testTasks = taskService.createTaskQuery()
+            .processDefinitionKey(processKey)
+            .taskCandidateOrAssigned(userId)
+            //.taskAssignee(userId)
+            .processVariableValueEquals("businessKey", businessKey)
+            .list();*/
+
+        //获取流程实例
+        taskService.claim(myTask.getId(), userId);
+
+        Map<String,Object> vars = new HashMap<String,Object>();
+        vars.put("users", userNames);
+        vars.put("result", Integer.parseInt(result));
+
+        List<String> orgInfos = new ArrayList<>();
+        for(MultiOrgAuditVM orgInfo : multiOrgAudits) {
+            String orgstr = orgInfo.getOrgId();
+            orgstr += ":" + orgInfo.getOrgName();
+            orgstr += ":" + orgInfo.getUserIds();
+            orgInfos.add(orgstr);
+        }
+
+        vars.put("assigneeList", orgInfos);
+
+        //设置流程变量【基本类型】
+        taskService.setVariableLocal(myTask.getId(), "businessKey", businessKey);
+        taskService.setVariableLocal(myTask.getId(), "users", userNames);
+        taskService.setVariableLocal(myTask.getId(), "result", Integer.parseInt(result));
+        taskService.setVariableLocal(myTask.getId(), "remarks", remarks);
+
+        taskService.complete(myTask.getId(), vars);
+        //taskService.complete(myTask.getId(), vars, true);
+
+
     }
 
     /**
@@ -209,7 +260,7 @@ public class ActivitiService {
             for(HistoricTaskInstance histTask : list) {
 
                 ActiHistoricTaskDTO historicTask = new ActiHistoricTaskDTO();
-
+                String orgName = "";
                 for(HistoricVariableInstance hvi : varList){
                     if(hvi.getTaskId() != null && hvi.getTaskId().equals(histTask.getId())) {
                         if(hvi.getVariableName().equals("businessKey")) {
@@ -223,6 +274,8 @@ public class ActivitiService {
 
                         } else if( hvi.getVariableName().equals("users")) {
                             historicTask.setUsers(hvi.getValue().toString());
+                        } else if( hvi.getVariableName().equals("orgName")) {
+                            orgName = hvi.getValue().toString();
                         }
                     }
 
@@ -246,6 +299,8 @@ public class ActivitiService {
 
                         } else if( hvi.getVariableName().equals("users")) {
                             historicTask.setUsers(hvi.getValue().toString());
+                        } else if( hvi.getVariableName().equals("orgName")) {
+                            orgName = hvi.getValue().toString();
                         }
 
                     }
@@ -254,6 +309,9 @@ public class ActivitiService {
 
                 historicTask.setAssignee(histTask.getAssignee());
                 historicTask.setTaskName(histTask.getName());
+                if(orgName.length() > 0) {
+                    historicTask.setTaskName(histTask.getName() + "-" + orgName);
+                }
                 if(histTask.getStartTime() != null) {
                     historicTask.setStartTime(histTask.getStartTime().getTime());
                 }

+ 22 - 0
src/main/java/com/common/workflow/service/activiti/custom/MultiOrganizeService.java

@@ -0,0 +1,22 @@
+package com.common.workflow.service.activiti.custom;
+
+import org.springframework.stereotype.Service;
+
+/**
+ * Created by gyue on 2019-04-01.
+ */
+@Service("actiMultiOrgService")
+public class MultiOrganizeService {
+
+    public String getOrganizeId(String orgInfo) {
+        return orgInfo.split(":")[0];
+    }
+
+    public String getOrganizeName(String orgInfo) {
+        return orgInfo.split(":")[1];
+    }
+
+    public String getAssignees(String orgInfo) {
+        return orgInfo.split(":")[2];
+    }
+}

+ 32 - 0
src/main/java/com/common/workflow/service/activiti/custom/MyAssignmentHandler.java

@@ -0,0 +1,32 @@
+package com.common.workflow.service.activiti.custom;
+
+import org.activiti.engine.delegate.DelegateTask;
+import org.activiti.engine.delegate.TaskListener;
+
+import java.util.Arrays;
+
+/**
+ * Created by gyue on 2019-04-01.
+ */
+public class MyAssignmentHandler implements TaskListener {
+
+    public void notify(DelegateTask delegateTask) {
+        //synchronized(this) {
+        // Execute custom identity lookups here
+        String orgInfo = delegateTask.getVariable("assignee").toString();
+        String orgId = orgInfo.split(":")[0];
+        String orgName = orgInfo.split(":")[1];
+        String assignees = orgInfo.split(":")[2];
+
+        //delegateTask.setName(delegateTask.getName() + " - " + orgName);
+        // and then for example call following methods:
+        delegateTask.setVariable("orgId", orgId);
+        delegateTask.setVariable("orgName", orgName);
+        delegateTask.setVariable("users", assignees);
+        delegateTask.setVariableLocal("orgId", orgId);
+        delegateTask.setVariableLocal("orgName", orgName);
+        delegateTask.setVariableLocal("users", assignees);
+        delegateTask.addCandidateUsers(Arrays.asList(assignees.split(",")));
+        //}
+    }
+}

+ 8 - 0
src/main/java/com/common/workflow/web/rest/ActivitiResource.java

@@ -5,6 +5,7 @@ import com.common.workflow.service.dto.ActiHistoricTaskDTO;
 import com.common.workflow.web.rest.vm.ActiCompleteVM;
 import com.common.workflow.web.rest.vm.ActiMyTaskVM;
 import com.common.workflow.web.rest.vm.ActiProcessVM;
+import com.common.workflow.web.rest.vm.MultiActiCompleteVM;
 import org.activiti.engine.task.Task;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -44,6 +45,13 @@ public class ActivitiResource {
         return ResponseEntity.ok("true");
     }
 
+    @PostMapping("/multi-task-complete")
+    public ResponseEntity<String> MultiTaskComplete(@Valid @RequestBody MultiActiCompleteVM actiVm) {
+        activitiService.multiCompleteTask(actiVm.getProcessKey(), actiVm.getBusinessKey(),
+            actiVm.getUserNames(), actiVm.getMultiOrgAudits(), actiVm.getUserId(), actiVm.getResult(), actiVm.getRemarks());
+        return ResponseEntity.ok("true");
+    }
+
     @PostMapping("/my-tasks")
     public ResponseEntity<String> getMyTasks(@Valid @RequestBody ActiMyTaskVM actiVm) {
         String businessKeys = activitiService.findTasksByUserId(actiVm.getProcessKey(), actiVm.getUserId());

+ 79 - 0
src/main/java/com/common/workflow/web/rest/vm/MultiActiCompleteVM.java

@@ -0,0 +1,79 @@
+package com.common.workflow.web.rest.vm;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by gyue on 2019-04-01.
+ */
+public class MultiActiCompleteVM {
+    private String processKey;
+
+    private String businessKey;
+
+    private String userNames;
+
+    private String userId;
+
+    private String result;
+
+    private String remarks;
+
+    private List<MultiOrgAuditVM> multiOrgAudits = new ArrayList<>();
+
+    public String getProcessKey() {
+        return processKey;
+    }
+
+    public void setProcessKey(String processKey) {
+        this.processKey = processKey;
+    }
+
+    public String getBusinessKey() {
+        return businessKey;
+    }
+
+    public void setBusinessKey(String businessKey) {
+        this.businessKey = businessKey;
+    }
+
+    public String getUserNames() {
+        return userNames;
+    }
+
+    public void setUserNames(String userNames) {
+        this.userNames = userNames;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getResult() {
+        return result;
+    }
+
+    public void setResult(String result) {
+        this.result = result;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public List<MultiOrgAuditVM> getMultiOrgAudits() {
+        return multiOrgAudits;
+    }
+
+    public void setMultiOrgAudits(List<MultiOrgAuditVM> multiOrgAudits) {
+        this.multiOrgAudits = multiOrgAudits;
+    }
+}

+ 36 - 0
src/main/java/com/common/workflow/web/rest/vm/MultiOrgAuditVM.java

@@ -0,0 +1,36 @@
+package com.common.workflow.web.rest.vm;
+
+import java.util.List;
+
+/**
+ * Created by gyue on 2019-04-01.
+ */
+public class MultiOrgAuditVM {
+    private String orgId;
+    private String orgName;
+    private String userIds;
+
+    public String getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(String orgId) {
+        this.orgId = orgId;
+    }
+
+    public String getOrgName() {
+        return orgName;
+    }
+
+    public void setOrgName(String orgName) {
+        this.orgName = orgName;
+    }
+
+    public String getUserIds() {
+        return userIds;
+    }
+
+    public void setUserIds(String userIds) {
+        this.userIds = userIds;
+    }
+}

+ 1 - 1
src/main/resources/config/application-dev.yml

@@ -76,7 +76,7 @@ spring:
         asyncExecutorActivate: false
         database-schema-update: false
         check-process-definitions: false
-        process-definition-location-prefix: classpath:/processes/
+        process-definition-location-prefix: classpath:/processes2/
     #    process-definition-location-suffixes:
     #      - **.bpmn
     #      - **.bpmn20.xml

+ 38 - 38
src/main/resources/processes/oil_supplier_apply.bpmn20.xml

@@ -9,19 +9,19 @@
       </extensionElements>
     </userTask>
     <sequenceFlow id="sid-2E4346F3-7362-419A-A96F-2ED4DCE44A52" sourceRef="startEvent1" targetRef="sid-F5587778-2194-43BD-B5A9-23041685B24E"></sequenceFlow>
-    <userTask id="sid-F067FA1C-2CD1-4F76-9C1C-D8CDA1D8E08F" name="二级单位初审 - ${assignee}" activiti:assignee="${assignee}">
+    <userTask id="sid-F067FA1C-2CD1-4F76-9C1C-D8CDA1D8E08F" name="二级单位初审">
       <extensionElements>
-        <modeler:initiator-can-complete xmlns:modeler="http://activiti.com/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
+        <activiti:taskListener event="create" class="com.common.workflow.service.activiti.custom.MyAssignmentHandler"></activiti:taskListener>
       </extensionElements>
       <multiInstanceLoopCharacteristics isSequential="false" activiti:collection="assigneeList" activiti:elementVariable="assignee"></multiInstanceLoopCharacteristics>
     </userTask>
     <sequenceFlow id="sid-E1492287-6937-4732-84DA-1DC63BFF53FD" sourceRef="sid-F5587778-2194-43BD-B5A9-23041685B24E" targetRef="sid-F067FA1C-2CD1-4F76-9C1C-D8CDA1D8E08F"></sequenceFlow>
     <exclusiveGateway id="sid-9066F48C-509C-4652-B697-A7F0E400D57A"></exclusiveGateway>
-    <userTask id="sid-79DD1999-5B8D-48D7-9044-B72F48E7049A" name="业务处室专业审核 - ${assignee}" activiti:assignee="${assignee}">
+    <userTask id="sid-79DD1999-5B8D-48D7-9044-B72F48E7049A" name="业务处室专业审核">
       <extensionElements>
-        <modeler:initiator-can-complete xmlns:modeler="http://activiti.com/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
+        <activiti:taskListener event="create" class="com.common.workflow.service.activiti.custom.MyAssignmentHandler"></activiti:taskListener>
       </extensionElements>
-      <multiInstanceLoopCharacteristics isSequential="false" activiti:collection="assigneeList"></multiInstanceLoopCharacteristics>
+      <multiInstanceLoopCharacteristics isSequential="false" activiti:collection="assigneeList" activiti:elementVariable="assignee"></multiInstanceLoopCharacteristics>
     </userTask>
     <exclusiveGateway id="sid-83F82DD8-F857-4908-9A4C-6C62A42F5207"></exclusiveGateway>
     <sequenceFlow id="sid-6859CEC6-ACF1-44CD-9F6D-E2A069698817" sourceRef="sid-79DD1999-5B8D-48D7-9044-B72F48E7049A" targetRef="sid-83F82DD8-F857-4908-9A4C-6C62A42F5207"></sequenceFlow>
@@ -43,7 +43,6 @@
     </userTask>
     <sequenceFlow id="sid-5F84AE23-5BA1-4EFB-B081-9D0B3EDBF6DD" sourceRef="sid-BDC3C155-2809-4174-850F-15B855DF4755" targetRef="sid-B58CF8B7-506C-4F18-B36B-6813907179B0"></sequenceFlow>
     <endEvent id="sid-5E6E627C-CD70-4CE3-A830-8610FB0ACC89"></endEvent>
-    <sequenceFlow id="sid-8C699082-5DB7-48F7-BD60-C0017E9B5595" sourceRef="sid-B58CF8B7-506C-4F18-B36B-6813907179B0" targetRef="sid-5E6E627C-CD70-4CE3-A830-8610FB0ACC89"></sequenceFlow>
     <sequenceFlow id="sid-EDD2C1DA-80DA-492F-897E-FA3D9D595754" sourceRef="sid-F067FA1C-2CD1-4F76-9C1C-D8CDA1D8E08F" targetRef="sid-9066F48C-509C-4652-B697-A7F0E400D57A"></sequenceFlow>
     <sequenceFlow id="sid-1E900E80-E7FB-4E3F-AB4F-84FD36F69163" sourceRef="sid-9066F48C-509C-4652-B697-A7F0E400D57A" targetRef="sid-F5587778-2194-43BD-B5A9-23041685B24E">
       <conditionExpression xsi:type="tFormalExpression"><![CDATA[${result==false}]]></conditionExpression>
@@ -64,23 +63,24 @@
     <sequenceFlow id="sid-A5A60A88-A2C8-41C9-9BC2-1D278B1AC78A" sourceRef="sid-2012FCB2-003F-4B4F-93F0-2B75C6615389" targetRef="sid-F5587778-2194-43BD-B5A9-23041685B24E">
       <conditionExpression xsi:type="tFormalExpression"><![CDATA[${result==false}]]></conditionExpression>
     </sequenceFlow>
+    <sequenceFlow id="sid-8C699082-5DB7-48F7-BD60-C0017E9B5595" sourceRef="sid-B58CF8B7-506C-4F18-B36B-6813907179B0" targetRef="sid-5E6E627C-CD70-4CE3-A830-8610FB0ACC89"></sequenceFlow>
   </process>
   <bpmndi:BPMNDiagram id="BPMNDiagram_oil_supplier_apply">
     <bpmndi:BPMNPlane bpmnElement="oil_supplier_apply" id="BPMNPlane_oil_supplier_apply">
       <bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1">
-        <omgdc:Bounds height="30.0" width="30.0" x="100.0" y="163.0"></omgdc:Bounds>
+        <omgdc:Bounds height="30.0" width="30.0" x="20.0" y="163.0"></omgdc:Bounds>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape bpmnElement="sid-F5587778-2194-43BD-B5A9-23041685B24E" id="BPMNShape_sid-F5587778-2194-43BD-B5A9-23041685B24E">
-        <omgdc:Bounds height="80.0" width="100.0" x="175.0" y="138.0"></omgdc:Bounds>
+        <omgdc:Bounds height="80.0" width="100.0" x="95.0" y="138.0"></omgdc:Bounds>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape bpmnElement="sid-F067FA1C-2CD1-4F76-9C1C-D8CDA1D8E08F" id="BPMNShape_sid-F067FA1C-2CD1-4F76-9C1C-D8CDA1D8E08F">
-        <omgdc:Bounds height="80.0" width="100.0" x="320.0" y="138.0"></omgdc:Bounds>
+        <omgdc:Bounds height="77.0" width="133.0" x="240.0" y="139.5"></omgdc:Bounds>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape bpmnElement="sid-9066F48C-509C-4652-B697-A7F0E400D57A" id="BPMNShape_sid-9066F48C-509C-4652-B697-A7F0E400D57A">
-        <omgdc:Bounds height="40.0" width="40.0" x="465.0" y="158.0"></omgdc:Bounds>
+        <omgdc:Bounds height="40.0" width="40.0" x="425.0" y="158.0"></omgdc:Bounds>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape bpmnElement="sid-79DD1999-5B8D-48D7-9044-B72F48E7049A" id="BPMNShape_sid-79DD1999-5B8D-48D7-9044-B72F48E7049A">
-        <omgdc:Bounds height="80.0" width="100.0" x="550.0" y="138.0"></omgdc:Bounds>
+        <omgdc:Bounds height="78.0" width="129.0" x="515.0" y="139.0"></omgdc:Bounds>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape bpmnElement="sid-83F82DD8-F857-4908-9A4C-6C62A42F5207" id="BPMNShape_sid-83F82DD8-F857-4908-9A4C-6C62A42F5207">
         <omgdc:Bounds height="40.0" width="40.0" x="695.0" y="158.0"></omgdc:Bounds>
@@ -92,71 +92,71 @@
         <omgdc:Bounds height="40.0" width="40.0" x="925.0" y="158.0"></omgdc:Bounds>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape bpmnElement="sid-BDC3C155-2809-4174-850F-15B855DF4755" id="BPMNShape_sid-BDC3C155-2809-4174-850F-15B855DF4755">
-        <omgdc:Bounds height="80.0" width="100.0" x="1010.0" y="138.0"></omgdc:Bounds>
+        <omgdc:Bounds height="80.0" width="100.0" x="1030.0" y="138.0"></omgdc:Bounds>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape bpmnElement="sid-B58CF8B7-506C-4F18-B36B-6813907179B0" id="BPMNShape_sid-B58CF8B7-506C-4F18-B36B-6813907179B0">
-        <omgdc:Bounds height="80.0" width="100.0" x="1010.0" y="255.0"></omgdc:Bounds>
+        <omgdc:Bounds height="80.0" width="100.0" x="1195.0" y="138.0"></omgdc:Bounds>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape bpmnElement="sid-5E6E627C-CD70-4CE3-A830-8610FB0ACC89" id="BPMNShape_sid-5E6E627C-CD70-4CE3-A830-8610FB0ACC89">
-        <omgdc:Bounds height="28.0" width="28.0" x="1155.0" y="281.0"></omgdc:Bounds>
+        <omgdc:Bounds height="28.0" width="28.0" x="1350.0" y="164.0"></omgdc:Bounds>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge bpmnElement="sid-386D9369-2DA0-482E-AF5C-AC4ECA4FBE8A" id="BPMNEdge_sid-386D9369-2DA0-482E-AF5C-AC4ECA4FBE8A">
         <omgdi:waypoint x="715.5" y="197.5"></omgdi:waypoint>
         <omgdi:waypoint x="715.5" y="255.0"></omgdi:waypoint>
-        <omgdi:waypoint x="225.0" y="255.0"></omgdi:waypoint>
-        <omgdi:waypoint x="225.0" y="218.0"></omgdi:waypoint>
+        <omgdi:waypoint x="145.0" y="255.0"></omgdi:waypoint>
+        <omgdi:waypoint x="145.0" y="218.0"></omgdi:waypoint>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge bpmnElement="sid-9FDAE1C5-6D80-4A60-9EC3-6E96E950E8D2" id="BPMNEdge_sid-9FDAE1C5-6D80-4A60-9EC3-6E96E950E8D2">
         <omgdi:waypoint x="734.5833333333334" y="178.41666666666666"></omgdi:waypoint>
         <omgdi:waypoint x="780.0" y="178.2183406113537"></omgdi:waypoint>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge bpmnElement="sid-EDD2C1DA-80DA-492F-897E-FA3D9D595754" id="BPMNEdge_sid-EDD2C1DA-80DA-492F-897E-FA3D9D595754">
-        <omgdi:waypoint x="420.0" y="178.2164502164502"></omgdi:waypoint>
-        <omgdi:waypoint x="465.4130434782609" y="178.41304347826087"></omgdi:waypoint>
+        <omgdi:waypoint x="373.0" y="178.23920863309354"></omgdi:waypoint>
+        <omgdi:waypoint x="425.427797833935" y="178.42779783393502"></omgdi:waypoint>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge bpmnElement="sid-5F84AE23-5BA1-4EFB-B081-9D0B3EDBF6DD" id="BPMNEdge_sid-5F84AE23-5BA1-4EFB-B081-9D0B3EDBF6DD">
-        <omgdi:waypoint x="1060.0" y="218.0"></omgdi:waypoint>
-        <omgdi:waypoint x="1060.0" y="255.0"></omgdi:waypoint>
+        <omgdi:waypoint x="1130.0" y="178.0"></omgdi:waypoint>
+        <omgdi:waypoint x="1195.0" y="178.0"></omgdi:waypoint>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge bpmnElement="sid-62ABE0B0-8C07-40D5-B455-404CAAC56AAF" id="BPMNEdge_sid-62ABE0B0-8C07-40D5-B455-404CAAC56AAF">
-        <omgdi:waypoint x="964.5833333333334" y="178.41666666666666"></omgdi:waypoint>
-        <omgdi:waypoint x="1010.0" y="178.2183406113537"></omgdi:waypoint>
+        <omgdi:waypoint x="964.570895522388" y="178.42910447761193"></omgdi:waypoint>
+        <omgdi:waypoint x="1030.0" y="178.18587360594796"></omgdi:waypoint>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge bpmnElement="sid-6859CEC6-ACF1-44CD-9F6D-E2A069698817" id="BPMNEdge_sid-6859CEC6-ACF1-44CD-9F6D-E2A069698817">
-        <omgdi:waypoint x="650.0" y="178.2164502164502"></omgdi:waypoint>
-        <omgdi:waypoint x="695.4130434782609" y="178.41304347826087"></omgdi:waypoint>
+        <omgdi:waypoint x="644.0" y="178.2371323529412"></omgdi:waypoint>
+        <omgdi:waypoint x="695.4261992619926" y="178.42619926199262"></omgdi:waypoint>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge bpmnElement="sid-1E900E80-E7FB-4E3F-AB4F-84FD36F69163" id="BPMNEdge_sid-1E900E80-E7FB-4E3F-AB4F-84FD36F69163">
-        <omgdi:waypoint x="485.5" y="197.5"></omgdi:waypoint>
-        <omgdi:waypoint x="485.5" y="242.0"></omgdi:waypoint>
-        <omgdi:waypoint x="225.0" y="242.0"></omgdi:waypoint>
-        <omgdi:waypoint x="225.0" y="218.0"></omgdi:waypoint>
+        <omgdi:waypoint x="445.5" y="197.5"></omgdi:waypoint>
+        <omgdi:waypoint x="445.5" y="242.0"></omgdi:waypoint>
+        <omgdi:waypoint x="145.0" y="242.0"></omgdi:waypoint>
+        <omgdi:waypoint x="145.0" y="218.0"></omgdi:waypoint>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge bpmnElement="sid-4C2A5ADA-8255-4945-B7BE-4364FC164FB8" id="BPMNEdge_sid-4C2A5ADA-8255-4945-B7BE-4364FC164FB8">
         <omgdi:waypoint x="880.0" y="178.2164502164502"></omgdi:waypoint>
         <omgdi:waypoint x="925.4130434782609" y="178.41304347826087"></omgdi:waypoint>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge bpmnElement="sid-914F4AEC-3A24-4B7B-8979-CA673FC8822D" id="BPMNEdge_sid-914F4AEC-3A24-4B7B-8979-CA673FC8822D">
-        <omgdi:waypoint x="504.5833333333333" y="178.41666666666666"></omgdi:waypoint>
-        <omgdi:waypoint x="550.0" y="178.2183406113537"></omgdi:waypoint>
+        <omgdi:waypoint x="464.57116104868913" y="178.42883895131087"></omgdi:waypoint>
+        <omgdi:waypoint x="515.0" y="178.24067164179104"></omgdi:waypoint>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge bpmnElement="sid-A5A60A88-A2C8-41C9-9BC2-1D278B1AC78A" id="BPMNEdge_sid-A5A60A88-A2C8-41C9-9BC2-1D278B1AC78A">
         <omgdi:waypoint x="945.5" y="197.5"></omgdi:waypoint>
         <omgdi:waypoint x="945.5" y="273.0"></omgdi:waypoint>
-        <omgdi:waypoint x="225.0" y="273.0"></omgdi:waypoint>
-        <omgdi:waypoint x="225.0" y="218.0"></omgdi:waypoint>
+        <omgdi:waypoint x="145.0" y="273.0"></omgdi:waypoint>
+        <omgdi:waypoint x="145.0" y="218.0"></omgdi:waypoint>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge bpmnElement="sid-2E4346F3-7362-419A-A96F-2ED4DCE44A52" id="BPMNEdge_sid-2E4346F3-7362-419A-A96F-2ED4DCE44A52">
-        <omgdi:waypoint x="130.0" y="178.0"></omgdi:waypoint>
-        <omgdi:waypoint x="175.0" y="178.0"></omgdi:waypoint>
+        <omgdi:waypoint x="50.0" y="178.0"></omgdi:waypoint>
+        <omgdi:waypoint x="95.0" y="178.0"></omgdi:waypoint>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge bpmnElement="sid-E1492287-6937-4732-84DA-1DC63BFF53FD" id="BPMNEdge_sid-E1492287-6937-4732-84DA-1DC63BFF53FD">
-        <omgdi:waypoint x="275.0" y="178.0"></omgdi:waypoint>
-        <omgdi:waypoint x="320.0" y="178.0"></omgdi:waypoint>
+        <omgdi:waypoint x="195.0" y="178.0"></omgdi:waypoint>
+        <omgdi:waypoint x="240.0" y="178.0"></omgdi:waypoint>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge bpmnElement="sid-8C699082-5DB7-48F7-BD60-C0017E9B5595" id="BPMNEdge_sid-8C699082-5DB7-48F7-BD60-C0017E9B5595">
-        <omgdi:waypoint x="1110.0" y="295.0"></omgdi:waypoint>
-        <omgdi:waypoint x="1155.0" y="295.0"></omgdi:waypoint>
+        <omgdi:waypoint x="1295.0" y="178.0"></omgdi:waypoint>
+        <omgdi:waypoint x="1350.0" y="178.0"></omgdi:waypoint>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>