Activiti连线

    xiaoxiao2022-07-05  157

    1.创建bpmn文件(生成bpmn文件步骤见helloworld)

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" 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" xmlns:tns="http://www.activiti.org/test" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" expressionLanguage="http://www.w3.org/1999/XPath" id="m1558514107482" name="" targetNamespace="http://www.activiti.org/test" typeLanguage="http://www.w3.org/2001/XMLSchema"> <process id="myProcess" isClosed="false" isExecutable="true" processType="None"> <startEvent id="_2" name="StartEvent"/> <userTask activiti:assignee="张3" activiti:exclusive="true" id="_3" name="Task1"/> <userTask activiti:assignee="李4" activiti:exclusive="true" id="_4" name="Task2-1"/> <userTask activiti:assignee="王5" activiti:exclusive="true" id="_5" name="Task2-2"/> <userTask activiti:assignee="赵6" activiti:exclusive="true" id="_6" name="Task3"/> <endEvent id="_7" name="EndEvent"/> <sequenceFlow id="_8" sourceRef="_2" targetRef="_3"/> <sequenceFlow id="_9" sourceRef="_3" targetRef="_4"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${message=='重要'}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="_10" sourceRef="_3" targetRef="_5"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${message=='不重要'}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="_11" sourceRef="_4" targetRef="_6"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${condition=='1'}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="_12" sourceRef="_5" targetRef="_6"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${condition=='0'}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="_13" sourceRef="_6" targetRef="_7"/> </process> <bpmndi:BPMNDiagram documentation="background=#3C3F41;count=1;horizontalcount=1;orientation=0;width=842.4;height=1195.2;imageableWidth=832.4;imageableHeight=1185.2;imageableX=5.0;imageableY=5.0" id="Diagram-_1" name="New Diagram"> <bpmndi:BPMNPlane bpmnElement="myProcess_1"> <bpmndi:BPMNShape bpmnElement="_2" id="Shape-_2"> <omgdc:Bounds height="32.0" width="32.0" x="530.0" y="-5.0"/> <bpmndi:BPMNLabel> <omgdc:Bounds height="32.0" width="32.0" x="0.0" y="0.0"/> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="_3" id="Shape-_3"> <omgdc:Bounds height="55.0" width="85.0" x="490.0" y="80.0"/> <bpmndi:BPMNLabel> <omgdc:Bounds height="55.0" width="85.0" x="0.0" y="0.0"/> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="_4" id="Shape-_4"> <omgdc:Bounds height="55.0" width="85.0" x="445.0" y="280.0"/> <bpmndi:BPMNLabel> <omgdc:Bounds height="55.0" width="85.0" x="0.0" y="0.0"/> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="_5" id="Shape-_5"> <omgdc:Bounds height="55.0" width="85.0" x="570.0" y="275.0"/> <bpmndi:BPMNLabel> <omgdc:Bounds height="55.0" width="85.0" x="0.0" y="0.0"/> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="_6" id="Shape-_6"> <omgdc:Bounds height="55.0" width="85.0" x="510.0" y="485.0"/> <bpmndi:BPMNLabel> <omgdc:Bounds height="55.0" width="85.0" x="0.0" y="0.0"/> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="_7" id="Shape-_7"> <omgdc:Bounds height="32.0" width="32.0" x="550.0" y="665.0"/> <bpmndi:BPMNLabel> <omgdc:Bounds height="32.0" width="32.0" x="0.0" y="0.0"/> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge bpmnElement="_13" id="BPMNEdge__13" sourceElement="_6" targetElement="_7"> <omgdi:waypoint x="566.0" y="540.0"/> <omgdi:waypoint x="566.0" y="665.0"/> <bpmndi:BPMNLabel> <omgdc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="_12" id="BPMNEdge__12" sourceElement="_5" targetElement="_6"> <omgdi:waypoint x="582.5" y="330.0"/> <omgdi:waypoint x="582.5" y="485.0"/> <bpmndi:BPMNLabel> <omgdc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="_8" id="BPMNEdge__8" sourceElement="_2" targetElement="_3"> <omgdi:waypoint x="546.0" y="27.0"/> <omgdi:waypoint x="546.0" y="80.0"/> <bpmndi:BPMNLabel> <omgdc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="_9" id="BPMNEdge__9" sourceElement="_3" targetElement="_4"> <omgdi:waypoint x="510.0" y="135.0"/> <omgdi:waypoint x="510.0" y="280.0"/> <bpmndi:BPMNLabel> <omgdc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="_11" id="BPMNEdge__11" sourceElement="_4" targetElement="_6"> <omgdi:waypoint x="520.0" y="335.0"/> <omgdi:waypoint x="520.0" y="485.0"/> <bpmndi:BPMNLabel> <omgdc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="_10" id="BPMNEdge__10" sourceElement="_3" targetElement="_5"> <omgdi:waypoint x="572.5" y="135.0"/> <omgdi:waypoint x="572.5" y="275.0"/> <bpmndi:BPMNLabel> <omgdc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </definitions>

     

    2.在完成任务是设置流程变量 决定下一步走哪一条连线 

    @Test public void test2(){ ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); processEngine.getRuntimeService().startProcessInstanceByKey("myProcess"); } @Test public void test3(){ ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); HashMap<String, Object> map = new HashMap<>(); map.put("message","重要"); processEngine.getTaskService().complete("15004",map); }

    测试成功

    3.总结

    1、一个活动中可以指定一个或多个SequenceFlow(Start中有一个,End中没有)。

      * 开始活动中有一个SequenceFlow 。

      * 结束活动中没有SequenceFlow 。

      * 其他活动中有1条或多条SequenceFlow

    2、如果只有一个,则可以不使用流程变量设置codition的名称;

    如果有多个,则需要使用流程变量设置codition的名称。message表示流程变量的名称,‘不重要’表示流程变量的值,${}中间的内容要使用boolean类型的表达式,用来判断应该执行的连线。

    最新回复(0)