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

news2024/11/24 11:24:50

在前面的一篇文章中,简单举例了一个 工单电子流,【业务功能篇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/719441.html

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

相关文章

为什么放弃Java后,没有使用Kotlin,新的开发语言正在席卷而来

放弃Java后&#xff0c;没有使用Kotlin 从 Java 到Kotlin&#xff0c;Kotlin作为Android官方支持语言&#xff0c;获得了更多的关注和采用&#xff01; 这几年&#xff0c;Kotlin的发展势头很猛&#xff0c;可以说由 Java 转 Kotlin 早已势不可挡。 那么Kotlin有哪些优势可以…

AI视觉赢未来|深眸科技出席元宇宙装备展,“智与质”实现双重升级

6月29日&#xff0c;2023昆山元宇宙国际装备展在昆山国际会展中心圆满落幕&#xff0c;此次展会不仅为我们呈现最先进的元宇宙装备、最前沿的元宇宙技术、最潮流的元宇宙应用&#xff0c;还为工业元宇宙的发展蓄势赋能。 浙江深眸科技有限公司&#xff08;以下简称深眸科技&am…

数据太大了?快来试试这款地理空间数据云管理平台

四维轻云是一款网页版地理空间数据云管理平台&#xff0c;用户能够在线管理、浏览及分享倾斜模型(.osgb)、激光点云(.las)、正射影像(dom)、数字高程模型(dem)等数据。目前&#xff0c;平台具有数据管理、场景编辑、空间测量、团队协作、加密分享、素材库等功能。 项目管理 四…

【Linux】什么是文件系统及inode?如何创建软硬链接?软硬链接有什么作用?

inode软硬链接创建软硬链接理解硬链接理解软链接 inode 了解一下文件系统&#xff1a; Linux ext2文件系统&#xff0c;上图为磁盘文件系统图&#xff08;内核内存映像肯定有所不同&#xff09;&#xff0c;磁盘是典型的块设备&#xff0c;硬盘分区被 划分为一个个的block。…

【Qt】程序异常结束。The process was ended forcefully.(解决方法不一样哦)

环境 系统&#xff1a;win10 64bit Qt&#xff1a;5.14.1 编译器&#xff1a;MinGW 32-bit 问题 Qt工程编译正常&#xff0c;但无法调试&#xff0c;报错&#xff1a;程序异常结束。The process was ended forcefully. 步骤 已尝试网上方法仍然不行的&#xff0c;可以直接…

为什么JDK动态代理只能代理接口?

在Java中&#xff0c;动态代理是一种机制&#xff0c;允许在运行时动态地创建代理对象来代替某个实际对象&#xff0c;从而在其前后执行额外的逻辑。 为什么JDK动态代理只能代理接口实现类&#xff0c;原因是JDK动态代理是基于接口实现的。 当你使用Proxy类创建代理对象时&am…

第一章:Linux常用命令+VIM+SSH介绍+SSH密钥登录

目录 一、Linux常用命令 1&#xff09;# 与 $ 提示的区别 2&#xff09;ifconfig 3&#xff09; su 4&#xff09; cd 5&#xff09; 目录查看 6&#xff09; 查看文件内容 7&#xff09;创建目录及文件 8&#xff09;复制和移动 9&#xff09;其他 10&#xff09; …

Git 上传Github 超时问题

提交代码到GitHub总是超时&#xff0c;偶尔会直接上传成功。 提供一下解决方案 1.首先找到网络 2. 找到代理 3. 把自动检查设置全部关闭&#xff0c;然后打开手动设置代理&#xff0c;然后输入ip地址和你代理的端口号&#xff0c;保存即可。 4. 最后使用git push origin mast…

多边形偏移算法【Polygon Offsetting】

在本教程中&#xff0c;我们将描述一种膨胀或收缩多边形的算法。 推荐&#xff1a;用 NSDT设计器 快速搭建可编程3D场景。 1、一般形式的同调 为了简单起见&#xff0c;让我们从一个形状开始&#xff0c;一个正方形。 我们可能熟悉通过放大或缩小形状来缩放形状的想法。 从技术…

Jmeter实现生成全局参数-随机数

