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  * @version  
38 
39  *  
40 
41  */
42 
43  
44 
45 public class CacheErrorTestRunningTask implements JavaDelegate{
46 
47          //重寫委托的提交方法
48 
49          @Override
50 
51          public void execute(DelegateExecution execution) throws Exception {
52 
53                    //receiveTaskprocess
54 
55                    System.out.println("CacheErrorTestRunningTask is running!");
56 
57          }
58 
59  
60 
61 }

4.5.3     正常結束事件監聽器

 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 public class NormalErrorTestRunningTask implements JavaDelegate{
44 
45                   //重寫委托的提交方法
46 
47          @Override
48 
49          public void execute(DelegateExecution execution) throws Exception {
50 
51                    //receiveTaskprocess
52 
53                    System.out.println("NormalErrorTestRunningTask is running!");
54 
55          }
56 
57 }
58 
59  

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)。

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

5.2   流程圖設計

注意,這個流程的終止事件並沒有設置成終止全部,可以看到,全部任務節點都被執行了。

 

圖5-2 取消結束事件流程圖設計

5.3   運行結果

 

圖5-3 取消結束事件流程執行結果

 

5.4   XML代碼:

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

 1 /**
 2 
 3  *
 4 
 5  */
 6 
 7 package light.mvc.workflow.serviceTask;
 8 
 9 import org.activiti.engine.delegate.DelegateExecution;
10 
11 import org.activiti.engine.delegate.JavaDelegate;
12 
13 /** 
14 
15  *  
16 
17  * 項目名稱:lightmvc 
18 
19  * 類名稱:ServiceTask 
20 
21  * 類描述: 
22 
23  * 創建人:鄧家海 
24 
25  * 創建時間:2017年6月4日 下午6:18:11 
26 
27  * 修改人:deng 
28 
29  * 修改時間:2017年6月4日 下午6:18:11 
30 
31  * 修改備注: 
32 
33  * @version  
34 
35  *  
36 
37  */
38 
39 public class FirstTestRunningTask implements JavaDelegate{       
40 
41          //重寫委托的提交方法
42 
43          @Override
44 
45          public void execute(DelegateExecution execution) throws Exception {
46 
47                    //receiveTaskprocess
48 
49                    System.out.println("FirstTestRunningTask is running!");
50 
51          }
52 
53 }
 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  * 項目名稱:lightmvc 
20 
21  * 類名稱:ServiceTask 
22 
23  * 類描述: 
24 
25  * 創建人:鄧家海 
26 
27  * 創建時間:2017年6月4日 下午6:18:11 
28 
29  * 修改人:deng 
30 
31  * 修改時間:2017年6月4日 下午6:18:11 
32 
33  * 修改備注: 
34 
35  * @version  
36 
37  *  
38 
39  */
40 
41 public class SecondTestRunningTask implements JavaDelegate{  
42 
43          //重寫委托的提交方法
44 
45          @Override
46 
47          public void execute(DelegateExecution execution) throws Exception {
48 
49                    //receiveTaskprocess
50 
51                    System.out.println("SecondTestRunningTask is running!");
52 
53          }
54 
55 }
 1 /**
 2 
 3  *
 4 
 5  */
 6 
 7 package light.mvc.workflow.serviceTask;
 8 
 9 import org.activiti.engine.delegate.DelegateExecution;
10 
11 import org.activiti.engine.delegate.JavaDelegate;
12 
13 /** 
14 
15  *  
16 
17  * 項目名稱:lightmvc 
18 
19  * 類名稱:ServiceTask 
20 
21  * 類描述: 
22 
23  * 創建人:鄧家海 
24 
25  * 創建時間:2017年6月4日 下午6:18:11 
26 
27  * 修改人:deng 
28 
29  * 修改時間:2017年6月4日 下午6:18:11 
30 
31  * 修改備注: 
32 
33  * @version  
34 
35  *  
36 
37  */
38 
39 public class ThreeTestRunningTask implements JavaDelegate{    
40 
41          //重寫委托的提交方法
42 
43          @Override
44 
45          public void execute(DelegateExecution execution) throws Exception {
46 
47                    //receiveTaskprocess
48 
49                    System.out.println("ThreeTestRunningTask is running!");
50 
51          }
52 
53 }
 1 /**
 2 
 3  *
 4 
 5  */
 6 
 7 package light.mvc.workflow.serviceTask;
 8 
 9 import org.activiti.engine.delegate.BpmnError;
