Activiti结束事件(End Event)

作者:Jesai -2017.08.03T01:03

曾经,黑夜多么漫长,八月雨扰眠,缘何?

声明:版权所有,如需引用请注明出处,如发现抄袭,必追究法律责任

1       前言:

Activiti工作流始于开始任务,止于结束任务。结束事件标志着(子)流程的(分支的)结束。结束事件总是抛出(型)事件。这意味着当流程执行到达结束事件时,会抛出一个结果。结果的类型由事件内部的黑色图标描绘。在XML表示中,类型由子元素声明给出。流程终结又可以分为4种情况:空结束任务、错误结束任务、取消结束任务、终结任务,其中空结束任务是最常见的结束任务。

2       结束任务的类型:

1)空结束任务(none end event)

2)错误结束事件(error end event)

3)取消结束任务(terminate end event)

4)终结任务(Cancel end event)

3       空结束任务(none end event)

空结束任务是最常见的一种结束任务,也是最简单的一种结束任务,只要把结束任务置于流程的最后节点,流程实例运行到该节点的时候,流程引擎就会结束该流程实例。并没有太多复杂的技术。所以不作太多的介绍。空事件的XML表示格式,为普通结束事件声明,没有任何子元素(其它种类的结束事件都有子元素,用于声明其类型)。

3.1   流程实例图标:

图3-1 空结束事件图标

3.2   代码:

 <endEvent id="end" name="my end event" />

4       错误结束事件(error end event)

错误结束事件会在流程到达错误结束事件的时候抛出错误,并结束当前的流程分支。错误可以使用使用匹配的错误边界中间事件 intermediate boundary error event 捕获。如果找不到匹配的错误边界事件,将会抛出异常。

4.1   流程实例图标:

错误结束事件就是自流程或者流程实例的错误结束事件抛出一个bpmn错误。然后被工作流的错误边界事件获取。

图4-1 错误结束事件图标

错误结束事件,表示为结束事件,加上errorEventDefinition子元素:

 <endEvent id="myErrorEndEvent">
<errorEventDefinition errorRef="myError" />
</endEvent>

errorRef属性可以引用在流程外定义的error元素:

 <error id="myError" errorCode="123" />
...
<process id="myProcess">
...

error的errorCode用于查找匹配的错误捕获边界事件。如果errorRef不匹配任何已定义的error,则该errorRef会用做errorCode的快捷方式。这个快捷方式是Activiti特有的。下面的代码片段在功能上是相同的。

 <error id="myError" errorCode="error123" />
...
<process id="myProcess">
...
<endEvent id="myErrorEndEvent">
<errorEventDefinition errorRef="myError" />
</endEvent>
...

与下面的功能相同

 <endEvent id="myErrorEndEvent">
<errorEventDefinition errorRef="error123" />
</endEvent>

请注意errorRef必须遵从BPMN 2.0概要(schema),且必须是合法的QName。

4.2   流程图设计

流程图设计一个子流程,然后子流程里面有一个错误结束事件。外面的错误捕获边界任务就会捕获异常。捕获了异常后,由于是错误边界先去捕获异常,所以捕获错误事件分支会先执行,然后结束。正常结束事件节点所在的分支不会执行。

图4-2 错误结束事件流程设计

4.3   执行结果

图4-3 错误结束事件流程运行结果

4.4   流程代码

 <?xml version='1.0' encoding='UTF-8'?>

 <definitions xmlns="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/processdef">

   <process id="process" isExecutable="true">

     <subProcess id="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74" name="subProcess">

       <startEvent id="sid-EB9804C4-9348-43F7-83DE-2E6640E52064" />

       <endEvent id="sid-507917BF-48BC-4A6E-A2C3-31DF0474F8FE">

         <errorEventDefinition errorRef="testError" />

       </endEvent>

       <serviceTask id="sid-65F770DF-6797-4918-9BD6-21DDA3588804" name="子流程手工任务" activiti:class="light.mvc.workflow.serviceTask.SubErrorTestRunningTask" />

       <sequenceFlow id="sid-7A9F6A19-D24C-4719-8095-F76259D110AE" sourceRef="sid-EB9804C4-9348-43F7-83DE-2E6640E52064" targetRef="sid-65F770DF-6797-4918-9BD6-21DDA3588804" />

       <sequenceFlow id="sid-6203D605-402C-437D-A9A5-8E276AC8020B" sourceRef="sid-65F770DF-6797-4918-9BD6-21DDA3588804" targetRef="sid-507917BF-48BC-4A6E-A2C3-31DF0474F8FE" />

     </subProcess>

     <startEvent id="sid-5E970179-3AD6-449F-962B-5CB88F49EE6B" />

     <sequenceFlow id="sid-BE4D16B9-9F0B-4793-B685-7E0F767F54EB" sourceRef="sid-5E970179-3AD6-449F-962B-5CB88F49EE6B" targetRef="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74" />

     <endEvent id="sid-F37E4B4D-EBBA-40DD-A354-7549CCA62F7F" />

     <boundaryEvent id="sid-CE3D7798-F5CE-4C3D-8206-1EFF95BD0288" attachedToRef="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74">

       <errorEventDefinition errorRef="testError" />

     </boundaryEvent>

     <endEvent id="sid-EB951594-B88B-4C21-8C16-32A07B09D60A" />

     <serviceTask id="sid-2935E764-666C-4DB8-B1D0-8221936FE730" name="正常结束事件" activiti:class="light.mvc.workflow.serviceTask.NormalErrorTestRunningTask" />

     <sequenceFlow id="sid-C2B6D8DC-85C3-45F4-B47E-3839D025226A" sourceRef="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74" targetRef="sid-2935E764-666C-4DB8-B1D0-8221936FE730" />

     <sequenceFlow id="sid-CE29790B-F67C-46AA-9E12-52B39952747F" sourceRef="sid-2935E764-666C-4DB8-B1D0-8221936FE730" targetRef="sid-F37E4B4D-EBBA-40DD-A354-7549CCA62F7F" />

     <serviceTask id="sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1" name="捕获错误事件" activiti:class="light.mvc.workflow.serviceTask.CacheErrorTestRunningTask" />

     <sequenceFlow id="sid-0CDB3258-E356-4A06-818B-A9C8EED3339A" sourceRef="sid-CE3D7798-F5CE-4C3D-8206-1EFF95BD0288" targetRef="sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1" />

     <sequenceFlow id="sid-688D53B8-63D2-43DF-AED6-D8234B4669D1" sourceRef="sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1" targetRef="sid-EB951594-B88B-4C21-8C16-32A07B09D60A" />

   </process>

   <bpmndi:BPMNDiagram id="BPMNDiagram_process">

     <bpmndi:BPMNPlane bpmnElement="process" id="BPMNPlane_process">

       <bpmndi:BPMNShape bpmnElement="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74" id="BPMNShape_sid-2669F680-71E9-4F43-9B2E-AF40435D9C74">

         <omgdc:Bounds height="179.0" width="521.0" x="315.0" y="75.5" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-EB9804C4-9348-43F7-83DE-2E6640E52064" id="BPMNShape_sid-EB9804C4-9348-43F7-83DE-2E6640E52064">

         <omgdc:Bounds height="30.0" width="30.0" x="375.0" y="150.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-507917BF-48BC-4A6E-A2C3-31DF0474F8FE" id="BPMNShape_sid-507917BF-48BC-4A6E-A2C3-31DF0474F8FE">

         <omgdc:Bounds height="28.0" width="28.0" x="720.0" y="151.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-65F770DF-6797-4918-9BD6-21DDA3588804" id="BPMNShape_sid-65F770DF-6797-4918-9BD6-21DDA3588804">

         <omgdc:Bounds height="80.0" width="100.0" x="543.75" y="123.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-5E970179-3AD6-449F-962B-5CB88F49EE6B" id="BPMNShape_sid-5E970179-3AD6-449F-962B-5CB88F49EE6B">

         <omgdc:Bounds height="30.0" width="30.0" x="154.75" y="150.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-F37E4B4D-EBBA-40DD-A354-7549CCA62F7F" id="BPMNShape_sid-F37E4B4D-EBBA-40DD-A354-7549CCA62F7F">

         <omgdc:Bounds height="28.0" width="28.0" x="1024.75" y="144.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-CE3D7798-F5CE-4C3D-8206-1EFF95BD0288" id="BPMNShape_sid-CE3D7798-F5CE-4C3D-8206-1EFF95BD0288">

         <omgdc:Bounds height="30.0" width="30.0" x="600.4320995601703" y="239.7819754816901" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-EB951594-B88B-4C21-8C16-32A07B09D60A" id="BPMNShape_sid-EB951594-B88B-4C21-8C16-32A07B09D60A">

         <omgdc:Bounds height="28.0" width="28.0" x="851.75" y="327.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-2935E764-666C-4DB8-B1D0-8221936FE730" id="BPMNShape_sid-2935E764-666C-4DB8-B1D0-8221936FE730">

         <omgdc:Bounds height="80.0" width="100.0" x="870.0" y="118.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1" id="BPMNShape_sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1">

         <omgdc:Bounds height="80.0" width="100.0" x="707.75" y="306.25" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNEdge bpmnElement="sid-CE29790B-F67C-46AA-9E12-52B39952747F" id="BPMNEdge_sid-CE29790B-F67C-46AA-9E12-52B39952747F">

         <omgdi:waypoint x="970.0" y="158.0" />

         <omgdi:waypoint x="1024.75" y="158.0" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-688D53B8-63D2-43DF-AED6-D8234B4669D1" id="BPMNEdge_sid-688D53B8-63D2-43DF-AED6-D8234B4669D1">

         <omgdi:waypoint x="807.75" y="341.0" />

         <omgdi:waypoint x="851.75" y="341.0" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-6203D605-402C-437D-A9A5-8E276AC8020B" id="BPMNEdge_sid-6203D605-402C-437D-A9A5-8E276AC8020B">

         <omgdi:waypoint x="643.75" y="165.0" />

         <omgdi:waypoint x="720.0" y="165.0" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-7A9F6A19-D24C-4719-8095-F76259D110AE" id="BPMNEdge_sid-7A9F6A19-D24C-4719-8095-F76259D110AE">

         <omgdi:waypoint x="404.99927740552414" y="164.85276782914823" />

         <omgdi:waypoint x="543.75" y="163.4907975460123" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-C2B6D8DC-85C3-45F4-B47E-3839D025226A" id="BPMNEdge_sid-C2B6D8DC-85C3-45F4-B47E-3839D025226A">

         <omgdi:waypoint x="836.0" y="159.7068214804064" />

         <omgdi:waypoint x="870.0" y="159.01596516690856" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-BE4D16B9-9F0B-4793-B685-7E0F767F54EB" id="BPMNEdge_sid-BE4D16B9-9F0B-4793-B685-7E0F767F54EB">

         <omgdi:waypoint x="184.75" y="165.0" />

         <omgdi:waypoint x="315.0" y="165.0" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-0CDB3258-E356-4A06-818B-A9C8EED3339A" id="BPMNEdge_sid-0CDB3258-E356-4A06-818B-A9C8EED3339A">

         <omgdi:waypoint x="615.4320995601703" y="269.7819754816901" />

         <omgdi:waypoint x="615.4320995601703" y="341.0" />

         <omgdi:waypoint x="707.75" y="341.0" />

       </bpmndi:BPMNEdge>

     </bpmndi:BPMNPlane>

   </bpmndi:BPMNDiagram>

 </definitions>

