在前面的一篇文章中,简单举例了一个 工单电子流,【业务功能篇36】Springboot+activiti7 工作流引擎_studyday1的博客-CSDN博客仅有一个子任务,这种一般是针对比较简单的一个遗留问题记录场景,今天再介绍一个,相对比较复杂的流程,多个处理,审批节点任务,通过排他网关组件来进行流程走向,也通过设置Assignment指定任务节点的分配人员
BPMN2.0流程图
1. XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<bpmn2:definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
<bpmn2:process id="COMP_FAIL_PROCESS_DEF_KEY" isExecutable="true">
<bpmn2:startEvent id="start"></bpmn2:startEvent>
<bpmn2:sequenceFlow id="sequenceFlow-cc8e14fa-bc92-48fb-aab1-ec4263dfe04a" sourceRef="start" targetRef="COMP_FAIL_TASK_APPLICATION"></bpmn2:sequenceFlow>
<bpmn2:userTask id="COMP_FAIL_TASK_APPLICATION" name="委托人填写委托分析申请" activiti:assignee="${COMP_FAIL_TASK_APPLICATION_ASSIGNEE}"></bpmn2:userTask>
<bpmn2:sequenceFlow id="sequenceFlow-687cdeb3-5dd1-449b-be05-1002a23289b3" sourceRef="COMP_FAIL_TASK_APPLICATION" targetRef="COMP_FAIL_EXCL_GATEWAY_APPLICATION_DEF_KEY"></bpmn2:sequenceFlow>
<bpmn2:exclusiveGateway id="COMP_FAIL_EXCL_GATEWAY_APPLICATION_DEF_KEY"></bpmn2:exclusiveGateway>
<bpmn2:sequenceFlow id="sequenceFlow-5f567ea0-02ce-4e8d-b08d-f884388a88be" sourceRef="COMP_FAIL_EXCL_GATEWAY_APPLICATION_DEF_KEY" targetRef="end">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${COMP_FAIL_GATEWAY_CONDITION_APPLICATION == false}]]></conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow-1cec0e0f-7c6b-4b3d-8937-917481f82759" sourceRef="COMP_FAIL_EXCL_GATEWAY_APPLICATION_DEF_KEY" targetRef="COMP_FAIL_TASK_CONTACT_REVIEW">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${COMP_FAIL_GATEWAY_CONDITION_APPLICATION == true}]]></conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:userTask id="COMP_FAIL_TASK_CONTACT_REVIEW" name="接口人审核" activiti:assignee="${COMP_FAIL_TASK_CONTACT_REVIEW_ASSIGNEE}"></bpmn2:userTask>
<bpmn2:sequenceFlow id="sequenceFlow-4765a5bb-3156-41a5-8285-e409601f13ae" sourceRef="COMP_FAIL_TASK_CONTACT_REVIEW" targetRef="COMP_FAIL_EXCL_GATEWAY_CONTACT_REVIEW_DEF_KEY"></bpmn2:sequenceFlow>
<bpmn2:exclusiveGateway id="COMP_FAIL_EXCL_GATEWAY_CONTACT_REVIEW_DEF_KEY"></bpmn2:exclusiveGateway>
<bpmn2:sequenceFlow id="sequenceFlow-f4dca2a6-3d2e-463f-9c31-22d74572e970" sourceRef="COMP_FAIL_EXCL_GATEWAY_CONTACT_REVIEW_DEF_KEY" targetRef="COMP_FAIL_TASK_APPLICATION">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${COMP_FAIL_GATEWAY_CONTACT_REVIEW_NORMAL_ADVANCE == false}]]></conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow-fd7f68c7-000f-4c55-a645-aef8d8556cc4" sourceRef="COMP_FAIL_EXCL_GATEWAY_CONTACT_REVIEW_DEF_KEY" targetRef="COMP_FAIL_TASK_ANALYSIS">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${COMP_FAIL_GATEWAY_CONTACT_REVIEW_NORMAL_ADVANCE == true}]]></conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:userTask id="COMP_FAIL_TASK_ANALYSIS" name="分析人分析" activiti:assignee="${COMP_FAIL_TASK_ANALYSIS_ASSIGNEE}"></bpmn2:userTask>
<bpmn2:sequenceFlow id="sequenceFlow-76fbde23-c91c-4911-b3ee-a0eea4643371" sourceRef="COMP_FAIL_TASK_ANALYSIS" targetRef="COMP_FAIL_EXCL_GATEWAY_ANALYSIS_DEF_KEY"></bpmn2:sequenceFlow>
<bpmn2:exclusiveGateway id="COMP_FAIL_EXCL_GATEWAY_ANALYSIS_DEF_KEY"></bpmn2:exclusiveGateway>
<bpmn2:sequenceFlow id="sequenceFlow-a4c486eb-003f-448c-bcea-a9d52c885dd4" sourceRef="COMP_FAIL_EXCL_GATEWAY_ANALYSIS_DEF_KEY" targetRef="COMP_FAIL_TASK_CONTACT_REVIEW">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${COMP_FAIL_GATEWAY_ANALYSIS_NORMAL_ADVANCE == false}]]></conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow-97acf8b0-d186-4c28-9355-323b728ae768" sourceRef="COMP_FAIL_EXCL_GATEWAY_ANALYSIS_DEF_KEY" targetRef="COMP_FAIL_TASK_RISK">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${COMP_FAIL_GATEWAY_ANALYSIS_NORMAL_ADVANCE == true}]]></conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:userTask id="COMP_FAIL_TASK_RISK" name="风险评估及改进" activiti:assignee="${COMP_FAIL_TASK_RISK_ASSIGNEE}"></bpmn2:userTask>
<bpmn2:sequenceFlow id="sequenceFlow-cc7c2ba4-68ea-4481-82d7-51d7ead0ca65" sourceRef="COMP_FAIL_TASK_RISK" targetRef="COMP_FAIL_EXCL_GATEWAY_RISK_DEF_KEY"></bpmn2:sequenceFlow>
<bpmn2:exclusiveGateway id="COMP_FAIL_EXCL_GATEWAY_RISK_DEF_KEY"></bpmn2:exclusiveGateway>
<bpmn2:sequenceFlow id="sequenceFlow-cb4c7a54-524c-4587-bc72-6bc375ed0954" sourceRef="COMP_FAIL_EXCL_GATEWAY_RISK_DEF_KEY" targetRef="COMP_FAIL_TASK_ANALYSIS">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${COMP_FAIL_GATEWAY_RISK_NORMAL_ADVANCE == false}]]></conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow-3cce8ca5-5a47-4733-87ae-3ab6718c0a3a" sourceRef="COMP_FAIL_EXCL_GATEWAY_RISK_DEF_KEY" targetRef="COMP_FAIL_TASK_PM_REVIEW">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${COMP_FAIL_GATEWAY_RISK_NORMAL_ADVANCE == true}]]></conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:userTask id="COMP_FAIL_TASK_PM_REVIEW" name="项目经理审核" activiti:assignee="${COMP_FAIL_TASK_PM_REVIEW_ASSIGNEE}"></bpmn2:userTask>
<bpmn2:sequenceFlow id="sequenceFlow-ea95d696-e932-4528-8f0c-131f46ccbab9" sourceRef="COMP_FAIL_TASK_PM_REVIEW" targetRef="COMP_FAIL_EXCL_GATEWAY_PM_REVIEW_DEF_KEY"></bpmn2:sequenceFlow>
<bpmn2:exclusiveGateway id="COMP_FAIL_EXCL_GATEWAY_PM_REVIEW_DEF_KEY"></bpmn2:exclusiveGateway>
<bpmn2:sequenceFlow id="sequenceFlow-ffcbf3ae-08f3-469a-8d61-263b2ed4c060" sourceRef="COMP_FAIL_EXCL_GATEWAY_PM_REVIEW_DEF_KEY" targetRef="COMP_FAIL_TASK_RISK">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${COMP_FAIL_GATEWAY_PM_REVIEW_NORMAL_ADVANCE == false}]]></conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow-7dc193e2-ff59-4cde-836a-9be05f8c51de" sourceRef="COMP_FAIL_EXCL_GATEWAY_PM_REVIEW_DEF_KEY" targetRef="COMP_FAIL_TASK_ML_REVIEW">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${COMP_FAIL_GATEWAY_PM_REVIEW_NORMAL_ADVANCE == true}]]></conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:userTask id="COMP_FAIL_TASK_ML_REVIEW" name="专家组长审核" activiti:assignee="${COMP_FAIL_TASK_ML_REVIEW_ASSIGNEE}"></bpmn2:userTask>
<bpmn2:sequenceFlow id="sequenceFlow-627920df-9548-4c0e-8885-24de425aabb5" sourceRef="COMP_FAIL_TASK_ML_REVIEW" targetRef="COMP_FAIL_EXCL_GATEWAY_ML_REVIEW_DEF_KEY"></bpmn2:sequenceFlow>
<bpmn2:exclusiveGateway id="COMP_FAIL_EXCL_GATEWAY_ML_REVIEW_DEF_KEY"></bpmn2:exclusiveGateway>
<bpmn2:sequenceFlow id="sequenceFlow-a14fbb1c-8087-483f-82e6-ccb0a0f53102" sourceRef="COMP_FAIL_EXCL_GATEWAY_ML_REVIEW_DEF_KEY" targetRef="COMP_FAIL_TASK_PM_REVIEW">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${COMP_FAIL_GATEWAY_ML_REVIEW_NORMAL_ADVANCE == false}]]></conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow-2dd3ceb3-dd78-46a1-9071-f3b0afc57687" sourceRef="COMP_FAIL_EXCL_GATEWAY_ML_REVIEW_DEF_KEY" targetRef="COMP_FAIL_TASK_CLOSE_REVIEW">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${COMP_FAIL_GATEWAY_ML_REVIEW_NORMAL_ADVANCE == true}]]></conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:userTask id="COMP_FAIL_TASK_CLOSE_REVIEW" name="问题关闭审核" activiti:assignee="${COMP_FAIL_TASK_CLOSE_REVIEW_ASSIGNEE}"></bpmn2:userTask>
<bpmn2:sequenceFlow id="sequenceFlow-ffb442cc-605a-418e-b5c7-5f2d0a0d7c01" sourceRef="COMP_FAIL_TASK_CLOSE_REVIEW" targetRef="COMP_FAIL_EXCL_GATEWAY_CLOSE_REVIEW_DEF_KEY"></bpmn2:sequenceFlow>
<bpmn2:exclusiveGateway id="COMP_FAIL_EXCL_GATEWAY_CLOSE_REVIEW_DEF_KEY"></bpmn2:exclusiveGateway>
<bpmn2:sequenceFlow id="sequenceFlow-81734467-b00d-4f0b-b7a2-7d3caabc56ee" sourceRef="COMP_FAIL_EXCL_GATEWAY_CLOSE_REVIEW_DEF_KEY" targetRef="COMP_FAIL_TASK_ML_REVIEW">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${COMP_FAIL_GATEWAY_CLOSE_REVIEW_NORMAL_ADVANCE == false}]]></conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow-555ca10e-8b0a-45a9-b912-7a2aed7fde59" sourceRef="COMP_FAIL_EXCL_GATEWAY_CLOSE_REVIEW_DEF_KEY" targetRef="COMP_FAIL_TASK_FEEDBACK">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${COMP_FAIL_GATEWAY_CLOSE_REVIEW_NORMAL_ADVANCE == true}]]></conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:userTask id="COMP_FAIL_TASK_FEEDBACK" name="委托人反馈意见" activiti:assignee="${COMP_FAIL_TASK_FEEDBACK_ASSIGNEE}"></bpmn2:userTask>
<bpmn2:sequenceFlow id="sequenceFlow-4e4edef1-d382-4ad8-ad65-3e1fb13b7d65" sourceRef="COMP_FAIL_TASK_FEEDBACK" targetRef="end"></bpmn2:sequenceFlow>
<bpmn2:endEvent id="end"></bpmn2:endEvent>
</bpmn2:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_COMP_FAIL_PROCESS_DEF_KEY">
<bpmndi:BPMNPlane bpmnElement="COMP_FAIL_PROCESS_DEF_KEY" id="BPMNPlane_COMP_FAIL_PROCESS_DEF_KEY">
<bpmndi:BPMNShape bpmnElement="start" id="BPMNShape_start">
<omgdc:Bounds height="30.0" width="30.0" x="0.0" y="123.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="COMP_FAIL_TASK_RISK" id="BPMNShape_COMP_FAIL_TASK_RISK">
<omgdc:Bounds height="60.0" width="100.0" x="800.0" y="100.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="COMP_FAIL_EXCL_GATEWAY_PM_REVIEW_DEF_KEY" id="BPMNShape_COMP_FAIL_EXCL_GATEWAY_PM_REVIEW_DEF_KEY">
<omgdc:Bounds height="40.0" width="40.0" x="1190.0" y="110.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="COMP_FAIL_EXCL_GATEWAY_ANALYSIS_DEF_KEY" id="BPMNShape_COMP_FAIL_EXCL_GATEWAY_ANALYSIS_DEF_KEY">
<omgdc:Bounds height="40.0" width="40.0" x="710.0" y="110.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="COMP_FAIL_EXCL_GATEWAY_CLOSE_REVIEW_DEF_KEY" id="BPMNShape_COMP_FAIL_EXCL_GATEWAY_CLOSE_REVIEW_DEF_KEY">
<omgdc:Bounds height="40.0" width="40.0" x="1670.0" y="150.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="COMP_FAIL_TASK_FEEDBACK" id="BPMNShape_COMP_FAIL_TASK_FEEDBACK">
<omgdc:Bounds height="60.0" width="100.0" x="1760.0" y="150.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="COMP_FAIL_EXCL_GATEWAY_CONTACT_REVIEW_DEF_KEY" id="BPMNShape_COMP_FAIL_EXCL_GATEWAY_CONTACT_REVIEW_DEF_KEY">
<omgdc:Bounds height="40.0" width="40.0" x="470.0" y="210.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="COMP_FAIL_EXCL_GATEWAY_APPLICATION_DEF_KEY" id="BPMNShape_COMP_FAIL_EXCL_GATEWAY_APPLICATION_DEF_KEY">
<omgdc:Bounds height="40.0" width="40.0" x="230.0" y="60.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="COMP_FAIL_TASK_ML_REVIEW" id="BPMNShape_COMP_FAIL_TASK_ML_REVIEW">
<omgdc:Bounds height="60.0" width="100.0" x="1280.0" y="100.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="COMP_FAIL_TASK_CLOSE_REVIEW" id="BPMNShape_COMP_FAIL_TASK_CLOSE_REVIEW">
<omgdc:Bounds height="60.0" width="100.0" x="1520.0" y="200.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="COMP_FAIL_TASK_CONTACT_REVIEW" id="BPMNShape_COMP_FAIL_TASK_CONTACT_REVIEW">
<omgdc:Bounds height="60.0" width="100.0" x="320.0" y="100.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="COMP_FAIL_TASK_ANALYSIS" id="BPMNShape_COMP_FAIL_TASK_ANALYSIS">
<omgdc:Bounds height="60.0" width="100.0" x="560.0" y="200.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="COMP_FAIL_EXCL_GATEWAY_ML_REVIEW_DEF_KEY" id="BPMNShape_COMP_FAIL_EXCL_GATEWAY_ML_REVIEW_DEF_KEY">
<omgdc:Bounds height="40.0" width="40.0" x="1430.0" y="210.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="COMP_FAIL_EXCL_GATEWAY_RISK_DEF_KEY" id="BPMNShape_COMP_FAIL_EXCL_GATEWAY_RISK_DEF_KEY">
<omgdc:Bounds height="40.0" width="40.0" x="950.0" y="210.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="end" id="BPMNShape_end">
<omgdc:Bounds height="30.0" width="30.0" x="1910.0" y="100.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="COMP_FAIL_TASK_PM_REVIEW" id="BPMNShape_COMP_FAIL_TASK_PM_REVIEW">
<omgdc:Bounds height="60.0" width="100.0" x="1040.0" y="200.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="COMP_FAIL_TASK_APPLICATION" id="BPMNShape_COMP_FAIL_TASK_APPLICATION">
<omgdc:Bounds height="60.0" width="100.0" x="80.0" y="108.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-cc7c2ba4-68ea-4481-82d7-51d7ead0ca65" id="BPMNEdge_sequenceFlow-cc7c2ba4-68ea-4481-82d7-51d7ead0ca65">
<omgdi:waypoint x="900.0" y="142.5"></omgdi:waypoint>
<omgdi:waypoint x="912.0" y="142.5"></omgdi:waypoint>
<omgdi:waypoint x="912.0" y="230.0"></omgdi:waypoint>
<omgdi:waypoint x="950.0" y="230.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-ffcbf3ae-08f3-469a-8d61-263b2ed4c060" id="BPMNEdge_sequenceFlow-ffcbf3ae-08f3-469a-8d61-263b2ed4c060">
<omgdi:waypoint x="1190.0" y="122.5"></omgdi:waypoint>
<omgdi:waypoint x="1178.0" y="122.5"></omgdi:waypoint>
<omgdi:waypoint x="1178.0" y="130.0"></omgdi:waypoint>
<omgdi:waypoint x="800.0" y="130.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-627920df-9548-4c0e-8885-24de425aabb5" id="BPMNEdge_sequenceFlow-627920df-9548-4c0e-8885-24de425aabb5">
<omgdi:waypoint x="1380.0" y="142.5"></omgdi:waypoint>
<omgdi:waypoint x="1392.0" y="142.5"></omgdi:waypoint>
<omgdi:waypoint x="1392.0" y="230.0"></omgdi:waypoint>
<omgdi:waypoint x="1430.0" y="230.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-555ca10e-8b0a-45a9-b912-7a2aed7fde59" id="BPMNEdge_sequenceFlow-555ca10e-8b0a-45a9-b912-7a2aed7fde59">
<omgdi:waypoint x="1710.0" y="170.0"></omgdi:waypoint>
<omgdi:waypoint x="1722.0" y="170.0"></omgdi:waypoint>
<omgdi:waypoint x="1722.0" y="180.0"></omgdi:waypoint>
<omgdi:waypoint x="1760.0" y="180.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-687cdeb3-5dd1-449b-be05-1002a23289b3" id="BPMNEdge_sequenceFlow-687cdeb3-5dd1-449b-be05-1002a23289b3">
<omgdi:waypoint x="180.0" y="125.5"></omgdi:waypoint>
<omgdi:waypoint x="192.0" y="125.5"></omgdi:waypoint>
<omgdi:waypoint x="192.0" y="80.0"></omgdi:waypoint>
<omgdi:waypoint x="230.0" y="80.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-4765a5bb-3156-41a5-8285-e409601f13ae" id="BPMNEdge_sequenceFlow-4765a5bb-3156-41a5-8285-e409601f13ae">
<omgdi:waypoint x="420.0" y="142.5"></omgdi:waypoint>
<omgdi:waypoint x="432.0" y="142.5"></omgdi:waypoint>
<omgdi:waypoint x="432.0" y="230.0"></omgdi:waypoint>
<omgdi:waypoint x="470.0" y="230.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-3cce8ca5-5a47-4733-87ae-3ab6718c0a3a" id="BPMNEdge_sequenceFlow-3cce8ca5-5a47-4733-87ae-3ab6718c0a3a">
<omgdi:waypoint x="990.0" y="230.0"></omgdi:waypoint>
<omgdi:waypoint x="1040.0" y="230.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-5f567ea0-02ce-4e8d-b08d-f884388a88be" id="BPMNEdge_sequenceFlow-5f567ea0-02ce-4e8d-b08d-f884388a88be">
<omgdi:waypoint x="270.0" y="72.5"></omgdi:waypoint>
<omgdi:waypoint x="282.0" y="72.5"></omgdi:waypoint>
<omgdi:waypoint x="282.0" y="115.0"></omgdi:waypoint>
<omgdi:waypoint x="1910.0" y="115.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-a14fbb1c-8087-483f-82e6-ccb0a0f53102" id="BPMNEdge_sequenceFlow-a14fbb1c-8087-483f-82e6-ccb0a0f53102">
<omgdi:waypoint x="1430.0" y="237.5"></omgdi:waypoint>
<omgdi:waypoint x="1418.0" y="237.5"></omgdi:waypoint>
<omgdi:waypoint x="1418.0" y="230.0"></omgdi:waypoint>
<omgdi:waypoint x="1040.0" y="230.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-2dd3ceb3-dd78-46a1-9071-f3b0afc57687" id="BPMNEdge_sequenceFlow-2dd3ceb3-dd78-46a1-9071-f3b0afc57687">
<omgdi:waypoint x="1470.0" y="230.0"></omgdi:waypoint>
<omgdi:waypoint x="1520.0" y="230.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-fd7f68c7-000f-4c55-a645-aef8d8556cc4" id="BPMNEdge_sequenceFlow-fd7f68c7-000f-4c55-a645-aef8d8556cc4">
<omgdi:waypoint x="510.0" y="230.0"></omgdi:waypoint>
<omgdi:waypoint x="560.0" y="230.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-a4c486eb-003f-448c-bcea-a9d52c885dd4" id="BPMNEdge_sequenceFlow-a4c486eb-003f-448c-bcea-a9d52c885dd4">
<omgdi:waypoint x="710.0" y="122.5"></omgdi:waypoint>
<omgdi:waypoint x="698.0" y="122.5"></omgdi:waypoint>
<omgdi:waypoint x="698.0" y="130.0"></omgdi:waypoint>
<omgdi:waypoint x="320.0" y="130.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-4e4edef1-d382-4ad8-ad65-3e1fb13b7d65" id="BPMNEdge_sequenceFlow-4e4edef1-d382-4ad8-ad65-3e1fb13b7d65">
<omgdi:waypoint x="1860.0" y="180.0"></omgdi:waypoint>
<omgdi:waypoint x="1872.0" y="180.0"></omgdi:waypoint>
<omgdi:waypoint x="1872.0" y="115.0"></omgdi:waypoint>
<omgdi:waypoint x="1910.0" y="115.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-7dc193e2-ff59-4cde-836a-9be05f8c51de" id="BPMNEdge_sequenceFlow-7dc193e2-ff59-4cde-836a-9be05f8c51de">
<omgdi:waypoint x="1230.0" y="130.0"></omgdi:waypoint>
<omgdi:waypoint x="1280.0" y="130.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-f4dca2a6-3d2e-463f-9c31-22d74572e970" id="BPMNEdge_sequenceFlow-f4dca2a6-3d2e-463f-9c31-22d74572e970">
<omgdi:waypoint x="470.0" y="237.5"></omgdi:waypoint>
<omgdi:waypoint x="458.0" y="237.5"></omgdi:waypoint>
<omgdi:waypoint x="458.0" y="138.0"></omgdi:waypoint>
<omgdi:waypoint x="80.0" y="138.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-ea95d696-e932-4528-8f0c-131f46ccbab9" id="BPMNEdge_sequenceFlow-ea95d696-e932-4528-8f0c-131f46ccbab9">
<omgdi:waypoint x="1140.0" y="217.5"></omgdi:waypoint>
<omgdi:waypoint x="1152.0" y="217.5"></omgdi:waypoint>
<omgdi:waypoint x="1152.0" y="130.0"></omgdi:waypoint>
<omgdi:waypoint x="1190.0" y="130.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-81734467-b00d-4f0b-b7a2-7d3caabc56ee" id="BPMNEdge_sequenceFlow-81734467-b00d-4f0b-b7a2-7d3caabc56ee">
<omgdi:waypoint x="1670.0" y="162.5"></omgdi:waypoint>
<omgdi:waypoint x="1658.0" y="162.5"></omgdi:waypoint>
<omgdi:waypoint x="1658.0" y="130.0"></omgdi:waypoint>
<omgdi:waypoint x="1280.0" y="130.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-cc8e14fa-bc92-48fb-aab1-ec4263dfe04a" id="BPMNEdge_sequenceFlow-cc8e14fa-bc92-48fb-aab1-ec4263dfe04a">
<omgdi:waypoint x="30.0" y="138.0"></omgdi:waypoint>
<omgdi:waypoint x="80.0" y="138.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-ffb442cc-605a-418e-b5c7-5f2d0a0d7c01" id="BPMNEdge_sequenceFlow-ffb442cc-605a-418e-b5c7-5f2d0a0d7c01">
<omgdi:waypoint x="1620.0" y="230.0"></omgdi:waypoint>
<omgdi:waypoint x="1632.0" y="230.0"></omgdi:waypoint>
<omgdi:waypoint x="1632.0" y="170.0"></omgdi:waypoint>
<omgdi:waypoint x="1670.0" y="170.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-1cec0e0f-7c6b-4b3d-8937-917481f82759" id="BPMNEdge_sequenceFlow-1cec0e0f-7c6b-4b3d-8937-917481f82759">
<omgdi:waypoint x="270.0" y="87.5"></omgdi:waypoint>
<omgdi:waypoint x="282.0" y="87.5"></omgdi:waypoint>
<omgdi:waypoint x="282.0" y="130.0"></omgdi:waypoint>
<omgdi:waypoint x="320.0" y="130.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-76fbde23-c91c-4911-b3ee-a0eea4643371" id="BPMNEdge_sequenceFlow-76fbde23-c91c-4911-b3ee-a0eea4643371">
<omgdi:waypoint x="660.0" y="217.5"></omgdi:waypoint>
<omgdi:waypoint x="672.0" y="217.5"></omgdi:waypoint>
<omgdi:waypoint x="672.0" y="130.0"></omgdi:waypoint>
<omgdi:waypoint x="710.0" y="130.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-cb4c7a54-524c-4587-bc72-6bc375ed0954" id="BPMNEdge_sequenceFlow-cb4c7a54-524c-4587-bc72-6bc375ed0954">
<omgdi:waypoint x="950.0" y="237.5"></omgdi:waypoint>
<omgdi:waypoint x="938.0" y="237.5"></omgdi:waypoint>
<omgdi:waypoint x="938.0" y="230.0"></omgdi:waypoint>
<omgdi:waypoint x="560.0" y="230.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow-97acf8b0-d186-4c28-9355-323b728ae768" id="BPMNEdge_sequenceFlow-97acf8b0-d186-4c28-9355-323b728ae768">
<omgdi:waypoint x="750.0" y="130.0"></omgdi:waypoint>
<omgdi:waypoint x="800.0" y="130.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn2:definitions>
2. 流程图
网关
- 从流程图中可以看出,我们每个节点流向都会先设定一个网关,用来判断流程走向,是成功,接着往下个任务走,还是失败,倒回某个节点,或者直接就到结束事件
这里我们针对该流程进行举例:
- 第一个子任务结束后,flow流就指向 排他网关, 那么在该子任务完成时,我们在程序代码中就可以设置对应的一个变量值,通过排他网关的下个流flow, 在 flow condition参数设置条件,动态表达式,比较灵活 : ${COMP_FAIL_GATEWAY_CONDITION_APPLICATION == true} 那么我们就可以设置变量的值为true 或者 false, 前者,变成子任务完成,正常流向下个子任务,后者则是直接指向 结束事件
- 具体的 flow condition 设置情况,根据业务流程来调整,该流程的多个排他网关,用法都一致,都是通过布尔值判断流程走向哪个子任务节点
- 注意:设置条件,是在flow流箭头组件设置的
Assignment 分配人
- ${COMP_FAIL_TASK_APPLICATION_ASSIGNEE} 这里设置的是子任务对应的分配责任人,也就是对应的委托人
- 这里按照当前的经验,我们一般都是在前一个任务在提交完成的时候,设置一个全局变量,这里全局主要是整个流程都可能会共用到变量,所以用全局变量, 设置的变量,会包含我们下个任务的 分配人对应的员工信息, 以及排他网关的条件变量值
- 创建实例时 同步变量设置:var是一个map集合,具体可以看下面实现类代码
Map<String, Object> var
runtimeService.startProcessInstanceByKey(COMP_FAIL_PROCESS_DEF_KEY, var)
- 比如 我们这个流程,第一步先把流程定义对象创建实例,这里创建的时候,就可以把这里第一个子任务 分析申请 的 assignment变量进行赋值
- 流程创建实例后,流程会直接先来到第一个任务节点,而不是在开始事件上。
controller层
package com.service;
import com.model.CompFailAnalysisParam;
import org.springframework.web.bind.annotation.*;
import com.model.CompFailContactReviewParam;
import com.model.CompFailMlReviewParam;
import com.model.CompFailCreateParam;
import com.model.CompFailRiskParam;
import org.springframework.validation.annotation.Validated;
import com.model.CompFailCloseReviewParam;
import com.model.CompFailPmReviewParam;
import com..tools.commonlib.exception.ServiceException;
import com.model.CompFailApplicationParam;
import org.springframework.beans.factory.annotation.Autowired;
import com.model.CompFailFeedbackParam;
import com.delegate.ProcessCompFailAnalysisDelegate;
import com.model.OneFaIdParam;
import com.model.ResponseVo;
@RestController
@RequestMapping(value = "/process/compFailAnalysis", produces = {"application/json;charset=UTF-8"})
@Validated
public class ProcessCompFailAnalysisController {
@Autowired(required=false)
private ProcessCompFailAnalysisDelegate delegate;
@RequestMapping(
value = "/cancelProcess",
produces = { "application/json" },
method = RequestMethod.POST)
public ResponseVo cancelProcess(@RequestBody OneFaIdParam oneRcIdParam)
throws ServiceException {
return delegate.cancelProcess(oneRcIdParam);
}
@RequestMapping(
value = "/createCompAnalysisProcess",
produces = { "application/json" },
method = RequestMethod.POST)
public ResponseVo createCompAnalysisProcess(@RequestBody CompFailCreateParam compFailCreateParam)
throws ServiceException {
return delegate.createCompAnalysisProcess(compFailCreateParam);
}
@RequestMapping(
value = "/draftItemAnalysis",
produces = { "application/json" },
method = RequestMethod.POST)
public ResponseVo draftItemAnalysis(@RequestBody CompFailAnalysisParam compFailAnalysisParam)
throws ServiceException {
return delegate.draftItemAnalysis(compFailAnalysisParam);
}
@RequestMapping(
value = "/draftItemApplication",
produces = { "application/json" },
method = RequestMethod.POST)
public ResponseVo draftItemApplication(@RequestBody CompFailApplicationParam compFailApplicationParam)
throws ServiceException {
return delegate.draftItemApplication(compFailApplicationParam);
}
@RequestMapping(
value = "/draftRiskProve",
produces = { "application/json" },
method = RequestMethod.POST)
public ResponseVo draftRiskProve(@RequestBody CompFailRiskParam riskParam)
throws ServiceException {
return delegate.draftRiskProve(riskParam);
}
@RequestMapping(
value = "/getCheckHistoryProcessList",
produces = { "application/json" },
method = RequestMethod.GET)
public ResponseVo getCheckHistoryProcessList( @RequestParam(value = "pageNo", required = true) Integer pageNo,
@RequestParam(value = "pageSize", required = true) Integer pageSize,
@RequestParam(value = "componentCode", required = false) String componentCode)
throws ServiceException {
return delegate.getCheckHistoryProcessList(pageNo
, pageSize
, componentCode);
}
@RequestMapping(
value = "/getCloseCheck",
produces = { "application/json" },
method = RequestMethod.GET)
public ResponseVo getCloseCheck( @RequestParam(value = "faId", required = true) String faId)
throws ServiceException {
return delegate.getCloseCheck(faId);
}
@RequestMapping(
value = "/getComponentCode",
produces = { "application/json" },
method = RequestMethod.GET)
public ResponseVo getComponentCode( @RequestParam(value = "keyword", required = false) String keyword,
@RequestParam(value = "processType", required = true) String processType)
throws ServiceException {
return delegate.getComponentCode(keyword
, processType);
}
@RequestMapping(
value = "/getContactCheck",
produces = { "application/json" },
method = RequestMethod.GET)
public ResponseVo getContactCheck( @RequestParam(value = "faId", required = true) String faId)
throws ServiceException {
return delegate.getContactCheck(faId);
}
@RequestMapping(
value = "/getDoingProcessList",
produces = { "application/json" },
method = RequestMethod.GET)
public ResponseVo getDoingProcessList( @RequestParam(value = "pageNo", required = true) Integer pageNo,
@RequestParam(value = "pageSize", required = true) Integer pageSize,
@RequestParam(value = "componentCode", required = false) String componentCode)
throws ServiceException {
return delegate.getDoingProcessList(pageNo
, pageSize
, componentCode);
}
@RequestMapping(
value = "/getFeedback",
produces = { "application/json" },
method = RequestMethod.GET)
public ResponseVo getFeedback( @RequestParam(value = "faId", required = true) String faId)
throws ServiceException {
return delegate.getFeedback(faId);
}
@RequestMapping(
value = "/getHistoryProcessList",
produces = { "application/json" },
method = RequestMethod.GET)
public ResponseVo getHistoryProcessList( @RequestParam(value = "pageNo", required = true) Integer pageNo,
@RequestParam(value = "pageSize", required = true) Integer pageSize,
@RequestParam(value = "componentCode", required = false) String componentCode)
throws ServiceException {
return delegate.getHistoryProcessList(pageNo
, pageSize
, componentCode);
}
@RequestMapping(
value = "/getItemAnalysis",
produces = { "application/json" },
method = RequestMethod.GET)
public ResponseVo getItemAnalysis( @RequestParam(value = "faId", required = true) String faId)
throws ServiceException {
return delegate.getItemAnalysis(faId);
}
@RequestMapping(
value = "/getItemApplication",
produces = { "application/json" },
method = RequestMethod.GET)
public ResponseVo getItemApplication( @RequestParam(value = "faId", required = true) String faId)
throws ServiceException {
return delegate.getItemApplication(faId);
}
@RequestMapping(
value = "/getMlCheck",
produces = { "application/json" },
method = RequestMethod.GET)
public ResponseVo getMlCheck( @RequestParam(value = "faId", required = true) String faId)
throws ServiceException {
return delegate.getMlCheck(faId);
}
@RequestMapping(
value = "/getPmCheck",
produces = { "application/json" },
method = RequestMethod.GET)
public ResponseVo getPmCheck( @RequestParam(value = "faId", required = true) String faId)
throws ServiceException {
return delegate.getPmCheck(faId);
}
@RequestMapping(
value = "/getProcessTitle",
produces = { "application/json" },
method = RequestMethod.GET)
public ResponseVo getProcessTitle( @RequestParam(value = "faId", required = true) String faId)
throws ServiceException {
return delegate.getProcessTitle(faId);
}
@RequestMapping(
value = "/getRiskProve",
produces = { "application/json" },
method = RequestMethod.GET)
public ResponseVo getRiskProve( @RequestParam(value = "faId", required = true) String faId)
throws ServiceException {
return delegate.getRiskProve(faId);
}
@RequestMapping(
value = "/getShareProcessList",
produces = { "application/json" },
method = RequestMethod.GET)
public ResponseVo getShareProcessList( @RequestParam(value = "pageNo", required = true) Integer pageNo,
@RequestParam(value = "pageSize", required = true) Integer pageSize,
@RequestParam(value = "componentCode", required = false) String componentCode)
throws ServiceException {
return delegate.getShareProcessList(pageNo
, pageSize
, componentCode);
}
@RequestMapping(
value = "/getWaitingProcessList",
produces = { "application/json" },
method = RequestMethod.GET)
public ResponseVo getWaitingProcessList( @RequestParam(value = "pageNo", required = true) Integer pageNo,
@RequestParam(value = "pageSize", required = true) Integer pageSize,
@RequestParam(value = "componentCode", required = false) String componentCode)
throws ServiceException {
return delegate.getWaitingProcessList(pageNo
, pageSize
, componentCode);
}
@RequestMapping(
value = "/submitCloseCheck",
produces = { "application/json" },
method = RequestMethod.POST)
public ResponseVo submitCloseCheck(@RequestBody CompFailCloseReviewParam riskParam)
throws ServiceException {
return delegate.submitCloseCheck(riskParam);
}
@RequestMapping(
value = "/submitContactCheck",
produces = { "application/json" },
method = RequestMethod.POST)
public ResponseVo submitContactCheck(@RequestBody CompFailContactReviewParam compFailApplicationParam)
throws ServiceException {
return delegate.submitContactCheck(compFailApplicationParam);
}
@RequestMapping(
value = "/submitFeedback",
produces = { "application/json" },
method = RequestMethod.POST)
public ResponseVo submitFeedback(@RequestBody CompFailFeedbackParam riskParam)
throws ServiceException {
return delegate.submitFeedback(riskParam);
}
@RequestMapping(
value = "/submitItemAnalysis",
produces = { "application/json" },
method = RequestMethod.POST)
public ResponseVo submitItemAnalysis(@RequestBody CompFailAnalysisParam compFailAnalysisParam)
throws ServiceException {
return delegate.submitItemAnalysis(compFailAnalysisParam);
}
@RequestMapping(
value = "/submitItemApplication",
produces = { "application/json" },
method = RequestMethod.POST)
public ResponseVo submitItemApplication(@RequestBody CompFailApplicationParam compFailApplicationParam)
throws ServiceException {
return delegate.submitItemApplication(compFailApplicationParam);
}
@RequestMapping(
value = "/submitMlCheck",
produces = { "application/json" },
method = RequestMethod.POST)
public ResponseVo submitMlCheck(@RequestBody CompFailMlReviewParam riskParam)
throws ServiceException {
return delegate.submitMlCheck(riskParam);
}
@RequestMapping(
value = "/submitPmCheck",
produces = { "application/json" },
method = RequestMethod.POST)
public ResponseVo submitPmCheck(@RequestBody CompFailPmReviewParam riskParam)
throws ServiceException {
return delegate.submitPmCheck(riskParam);
}
@RequestMapping(
value = "/submitRiskProve",
produces = { "application/json" },
method = RequestMethod.POST)
public ResponseVo submitRiskProve(@RequestBody CompFailRiskParam riskParam)
throws ServiceException {
return delegate.submitRiskProve(riskParam);
}
@RequestMapping(
value = "/withdrawal",
produces = { "application/json" },
method = RequestMethod.POST)
public ResponseVo withdrawal( @RequestParam(value = "faId", required = true) String faId)
throws ServiceException {
return delegate.withdrawal(faId);
}
}
service层 接口
package com.delegate;
import com.model.CompFailCloseReviewParam;
import com.model.CompFailAnalysisParam;
import com.model.CompFailPmReviewParam;
import com..tools.commonlib.exception.ServiceException;
import com.model.CompFailApplicationParam;
import com.model.CompFailContactReviewParam;
import com.model.CompFailFeedbackParam;
import com.model.CompFailMlReviewParam;
import com.model.CompFailCreateParam;
import com.model.OneFaIdParam;
import com.model.ResponseVo;
import com.model.CompFailRiskParam;
public interface ProcessCompFailAnalysisDelegate {
ResponseVo cancelProcess(OneFaIdParam oneRcIdParam)
throws ServiceException;
ResponseVo createCompAnalysisProcess(CompFailCreateParam compFailCreateParam)
throws ServiceException;
ResponseVo draftItemAnalysis(CompFailAnalysisParam compFailAnalysisParam)
throws ServiceException;
ResponseVo draftItemApplication(CompFailApplicationParam compFailApplicationParam)
throws ServiceException;
ResponseVo draftRiskProve(CompFailRiskParam riskParam)
throws ServiceException;
ResponseVo getCheckHistoryProcessList(Integer pageNo,
Integer pageSize,
String componentCode)
throws ServiceException;
ResponseVo getCloseCheck(String faId)
throws ServiceException;
ResponseVo getComponentCode(String keyword,
String processType)
throws ServiceException;
ResponseVo getContactCheck(String faId)
throws ServiceException;
ResponseVo getDoingProcessList(Integer pageNo,
Integer pageSize,
String componentCode)
throws ServiceException;
ResponseVo getFeedback(String faId)
throws ServiceException;
ResponseVo getHistoryProcessList(Integer pageNo,
Integer pageSize,
String componentCode)
throws ServiceException;
ResponseVo getItemAnalysis(String faId)
throws ServiceException;
ResponseVo getItemApplication(String faId)
throws ServiceException;
ResponseVo getMlCheck(String faId)
throws ServiceException;
ResponseVo getPmCheck(String faId)
throws ServiceException;
ResponseVo getProcessTitle(String faId)
throws ServiceException;
ResponseVo getRiskProve(String faId)
throws ServiceException;
ResponseVo getShareProcessList(Integer pageNo,
Integer pageSize,
String componentCode)
throws ServiceException;
ResponseVo getWaitingProcessList(Integer pageNo,
Integer pageSize,
String componentCode)
throws ServiceException;
ResponseVo submitCloseCheck(CompFailCloseReviewParam riskParam)
throws ServiceException;
ResponseVo submitContactCheck(CompFailContactReviewParam compFailApplicationParam)
throws ServiceException;
ResponseVo submitFeedback(CompFailFeedbackParam riskParam)
throws ServiceException;
ResponseVo submitItemAnalysis(CompFailAnalysisParam compFailAnalysisParam)
throws ServiceException;
ResponseVo submitItemApplication(CompFailApplicationParam compFailApplicationParam)
throws ServiceException;
ResponseVo submitMlCheck(CompFailMlReviewParam riskParam)
throws ServiceException;
ResponseVo submitPmCheck(CompFailPmReviewParam riskParam)
throws ServiceException;
ResponseVo submitRiskProve(CompFailRiskParam riskParam)
throws ServiceException;
ResponseVo withdrawal(String faId)
throws ServiceException;
}
service 层 接口实现类
package com.impl.process;
import com.delegate.ProcessCompFailAnalysisDelegate;
import com.model.CompFailAnalysisParam;
import com.model.CompFailApplicationParam;
import com.model.CompFailCloseReviewParam;
import com.model.CompFailContactReviewParam;
import com.model.CompFailCreateParam;
import com.model.CompFailFeedbackParam;
import com.model.CompFailMlReviewParam;
import com.model.CompFailPmReviewParam;
import com.model.CompFailRiskParam;
import com.model.OneFaIdParam;
import com.model.ResponseVo;
import com.domain.entity.VerifyInfo;
import com.domain.vo.process.CompFailTitleVo;
import com.service.process.ProcessCompFailService;
import com.utils.ResponseUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* ProcessCompFailAnalysisDelegateImpl
*
*/
@Service
public class ProcessCompFailAnalysisDelegateImpl implements ProcessCompFailAnalysisDelegate {
@Resource
private ProcessCompFailService processCompFailService;
/**
* cancelProcess
*
* @param oneFaIdParam oneFaIdParam
* @return ResponseVo
*/
@Override
public ResponseVo cancelProcess(OneFaIdParam oneFaIdParam) {
VerifyInfo verifyInfo = processCompFailService.cancelProcess(oneFaIdParam);
return verifyInfo.isPass()
? ResponseUtils.successResponse(verifyInfo.getMessage())
: ResponseUtils.errorResponse(verifyInfo.getMessage());
}
/**
* createCompAnalysisProcess
*
* @param compFailCreateParam compFailCreateParam
* @return ResponseVo
*/
@Override
public ResponseVo createCompAnalysisProcess(CompFailCreateParam compFailCreateParam) {
VerifyInfo verifyInfo = processCompFailService.createProcessInst(compFailCreateParam);
return verifyInfo.isPass()
? ResponseUtils.successResponse(verifyInfo.getMessage())
: ResponseUtils.errorResponse(verifyInfo.getMessage());
}
/**
* getProcessTitle
*
* @param faId faId
* @return ResponseVo
*/
@Override
public ResponseVo getProcessTitle(String faId) {
CompFailTitleVo processTitle = processCompFailService.getProcessTitle(faId);
if (processTitle == null) {
return ResponseUtils.errorResponse("获取流程Title失败,可能原因是无权限访问该流程");
}
return ResponseUtils.successResponse(processTitle, "获取信息成功");
}
/**
* submitItemApplication
*
* @param compFailApplicationParam compFailApplicationParam
* @return ResponseVo
*/
@Override
public ResponseVo submitItemApplication(CompFailApplicationParam compFailApplicationParam) {
VerifyInfo verifyInfo = processCompFailService.submitApplication(compFailApplicationParam);
return verifyInfo.isPass()
? ResponseUtils.successResponse(verifyInfo.getMessage())
: ResponseUtils.errorResponse(verifyInfo.getMessage());
}
/**
* draftItemApplication
*
* @param compFailApplicationParam compFailApplicationParam
* @return ResponseVo
*/
@Override
public ResponseVo draftItemApplication(CompFailApplicationParam compFailApplicationParam) {
VerifyInfo verifyInfo = processCompFailService.draftApplication(compFailApplicationParam);
return verifyInfo.isPass()
? ResponseUtils.successResponse(verifyInfo.getMessage())
: ResponseUtils.errorResponse(verifyInfo.getMessage());
}
/**
* getItemApplication
*
* @param faId faId
* @return ResponseVo
*/
@Override
public ResponseVo getItemApplication(String faId) {
return ResponseUtils.successResponse(processCompFailService.getApplication(faId), "获取信息成功");
}
/**
* submitContactCheck
*
* @param contactReviewParam contactReviewParam
* @return ResponseVo
*/
@Override
public ResponseVo submitContactCheck(CompFailContactReviewParam contactReviewParam) {
VerifyInfo verifyInfo = processCompFailService.submitContactReview(contactReviewParam);
return verifyInfo.isPass()
? ResponseUtils.successResponse(verifyInfo.getMessage())
: ResponseUtils.errorResponse(verifyInfo.getMessage());
}
/**
* getContactCheck
*
* @param faId faId
* @return ResponseVo
*/
@Override
public ResponseVo getContactCheck(String faId) {
return ResponseUtils.successResponse(processCompFailService.getContactReview(faId), "获取信息成功");
}
/**
* submitItemAnalysis
*
* @param compFailAnalysisParam compFailAnalysisParam
* @return ResponseVo
*/
@Override
public ResponseVo submitItemAnalysis(CompFailAnalysisParam compFailAnalysisParam) {
VerifyInfo verifyInfo = processCompFailService.submitAnalysis(compFailAnalysisParam);
return verifyInfo.isPass()
? ResponseUtils.successResponse(verifyInfo.getMessage())
: ResponseUtils.errorResponse(verifyInfo.getMessage());
}
/**
* draftItemAnalysis
*
* @param compFailAnalysisParam compFailAnalysisParam
* @return ResponseVo
*/
@Override
public ResponseVo draftItemAnalysis(CompFailAnalysisParam compFailAnalysisParam) {
VerifyInfo verifyInfo = processCompFailService.draftAnalysis(compFailAnalysisParam);
return verifyInfo.isPass()
? ResponseUtils.successResponse(verifyInfo.getMessage())
: ResponseUtils.errorResponse(verifyInfo.getMessage());
}
/**
* getItemAnalysis
*
* @param faId faId
* @return ResponseVo
*/
@Override
public ResponseVo getItemAnalysis(String faId) {
return ResponseUtils.successResponse(processCompFailService.getAnalysis(faId), "获取信息成功");
}
/**
* submitRiskProve
*
* @param riskParam riskParam
* @return ResponseVo
*/
@Override
public ResponseVo submitRiskProve(CompFailRiskParam riskParam) {
VerifyInfo verifyInfo = processCompFailService.submitRisk(riskParam);
return verifyInfo.isPass()
? ResponseUtils.successResponse(verifyInfo.getMessage())
: ResponseUtils.errorResponse(verifyInfo.getMessage());
}
/**
* withdrawal
*
* @param faId faId
* @return ResponseVo
*/
@Override
public ResponseVo withdrawal(String faId) {
VerifyInfo verifyInfo = processCompFailService.withdrawApplication(faId);
return verifyInfo.isPass()
? ResponseUtils.successResponse(verifyInfo.getMessage())
: ResponseUtils.errorResponse(verifyInfo.getMessage());
}
/**
* draftRiskProve
*
* @param riskParam riskParam
* @return ResponseVo
*/
@Override
public ResponseVo draftRiskProve(CompFailRiskParam riskParam) {
VerifyInfo verifyInfo = processCompFailService.draftRisk(riskParam);
return verifyInfo.isPass()
? ResponseUtils.successResponse(verifyInfo.getMessage())
: ResponseUtils.errorResponse(verifyInfo.getMessage());
}
/**
* getRiskProve
*
* @param faId faId
* @return ResponseVo
*/
@Override
public ResponseVo getRiskProve(String faId) {
return ResponseUtils.successResponse(processCompFailService.getRisk(faId), "获取信息成功");
}
/**
* submitPmCheck
*
* @param riskParam riskParam
* @return ResponseVo
*/
@Override
public ResponseVo submitPmCheck(CompFailPmReviewParam riskParam) {
VerifyInfo verifyInfo = processCompFailService.submitPmReview(riskParam);
return verifyInfo.isPass()
? ResponseUtils.successResponse(verifyInfo.getMessage())
: ResponseUtils.errorResponse(verifyInfo.getMessage());
}
/**
* getPmCheck
*
* @param faId faId
* @return ResponseVo
*/
@Override
public ResponseVo getPmCheck(String faId) {
return ResponseUtils.successResponse(processCompFailService.getPmReview(faId), "获取信息成功");
}
/**
* submitMlCheck
*
* @param riskParam riskParam
* @return ResponseVo
*/
@Override
public ResponseVo submitMlCheck(CompFailMlReviewParam riskParam) {
VerifyInfo verifyInfo = processCompFailService.submitMlReview(riskParam);
return verifyInfo.isPass()
? ResponseUtils.successResponse(verifyInfo.getMessage())
: ResponseUtils.errorResponse(verifyInfo.getMessage());
}
/**
* getMlCheck
*
* @param faId faId
* @return ResponseVo
*/
@Override
public ResponseVo getMlCheck(String faId) {
return ResponseUtils.successResponse(processCompFailService.getMlReview(faId), "获取信息成功");
}
/**
* submitCloseCheck
*
* @param riskParam riskParam
* @return ResponseVo
*/
@Override
public ResponseVo submitCloseCheck(CompFailCloseReviewParam riskParam) {
VerifyInfo verifyInfo = processCompFailService.submitCloseReview(riskParam);
return verifyInfo.isPass()
? ResponseUtils.successResponse(verifyInfo.getMessage())
: ResponseUtils.errorResponse(verifyInfo.getMessage());
}
/**
* getCloseCheck
*
* @param faId faId
* @return ResponseVo
*/
@Override
public ResponseVo getCloseCheck(String faId) {
return ResponseUtils.successResponse(processCompFailService.getCloseReview(faId), "获取信息成功");
}
/**
* submitFeedback
*
* @param riskParam riskParam
* @return ResponseVo
*/
@Override
public ResponseVo submitFeedback(CompFailFeedbackParam riskParam) {
VerifyInfo verifyInfo = processCompFailService.submitFeedback(riskParam);
return verifyInfo.isPass()
? ResponseUtils.successResponse(verifyInfo.getMessage())
: ResponseUtils.errorResponse(verifyInfo.getMessage());
}
/**
* getFeedback
*
* @param faId faId
* @return ResponseVo
*/
@Override
public ResponseVo getFeedback(String faId) {
return ResponseUtils.successResponse(processCompFailService.getFeedback(faId), "获取信息成功");
}
/**
* getWaitingProcessList
*
* @param pageNo pageNo
* @param pageSize pageSize
* @param componentCode componentCode
* @return ResponseVo
*/
@Override
public ResponseVo getWaitingProcessList(Integer pageNo, Integer pageSize, String componentCode) {
return processCompFailService.getWaitingProcessList(pageNo, pageSize, componentCode);
}
/**
* getDoingProcessList
*
* @param pageNo pageNo
* @param pageSize pageSize
* @param componentCode componentCode
* @return ResponseVo
*/
@Override
public ResponseVo getDoingProcessList(Integer pageNo, Integer pageSize, String componentCode) {
return processCompFailService.getDoingProcessList(pageNo, pageSize, componentCode);
}
/**
* getHistoryProcessList
*
* @param pageNo pageNo
* @param pageSize pageSize
* @param componentCode componentCode
* @return ResponseVo
*/
@Override
public ResponseVo getHistoryProcessList(Integer pageNo, Integer pageSize, String componentCode) {
return processCompFailService.getHistoryProcessList(pageNo, pageSize, componentCode);
}
/**
* getCheckHistoryProcessList
*
* @param pageNo pageNo
* @param pageSize pageSize
* @param componentCode componentCode
* @return ResponseVo
*/
@Override
public ResponseVo getCheckHistoryProcessList(Integer pageNo, Integer pageSize, String componentCode) {
return processCompFailService.getCheckHistoryProcessList(pageNo, pageSize, componentCode);
}
/**
* getShareProcessList
*
* @param pageNo pageNo
* @param pageSize pageSize
* @param componentCode componentCode
* @return ResponseVo
*/
@Override
public ResponseVo getShareProcessList(Integer pageNo, Integer pageSize, String componentCode) {
return processCompFailService.getShareProcessList(pageNo, pageSize, componentCode);
}
/**
* getComponentCode
*
* @param keyword keyword
* @param processType processType
* @return ResponseVo
*/
@Override
public ResponseVo getComponentCode(String keyword, String processType) {
return ResponseUtils.successResponse(processCompFailService.getComponentCode(keyword, processType), "");
}
}
service层 电子流分析服务接口
package com.service.process;
import com.model.*;
import com.domain.entity.VerifyInfo;
import com.domain.vo.process.CompFailTitleVo;
import java.util.Collection;
/**
* 失效分析服务
*
*/
public interface ProcessCompFailService {
/**
* 创建流程实例
*
* @param createParam createParam
* @return VerifyInfo
*/
VerifyInfo createProcessInst(CompFailCreateParam createParam);
/**
* 用户撤销电子流
*
* @param oneFaIdParam oneFaIdParam
* @return VerifyInfo
*/
VerifyInfo cancelProcess(OneFaIdParam oneFaIdParam);
/**
* 获取流程标题
*
* @param businessId businessId
* @return CompFailTitleVo
*/
CompFailTitleVo getProcessTitle(String businessId);
/**
* 提交申请
*
* @param applicationParam applicationParam
* @return VerifyInfo
*/
VerifyInfo submitApplication(CompFailApplicationParam applicationParam);
/**
* 申请提交后,申请人撤销申请
*
* @param faId faId
* @return VerifyInfo
*/
VerifyInfo withdrawApplication(String faId);
/**
* 保存申请草稿
*
* @param applicationParam applicationParam
* @return VerifyInfo
*/
VerifyInfo draftApplication(CompFailApplicationParam applicationParam);
/**
* 获取申请信息
*
* @param faId faId
* @return CompFailApplicationParam
*/
CompFailApplicationParam getApplication(String faId);
/**
* 提交接口人审核
*
* @param contactReviewParam contactReviewParam
* @return VerifyInfo
*/
VerifyInfo submitContactReview(CompFailContactReviewParam contactReviewParam);
/**
* 获取接口人审核信息
*
* @param faId faId
* @return CompFailContactReviewParam
*/
CompFailContactReviewParam getContactReview(String faId);
/**
* 提交分析
*
* @param analysisParam analysisParam
* @return VerifyInfo
*/
VerifyInfo submitAnalysis(CompFailAnalysisParam analysisParam);
/**
* 保存分析草稿
*
* @param analysisParam analysisParam
* @return VerifyInfo
*/
VerifyInfo draftAnalysis(CompFailAnalysisParam analysisParam);
/**
* 获取分析信息
*
* @param faId faId
* @return CompFailAnalysisParam
*/
CompFailAnalysisParam getAnalysis(String faId);
/**
* 提交风险评估
*
* @param riskParam riskParam
* @return VerifyInfo
*/
VerifyInfo submitRisk(CompFailRiskParam riskParam);
/**
* 保存风险评估草稿
*
* @param riskParam riskParam
* @return VerifyInfo
*/
VerifyInfo draftRisk(CompFailRiskParam riskParam);
/**
* 获取风险评估
*
* @param faId faId
* @return CompFailRiskParam
*/
CompFailRiskParam getRisk(String faId);
/**
* 提交项目经理审核
*
* @param pmReviewParam pmReviewParam
* @return VerifyInfo
*/
VerifyInfo submitPmReview(CompFailPmReviewParam pmReviewParam);
/**
* 获取项目经理审核
*
* @param faId faId
* @return CompFailPmReviewParam
*/
CompFailPmReviewParam getPmReview(String faId);
/**
* 提交专家审核
*
* @param mlReviewParam mlReviewParam
* @return VerifyInfo
*/
VerifyInfo submitMlReview(CompFailMlReviewParam mlReviewParam);
/**
* getMlReview
*
* @param faId faId
* @return CompFailMlReviewParam
*/
CompFailMlReviewParam getMlReview(String faId);
/**
* 提交关闭审核
*
* @param closeReviewParam closeReviewParam
* @return VerifyInfo
*/
VerifyInfo submitCloseReview(CompFailCloseReviewParam closeReviewParam);
/**
* getCloseReview
*
* @param faId faId
* @return CompFailCloseReviewParam
*/
CompFailCloseReviewParam getCloseReview(String faId);
/**
* 提交反馈意见
*
* @param feedbackParam feedbackParam
* @return VerifyInfo
*/
VerifyInfo submitFeedback(CompFailFeedbackParam feedbackParam);
/**
* getFeedback
*
* @param faId faId
* @return CompFailFeedbackParam
*/
CompFailFeedbackParam getFeedback(String faId);
/**
* 待我处理流程
*
* @param pageNo pageNo
* @param pageSize pageSize
* @param componentCode componentCode
* @return ResponseVo
*/
ResponseVo getWaitingProcessList(Integer pageNo, Integer pageSize, String componentCode);
/**
* 创建流程
*
* @param pageNo pageNo
* @param pageSize pageSize
* @param componentCode componentCode
* @return ResponseVo
*/
ResponseVo getDoingProcessList(Integer pageNo, Integer pageSize, String componentCode);
/**
* 历史流程(用户创建的,走完所有任务并关闭的)
*
* @param pageNo pageNo
* @param pageSize pageSize
* @param componentCode componentCode
* @return ResponseVo
*/
ResponseVo getHistoryProcessList(Integer pageNo, Integer pageSize, String componentCode);
/**
* 审批历史流程
*
* @param pageNo pageNo
* @param pageSize pageSize
* @param componentCode componentCode
* @return ResponseVo
*/
ResponseVo getCheckHistoryProcessList(Integer pageNo, Integer pageSize, String componentCode);
/**
* 共享流程
*
* @param pageNo pageNo
* @param pageSize pageSize
* @param componentCode componentCode
* @return ResponseVo
*/
ResponseVo getShareProcessList(Integer pageNo, Integer pageSize, String componentCode);
/**
* 模糊查询编码
*
* @param keyword keyword
* @param processType processType
* @return Collection<String>
*/
Collection<String> getComponentCode(String keyword, String processType);
/**
* getProcessState
*
* @param businessId businessId
* @return String
*/
String getProcessState(String businessId);
}
service层 电子流分析服务接口实现类
下篇待续.......