10 
11 import org.activiti.engine.delegate.DelegateExecution;
12 
13 import org.activiti.engine.delegate.JavaDelegate;
14 
15 /** 
16 
17  *  
18 
19  * 項目名稱:lightmvc 
20 
21  * 類名稱:ServiceTask 
22 
23  * 類描述: 
24 
25  * 創建人:鄧家海 
26 
27  * 創建時間:2017年6月4日 下午6:18:11 
28 
29  * 修改人:deng 
30 
31  * 修改時間:2017年7月16日 下午7:28:11 
32 
33  * 修改備注: 
34 
35  * @version  
36 
37  *  
38 
39  */
40 
41 public class TestRunningTask implements JavaDelegate{
42 
43                   //重寫委托的提交方法
44 
45          @Override
46 
47          public void execute(DelegateExecution execution) throws Exception{
48 
49                             System.out.println("TestRunningTask is running!");
50 
51          }
52 
53 }

 

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

  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     <serviceTask id="sid-379EE829-82D3-4FDD-8B7B-BC23EAA22EEA" name="Four" activiti:class="light.mvc.workflow.serviceTask.FourTestRunningTask" />
  8 
  9     <endEvent id="sid-DD868C6E-0BCC-4074-8ECD-EC0FD43EE1D4" name="CacheEnd">
 10 
 11       <extensionElements>
 12 
 13         <activiti:executionListener event="start" class="light.mvc.workflow.serviceTask.CacheEndTestRunningTask" />
 14 
 15       </extensionElements>
 16 
 17     </endEvent>
 18 
 19     <sequenceFlow id="sid-2D990EC2-4C0D-4802-AD4A-060C3D6C9AD5" sourceRef="sid-379EE829-82D3-4FDD-8B7B-BC23EAA22EEA" targetRef="sid-DD868C6E-0BCC-4074-8ECD-EC0FD43EE1D4" />
 20 
 21     <sequenceFlow id="sid-DF71B4EC-8565-4576-9C4E-08E5B022A1E6" sourceRef="sid-403E776E-E879-46AE-8C38-F95612795F54" targetRef="sid-379EE829-82D3-4FDD-8B7B-BC23EAA22EEA" />
 22 
 23     <endEvent id="sid-6E841FD5-91A5-418B-89FD-7B97B3005A9D" name="NormalEnd">
 24 
 25       <extensionElements>
 26 
 27         <activiti:executionListener event="start" class="light.mvc.workflow.serviceTask.NormalEndTestRunningTask" />
 28 
 29       </extensionElements>
 30 
 31     </endEvent>
 32 
 33     <sequenceFlow id="sid-FA2AAEE1-C3EB-4291-9333-83CAE7773B0E" sourceRef="sid-ECFBFB19-9774-4B38-BEA2-02B4C02F3C8F" targetRef="sid-6E841FD5-91A5-418B-89FD-7B97B3005A9D" />
 34 
 35     <serviceTask id="sid-ECFBFB19-9774-4B38-BEA2-02B4C02F3C8F" name="Three" activiti:class="light.mvc.workflow.serviceTask.ThreeTestRunningTask" />
 36 
 37     <startEvent id="sid-1F74E6EF-FBDB-426F-8623-B24E2A247F22" />
 38 
 39     <sequenceFlow id="sid-1504E61E-C564-4017-B118-78D3437EC26E" sourceRef="sid-1F74E6EF-FBDB-426F-8623-B24E2A247F22" targetRef="sid-A0E1519E-9B55-4297-9A12-828E0350E8BE" />
 40 
 41     <transaction id="sid-A0E1519E-9B55-4297-9A12-828E0350E8BE" name="subProcess">
 42 
 43       <endEvent id="sid-8F0912E8-6F42-4E21-BBAC-CD5619FBED13" name="CancelEvent">
 44 
 45         <extensionElements>
 46 
 47           <activiti:executionListener event="start" class="light.mvc.workflow.serviceTask.CancelEndEventTestRunningTask" />
 48 
 49         </extensionElements>
 50 
 51         <cancelEventDefinition />
 52 
 53       </endEvent>
 54 
 55       <endEvent id="sid-75C106FA-BE45-44C7-BA67-7C078737D2FB" name="SubNormalEnd">
 56 
 57         <extensionElements>
 58 
 59           <activiti:executionListener event="start" class="light.mvc.workflow.serviceTask.SubNormalEndTestRunningTask" />
 60 
 61         </extensionElements>
 62 
 63       </endEvent>
 64 
 65       <serviceTask id="sid-674CCA99-084E-48B8-96EC-F2C46BEF2F39" name="Second" activiti:class="light.mvc.workflow.serviceTask.SecondTestRunningTask" />
 66 
 67       <serviceTask id="sid-18151C51-783E-4050-82E9-D1EDF442F662" name="First&#xa;" activiti:class="light.mvc.workflow.serviceTask.FirstTestRunningTask" />
 68 
 69       <startEvent id="sid-0AC715C3-CCD6-4212-B05B-696E50F31D7E" />
 70 
 71       <sequenceFlow id="sid-BF460B0C-C157-49CA-9E69-19075219BB59" sourceRef="sid-0AC715C3-CCD6-4212-B05B-696E50F31D7E" targetRef="sid-18151C51-783E-4050-82E9-D1EDF442F662" />
 72 
 73       <sequenceFlow id="sid-76368B45-07DD-45A5-95B9-600325F34C61" sourceRef="sid-18151C51-783E-4050-82E9-D1EDF442F662" targetRef="sid-674CCA99-084E-48B8-96EC-F2C46BEF2F39" />
 74 
 75       <sequenceFlow id="sid-FE2E4DD7-0358-4EA4-B1CD-FF41923EA1CB" sourceRef="sid-674CCA99-084E-48B8-96EC-F2C46BEF2F39" targetRef="sid-75C106FA-BE45-44C7-BA67-7C078737D2FB" />
 76 
 77       <sequenceFlow id="sid-73E5A61C-2515-4F2D-9A61-91446AAF12FC" sourceRef="sid-18151C51-783E-4050-82E9-D1EDF442F662" targetRef="sid-8F0912E8-6F42-4E21-BBAC-CD5619FBED13" />
 78 
 79     </transaction>
 80 
 81     <sequenceFlow id="sid-B2D27F5B-E292-4AE8-96B3-AB5A2872B039" sourceRef="sid-A0E1519E-9B55-4297-9A12-828E0350E8BE" targetRef="sid-ECFBFB19-9774-4B38-BEA2-02B4C02F3C8F" />
 82 
 83     <boundaryEvent id="sid-403E776E-E879-46AE-8C38-F95612795F54" name="CancelEvent" attachedToRef="sid-A0E1519E-9B55-4297-9A12-828E0350E8BE" cancelActivity="false">
 84 
 85       <cancelEventDefinition />
 86 
 87     </boundaryEvent>
 88 
 89   </process>
 90 
 91   <bpmndi:BPMNDiagram id="BPMNDiagram_process">
 92 
 93     <bpmndi:BPMNPlane bpmnElement="process" id="BPMNPlane_process">
 94 
 95       <bpmndi:BPMNShape bpmnElement="sid-379EE829-82D3-4FDD-8B7B-BC23EAA22EEA" id="BPMNShape_sid-379EE829-82D3-4FDD-8B7B-BC23EAA22EEA">
 96 
 97         <omgdc:Bounds height="80.0" width="100.0" x="617.7854450025696" y="285.0" />
 98 
 99       </bpmndi:BPMNShape>