4.5   java监听类代码

4.5.1     子流程监听器:

 /**

  *

  */

 package light.mvc.workflow.serviceTask;

 import org.activiti.engine.delegate.DelegateExecution;

 import org.activiti.engine.delegate.JavaDelegate;

 /** 

  *  

  * 项目名称:lightmvc 

  * 类名称:ServiceTask 

  * 类描述: 

  * 创建人:邓家海 

  * 创建时间:2017年6月4日 下午6:18:11 

  * 修改人:deng 

  * 修改时间:2017年6月4日 下午6:18:11 

  * 修改备注: 

  * @version  

  *  

  */

 public class SubErrorTestRunningTask implements JavaDelegate{        

          //重写委托的提交方法

          @Override

          public void execute(DelegateExecution execution) throws Exception {

                    //receiveTaskprocess

                    System.out.println("SubErrorTestRunningTask is running!");

          }

 }

4.5.2     捕获事件监听器

 /**

  *

  */

 package light.mvc.workflow.serviceTask;

 import org.activiti.engine.delegate.DelegateExecution;

 import org.activiti.engine.delegate.JavaDelegate;

 /** 

  *  

  * 项目名称:lightmvc 

  * 类名称:ServiceTask 

  * 类描述: 

  * 创建人:邓家海 

  * 创建时间:2017年6月4日 下午6:18:11 

  * 修改人:deng 

  * 修改时间:2017年6月4日 下午6:18:11 

  * 修改备注: 

  * @version  

  *  

  */

 public class CacheErrorTestRunningTask implements JavaDelegate{

          //重写委托的提交方法

          @Override

          public void execute(DelegateExecution execution) throws Exception {

                    //receiveTaskprocess

                    System.out.println("CacheErrorTestRunningTask is running!");

          }

 }

4.5.3     正常结束事件监听器

 /**

  *

  */

 package light.mvc.workflow.serviceTask;

 import org.activiti.engine.delegate.DelegateExecution;

 import org.activiti.engine.delegate.JavaDelegate;

 /** 

  *  

  * 项目名称:lightmvc 

  * 类名称:ServiceTask 

  * 类描述: 

  * 创建人:邓家海 

  * 创建时间:2017年6月4日 下午6:18:11 

  * 修改人:deng 

  * 修改时间:2017年6月4日 下午6:18:11 

  * 修改备注: 

  * @version  

  *  

  */

 public class NormalErrorTestRunningTask implements JavaDelegate{

                   //重写委托的提交方法

          @Override

          public void execute(DelegateExecution execution) throws Exception {

                    //receiveTaskprocess

                    System.out.println("NormalErrorTestRunningTask is running!");

          }

 }

4.5.4     扩展1

下面我们改动一下流程,更清晰的看看这个工作的原理是怎么样的。

这一次我们是把错误事件的指向正常结束事件后面去了,可以看到,后面是正常执行的。

图4-3 错误结束事件流程设计

图4-4 错误结束事件运行结果

4.5.5     扩展2

再来改一下流程,可以看出,错误捕获边界是达到了终止主流程的效果的。主流程被中断了。不过错误捕获边界是否有终止事件,主流程都不会被继续往下执行。

图4-5 错误结束事件流程图

图4-6 错误结束事件运行结果

5       取消结束任务(terminate end event)

当到达终止结束事件时,当前的流程实例或子流程会被终止。概念上说,当执行到达终止结束事件时,会判断第一个范围 scope(流程或子流程)并终止它。请注意在BPMN 2.0中,子流程可以是嵌入式子流程,调用活动,事件子流程,或事务子流程。有一条通用规则:当存在多实例的调用过程或嵌入式子流程时,只会终止一个实例,其他的实例与流程实例不会受影响。可以添加一个可选属性terminateAll。当其为true时,无论该终止结束事件在流程定义中的位置,也无论它是否在子流程(甚至是嵌套子流程)中,都会终止(根)流程实例。

5.1   流程实例图标:

图5-1 取消结束事件图标

终止结束事件,表示为结束事件,加上terminateEventDefinition子元素。
请注意terminateAll属性是可选的(默认为false)。

 <endEvent id="myEndEvent >
