【业务功能篇38】Springboot+activiti7 工作流引擎 增加网关组件、Assignment分配权限

news2024/11/26 16:24:46

在前面的一篇文章中,简单举例了一个 工单电子流,【业务功能篇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层   电子流分析服务接口实现类

下篇待续.......

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/718502.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rabbitMq怎么查看队列消息-Tracing日志

Trace 是Rabbitmq用于记录每一次发送的消息&#xff0c;方便使用Rabbitmq的开发者调试、排错。 1、启动Tracing插件 在RabbitMQ中默认是关闭的&#xff0c;需手动开启。此处rabbitMQ是使用docker部署的 ## 进入rabbitMq中 docker exec -it rabbitmq1 bash ## 启动日志插件 rabb…

每天五分钟机器学习:构建多特征的线性回归模型

本文重点 在实际应用中,有时候一个单一特征的线性回归模型可能无法很好地解释数据,因此我们可以构建多特征的线性回归模型来提高模型的预测能力。本文还是拿房价问题来举例,来看以下多特征的线性回归模型如何构建? 多特征的数据集 以房价预测为例,现在的样本特征不再是…

贵阳阿里云代理商:阿里云中国区副总裁李国欢:数字经济与实体经济如何融合

中国青年报客户端讯&#xff08;中青在线记者 于璧嘉&#xff09;6月21日&#xff0c;在第六届世界智能大会即将召开之际&#xff0c;阿里云中国区副总裁李国欢在接受媒体专访时表示&#xff1a;“数字经济已经成为社会生产力革命的一个重要生产要素。” 6月21日&#xff0c;阿…

Linux下GO IDE安装和配置(附快捷键)

目前&#xff0c;GoLand、VSCode 这些 IDE 都很优秀&#xff0c;但它们都是 Windows 系统下的 IDE。在 Linux 系统下我们可以选择将 Vim 配置成 Go IDE。熟练 Vim IDE 操作之后&#xff0c;开发效率不输 GoLand 和 VSCode。有多种方法可以配置一个 Vim IDE&#xff0c;这里我选…

mqadmin命令的使用

mqadmin命令的使用 F:\rocketmq-all-4.9.7-bin-release\bin>mqadmin The most commonly used mqadmin commands are: updateTopic Update or create topic deleteTopic Delete topic from broker and NameServer. updateSubGroup Update or create subscription group delet…

【虚拟化】虚拟机xml文件解析

文章目录 虚拟机xml文件解析nameuuidmemory/currentMemoryvcpubootcpuon_poweroffon_rebooton_crashdiskinterfaceinputgraphics 补充说明1.磁盘总线类型 虚拟机xml文件解析 name name # 虚拟机名称&#xff0c;具有唯一性&#xff0c;不可与已建立的虚拟机重复uuid uuid #虚…

MoblieNetV1、V2、V3、ViT四种Moblie模型的分析对比

1、MoblieNetV1 2017年提出&#xff0c;论文地址为&#xff1a;https://arxiv.org/pdf/1704.04861.pdf 1.1 相关知识 提到了标准卷积、深度可分卷积、点卷积&#xff0c;并分析了不同卷积结构的计算量&#xff0c;&#xff08;假设 D k D_k Dk​为ksize&#xff0c;M为卷积的…

在VMware Workstation虚拟机上安装centos服务,并使用xshell连接centos服务。

一、安装VMware Workstation 可前往http://www.kkx.net/soft/22239.html&#xff0c;附带有下载链接&#xff0c;和对应的破解码。 二、下载centos .iso格式文件 前往https://mirrors.aliyun.com/centos/7/isos/x86_64/下载。 以下两个&#xff0c;选择哪一个都行。 记得要下…

【MySQL进阶篇】学习笔记

文章目录 MySQL进阶学习前言1、存储引擎1.1 MySQL体系结构概览1.2 存储引擎介绍1.3 常见存储引擎的特点1.3.1 InnoDB的特点1.3.2 MyISAM1.3.3 Memory1.3.4 总结 2、索引2.1 索引介绍2.2 索引的结构2.2.1 前置知识2.2.2 索引结构的种类 2.3 索引的分类2.4 索引的使用2.4.1 索引的…

Vue3 通过ref获取 el-dialog 内容(组件)中的dom元素的问题