100 
101       <bpmndi:BPMNShape bpmnElement="sid-DD868C6E-0BCC-4074-8ECD-EC0FD43EE1D4" id="BPMNShape_sid-DD868C6E-0BCC-4074-8ECD-EC0FD43EE1D4">
102 
103         <omgdc:Bounds height="28.0" width="28.0" x="840.0" y="311.0" />
104 
105       </bpmndi:BPMNShape>
106 
107       <bpmndi:BPMNShape bpmnElement="sid-6E841FD5-91A5-418B-89FD-7B97B3005A9D" id="BPMNShape_sid-6E841FD5-91A5-418B-89FD-7B97B3005A9D">
108 
109         <omgdc:Bounds height="28.0" width="28.0" x="961.75" y="102.0" />
110 
111       </bpmndi:BPMNShape>
112 
113       <bpmndi:BPMNShape bpmnElement="sid-ECFBFB19-9774-4B38-BEA2-02B4C02F3C8F" id="BPMNShape_sid-ECFBFB19-9774-4B38-BEA2-02B4C02F3C8F">
114 
115         <omgdc:Bounds height="80.0" width="100.0" x="816.75" y="76.0" />
116 
117       </bpmndi:BPMNShape>
118 
119       <bpmndi:BPMNShape bpmnElement="sid-1F74E6EF-FBDB-426F-8623-B24E2A247F22" id="BPMNShape_sid-1F74E6EF-FBDB-426F-8623-B24E2A247F22">
120 
121         <omgdc:Bounds height="30.0" width="30.0" x="161.75" y="101.0" />
122 
123       </bpmndi:BPMNShape>
124 
125       <bpmndi:BPMNShape bpmnElement="sid-A0E1519E-9B55-4297-9A12-828E0350E8BE" id="BPMNShape_sid-A0E1519E-9B55-4297-9A12-828E0350E8BE">
126 
127         <omgdc:Bounds height="190.0" width="477.0" x="266.75" y="21.0" />
128 
129       </bpmndi:BPMNShape>
130 
131       <bpmndi:BPMNShape bpmnElement="sid-8F0912E8-6F42-4E21-BBAC-CD5619FBED13" id="BPMNShape_sid-8F0912E8-6F42-4E21-BBAC-CD5619FBED13">
132 
133         <omgdc:Bounds height="28.0" width="28.0" x="411.0" y="165.0" />
134 
135       </bpmndi:BPMNShape>
136 
137       <bpmndi:BPMNShape bpmnElement="sid-75C106FA-BE45-44C7-BA67-7C078737D2FB" id="BPMNShape_sid-75C106FA-BE45-44C7-BA67-7C078737D2FB">
138 
139         <omgdc:Bounds height="28.0" width="28.0" x="685.0" y="86.0" />
140 
141       </bpmndi:BPMNShape>
142 
143       <bpmndi:BPMNShape bpmnElement="sid-674CCA99-084E-48B8-96EC-F2C46BEF2F39" id="BPMNShape_sid-674CCA99-084E-48B8-96EC-F2C46BEF2F39">
144 
145         <omgdc:Bounds height="80.0" width="100.0" x="540.0" y="60.0" />
146 
147       </bpmndi:BPMNShape>
148 
149       <bpmndi:BPMNShape bpmnElement="sid-18151C51-783E-4050-82E9-D1EDF442F662" id="BPMNShape_sid-18151C51-783E-4050-82E9-D1EDF442F662">
150 
151         <omgdc:Bounds height="80.0" width="100.0" x="375.0" y="60.0" />
152 
153       </bpmndi:BPMNShape>
154 
155       <bpmndi:BPMNShape bpmnElement="sid-0AC715C3-CCD6-4212-B05B-696E50F31D7E" id="BPMNShape_sid-0AC715C3-CCD6-4212-B05B-696E50F31D7E">
156 
157         <omgdc:Bounds height="30.0" width="30.0" x="300.0" y="83.0" />
158 
159       </bpmndi:BPMNShape>
160 
161       <bpmndi:BPMNShape bpmnElement="sid-403E776E-E879-46AE-8C38-F95612795F54" id="BPMNShape_sid-403E776E-E879-46AE-8C38-F95612795F54">
162 
163         <omgdc:Bounds height="30.0" width="30.0" x="652.7854450025696" y="196.32788210358325" />
164 
165       </bpmndi:BPMNShape>
166 
167       <bpmndi:BPMNEdge bpmnElement="sid-BF460B0C-C157-49CA-9E69-19075219BB59" id="BPMNEdge_sid-BF460B0C-C157-49CA-9E69-19075219BB59">
168 
169         <omgdi:waypoint x="329.99752127569985" y="98.27268220501271" />
170 
171         <omgdi:waypoint x="375.0" y="99.0909090909091" />
172 
173       </bpmndi:BPMNEdge>
174 
175       <bpmndi:BPMNEdge bpmnElement="sid-1504E61E-C564-4017-B118-78D3437EC26E" id="BPMNEdge_sid-1504E61E-C564-4017-B118-78D3437EC26E">
176 
177         <omgdi:waypoint x="191.75" y="116.0" />
178 
179         <omgdi:waypoint x="266.75" y="116.0" />
180 
181       </bpmndi:BPMNEdge>
182 
183       <bpmndi:BPMNEdge bpmnElement="sid-2D990EC2-4C0D-4802-AD4A-060C3D6C9AD5" id="BPMNEdge_sid-2D990EC2-4C0D-4802-AD4A-060C3D6C9AD5">
184 
185         <omgdi:waypoint x="717.7854450025696" y="325.0" />
186 
187         <omgdi:waypoint x="840.0" y="325.0" />
188 
189       </bpmndi:BPMNEdge>
190 
191       <bpmndi:BPMNEdge bpmnElement="sid-B2D27F5B-E292-4AE8-96B3-AB5A2872B039" id="BPMNEdge_sid-B2D27F5B-E292-4AE8-96B3-AB5A2872B039">
192 
193         <omgdi:waypoint x="743.75" y="116.0" />
194 
195         <omgdi:waypoint x="816.75" y="116.0" />
196 
197       </bpmndi:BPMNEdge>
198 
199       <bpmndi:BPMNEdge bpmnElement="sid-FE2E4DD7-0358-4EA4-B1CD-FF41923EA1CB" id="BPMNEdge_sid-FE2E4DD7-0358-4EA4-B1CD-FF41923EA1CB">
200 
201         <omgdi:waypoint x="640.0" y="100.0" />
202 
203         <omgdi:waypoint x="685.0" y="100.0" />
204 
205       </bpmndi:BPMNEdge>
206 
207       <bpmndi:BPMNEdge bpmnElement="sid-DF71B4EC-8565-4576-9C4E-08E5B022A1E6" id="BPMNEdge_sid-DF71B4EC-8565-4576-9C4E-08E5B022A1E6">
208 
209         <omgdi:waypoint x="667.7854450025696" y="226.32788210358325" />
210 
211         <omgdi:waypoint x="667.7854450025696" y="285.0" />
212 
213       </bpmndi:BPMNEdge>
214 
215       <bpmndi:BPMNEdge bpmnElement="sid-FA2AAEE1-C3EB-4291-9333-83CAE7773B0E" id="BPMNEdge_sid-FA2AAEE1-C3EB-4291-9333-83CAE7773B0E">
216 
217         <omgdi:waypoint x="916.75" y="116.0" />
218 
219         <omgdi:waypoint x="961.75" y="116.0" />
220 
221       </bpmndi:BPMNEdge>
222 
223       <bpmndi:BPMNEdge bpmnElement="sid-73E5A61C-2515-4F2D-9A61-91446AAF12FC" id="BPMNEdge_sid-73E5A61C-2515-4F2D-9A61-91446AAF12FC">
224 
225         <omgdi:waypoint x="423.8888888888889" y="140.0" />
226 
227         <omgdi:waypoint x="422.81932127326405" y="178.50443416249374" />
228 
229       </bpmndi:BPMNEdge>
230 
231       <bpmndi:BPMNEdge bpmnElement="sid-76368B45-07DD-45A5-95B9-600325F34C61" id="BPMNEdge_sid-76368B45-07DD-45A5-95B9-600325F34C61">
232 
233         <omgdi:waypoint x="475.0" y="100.0" />
234 
235         <omgdi:waypoint x="540.0" y="100.0" />
236 
237       </bpmndi:BPMNEdge>
238 
239     </bpmndi:BPMNPlane>
240 
241   </bpmndi:BPMNDiagram>
242 
243 </definitions>

