Activiti结束事件(End Event)

Posted Jesai的技术博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activiti结束事件(End Event)相关的知识,希望对你有一定的参考价值。

 

       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   代码:

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

 

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

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

4.1   流程实例图标:

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

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

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

1 <endEvent id="myErrorEndEvent">
2 <errorEventDefinition errorRef="myError" />
3 </endEvent>

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

1 <error id="myError" errorCode="123" />
2 ...
3 <process id="myProcess">
4 ...

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

1 <error id="myError" errorCode="error123" />
2 ...
3 <process id="myProcess">
4 ...
5 <endEvent id="myErrorEndEvent">
6 <errorEventDefinition errorRef="myError" />
7 </endEvent>
8 ...

与下面的功能相同

1 <endEvent id="myErrorEndEvent">
2 <errorEventDefinition errorRef="error123" />
3 </endEvent>

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

 

4.2   流程图设计

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

 

 

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

4.3   执行结果

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

4.4   流程代码

  1 <?xml version=\'1.0\' encoding=\'UTF-8\'?>
  2 
  3 <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">
  4 
  5   <process id="process" isExecutable="true">
  6 
  7     <subProcess id="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74" name="subProcess">
  8 
  9       <startEvent id="sid-EB9804C4-9348-43F7-83DE-2E6640E52064" />
 10 
 11       <endEvent id="sid-507917BF-48BC-4A6E-A2C3-31DF0474F8FE">
 12 
 13         <errorEventDefinition errorRef="testError" />
 14 
 15       </endEvent>
 16 
 17       <serviceTask id="sid-65F770DF-6797-4918-9BD6-21DDA3588804" name="子流程手工任务" activiti:class="light.mvc.workflow.serviceTask.SubErrorTestRunningTask" />
 18 
 19       <sequenceFlow id="sid-7A9F6A19-D24C-4719-8095-F76259D110AE" sourceRef="sid-EB9804C4-9348-43F7-83DE-2E6640E52064" targetRef="sid-65F770DF-6797-4918-9BD6-21DDA3588804" />
 20 
 21       <sequenceFlow id="sid-6203D605-402C-437D-A9A5-8E276AC8020B" sourceRef="sid-65F770DF-6797-4918-9BD6-21DDA3588804" targetRef="sid-507917BF-48BC-4A6E-A2C3-31DF0474F8FE" />
 22 
 23     </subProcess>
 24 
 25     <startEvent id="sid-5E970179-3AD6-449F-962B-5CB88F49EE6B" />
 26 
 27     <sequenceFlow id="sid-BE4D16B9-9F0B-4793-B685-7E0F767F54EB" sourceRef="sid-5E970179-3AD6-449F-962B-5CB88F49EE6B" targetRef="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74" />
 28 
 29     <endEvent id="sid-F37E4B4D-EBBA-40DD-A354-7549CCA62F7F" />
 30 
 31     <boundaryEvent id="sid-CE3D7798-F5CE-4C3D-8206-1EFF95BD0288" attachedToRef="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74">
 32 
 33       <errorEventDefinition errorRef="testError" />
 34 
 35     </boundaryEvent>
 36 
 37     <endEvent id="sid-EB951594-B88B-4C21-8C16-32A07B09D60A" />
 38 
 39     <serviceTask id="sid-2935E764-666C-4DB8-B1D0-8221936FE730" name="正常结束事件" activiti:class="light.mvc.workflow.serviceTask.NormalErrorTestRunningTask" />
 40 
 41     <sequenceFlow id="sid-C2B6D8DC-85C3-45F4-B47E-3839D025226A" sourceRef="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74" targetRef="sid-2935E764-666C-4DB8-B1D0-8221936FE730" />
 42 
 43     <sequenceFlow id="sid-CE29790B-F67C-46AA-9E12-52B39952747F" sourceRef="sid-2935E764-666C-4DB8-B1D0-8221936FE730" targetRef="sid-F37E4B4D-EBBA-40DD-A354-7549CCA62F7F" />
 44 
 45     <serviceTask id="sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1" name="捕获错误事件" activiti:class="light.mvc.workflow.serviceTask.CacheErrorTestRunningTask" />
 46 
 47     <sequenceFlow id="sid-0CDB3258-E356-4A06-818B-A9C8EED3339A" sourceRef="sid-CE3D7798-F5CE-4C3D-8206-1EFF95BD0288" targetRef="sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1" />
 48 
 49     <sequenceFlow id="sid-688D53B8-63D2-43DF-AED6-D8234B4669D1" sourceRef="sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1" targetRef="sid-EB951594-B88B-4C21-8C16-32A07B09D60A" />
 50 
 51   </process>
 52 
 53   <bpmndi:BPMNDiagram id="BPMNDiagram_process">
 54 
 55     <bpmndi:BPMNPlane bpmnElement="process" id="BPMNPlane_process">
 56 
 57       <bpmndi:BPMNShape bpmnElement="sid-2669F680-71E9-4F43-9B2E-AF40435D9C74" id="BPMNShape_sid-2669F680-71E9-4F43-9B2E-AF40435D9C74">
 58 
 59         <omgdc:Bounds height="179.0" width="521.0" x="315.0" y="75.5" />
 60 
 61       </bpmndi:BPMNShape>
 62 
 63       <bpmndi:BPMNShape bpmnElement="sid-EB9804C4-9348-43F7-83DE-2E6640E52064" id="BPMNShape_sid-EB9804C4-9348-43F7-83DE-2E6640E52064">
 64 
 65         <omgdc:Bounds height="30.0" width="30.0" x="375.0" y="150.0" />
 66 
 67       </bpmndi:BPMNShape>
 68 
 69       <bpmndi:BPMNShape bpmnElement="sid-507917BF-48BC-4A6E-A2C3-31DF0474F8FE" id="BPMNShape_sid-507917BF-48BC-4A6E-A2C3-31DF0474F8FE">
 70 
 71         <omgdc:Bounds height="28.0" width="28.0" x="720.0" y="151.0" />
 72 
 73       </bpmndi:BPMNShape>
 74 
 75       <bpmndi:BPMNShape bpmnElement="sid-65F770DF-6797-4918-9BD6-21DDA3588804" id="BPMNShape_sid-65F770DF-6797-4918-9BD6-21DDA3588804">
 76 
 77         <omgdc:Bounds height="80.0" width="100.0" x="543.75" y="123.0" />
 78 
 79       </bpmndi:BPMNShape>
 80 
 81       <bpmndi:BPMNShape bpmnElement="sid-5E970179-3AD6-449F-962B-5CB88F49EE6B" id="BPMNShape_sid-5E970179-3AD6-449F-962B-5CB88F49EE6B">
 82 
 83         <omgdc:Bounds height="30.0" width="30.0" x="154.75" y="150.0" />
 84 
 85       </bpmndi:BPMNShape>
 86 
 87       <bpmndi:BPMNShape bpmnElement="sid-F37E4B4D-EBBA-40DD-A354-7549CCA62F7F" id="BPMNShape_sid-F37E4B4D-EBBA-40DD-A354-7549CCA62F7F">
 88 
 89         <omgdc:Bounds height="28.0" width="28.0" x="1024.75" y="144.0" />
 90 
 91       </bpmndi:BPMNShape>
 92 
 93       <bpmndi:BPMNShape bpmnElement="sid-CE3D7798-F5CE-4C3D-8206-1EFF95BD0288" id="BPMNShape_sid-CE3D7798-F5CE-4C3D-8206-1EFF95BD0288">
 94 
 95         <omgdc:Bounds height="30.0" width="30.0" x="600.4320995601703" y="239.7819754816901" />
 96 
 97       </bpmndi:BPMNShape>
 98 
 99       <bpmndi:BPMNShape bpmnElement="sid-EB951594-B88B-4C21-8C16-32A07B09D60A" id="BPMNShape_sid-EB951594-B88B-4C21-8C16-32A07B09D60A">