<terminateEventDefinition activiti:terminateAll="true"></terminateEventDefinition>
</endEvent>

5.2   流程图设计

注意,这个流程的终止事件并没有设置成终止全部,可以看到,全部任务节点都被执行了。

图5-2 取消结束事件流程图设计

5.3   运行结果

图5-3 取消结束事件流程执行结果

5.4   XML代码:

 <?xml version='1.0' encoding='UTF-8'?>

 <definitions xmlns="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/processdef">

   <process id="process" isExecutable="true">

     <subProcess id="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74" name="subProcess">

       <startEvent id="sid-EB9804C4-9348-43F7-83DE-2E6640E52064" />

       <endEvent id="sid-507917BF-48BC-4A6E-A2C3-31DF0474F8FE">

         <extensionElements>

           <activiti:executionListener event="start" class="light.mvc.workflow.serviceTask.TestRunningTask" />

         </extensionElements>

         <errorEventDefinition errorRef="testError" />

       </endEvent>

       <serviceTask id="sid-65F770DF-6797-4918-9BD6-21DDA3588804" name="子流程手工任务" activiti:class="light.mvc.workflow.serviceTask.SubErrorTestRunningTask" />

       <sequenceFlow id="sid-7A9F6A19-D24C-4719-8095-F76259D110AE" sourceRef="sid-EB9804C4-9348-43F7-83DE-2E6640E52064" targetRef="sid-65F770DF-6797-4918-9BD6-21DDA3588804" />

       <sequenceFlow id="sid-6203D605-402C-437D-A9A5-8E276AC8020B" sourceRef="sid-65F770DF-6797-4918-9BD6-21DDA3588804" targetRef="sid-507917BF-48BC-4A6E-A2C3-31DF0474F8FE" />

     </subProcess>

     <startEvent id="sid-5E970179-3AD6-449F-962B-5CB88F49EE6B" />

     <sequenceFlow id="sid-BE4D16B9-9F0B-4793-B685-7E0F767F54EB" sourceRef="sid-5E970179-3AD6-449F-962B-5CB88F49EE6B" targetRef="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74" />

     <endEvent id="sid-F37E4B4D-EBBA-40DD-A354-7549CCA62F7F" />

     <boundaryEvent id="sid-CE3D7798-F5CE-4C3D-8206-1EFF95BD0288" attachedToRef="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74">

       <errorEventDefinition errorRef="testError" />

     </boundaryEvent>

     <endEvent id="sid-EB951594-B88B-4C21-8C16-32A07B09D60A" />

     <serviceTask id="sid-2935E764-666C-4DB8-B1D0-8221936FE730" name="正常结束事件" activiti:class="light.mvc.workflow.serviceTask.NormalErrorTestRunningTask" />

     <sequenceFlow id="sid-C2B6D8DC-85C3-45F4-B47E-3839D025226A" sourceRef="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74" targetRef="sid-2935E764-666C-4DB8-B1D0-8221936FE730" />

     <sequenceFlow id="sid-CE29790B-F67C-46AA-9E12-52B39952747F" sourceRef="sid-2935E764-666C-4DB8-B1D0-8221936FE730" targetRef="sid-F37E4B4D-EBBA-40DD-A354-7549CCA62F7F" />

     <serviceTask id="sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1" name="捕获错误事件" activiti:class="light.mvc.workflow.serviceTask.CacheErrorTestRunningTask" />

     <sequenceFlow id="sid-0CDB3258-E356-4A06-818B-A9C8EED3339A" sourceRef="sid-CE3D7798-F5CE-4C3D-8206-1EFF95BD0288" targetRef="sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1" />

     <sequenceFlow id="sid-688D53B8-63D2-43DF-AED6-D8234B4669D1" sourceRef="sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1" targetRef="sid-EB951594-B88B-4C21-8C16-32A07B09D60A" />

   </process>

   <bpmndi:BPMNDiagram id="BPMNDiagram_process">

     <bpmndi:BPMNPlane bpmnElement="process" id="BPMNPlane_process">

       <bpmndi:BPMNShape bpmnElement="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74" id="BPMNShape_sid-2669F680-71E9-4F43-9B2E-AF40435D9C74">

         <omgdc:Bounds height="179.0" width="521.0" x="315.0" y="75.5" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-EB9804C4-9348-43F7-83DE-2E6640E52064" id="BPMNShape_sid-EB9804C4-9348-43F7-83DE-2E6640E52064">

         <omgdc:Bounds height="30.0" width="30.0" x="375.0" y="150.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-507917BF-48BC-4A6E-A2C3-31DF0474F8FE" id="BPMNShape_sid-507917BF-48BC-4A6E-A2C3-31DF0474F8FE">

         <omgdc:Bounds height="28.0" width="28.0" x="720.0" y="151.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-65F770DF-6797-4918-9BD6-21DDA3588804" id="BPMNShape_sid-65F770DF-6797-4918-9BD6-21DDA3588804">

         <omgdc:Bounds height="80.0" width="100.0" x="543.75" y="123.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-5E970179-3AD6-449F-962B-5CB88F49EE6B" id="BPMNShape_sid-5E970179-3AD6-449F-962B-5CB88F49EE6B">

         <omgdc:Bounds height="30.0" width="30.0" x="154.75" y="150.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-F37E4B4D-EBBA-40DD-A354-7549CCA62F7F" id="BPMNShape_sid-F37E4B4D-EBBA-40DD-A354-7549CCA62F7F">

         <omgdc:Bounds height="28.0" width="28.0" x="1024.75" y="144.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-CE3D7798-F5CE-4C3D-8206-1EFF95BD0288" id="BPMNShape_sid-CE3D7798-F5CE-4C3D-8206-1EFF95BD0288">

         <omgdc:Bounds height="30.0" width="30.0" x="600.4320995601703" y="239.7819754816901" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-EB951594-B88B-4C21-8C16-32A07B09D60A" id="BPMNShape_sid-EB951594-B88B-4C21-8C16-32A07B09D60A">

         <omgdc:Bounds height="28.0" width="28.0" x="851.75" y="327.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-2935E764-666C-4DB8-B1D0-8221936FE730" id="BPMNShape_sid-2935E764-666C-4DB8-B1D0-8221936FE730">

         <omgdc:Bounds height="80.0" width="100.0" x="870.0" y="118.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1" id="BPMNShape_sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1">

         <omgdc:Bounds height="80.0" width="100.0" x="707.75" y="306.25" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNEdge bpmnElement="sid-CE29790B-F67C-46AA-9E12-52B39952747F" id="BPMNEdge_sid-CE29790B-F67C-46AA-9E12-52B39952747F">

         <omgdi:waypoint x="970.0" y="158.0" />

         <omgdi:waypoint x="1024.75" y="158.0" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-688D53B8-63D2-43DF-AED6-D8234B4669D1" id="BPMNEdge_sid-688D53B8-63D2-43DF-AED6-D8234B4669D1">

         <omgdi:waypoint x="807.75" y="341.0" />

         <omgdi:waypoint x="851.75" y="341.0" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-6203D605-402C-437D-A9A5-8E276AC8020B" id="BPMNEdge_sid-6203D605-402C-437D-A9A5-8E276AC8020B">

         <omgdi:waypoint x="643.75" y="165.0" />

         <omgdi:waypoint x="720.0" y="165.0" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-7A9F6A19-D24C-4719-8095-F76259D110AE" id="BPMNEdge_sid-7A9F6A19-D24C-4719-8095-F76259D110AE">

         <omgdi:waypoint x="404.99927740552414" y="164.85276782914823" />

         <omgdi:waypoint x="543.75" y="163.4907975460123" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-C2B6D8DC-85C3-45F4-B47E-3839D025226A" id="BPMNEdge_sid-C2B6D8DC-85C3-45F4-B47E-3839D025226A">

         <omgdi:waypoint x="836.0" y="159.7068214804064" />

         <omgdi:waypoint x="870.0" y="159.01596516690856" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-BE4D16B9-9F0B-4793-B685-7E0F767F54EB" id="BPMNEdge_sid-BE4D16B9-9F0B-4793-B685-7E0F767F54EB">

         <omgdi:waypoint x="184.75" y="165.0" />

         <omgdi:waypoint x="315.0" y="165.0" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-0CDB3258-E356-4A06-818B-A9C8EED3339A" id="BPMNEdge_sid-0CDB3258-E356-4A06-818B-A9C8EED3339A">

         <omgdi:waypoint x="615.4320995601703" y="269.7819754816901" />

         <omgdi:waypoint x="615.4320995601703" y="341.0" />

         <omgdi:waypoint x="707.75" y="341.0" />

       </bpmndi:BPMNEdge>

     </bpmndi:BPMNPlane>

   </bpmndi:BPMNDiagram>

 </definitions>