6.5   Java監聽類代碼:

 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 public class FirstTestRunningTask implements JavaDelegate{       
44 
45          //重寫委托的提交方法
46 
47          @Override
48 
49          public void execute(DelegateExecution execution) throws Exception {
50 
51                    //receiveTaskprocess
52 
53                    System.out.println("FirstTestRunningTask is running!");
54 
55          }
56 
57 }

 

 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 public class SecondTestRunningTask implements JavaDelegate{  
44 
45          //重寫委托的提交方法
46 
47          @Override
48 
49          public void execute(DelegateExecution execution) throws Exception {
50 
51                    //receiveTaskprocess
52 
53                    System.out.println("SecondTestRunningTask is running!");
54 
55          }
56 
57 }
 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 public class ThreeTestRunningTask implements JavaDelegate{    
44 
45          //重寫委托的提交方法
46 
47          @Override
48 
49          public void execute(DelegateExecution execution) throws Exception {
50 
51                    //receiveTaskprocess
52 
53                    System.out.println("ThreeTestRunningTask is running!");
54 
55          }
56 
57 }
 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 FourTestRunningTask implements JavaDelegate{       
46 
47          //重寫委托的提交方法
48 
49          @Override
50 
51          public void execute(DelegateExecution execution) throws Exception {
52 
53                    //receiveTaskprocess
54 
55                    System.out.println("FourTestRunningTask is running!");
56 
57          }
58 
59 }
 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  * 項目名稱:lightmvc 