100 
101         <omgdc:Bounds height="28.0" width="28.0" x="851.75" y="327.0" />
102 
103       </bpmndi:BPMNShape>
104 
105       <bpmndi:BPMNShape bpmnElement="sid-2935E764-666C-4DB8-B1D0-8221936FE730" id="BPMNShape_sid-2935E764-666C-4DB8-B1D0-8221936FE730">
106 
107         <omgdc:Bounds height="80.0" width="100.0" x="870.0" y="118.0" />
108 
109       </bpmndi:BPMNShape>
110 
111       <bpmndi:BPMNShape bpmnElement="sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1" id="BPMNShape_sid-7F82A593-A02E-484B-BC65-0AB3D23DE7D1">
112 
113         <omgdc:Bounds height="80.0" width="100.0" x="707.75" y="306.25" />
114 
115       </bpmndi:BPMNShape>
116 
117       <bpmndi:BPMNEdge bpmnElement="sid-CE29790B-F67C-46AA-9E12-52B39952747F" id="BPMNEdge_sid-CE29790B-F67C-46AA-9E12-52B39952747F">
118 
119         <omgdi:waypoint x="970.0" y="158.0" />
120 
121         <omgdi:waypoint x="1024.75" y="158.0" />
122 
123       </bpmndi:BPMNEdge>
124 
125       <bpmndi:BPMNEdge bpmnElement="sid-688D53B8-63D2-43DF-AED6-D8234B4669D1" id="BPMNEdge_sid-688D53B8-63D2-43DF-AED6-D8234B4669D1">
126 
127         <omgdi:waypoint x="807.75" y="341.0" />
128 
129         <omgdi:waypoint x="851.75" y="341.0" />
130 
131       </bpmndi:BPMNEdge>
132 
133       <bpmndi:BPMNEdge bpmnElement="sid-6203D605-402C-437D-A9A5-8E276AC8020B" id="BPMNEdge_sid-6203D605-402C-437D-A9A5-8E276AC8020B">
134 
135         <omgdi:waypoint x="643.75" y="165.0" />
136 
137         <omgdi:waypoint x="720.0" y="165.0" />
138 
139       </bpmndi:BPMNEdge>
140 
141       <bpmndi:BPMNEdge bpmnElement="sid-7A9F6A19-D24C-4719-8095-F76259D110AE" id="BPMNEdge_sid-7A9F6A19-D24C-4719-8095-F76259D110AE">
142 
143         <omgdi:waypoint x="404.99927740552414" y="164.85276782914823" />
144 
145         <omgdi:waypoint x="543.75" y="163.4907975460123" />
146 
147       </bpmndi:BPMNEdge>
148 
149       <bpmndi:BPMNEdge bpmnElement="sid-C2B6D8DC-85C3-45F4-B47E-3839D025226A" id="BPMNEdge_sid-C2B6D8DC-85C3-45F4-B47E-3839D025226A">
150 
151         <omgdi:waypoint x="836.0" y="159.7068214804064" />
152 
153         <omgdi:waypoint x="870.0" y="159.01596516690856" />
154 
155       </bpmndi:BPMNEdge>
156 
157       <bpmndi:BPMNEdge bpmnElement="sid-BE4D16B9-9F0B-4793-B685-7E0F767F54EB" id="BPMNEdge_sid-BE4D16B9-9F0B-4793-B685-7E0F767F54EB">
158 
159         <omgdi:waypoint x="184.75" y="165.0" />
160 
161         <omgdi:waypoint x="315.0" y="165.0" />
162 
163       </bpmndi:BPMNEdge>
164 
165       <bpmndi:BPMNEdge bpmnElement="sid-0CDB3258-E356-4A06-818B-A9C8EED3339A" id="BPMNEdge_sid-0CDB3258-E356-4A06-818B-A9C8EED3339A">
166 
167         <omgdi:waypoint x="615.4320995601703" y="269.7819754816901" />
168 
169         <omgdi:waypoint x="615.4320995601703" y="341.0" />
170 
171         <omgdi:waypoint x="707.75" y="341.0" />
172 
173       </bpmndi:BPMNEdge>
174 
175     </bpmndi:BPMNPlane>
176 
177   </bpmndi:BPMNDiagram>
178 
179 </definitions>