5.5   扩展

这一次,我们把该流程的终止任务设置成终止全部,可以看到,子流程执行完了之后,主流程被终止了。由此可见,终止的只是主流程,子流程并没有终止。

图5-4 取消结束事件图标

5.6   运行结果

图5-5 取消结束事件执行结果

5.7   XML代码:

<?xml version='1.0' encoding='UTF-8'?>

<definitions xmlns="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/processdef">

  <process id="process" isExecutable="true">

    <subProcess id="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74" name="subProcess">

      <startEvent id="sid-EB9804C4-9348-43F7-83DE-2E6640E52064" />

      <endEvent id="sid-507917BF-48BC-4A6E-A2C3-31DF0474F8FE">

        <errorEventDefinition errorRef="testError" />

      </endEvent>

      <serviceTask id="sid-65F770DF-6797-4918-9BD6-21DDA3588804" name="子流程手工任务" activiti:class="light.mvc.workflow.serviceTask.SubErrorTestRunningTask" />

      <sequenceFlow id="sid-7A9F6A19-D24C-4719-8095-F76259D110AE" sourceRef="sid-EB9804C4-9348-43F7-83DE-2E6640E52064" targetRef="sid-65F770DF-6797-4918-9BD6-21DDA3588804" />

      <sequenceFlow id="sid-6203D605-402C-437D-A9A5-8E276AC8020B" sourceRef="sid-65F770DF-6797-4918-9BD6-21DDA3588804" targetRef="sid-507917BF-48BC-4A6E-A2C3-31DF0474F8FE" />

    </subProcess>

    <startEvent id="sid-5E970179-3AD6-449F-962B-5CB88F49EE6B" />

    <sequenceFlow id="sid-BE4D16B9-9F0B-4793-B685-7E0F767F54EB" sourceRef="sid-5E970179-3AD6-449F-962B-5CB88F49EE6B" targetRef="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74" />

    <endEvent id="sid-F37E4B4D-EBBA-40DD-A354-7549CCA62F7F" />

    <boundaryEvent id="sid-CE3D7798-F5CE-4C3D-8206-1EFF95BD0288" attachedToRef="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74">

      <errorEventDefinition errorRef="testError" />

    </boundaryEvent>

    <endEvent id="sid-EB951594-B88B-4C21-8C16-32A07B09D60A" />

    <serviceTask id="sid-2935E764-666C-4DB8-B1D0-8221936FE730" name="正常结束事件" activiti:class="light.mvc.workflow.serviceTask.NormalErrorTestRunningTask" />

    <sequenceFlow id="sid-C2B6D8DC-85C3-45F4-B47E-3839D025226A" sourceRef="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74" targetRef="sid-2935E764-666C-4DB8-B1D0-8221936FE730" />

    <sequenceFlow id="sid-CE29790B-F67C-46AA-9E12-52B39952747F" sourceRef="sid-2935E764-666C-4DB8-B1D0-8221936FE730" targetRef="sid-F37E4B4D-EBBA-40DD-A354-7549CCA62F7F" />

    <serviceTask id="sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1" name="捕获错误事件" activiti:class="light.mvc.workflow.serviceTask.CacheErrorTestRunningTask" />

    <sequenceFlow id="sid-0CDB3258-E356-4A06-818B-A9C8EED3339A" sourceRef="sid-CE3D7798-F5CE-4C3D-8206-1EFF95BD0288" targetRef="sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1" />

    <sequenceFlow id="sid-688D53B8-63D2-43DF-AED6-D8234B4669D1" sourceRef="sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1" targetRef="sid-EB951594-B88B-4C21-8C16-32A07B09D60A" />

  </process>

  <bpmndi:BPMNDiagram id="BPMNDiagram_process">

    <bpmndi:BPMNPlane bpmnElement="process" id="BPMNPlane_process">

      <bpmndi:BPMNShape bpmnElement="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74" id="BPMNShape_sid-2669F680-71E9-4F43-9B2E-AF40435D9C74">

        <omgdc:Bounds height="179.0" width="521.0" x="315.0" y="75.5" />

      </bpmndi:BPMNShape>

      <bpmndi:BPMNShape bpmnElement="sid-EB9804C4-9348-43F7-83DE-2E6640E52064" id="BPMNShape_sid-EB9804C4-9348-43F7-83DE-2E6640E52064">

        <omgdc:Bounds height="30.0" width="30.0" x="375.0" y="150.0" />

      </bpmndi:BPMNShape>

      <bpmndi:BPMNShape bpmnElement="sid-507917BF-48BC-4A6E-A2C3-31DF0474F8FE" id="BPMNShape_sid-507917BF-48BC-4A6E-A2C3-31DF0474F8FE">

        <omgdc:Bounds height="28.0" width="28.0" x="720.0" y="151.0" />

      </bpmndi:BPMNShape>

      <bpmndi:BPMNShape bpmnElement="sid-65F770DF-6797-4918-9BD6-21DDA3588804" id="BPMNShape_sid-65F770DF-6797-4918-9BD6-21DDA3588804">

        <omgdc:Bounds height="80.0" width="100.0" x="543.75" y="123.0" />

      </bpmndi:BPMNShape>

      <bpmndi:BPMNShape bpmnElement="sid-5E970179-3AD6-449F-962B-5CB88F49EE6B" id="BPMNShape_sid-5E970179-3AD6-449F-962B-5CB88F49EE6B">

        <omgdc:Bounds height="30.0" width="30.0" x="154.75" y="150.0" />

      </bpmndi:BPMNShape>

      <bpmndi:BPMNShape bpmnElement="sid-F37E4B4D-EBBA-40DD-A354-7549CCA62F7F" id="BPMNShape_sid-F37E4B4D-EBBA-40DD-A354-7549CCA62F7F">

        <omgdc:Bounds height="28.0" width="28.0" x="1024.75" y="144.0" />

      </bpmndi:BPMNShape>

      <bpmndi:BPMNShape bpmnElement="sid-CE3D7798-F5CE-4C3D-8206-1EFF95BD0288" id="BPMNShape_sid-CE3D7798-F5CE-4C3D-8206-1EFF95BD0288">

        <omgdc:Bounds height="30.0" width="30.0" x="600.4320995601703" y="239.7819754816901" />

      </bpmndi:BPMNShape>

      <bpmndi:BPMNShape bpmnElement="sid-EB951594-B88B-4C21-8C16-32A07B09D60A" id="BPMNShape_sid-EB951594-B88B-4C21-8C16-32A07B09D60A">

        <omgdc:Bounds height="28.0" width="28.0" x="851.75" y="327.0" />

      </bpmndi:BPMNShape>

      <bpmndi:BPMNShape bpmnElement="sid-2935E764-666C-4DB8-B1D0-8221936FE730" id="BPMNShape_sid-2935E764-666C-4DB8-B1D0-8221936FE730">

        <omgdc:Bounds height="80.0" width="100.0" x="870.0" y="118.0" />

      </bpmndi:BPMNShape>

      <bpmndi:BPMNShape bpmnElement="sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1" id="BPMNShape_sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1">

        <omgdc:Bounds height="80.0" width="100.0" x="707.75" y="306.25" />

      </bpmndi:BPMNShape>

      <bpmndi:BPMNEdge bpmnElement="sid-CE29790B-F67C-46AA-9E12-52B39952747F" id="BPMNEdge_sid-CE29790B-F67C-46AA-9E12-52B39952747F">

        <omgdi:waypoint x="970.0" y="158.0" />

        <omgdi:waypoint x="1024.75" y="158.0" />

      </bpmndi:BPMNEdge>

      <bpmndi:BPMNEdge bpmnElement="sid-688D53B8-63D2-43DF-AED6-D8234B4669D1" id="BPMNEdge_sid-688D53B8-63D2-43DF-AED6-D8234B4669D1">

        <omgdi:waypoint x="807.75" y="341.0" />

        <omgdi:waypoint x="851.75" y="341.0" />

      </bpmndi:BPMNEdge>

      <bpmndi:BPMNEdge bpmnElement="sid-6203D605-402C-437D-A9A5-8E276AC8020B" id="BPMNEdge_sid-6203D605-402C-437D-A9A5-8E276AC8020B">

        <omgdi:waypoint x="643.75" y="165.0" />

        <omgdi:waypoint x="720.0" y="165.0" />

      </bpmndi:BPMNEdge>

      <bpmndi:BPMNEdge bpmnElement="sid-7A9F6A19-D24C-4719-8095-F76259D110AE" id="BPMNEdge_sid-7A9F6A19-D24C-4719-8095-F76259D110AE">

        <omgdi:waypoint x="404.99927740552414" y="164.85276782914823" />

        <omgdi:waypoint x="543.75" y="163.4907975460123" />

      </bpmndi:BPMNEdge>

      <bpmndi:BPMNEdge bpmnElement="sid-C2B6D8DC-85C3-45F4-B47E-3839D025226A" id="BPMNEdge_sid-C2B6D8DC-85C3-45F4-B47E-3839D025226A">

        <omgdi:waypoint x="836.0" y="159.7068214804064" />

        <omgdi:waypoint x="870.0" y="159.01596516690856" />

      </bpmndi:BPMNEdge>

      <bpmndi:BPMNEdge bpmnElement="sid-BE4D16B9-9F0B-4793-B685-7E0F767F54EB" id="BPMNEdge_sid-BE4D16B9-9F0B-4793-B685-7E0F767F54EB">

        <omgdi:waypoint x="184.75" y="165.0" />

        <omgdi:waypoint x="315.0" y="165.0" />

      </bpmndi:BPMNEdge>

      <bpmndi:BPMNEdge bpmnElement="sid-0CDB3258-E356-4A06-818B-A9C8EED3339A" id="BPMNEdge_sid-0CDB3258-E356-4A06-818B-A9C8EED3339A">

        <omgdi:waypoint x="615.4320995601703" y="269.7819754816901" />

        <omgdi:waypoint x="615.4320995601703" y="341.0" />

        <omgdi:waypoint x="707.75" y="341.0" />

      </bpmndi:BPMNEdge>

    </bpmndi:BPMNPlane>

  </bpmndi:BPMNDiagram>

</definitions>

5.8   java监听器代码:

 /**

  *

  */

 package light.mvc.workflow.serviceTask;

 import org.activiti.engine.delegate.DelegateExecution;

 import org.activiti.engine.delegate.JavaDelegate;

 /** 

  *  

  * 项目名称:lightmvc 

  * 类名称:ServiceTask 

  * 类描述: 

  * 创建人:邓家海 

  * 创建时间:2017年6月4日 下午6:18:11 

  * 修改人:deng 

  * 修改时间:2017年6月4日 下午6:18:11 

  * 修改备注: 

  * @version  

  *  

  */

 public class FirstTestRunningTask implements JavaDelegate{       

          //重写委托的提交方法

          @Override

          public void execute(DelegateExecution execution) throws Exception {

                    //receiveTaskprocess

                    System.out.println("FirstTestRunningTask is running!");

          }

 }
 /**

  *

  */

 package light.mvc.workflow.serviceTask;

 import org.activiti.engine.delegate.DelegateExecution;

 import org.activiti.engine.delegate.JavaDelegate;

 /** 

  *  

  * 项目名称:lightmvc 

  * 类名称:ServiceTask 

  * 类描述: 

  * 创建人:邓家海 

  * 创建时间:2017年6月4日 下午6:18:11 

  * 修改人:deng 

  * 修改时间:2017年6月4日 下午6:18:11 

  * 修改备注: 

  * @version  

  *  

  */

 public class SecondTestRunningTask implements JavaDelegate{  

          //重写委托的提交方法

          @Override

          public void execute(DelegateExecution execution) throws Exception {

                    //receiveTaskprocess

                    System.out.println("SecondTestRunningTask is running!");

          }

 }
 /**

  *

  */

 package light.mvc.workflow.serviceTask;

 import org.activiti.engine.delegate.DelegateExecution;

 import org.activiti.engine.delegate.JavaDelegate;

 /** 

  *  

  * 项目名称:lightmvc 

  * 类名称:ServiceTask 

  * 类描述: 

  * 创建人:邓家海 

  * 创建时间:2017年6月4日 下午6:18:11 

  * 修改人:deng 

  * 修改时间:2017年6月4日 下午6:18:11 

  * 修改备注: 

  * @version  

  *  

  */

 public class ThreeTestRunningTask implements JavaDelegate{    

          //重写委托的提交方法

          @Override

          public void execute(DelegateExecution execution) throws Exception {

                    //receiveTaskprocess

                    System.out.println("ThreeTestRunningTask is running!");

          }

 }
 /**

  *

  */

 package light.mvc.workflow.serviceTask;

 import org.activiti.engine.delegate.BpmnError;

 import org.activiti.engine.delegate.DelegateExecution;

 import org.activiti.engine.delegate.JavaDelegate;

 /** 

  *  

  * 项目名称:lightmvc 

  * 类名称:ServiceTask 

  * 类描述: 

  * 创建人:邓家海 

  * 创建时间:2017年6月4日 下午6:18:11 

  * 修改人:deng 

  * 修改时间:2017年7月16日 下午7:28:11 

  * 修改备注: 

  * @version  

  *  

  */

 public class TestRunningTask implements JavaDelegate{

                   //重写委托的提交方法

          @Override

          public void execute(DelegateExecution execution) throws Exception{

                             System.out.println("TestRunningTask is running!");

          }

 }

6       终结任务(Cancel end event)

取消结束事件,只能与bpmn事务子流程(bpmn transaction subprocess)一起使用。当到达取消结束事件时,会抛出取消事件,且必须由取消边界事件(cancel boundary event)捕获。之后这个取消边界事件将取消事务,并触发补偿(compensation)。

6.1   流程实例图标:

图6-1 终结事件图标

6.2   流程图设计

注意,子流程必须是事务子流程,否则会抛异常。在这里可以看到,主流程是被终止的

图6-3 终结事件流程设计

6.3   执行结果

图6-4 终结事件执行结果