20 
21  * 類名稱:ServiceTask 
22 
23  * 類描述: 
24 
25  * 創建人:鄧家海 
26 
27  * 創建時間:2017年6月4日 下午6:18:11 
28 
29  * 修改人:deng 
30 
31  * 修改時間:2017年6月4日 下午6:18:11 
32 
33  * 修改備注: 
34 
35  * @version  
36 
37  *  
38 
39  */
40 
41 public class NormalEndTestRunningTask implements JavaDelegate{   
42 
43          //重寫委托的提交方法
44 
45          @Override
46 
47          public void execute(DelegateExecution execution) throws Exception {
48 
49                    //receiveTaskprocess
50 
51                    System.out.println("NormalEndTestRunningTask is running!");
52 
53          }
54 
55  
56 
57 }
 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 public class CacheEndTestRunningTask implements JavaDelegate{      
44 
45          //重寫委托的提交方法
46 
47          @Override
48 
49          public void execute(DelegateExecution execution) throws Exception {
50 
51                    //receiveTaskprocess
52 
53                    System.out.println("CacheEndTestRunningTask is running!");
54 
55          }
56 
57 }
 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  * 項目名稱:lightmvc 
20 
21  * 類名稱:ServiceTask 
22 
23  * 類描述: 
24 
25  * 創建人:鄧家海 
26 
27  * 創建時間:2017年6月4日 下午6:18:11 
28 
29  * 修改人:deng 
30 
31  * 修改時間:2017年6月4日 下午6:18:11 
32 
33  * 修改備注: 
34 
35  * @version  
36 
37  *  
38 
39  */
40 
41 public class CancelEndEventTestRunningTask implements JavaDelegate{   
42 
43          //重寫委托的提交方法
44 
45          @Override
46 
47          public void execute(DelegateExecution execution) throws Exception {
48 
49                    //receiveTaskprocess
50 
51                    System.out.println("CancelEndEventTestRunningTask is running!");
52 
53          }
54 
55  
56 
57 }
 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 public class SubNormalEndTestRunningTask implements JavaDelegate{      
44 
45          //重寫委托的提交方法
46 
47          @Override
48 
49          public void execute(DelegateExecution execution) throws Exception {
50 
51                    //receiveTaskprocess
52 
53                    System.out.println("SubNormalEndTestRunningTask is running!");
54 
55          }
56 
57 }

6.6   延伸

下面我們改動一下流程:發現它還是一樣的,終止了主流程。

 

圖6-4 終結事件流程圖設計

 

 

圖6-4 終結事件執行結果

 

 

 

 Activiti交流QQ群:634320089

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM