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

这篇具有很好参考价值的文章主要介绍了【业务功能篇38】上篇:Springboot+activiti7 工作流引擎 增加网关组件、Assignment分配权限。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

activiti工作流权限,业务场景实例问题,Spring boot,Java,spring boot,后端,java,activiti7

网关

  • 从流程图中可以看出,我们每个节点流向都会先设定一个网关,用来判断流程走向,是成功,接着往下个任务走,还是失败,倒回某个节点,或者直接就到结束事件

 这里我们针对该流程进行举例:

  • 第一个子任务结束后,flow流就指向 排他网关, 那么在该子任务完成时,我们在程序代码中就可以设置对应的一个变量值,通过排他网关的下个流flow, 在 flow condition参数设置条件,动态表达式,比较灵活 : ${COMP_FAIL_GATEWAY_CONDITION_APPLICATION == true} 那么我们就可以设置变量的值为true 或者 false,  前者,变成子任务完成,正常流向下个子任务,后者则是直接指向 结束事件
  • 具体的 flow condition 设置情况,根据业务流程来调整,该流程的多个排他网关,用法都一致,都是通过布尔值判断流程走向哪个子任务节点
  • 注意:设置条件,是在flow流箭头组件设置的

activiti工作流权限,业务场景实例问题,Spring boot,Java,spring boot,后端,java,activiti7

activiti工作流权限,业务场景实例问题,Spring boot,Java,spring boot,后端,java,activiti7

Assignment 分配人

  • ${COMP_FAIL_TASK_APPLICATION_ASSIGNEE}  这里设置的是子任务对应的分配责任人,也就是对应的委托人  
  • 这里按照当前的经验,我们一般都是在前一个任务在提交完成的时候,设置一个全局变量,这里全局主要是整个流程都可能会共用到变量,所以用全局变量, 设置的变量,会包含我们下个任务的 分配人对应的员工信息, 以及排他网关的条件变量值
  • 创建实例时 同步变量设置:var是一个map集合,具体可以看下面实现类代码
    Map<String, Object> var
    runtimeService.startProcessInstanceByKey(COMP_FAIL_PROCESS_DEF_KEY, var)
  • 比如 我们这个流程,第一步先把流程定义对象创建实例,这里创建的时候,就可以把这里第一个子任务 分析申请 的 assignment变量进行赋值     
  • 流程创建实例后,流程会直接先来到第一个任务节点,而不是在开始事件上。

activiti工作流权限,业务场景实例问题,Spring boot,Java,spring boot,后端,java,activiti7activiti工作流权限,业务场景实例问题,Spring boot,Java,spring boot,后端,java,activiti7

 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层   电子流分析服务接口实现类

下篇待续.......文章来源地址https://www.toymoban.com/news/detail-542076.html

到了这里,关于【业务功能篇38】上篇:Springboot+activiti7 工作流引擎 增加网关组件、Assignment分配权限的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Activiti7 工作流非原流程终止

    正常工作流,需要经过 node1、node2 才能结束。 现在要求已经开启的流程,目前停留在 node1,可以提前终止。 一般根据实际需要,可以有几种做法: 新绘制流程图,新增 node1 结束的流程分支,替换原流程 SQL 的方式,将该流程的数据,手动修改为终止的状态 代码动态修改流程

    2023年04月16日
    浏览(41)
  • Activiti7工作流引擎:在线流程编辑器Activiti Modoler5.x

    有的时候我们的流程图需要业务人员自己绘制,然后使用自己绘制的流程图,此时就需要一个在线流程图编辑器需要集成到我们的web系统中。Activiti Modoler是Activiti官方推出的在线流程编辑器。 https://github.com/Activiti/Activiti/tree/5.x 将整个项目下载下来。不同版本的目录结构区别

    2024年02月09日
    浏览(55)
  • 【业务功能篇57】Springboot + Spring Security 权限管理 【上篇】

    4.1.1 权限管理的意义 后台管理系统中,通常需要控制不同的登录用户可以操作的内容。权限管理用于管理系统资源,分配用户菜单、资源权限,以及验证用户是否有访问资源权限。 4.1.2 RBAC权限设计模型 ACL介绍 ACL(Access Control List):访问控制列表 用户 - 权限 ACL 模型,权限

    2024年02月15日
    浏览(42)
  • Springboot集成工作流Activity

    介绍 官网:https://www.activiti.org/ 一 、工作流介绍 1.工作流(workflow) 就是通过计算机对业务流程自动化执行管理,它主要解决的是“使在多个参与这之间按照某种预定义规则自动化进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使目标的实现。”

    2023年04月13日
    浏览(48)
  • springboot项目集成activiti工作流引擎

    一、一种较为简单,只需要使用idea的插件来画流程图。(我所使用的的插件是Activiti BPMN visualizer) 二、另一种就是可以使用(在线流程设计器)或者(页面设计器部署到自己项目中)来画流程图。 本文是将流程设计页面部署到了项目中 一、使用idea的插件来画流程图。  二

    2024年02月10日
    浏览(45)
  • 若依框架SpringBoot+Activiti工作流的使用

    使用简介:本技术点主要是针对类审批的业务流程的建模,可以有:任务发布(即流程开始)到一级一级的审批到最终结束(即流程结束)一整套完备的模型 1、idea下载activiti插件 ider以前版本下载actiBPM,但是新版ider这个插件已经被淘汰,已经被下面这个替代     2、单独起

    2024年02月11日
    浏览(38)
  • springboot中配置bpmsjs插件-activiti7流程图绘制插件/IDEA中运行bpmnjs

    BPMNJS的安装和使用需要依赖nodejs插件,需要先安装NODEJS,因为bpmnjs插件的运行需要使用到NODEJS中的npm命令。 安装nodejs 安装和使用bpmnjs插件,绘制activiti工作流需要的流程图。   https://nodejs.org/en 安装之后在安装目录下创建node_cache和node_global两个目录 如果目录已经存在可以不创

    2024年02月15日
    浏览(51)
  • SpringBoot整合Activiti实现工作流的低代码系统(附源码+文档)

    activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,一套完整并且实际运用在多套项目中的案例,满足日常业务流程审批需求。 springboot+vue+activiti集成了activiti在线编辑器,流行的前后端分离部署开发模式,快速开发平台,可插拔工作流服务。工作流表单

    2024年04月09日
    浏览(46)
  • SpringBoot整合Activiti实现工作流的低代码系统(附源码和配套文档)

    activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,一套完整并且实际运用在多套项目中的案例,满足日常业务流程审批需求。 springboot+vue+activiti集成了activiti在线编辑器,流行的前后端分离部署开发模式,快速开发平台,可插拔工作流服务。工作流表单

    2024年03月15日
    浏览(73)
  • 模仿Activiti工作流自动建表机制,实现Springboot项目启动后自动创建多表关联的数据库与表的方案

    文/朱季谦 熬夜写完,尚有不足,但仍在努力学习与总结中,而您的点赞与关注,是对我最大的鼓励! 在一些本地化项目开发当中,存在这样一种需求,即开发完成的项目,在第一次部署启动时,需能自行构建系统需要的数据库及其对应的数据库表。 若要解决这类需求,其实

    2024年01月24日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包