6.4   XML代码:

 <?xml version='1.0' encoding='UTF-8'?>

 <definitions xmlns="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/processdef">

   <process id="process" isExecutable="true">

     <serviceTask id="sid-379EE829-82D3-4FDD-8B7B-BC23EAA22EEA" name="Four" activiti:class="light.mvc.workflow.serviceTask.FourTestRunningTask" />

     <endEvent id="sid-DD868C6E-0BCC-4074-8ECD-EC0FD43EE1D4" name="CacheEnd">

       <extensionElements>

         <activiti:executionListener event="start" class="light.mvc.workflow.serviceTask.CacheEndTestRunningTask" />

       </extensionElements>

     </endEvent>

     <sequenceFlow id="sid-2D990EC2-4C0D-4802-AD4A-060C3D6C9AD5" sourceRef="sid-379EE829-82D3-4FDD-8B7B-BC23EAA22EEA" targetRef="sid-DD868C6E-0BCC-4074-8ECD-EC0FD43EE1D4" />

     <sequenceFlow id="sid-DF71B4EC-8565-4576-9C4E-08E5B022A1E6" sourceRef="sid-403E776E-E879-46AE-8C38-F95612795F54" targetRef="sid-379EE829-82D3-4FDD-8B7B-BC23EAA22EEA" />

     <endEvent id="sid-6E841FD5-91A5-418B-89FD-7B97B3005A9D" name="NormalEnd">

       <extensionElements>

         <activiti:executionListener event="start" class="light.mvc.workflow.serviceTask.NormalEndTestRunningTask" />

       </extensionElements>

     </endEvent>

     <sequenceFlow id="sid-FA2AAEE1-C3EB-4291-9333-83CAE7773B0E" sourceRef="sid-ECFBFB19-9774-4B38-BEA2-02B4C02F3C8F" targetRef="sid-6E841FD5-91A5-418B-89FD-7B97B3005A9D" />

     <serviceTask id="sid-ECFBFB19-9774-4B38-BEA2-02B4C02F3C8F" name="Three" activiti:class="light.mvc.workflow.serviceTask.ThreeTestRunningTask" />

     <startEvent id="sid-1F74E6EF-FBDB-426F-8623-B24E2A247F22" />

     <sequenceFlow id="sid-1504E61E-C564-4017-B118-78D3437EC26E" sourceRef="sid-1F74E6EF-FBDB-426F-8623-B24E2A247F22" targetRef="sid-A0E1519E-9B55-4297-9A12-828E0350E8BE" />

     <transaction id="sid-A0E1519E-9B55-4297-9A12-828E0350E8BE" name="subProcess">

       <endEvent id="sid-8F0912E8-6F42-4E21-BBAC-CD5619FBED13" name="CancelEvent">

         <extensionElements>

           <activiti:executionListener event="start" class="light.mvc.workflow.serviceTask.CancelEndEventTestRunningTask" />

         </extensionElements>

         <cancelEventDefinition />

       </endEvent>

       <endEvent id="sid-75C106FA-BE45-44C7-BA67-7C078737D2FB" name="SubNormalEnd">

         <extensionElements>

           <activiti:executionListener event="start" class="light.mvc.workflow.serviceTask.SubNormalEndTestRunningTask" />

         </extensionElements>

       </endEvent>

       <serviceTask id="sid-674CCA99-084E-48B8-96EC-F2C46BEF2F39" name="Second" activiti:class="light.mvc.workflow.serviceTask.SecondTestRunningTask" />

       <serviceTask id="sid-18151C51-783E-4050-82E9-D1EDF442F662" name="First
" activiti:class="light.mvc.workflow.serviceTask.FirstTestRunningTask" />

       <startEvent id="sid-0AC715C3-CCD6-4212-B05B-696E50F31D7E" />

       <sequenceFlow id="sid-BF460B0C-C157-49CA-9E69-19075219BB59" sourceRef="sid-0AC715C3-CCD6-4212-B05B-696E50F31D7E" targetRef="sid-18151C51-783E-4050-82E9-D1EDF442F662" />

       <sequenceFlow id="sid-76368B45-07DD-45A5-95B9-600325F34C61" sourceRef="sid-18151C51-783E-4050-82E9-D1EDF442F662" targetRef="sid-674CCA99-084E-48B8-96EC-F2C46BEF2F39" />

       <sequenceFlow id="sid-FE2E4DD7-0358-4EA4-B1CD-FF41923EA1CB" sourceRef="sid-674CCA99-084E-48B8-96EC-F2C46BEF2F39" targetRef="sid-75C106FA-BE45-44C7-BA67-7C078737D2FB" />

       <sequenceFlow id="sid-73E5A61C-2515-4F2D-9A61-91446AAF12FC" sourceRef="sid-18151C51-783E-4050-82E9-D1EDF442F662" targetRef="sid-8F0912E8-6F42-4E21-BBAC-CD5619FBED13" />

     </transaction>

     <sequenceFlow id="sid-B2D27F5B-E292-4AE8-96B3-AB5A2872B039" sourceRef="sid-A0E1519E-9B55-4297-9A12-828E0350E8BE" targetRef="sid-ECFBFB19-9774-4B38-BEA2-02B4C02F3C8F" />

     <boundaryEvent id="sid-403E776E-E879-46AE-8C38-F95612795F54" name="CancelEvent" attachedToRef="sid-A0E1519E-9B55-4297-9A12-828E0350E8BE" cancelActivity="false">

       <cancelEventDefinition />

     </boundaryEvent>

   </process>

   <bpmndi:BPMNDiagram id="BPMNDiagram_process">

     <bpmndi:BPMNPlane bpmnElement="process" id="BPMNPlane_process">

       <bpmndi:BPMNShape bpmnElement="sid-379EE829-82D3-4FDD-8B7B-BC23EAA22EEA" id="BPMNShape_sid-379EE829-82D3-4FDD-8B7B-BC23EAA22EEA">

         <omgdc:Bounds height="80.0" width="100.0" x="617.7854450025696" y="285.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-DD868C6E-0BCC-4074-8ECD-EC0FD43EE1D4" id="BPMNShape_sid-DD868C6E-0BCC-4074-8ECD-EC0FD43EE1D4">

         <omgdc:Bounds height="28.0" width="28.0" x="840.0" y="311.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-6E841FD5-91A5-418B-89FD-7B97B3005A9D" id="BPMNShape_sid-6E841FD5-91A5-418B-89FD-7B97B3005A9D">

         <omgdc:Bounds height="28.0" width="28.0" x="961.75" y="102.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-ECFBFB19-9774-4B38-BEA2-02B4C02F3C8F" id="BPMNShape_sid-ECFBFB19-9774-4B38-BEA2-02B4C02F3C8F">

         <omgdc:Bounds height="80.0" width="100.0" x="816.75" y="76.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-1F74E6EF-FBDB-426F-8623-B24E2A247F22" id="BPMNShape_sid-1F74E6EF-FBDB-426F-8623-B24E2A247F22">

         <omgdc:Bounds height="30.0" width="30.0" x="161.75" y="101.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-A0E1519E-9B55-4297-9A12-828E0350E8BE" id="BPMNShape_sid-A0E1519E-9B55-4297-9A12-828E0350E8BE">

         <omgdc:Bounds height="190.0" width="477.0" x="266.75" y="21.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-8F0912E8-6F42-4E21-BBAC-CD5619FBED13" id="BPMNShape_sid-8F0912E8-6F42-4E21-BBAC-CD5619FBED13">

         <omgdc:Bounds height="28.0" width="28.0" x="411.0" y="165.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-75C106FA-BE45-44C7-BA67-7C078737D2FB" id="BPMNShape_sid-75C106FA-BE45-44C7-BA67-7C078737D2FB">

         <omgdc:Bounds height="28.0" width="28.0" x="685.0" y="86.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-674CCA99-084E-48B8-96EC-F2C46BEF2F39" id="BPMNShape_sid-674CCA99-084E-48B8-96EC-F2C46BEF2F39">

         <omgdc:Bounds height="80.0" width="100.0" x="540.0" y="60.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-18151C51-783E-4050-82E9-D1EDF442F662" id="BPMNShape_sid-18151C51-783E-4050-82E9-D1EDF442F662">

         <omgdc:Bounds height="80.0" width="100.0" x="375.0" y="60.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-0AC715C3-CCD6-4212-B05B-696E50F31D7E" id="BPMNShape_sid-0AC715C3-CCD6-4212-B05B-696E50F31D7E">

         <omgdc:Bounds height="30.0" width="30.0" x="300.0" y="83.0" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNShape bpmnElement="sid-403E776E-E879-46AE-8C38-F95612795F54" id="BPMNShape_sid-403E776E-E879-46AE-8C38-F95612795F54">

         <omgdc:Bounds height="30.0" width="30.0" x="652.7854450025696" y="196.32788210358325" />

       </bpmndi:BPMNShape>

       <bpmndi:BPMNEdge bpmnElement="sid-BF460B0C-C157-49CA-9E69-19075219BB59" id="BPMNEdge_sid-BF460B0C-C157-49CA-9E69-19075219BB59">

         <omgdi:waypoint x="329.99752127569985" y="98.27268220501271" />

         <omgdi:waypoint x="375.0" y="99.0909090909091" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-1504E61E-C564-4017-B118-78D3437EC26E" id="BPMNEdge_sid-1504E61E-C564-4017-B118-78D3437EC26E">

         <omgdi:waypoint x="191.75" y="116.0" />

         <omgdi:waypoint x="266.75" y="116.0" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-2D990EC2-4C0D-4802-AD4A-060C3D6C9AD5" id="BPMNEdge_sid-2D990EC2-4C0D-4802-AD4A-060C3D6C9AD5">

         <omgdi:waypoint x="717.7854450025696" y="325.0" />

         <omgdi:waypoint x="840.0" y="325.0" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-B2D27F5B-E292-4AE8-96B3-AB5A2872B039" id="BPMNEdge_sid-B2D27F5B-E292-4AE8-96B3-AB5A2872B039">

         <omgdi:waypoint x="743.75" y="116.0" />

         <omgdi:waypoint x="816.75" y="116.0" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-FE2E4DD7-0358-4EA4-B1CD-FF41923EA1CB" id="BPMNEdge_sid-FE2E4DD7-0358-4EA4-B1CD-FF41923EA1CB">

         <omgdi:waypoint x="640.0" y="100.0" />

         <omgdi:waypoint x="685.0" y="100.0" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-DF71B4EC-8565-4576-9C4E-08E5B022A1E6" id="BPMNEdge_sid-DF71B4EC-8565-4576-9C4E-08E5B022A1E6">

         <omgdi:waypoint x="667.7854450025696" y="226.32788210358325" />

         <omgdi:waypoint x="667.7854450025696" y="285.0" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-FA2AAEE1-C3EB-4291-9333-83CAE7773B0E" id="BPMNEdge_sid-FA2AAEE1-C3EB-4291-9333-83CAE7773B0E">

         <omgdi:waypoint x="916.75" y="116.0" />

         <omgdi:waypoint x="961.75" y="116.0" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-73E5A61C-2515-4F2D-9A61-91446AAF12FC" id="BPMNEdge_sid-73E5A61C-2515-4F2D-9A61-91446AAF12FC">

         <omgdi:waypoint x="423.8888888888889" y="140.0" />

         <omgdi:waypoint x="422.81932127326405" y="178.50443416249374" />

       </bpmndi:BPMNEdge>

       <bpmndi:BPMNEdge bpmnElement="sid-76368B45-07DD-45A5-95B9-600325F34C61" id="BPMNEdge_sid-76368B45-07DD-45A5-95B9-600325F34C61">

         <omgdi:waypoint x="475.0" y="100.0" />

         <omgdi:waypoint x="540.0" y="100.0" />

       </bpmndi:BPMNEdge>

     </bpmndi:BPMNPlane>

   </bpmndi:BPMNDiagram>

 </definitions>