4.5   java监听类代码

4.5.1     子流程监听器:

 1 /**
 2 
 3  *
 4 
 5  */
 6 
 7 package light.mvc.workflow.serviceTask;
 8 
 9  
10 
11 import org.activiti.engine.delegate.DelegateExecution;
12 
13 import org.activiti.engine.delegate.JavaDelegate;
14 
15  
16 
17 /** 
18 
19  *  
20 
21  * 项目名称:lightmvc 
22 
23  * 类名称:ServiceTask 
24 
25  * 类描述: 
26 
27  * 创建人:邓家海 
28 
29  * 创建时间:2017年6月4日 下午6:18:11 
30 
31  * 修改人:deng 
32 
33  * 修改时间:2017年6月4日 下午6:18:11 
34 
35  * 修改备注: 
36 
37  * @version  
38 
39  *  
40 
41  */
42 
43  
44 
45 public class SubErrorTestRunningTask implements JavaDelegate{        
46 
47          //重写委托的提交方法
48 
49          @Override
50 
51          public void execute(DelegateExecution execution) throws Exception {
52 
53                    //receiveTaskprocess
54 
55                    System.out.println("SubErrorTestRunningTask is running!");
56 
57          }
58 
59 }

4.5.2     捕获事件监听器

 1 /**
 2 
 3  *
 4 
 5  */
 6 
 7 package light.mvc.workflow.serviceTask;
 8 
 9  
10 
11 import org.activiti.engine.delegate.DelegateExecution;
12 
13 import org.activiti.engine.delegate.JavaDelegate;
14 
15  
16 
17 /** 
18 
19  *  
20 
21  * 项目名称:lightmvc 
22 
23  * 类名称:ServiceTask 
24 
25  * 类描述: 
26 
27  * 创建人:邓家海 
28 
29  * 创建时间:2017年6月4日 下午6:18:11 
30 
31  * 修改人:deng 
32 
33  * 修改时间:2017年6月4日 下午6:18:11 
34 
35  * 修改备注: 
36 
37  * 全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<监听器篇>

Liferay7 BPM门户开发之4: Activiti事件处理和监听Event handlers

activiti中的2种监听器

使用fullCalendar将allDay设置为false时,如何动态设置事件开始和结束时间?

Activiti~相关概念

Activiti7工作流引擎:进阶篇 驳回(拒绝)