我在做项目的过程中&#xff0c;用的比较多的是【前置处理中】-用户参数 步骤一&#xff1a;添加参数处理器 步骤二&#xff1a;填写项目中可能会用到的一些参数&#xff08;固定的或者随机的都可以&#xff09; teacher_name${__RandomString(1,赵钱孙李周吴郑王冯陈褚卫蒋沈…

Python指定函数参数和返回值的类型

先看一个简单的示例&#xff1a; # name指定为str类型&#xff0c;返回值为str类型 def greeting(name: str) -> str:return hello: nameif __name__ __main__:print(函数参数类型、返回值类型基本使用)s greeting(张三)print(s)try:s greeting(123) # 可以传递其他类…

学习网页设计html个人总结

学习网页设计html个人总结篇一 我在网上进行的逻辑教学工作已经完成了&#xff0c;闲暇无事之余&#xff0c;便想将个人的主页——《思东书屋》重新进行一下规划和设计&#xff0c;为此购买了几本有关网页设计和制作的书籍&#xff0c;开始学习网页的基本语言HTML。尽管网页制作…

postgresql 数据库 索引 介绍

postgresql 数据库 索引 介绍 文章目录 postgresql 数据库 索引 介绍前言一 什么是索引&#xff1f;二 简介三 索引的种类B-treeHash索引GiST索引GIN 索引BRIN 索引SP-GiST索引 CREATE INDEX1.大纲2.描述3. 参数UNIQUECONCURRENTLYIF NOT EXISTSINCLUDEnameONLYmethodcolumn_na…

Mysql之账号管理、建库以及四大引擎详解

目录 一、MySql数据库引擎 1.1 什么是数据库引擎&#xff1f; 1.2 MySQL常见数据库引擎 1.2.1.InnoDB(MySQL默认引擎) 1.2.2.MyISAM 1.2.3.MEMORY&#xff08;Heap&#xff09; 1.3 存储引擎查看 二、建库 2.1.默认数据库介绍 2.2.建库 2.3.查看数据库 2.4.删除数…

【嵌入式Qt开发入门】如何使用Qt进行文本读写——QFile读写文本

在很多时候我们需要读写文本文件进行读写&#xff0c;比如写个 Mp3 音乐播放器需要读 Mp3 歌词里的文本&#xff0c;比如修改了一个 txt 文件后保存&#xff0c;就需要对这个文件进行读写操作。本文介绍简单的文本文件读写&#xff0c;内容精简&#xff0c;让大家了解文本读写的…

linux 内核的学习

一、启动流程 二、进程调度 进程 进程控制块&#xff08;pid&#xff09;结构体 重要的信息 进程标识符 pid 状态&#xff1a;任务状态 优先级&#xff1a;相对其他进程 程序计数器&#xff1a;程序中即将被执行的下一条指令的地址 内存指针&#xff1a;包括程序代码…

echarts 柱状体点击空白处

点击红框里的空白区域&#xff1a; 再data里定义的idlist变量:idList: [800, 300, 500, 400, 800, 300, 500, 400, 800, 300, 500, 400, 800, 300,500, 400, 800, 300, 500, 400,]//以下是js代码var chartDom document.getElementById(echartsOne)this.myChart echarts.init…

数据产品经理的职业发展机会

在当今的数字时代&#xff0c;数据产品经理已成为许多企业中不可或缺的角色。随着越来越多的企业开始将数据应用于业务决策和产品开发中&#xff0c;数据产品经理的需求也不断增加。因此&#xff0c;学习成为一名数据产品经理成为了许多人的热门选择。下面说一说关于如何学习数…

tty(imx serial)(二)

基于linux-3.14.16 基于imx分析 一、串口设备注册 注册了一个uart设备驱动&#xff0c;和一个平台设备驱动 先一个一个看 1、serial_imx_driver平台设备驱动 看看匹配的设备树&#xff0c;imx6qdl.dtsi定义了很多&#xff0c;我们只看一个 如上图&#xff0c;设备树描述了…

基于 RK3399+fpga 的 VME 总线控制器设计(二)硬件和FPGA逻辑设计

3.2 FPGA 最小系统设计 FPGA 最小系统是指可以使 FPGA 正常工作的最基本的系统&#xff0c;主要包括电源电 路、配置电路、时钟和复位电路。本次设计使用的 FPGA 为紫光同创的 PG2L100H, 接下来具体介绍 FPGA 最小系统各个部分的电路设计。 &#xff08; 1 &#…