6.5   Java监听类代码:

 /**

  *

  */

 package light.mvc.workflow.serviceTask;

 import org.activiti.engine.delegate.DelegateExecution;

 import org.activiti.engine.delegate.JavaDelegate;

 /** 

  *  

  * 项目名称:lightmvc 

  * 类名称:ServiceTask 

  * 类描述: 

  * 创建人:邓家海 

  * 创建时间:2017年6月4日 下午6:18:11 

  * 修改人:deng 

  * 修改时间:2017年6月4日 下午6:18:11 

  * 修改备注: 

  * @version  

  *  

  */

 public class FirstTestRunningTask implements JavaDelegate{       

          //重写委托的提交方法

          @Override

          public void execute(DelegateExecution execution) throws Exception {

                    //receiveTaskprocess

                    System.out.println("FirstTestRunningTask is running!");

          }

 }
 /**

  *

  */

 package light.mvc.workflow.serviceTask;

 import org.activiti.engine.delegate.DelegateExecution;

 import org.activiti.engine.delegate.JavaDelegate;

 /** 

  *  

  * 项目名称:lightmvc 

  * 类名称:ServiceTask 

  * 类描述: 

  * 创建人:邓家海 

  * 创建时间:2017年6月4日 下午6:18:11 

  * 修改人:deng 

  * 修改时间:2017年6月4日 下午6:18:11 

  * 修改备注: 

  * @version  

  *  

  */

 public class SecondTestRunningTask implements JavaDelegate{  

          //重写委托的提交方法

          @Override

          public void execute(DelegateExecution execution) throws Exception {

                    //receiveTaskprocess

                    System.out.println("SecondTestRunningTask is running!");

          }

 }
 /**

  *

  */

 package light.mvc.workflow.serviceTask;

 import org.activiti.engine.delegate.DelegateExecution;

 import org.activiti.engine.delegate.JavaDelegate;

 /** 

  *  

  * 项目名称:lightmvc 

  * 类名称:ServiceTask 

  * 类描述: 

  * 创建人:邓家海 

  * 创建时间:2017年6月4日 下午6:18:11 

  * 修改人:deng 

  * 修改时间:2017年6月4日 下午6:18:11 

  * 修改备注: 

  * @version  

  *  

  */

 public class ThreeTestRunningTask implements JavaDelegate{    

          //重写委托的提交方法

          @Override

          public void execute(DelegateExecution execution) throws Exception {

                    //receiveTaskprocess

                    System.out.println("ThreeTestRunningTask is running!");

          }

 }
 /**

  *

  */

 package light.mvc.workflow.serviceTask;

 import org.activiti.engine.delegate.DelegateExecution;

 import org.activiti.engine.delegate.JavaDelegate;

 /** 

  *  

  * 项目名称:lightmvc 

  * 类名称:ServiceTask 

  * 类描述: 

  * 创建人:邓家海 

  * 创建时间:2017年6月4日 下午6:18:11 

  * 修改人:deng 

  * 修改时间:2017年6月4日 下午6:18:11 

  * 修改备注: 

  * @version  

  *  

  */

 public class FourTestRunningTask implements JavaDelegate{       

          //重写委托的提交方法

          @Override

          public void execute(DelegateExecution execution) throws Exception {

                    //receiveTaskprocess

                    System.out.println("FourTestRunningTask is running!");

          }

 }
 /**

  *

  */

 package light.mvc.workflow.serviceTask;

 import org.activiti.engine.delegate.DelegateExecution;

 import org.activiti.engine.delegate.JavaDelegate;

 /** 

  *  

  * 项目名称:lightmvc 

  * 类名称:ServiceTask 

  * 类描述: 

  * 创建人:邓家海 

  * 创建时间:2017年6月4日 下午6:18:11 

  * 修改人:deng 

  * 修改时间:2017年6月4日 下午6:18:11 

  * 修改备注: 

  * @version  

  *  

  */

 public class NormalEndTestRunningTask implements JavaDelegate{   

          //重写委托的提交方法

          @Override

          public void execute(DelegateExecution execution) throws Exception {

                    //receiveTaskprocess

                    System.out.println("NormalEndTestRunningTask is running!");

          }

 }
 /**

  *

  */

 package light.mvc.workflow.serviceTask;

 import org.activiti.engine.delegate.DelegateExecution;

 import org.activiti.engine.delegate.JavaDelegate;

 /** 

  *  

  * 项目名称:lightmvc 

  * 类名称:ServiceTask 

  * 类描述: 

  * 创建人:邓家海 

  * 创建时间:2017年6月4日 下午6:18:11 

  * 修改人:deng 

  * 修改时间:2017年6月4日 下午6:18:11 

  * 修改备注: 

  * @version  

  *  

  */

 public class CacheEndTestRunningTask implements JavaDelegate{      

          //重写委托的提交方法

          @Override

          public void execute(DelegateExecution execution) throws Exception {

                    //receiveTaskprocess

                    System.out.println("CacheEndTestRunningTask is running!");

          }

 }
 /**

  *

  */

 package light.mvc.workflow.serviceTask;

 import org.activiti.engine.delegate.DelegateExecution;

 import org.activiti.engine.delegate.JavaDelegate;

 /** 

  *  

  * 项目名称:lightmvc 

  * 类名称:ServiceTask 

  * 类描述: 

  * 创建人:邓家海 

  * 创建时间:2017年6月4日 下午6:18:11 

  * 修改人:deng 

  * 修改时间:2017年6月4日 下午6:18:11 

  * 修改备注: 

  * @version  

  *  

  */

 public class CancelEndEventTestRunningTask implements JavaDelegate{   

          //重写委托的提交方法

          @Override

          public void execute(DelegateExecution execution) throws Exception {

                    //receiveTaskprocess

                    System.out.println("CancelEndEventTestRunningTask is running!");

          }

 }
 /**

  *

  */

 package light.mvc.workflow.serviceTask;

 import org.activiti.engine.delegate.DelegateExecution;

 import org.activiti.engine.delegate.JavaDelegate;

 /** 

  *  

  * 项目名称:lightmvc 

  * 类名称:ServiceTask 

  * 类描述: 

  * 创建人:邓家海 

  * 创建时间:2017年6月4日 下午6:18:11 

  * 修改人:deng 

  * 修改时间:2017年6月4日 下午6:18:11 

  * 修改备注: 

  * @version  

  *  

  */

 public class SubNormalEndTestRunningTask implements JavaDelegate{      

          //重写委托的提交方法

          @Override

          public void execute(DelegateExecution execution) throws Exception {

                    //receiveTaskprocess

                    System.out.println("SubNormalEndTestRunningTask is running!");

          }

 }