问题描述&#xff1a; 项目中&#xff0c;使用el-dialog组件展示内容&#xff0c;内容是自己封装的一个组件&#xff0c;组件中通过ref获取dom元素然后进行绘制echarts图形的。 问题是&#xff1a;在弹出el-dialog组件后&#xff0c;echarts图形没有渲染出来。刚开始还以为是自…

ArcPy学习心得系列(5)遥感数据中值滤波与均值滤波实现方法(不计入NoDATA)

在数据处理与应用的过程中,我们难免会遇到一些低质量的遥感数据,低质量遥感数据一般是由于天气因素导致的,在云量较多时,卫星传感器所采集到的地面信息被云层所遮挡,导致遥感图像成像过程中产生了较多噪声,对遥感数据的精确度造成了一定影响,如果不解决这些数据中的噪声…

超详细IDEA连接本地数据库以及使用教程

文章目录 前言一、IDEA连接本地数据库二、IDEA使用数据库操作 前言 IDEA的项目要想连接本地数据库&#xff0c;前提就是本地已经配置有数据库&#xff0c;并且可以使用 附Windows10 安装配置数据库教程: 超详细MySQL(免安装版)安装与配置教程 一、IDEA连接本地数据库 点击IDE…

什么是视频|孪生视频孪生,打造实时实景数字孪生应用

元宇宙概念下&#xff0c;虚拟世界和虚拟空间的讨论日益增多&#xff0c;其相关技术的应用和发展也备受关注。在众多技术手段中&#xff0c;数字孪生技术以虚实结合为主&#xff0c;架起虚拟世界与现实世界之间沟通的桥梁。 视频孪生更侧重从真实角度出发&#xff0c;打造实时…

【大数据之Hive】十九、Hive之文件格式和压缩

1 Hadoop压缩概述 Hive中的压缩算法与Hadoop中的压缩算法保持一致&#xff0c;可以把Hive当作Hadoop的一个客户端。 【大数据之Hadoop】十八、MapReduce之压缩 2 Hive文件格式 Hive表中常用的数据存储格式&#xff1a;text file&#xff08;行式存储&#xff09;、orc&#x…

Vue3 ElementPlus写的导航栏

Vue3 ElementPlus Vuex Router写的导航栏&#xff0c;效果如图&#xff1a; 导航条路径那里是自动的。 链接: https://pan.baidu.com/s/1pjqgR9QGbB2ZYIECPwNIoQ?pwdk5ew 提取码: k5ew 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦

Android进阶之路 - 背景阴影、阴影背景

不知道你是不是也经常听到这些话&#xff1a;你这个没有阴影效果&#xff1b;你这个阴影太浓了&#xff1b;你这个阴影太粗了&#xff1b;你这个阴影太实了&#xff1b;你这个阴影颜色也不对&#xff0c;你这个阴影… 在正式开发中&#xff0c;临近上线前有个环节叫UI验收&…

Vector - CAPL - 数据库和CAPL_02

DBLookup 动态读取数据库中的信息 //Transmitter 属性以及数据库属性只能通过 DBLookup 动态读取。 //返回数据库中存储的 DLC on message * {int myAttributeValue;myAttributeValue DBLookup(this).MyAttribute;write(this.Transmitter); // compiler errorwrite(DBLookup(…

AR试穿试戴相关SDK或平台

1.火山引擎 链接 咨询过平台收费比较高几十万一年而且还是起步价 2.Geenee 链接 geenee在衣服、裤子、头饰以及鞋子方面可以实现试穿。 3.Wanna 链接 Wanna 试衣、试包、试鞋及手表都可以&#xff0c;我试过鞋子的试穿效果还不错 4.DeepAR …

sqlite维护命令复习学习

前面已经看了一些sqlite命令&#xff0c;例如查看表名&#xff0c;查看表结构等&#xff1b;下面继续看一下&#xff1b; 查看全部表名&#xff1b; 查看单个或全部的表结构&#xff1b; 输出表结构和数据&#xff1b; 使用.output 把查询结果定向到1.txt&#xff1b; 重新定向…

Java设计模式系列--观察者模式写法2:JDK

原文网址&#xff1a;Java设计模式系列--观察者模式写法2&#xff1a;JDK_IT利刃出鞘的博客-CSDN博客 简介 说明 本文用示例介绍观察者模式的一种写法&#xff1a;JDK。 JDK的观察者模式简介 在 Java 中&#xff0c;java.util.Observable 类和 java.util.Observer 接口定义…