6.6   延伸

下面我们改动一下流程:发现它还是一样的,终止了主流程。

图6-4 终结事件流程图设计

图6-4 终结事件执行结果

Activiti交流QQ群:634320089

Activiti结束事件(End Event)的更多相关文章

  1. Activiti 启动事件(Start Event)

    Activiti 启动事件(Start Event) 作者:Jesai 生活里,没有容易二字,忧伤是一种本能,而微笑是一种能力 版权所有,未经允许,禁止引用.如需引用,请注明出处. 前言: 启动事件是 ...

  2. Flowable实战(四)BPMN2.0 启动与结束事件

    一.BPMN2.0   BPMN2.0规范是一个标准,开源框架和不同供应商都遵循这份标准,使得最终用户不会因为依赖专有解决方案,而被供应商"绑架".有了BPMN2.0标准,不同解决 ...

  3. Cocos2d-X3.0 刨根问底(七)----- 事件机制Event源码分析

    这一章,我们来分析Cocos2d-x 事件机制相关的源码, 根据Cocos2d-x的工程目录,我们可以找到所有关于事件的源码都存在放在下图所示的目录中. 从这个event_dispatcher目录中的 ...

  4. C#事件(Event)学习日记

    event 关键字的来由,为了简化自定义方法的构建来为委托调用列表增加和删除方法. 在编译器处理 event 关键字的时候,它会自动提供注册和注销方法以及任何必要的委托类型成员变量. 这些委托成员变量 ...

  5. 事件(event)

    事件概述 委托是一种类型可以被实例化,而事件可以看作将多播委托进行封装的一个对象成员(简化委托调用列表增加和删除方法)但并非特殊的委托,保护订阅互不影响. 基础事件(event) 在.Net中声明事件 ...

  6. C++多线程同步之事件(Event)

    原文链接:http://blog.csdn.net/olansefengye1/article/details/53291074 一.事件(Event)原理解析 1.线程同步Event,主要用于线程间 ...

  7. python笔记12-python多线程之事件(Event)

    前言 小伙伴a,b,c围着吃火锅,当菜上齐了,请客的主人说:开吃!,于是小伙伴一起动筷子,这种场景如何实现 Event(事件) Event(事件):事件处理的机制:全局定义了一个内置标志Flag,如果 ...

  8. 并发编程概述 委托(delegate) 事件(event) .net core 2.0 event bus 一个简单的基于内存事件总线实现 .net core 基于NPOI 的excel导出类,支持自定义导出哪些字段 基于Ace Admin 的菜单栏实现 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)

    并发编程概述   前言 说实话,在我软件开发的头两年几乎不考虑并发编程,请求与响应把业务逻辑尽快完成一个星期的任务能两天完成绝不拖三天(剩下时间各种浪),根本不会考虑性能问题(能接受范围内).但随着工 ...

  9. mysql 事件(Event) 总结

    1 事件简介 事件(event)是MySQL在相应的时刻调用的过程式数据库对象.一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”. 事件和触发器类似,都是在 ...

随机推荐

  1. UVA 11400"Lighting System Design"

    传送门 错误思路 正解 AC代码 参考资料: [1]:https://www.cnblogs.com/Kiraa/p/5510757.html 题意: 现给你一套照明系统,这套照明系统共包含 n 种类 ...

  2. H3C 根据主机地址数划分子网

  3. multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded

    情景再现: 上传文件到.net(wcf)后台时,总是上传不成功,后台要求Content-Type是application/octet-stream,我使用multipart/form-data方式,c ...

  4. 2019-11-17-dotnet-core-使用-GBK-编码

    title author date CreateTime categories dotnet core 使用 GBK 编码 lindexi 2019-11-17 16:36:27 +0800 2019 ...

  5. LuoguP3045牛券Cow Coupons

    LuoguP3045 [USACO12FEB]牛券Cow Coupons 果然我贪心能力还是太差了 ZR讲过的原题我回来对做法没有一丁点印象 有时候有这样一种题目 每个数有两种不同的价值 你可以选择价 ...

  6. 判断移动端还是PC端

    window.onload=function(){ var sUserAgent = navigator.userAgent.toLowerCase(); var bIsIpad = sUserAge ...

  7. 红米K20 Pro 传感器失效解决方案

    最近把Redmi K20 Pro升级到了安卓Q,用了几天,不好用,总是提示屏幕前方有遮挡,于是刷回了安卓9,但是发现重力感应传感器失效了,屏幕不会随这方向转,导航的时候看起来很难受. 网上查了一下,要 ...

  8. LabWindows/CVI基础

    1.LabWindows/CVI了解 提到NI公司,大家可能最先联想到的是NI公司推出的LabVIEW软件.LabWindows/CVI与LabVIEW相比,主要应用在各种测试.控制.故障分析及信息处 ...

  9. 19.python基础试题(三)

    转载: 老男孩 Python 基础知识练习(三):https://www.cnblogs.com/nulige/p/6128674.html 1.列举布尔值为 False 的值空,None,0, Fa ...

  10. 洛谷$P$2522 $Problem\ b\ [HAOI2011]$ 莫比乌斯反演

    正解:莫比乌斯反演 解题报告: 传送门! 首先看到这个显然就想到莫比乌斯反演$QwQ$? 就先瞎搞下呗$QwQ$ $gcd(x,y)=k$,即$gcd(\left \lfloor \frac{x}{k ...