1. 程式人生 > >並行網關 Parallel Gateway

並行網關 Parallel Gateway

utf-8 cti 根據 重要特性 ins 申請表 info fc7 sequence

並行網關 Parallel Gateway

作者:鄧家海

2018年3月25日 00:26:21

前言:

做工作流時間長後,慢慢的就會發現,很多客戶會需要會簽的功能,會簽的情況也有很多種,實現的方式也不一樣。在這裏我們先討論下並行網關,會簽放到後面去討論。

情景一:

在一個政府機關的辦公OA系統設計的時候,有這麽一個需求:政府需要做一個財務呈批的業務,由財務部門發起,然後經過其他所有部門,各部門根據自己的資金需求填寫申請表,然後經過各自部門的領導去審核,各自部門領導審核完成,然後合並給財務部領導審核。

情景二:

完了,該政府部門還有一個需求,就是各個部門填完申請表後,到了領導去審核的時候,我們需要各個部門的領導共同決定要不要放款。

我們很容易想到該流程應該是這樣的:

技術分享圖片

圖-1 審批流程簡化圖

分析:前提是每一個部門都需要申請,每一個領導都需要審批。

那麽,我們可以使用我們的並行網關來實現。

並行網關:

什麽是並行網關?

它可以將分支(fork)為多個路徑,也可以合並(join)多個入口路徑。

並行網關的前提條件:

基於出口順序流和入口順序流。

並行網關兩個重要特性:

分支(fork): 並行後的所有外出順序流,為每個順序流都創建一個並發分支。

合並(join): 所有到達並行網關,在此等待的進入分支, 直到所有進入順序流的分支都到達以後, 流程就會通過匯聚網關。

註意:

1.如果並行網關同時具有入口順序流和出口順序流,並行網關會先執行入口順序流,然後執行再分裂成多條可以執行的路徑。

2.並行網關不執行計算條件。並行網關上面的計算條件會被忽略。

3.並行網關分支和合並是同時存在的,就是說,一個至少有一個分支和一個合並。但是,網關是可以不平衡的,分支和合並的數量可以不一致。

並行網關的標識:

並行網關,用內部帶有’加號’圖標的網關(菱形)表示,代表與(AND)的含義。

定義並行網關:

1 <parallelGateway id="myParallelGateway" />

流程設計:

技術分享圖片

圖-2 並行網關設計圖

流程源碼:

  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     <startEvent id="sid-166AB575-206F-4C06-87AA-6F646B332F7F" />
  8 
  9     <parallelGateway id="sid-52E5C6C4-69CF-462A-9583-72568BE5692D" />
 10 
 11     <userTask id="sid-E4B059DD-FB7E-4181-BED5-588EC77647A1" name="員工一" activiti:assignee="admin" />
 12 
 13     <userTask id="sid-EA859B8D-3245-4584-98C8-DE0E35319DA5" name="員工二" activiti:assignee="admin" />
 14 
 15     <userTask id="sid-C06A652D-3CA7-4000-A2B3-6313E03C679A" name="部門經理" activiti:assignee="admin" />
 16 
 17     <parallelGateway id="sid-1434ED04-ADFE-4410-8A68-327500DA4C04" />
 18 
 19     <sequenceFlow id="sid-EDCEFC1E-8C16-406B-9A75-997DF7CFAA03" sourceRef="sid-1434ED04-ADFE-4410-8A68-327500DA4C04" targetRef="sid-C06A652D-3CA7-4000-A2B3-6313E03C679A" />
 20 
 21     <sequenceFlow id="sid-2C603D09-4CDA-4BF7-8C81-BC543541AF36" sourceRef="sid-166AB575-206F-4C06-87AA-6F646B332F7F" targetRef="sid-52E5C6C4-69CF-462A-9583-72568BE5692D" />
 22 
 23     <sequenceFlow id="sid-F7B8E655-8FC5-4205-93D8-64F39881DE28" sourceRef="sid-E4B059DD-FB7E-4181-BED5-588EC77647A1" targetRef="sid-1434ED04-ADFE-4410-8A68-327500DA4C04" />
 24 
 25     <sequenceFlow id="sid-EEBE283A-BB90-44E1-A6FA-88AA1CE52C39" sourceRef="sid-EA859B8D-3245-4584-98C8-DE0E35319DA5" targetRef="sid-1434ED04-ADFE-4410-8A68-327500DA4C04" />
 26 
 27     <sequenceFlow id="sid-BC06774A-44A2-43FA-BDF4-A5E701B3999A" sourceRef="sid-52E5C6C4-69CF-462A-9583-72568BE5692D" targetRef="sid-E4B059DD-FB7E-4181-BED5-588EC77647A1" />
 28 
 29     <userTask id="sid-C18060F2-D0AB-4E71-A7B6-6D3654E93FFF" name="主管" activiti:assignee="admin" />
 30 
 31     <sequenceFlow id="sid-7BA5A3D9-7BA9-4A3E-AF0A-E0F05A20FCC2" sourceRef="sid-52E5C6C4-69CF-462A-9583-72568BE5692D" targetRef="sid-C18060F2-D0AB-4E71-A7B6-6D3654E93FFF" />
 32 
 33     <sequenceFlow id="sid-035CCFB1-2074-409A-8ADB-13CD37A98A1E" sourceRef="sid-52E5C6C4-69CF-462A-9583-72568BE5692D" targetRef="sid-EA859B8D-3245-4584-98C8-DE0E35319DA5" />
 34 
 35     <parallelGateway id="sid-A0A5DB28-FFC6-4B14-ABC5-EE9310E39B53" />
 36 
 37     <sequenceFlow id="sid-C2EBDC51-ABEC-4B69-9924-0101B7EA9E91" sourceRef="sid-C06A652D-3CA7-4000-A2B3-6313E03C679A" targetRef="sid-A0A5DB28-FFC6-4B14-ABC5-EE9310E39B53" />
 38 
 39     <sequenceFlow id="sid-85C1D7AE-4568-427E-8E6D-AFC79ED41FD9" sourceRef="sid-C18060F2-D0AB-4E71-A7B6-6D3654E93FFF" targetRef="sid-A0A5DB28-FFC6-4B14-ABC5-EE9310E39B53" />
 40 
 41     <userTask id="sid-CA755ED3-B18F-41D0-BBE5-22D41CFCF024" name="老板" activiti:assignee="admin" />
 42 
 43     <sequenceFlow id="sid-FD581601-B9AC-4E1E-8161-8EA8A84844B2" sourceRef="sid-A0A5DB28-FFC6-4B14-ABC5-EE9310E39B53" targetRef="sid-CA755ED3-B18F-41D0-BBE5-22D41CFCF024" />
 44 
 45     <endEvent id="sid-5EC7D180-D117-4F36-809B-E8940DB9FE91" />
 46 
 47     <sequenceFlow id="sid-78026DEB-C4DA-4BF4-9723-C4EE9124E785" sourceRef="sid-CA755ED3-B18F-41D0-BBE5-22D41CFCF024" targetRef="sid-5EC7D180-D117-4F36-809B-E8940DB9FE91" />
 48 
 49   </process>
 50 
 51   <bpmndi:BPMNDiagram id="BPMNDiagram_process">
 52 
 53     <bpmndi:BPMNPlane bpmnElement="process" id="BPMNPlane_process">
 54 
 55       <bpmndi:BPMNShape bpmnElement="sid-166AB575-206F-4C06-87AA-6F646B332F7F" id="BPMNShape_sid-166AB575-206F-4C06-87AA-6F646B332F7F">
 56 
 57         <omgdc:Bounds height="30.0" width="30.0" x="75.0" y="145.0" />
 58 
 59       </bpmndi:BPMNShape>
 60 
 61       <bpmndi:BPMNShape bpmnElement="sid-52E5C6C4-69CF-462A-9583-72568BE5692D" id="BPMNShape_sid-52E5C6C4-69CF-462A-9583-72568BE5692D">
 62 
 63         <omgdc:Bounds height="40.0" width="40.0" x="180.0" y="140.0" />
 64 
 65       </bpmndi:BPMNShape>
 66 
 67       <bpmndi:BPMNShape bpmnElement="sid-E4B059DD-FB7E-4181-BED5-588EC77647A1" id="BPMNShape_sid-E4B059DD-FB7E-4181-BED5-588EC77647A1">
 68 
 69         <omgdc:Bounds height="80.0" width="100.0" x="277.0" y="24.0" />
 70 
 71       </bpmndi:BPMNShape>
 72 
 73       <bpmndi:BPMNShape bpmnElement="sid-EA859B8D-3245-4584-98C8-DE0E35319DA5" id="BPMNShape_sid-EA859B8D-3245-4584-98C8-DE0E35319DA5">
 74 
 75         <omgdc:Bounds height="80.0" width="100.0" x="277.0" y="120.0" />
 76 
 77       </bpmndi:BPMNShape>
 78 
 79       <bpmndi:BPMNShape bpmnElement="sid-C06A652D-3CA7-4000-A2B3-6313E03C679A" id="BPMNShape_sid-C06A652D-3CA7-4000-A2B3-6313E03C679A">
 80 
 81         <omgdc:Bounds height="80.0" width="100.0" x="480.0" y="75.0" />
 82 
 83       </bpmndi:BPMNShape>
 84 
 85       <bpmndi:BPMNShape bpmnElement="sid-1434ED04-ADFE-4410-8A68-327500DA4C04" id="BPMNShape_sid-1434ED04-ADFE-4410-8A68-327500DA4C04">
 86 
 87         <omgdc:Bounds height="40.0" width="40.0" x="413.0" y="97.0" />
 88 
 89       </bpmndi:BPMNShape>
 90 
 91       <bpmndi:BPMNShape bpmnElement="sid-C18060F2-D0AB-4E71-A7B6-6D3654E93FFF" id="BPMNShape_sid-C18060F2-D0AB-4E71-A7B6-6D3654E93FFF">
 92 
 93         <omgdc:Bounds height="80.0" width="100.0" x="277.0" y="225.0" />
 94 
 95       </bpmndi:BPMNShape>
 96 
 97       <bpmndi:BPMNShape bpmnElement="sid-A0A5DB28-FFC6-4B14-ABC5-EE9310E39B53" id="BPMNShape_sid-A0A5DB28-FFC6-4B14-ABC5-EE9310E39B53">
 98 
 99         <omgdc:Bounds height="40.0" width="40.0" x="615.0" y="180.0" />
100 
101       </bpmndi:BPMNShape>
102 
103       <bpmndi:BPMNShape bpmnElement="sid-CA755ED3-B18F-41D0-BBE5-22D41CFCF024" id="BPMNShape_sid-CA755ED3-B18F-41D0-BBE5-22D41CFCF024">
104 
105         <omgdc:Bounds height="80.0" width="100.0" x="690.0" y="150.0" />
106 
107       </bpmndi:BPMNShape>
108 
109       <bpmndi:BPMNShape bpmnElement="sid-5EC7D180-D117-4F36-809B-E8940DB9FE91" id="BPMNShape_sid-5EC7D180-D117-4F36-809B-E8940DB9FE91">
110 
111         <omgdc:Bounds height="28.0" width="28.0" x="835.0" y="176.0" />
112 
113       </bpmndi:BPMNShape>
114 
115       <bpmndi:BPMNEdge bpmnElement="sid-2C603D09-4CDA-4BF7-8C81-BC543541AF36" id="BPMNEdge_sid-2C603D09-4CDA-4BF7-8C81-BC543541AF36">
116 
117         <omgdi:waypoint x="105.0" y="160.0" />
118 
119         <omgdi:waypoint x="180.0" y="160.0" />
120 
121       </bpmndi:BPMNEdge>
122 
123       <bpmndi:BPMNEdge bpmnElement="sid-EEBE283A-BB90-44E1-A6FA-88AA1CE52C39" id="BPMNEdge_sid-EEBE283A-BB90-44E1-A6FA-88AA1CE52C39">
124 
125         <omgdi:waypoint x="377.0" y="160.0" />
126 
127         <omgdi:waypoint x="433.0" y="160.0" />
128 
129         <omgdi:waypoint x="433.0" y="137.0" />
130 
131       </bpmndi:BPMNEdge>
132 
133       <bpmndi:BPMNEdge bpmnElement="sid-7BA5A3D9-7BA9-4A3E-AF0A-E0F05A20FCC2" id="BPMNEdge_sid-7BA5A3D9-7BA9-4A3E-AF0A-E0F05A20FCC2">
134 
135         <omgdi:waypoint x="200.5" y="179.5" />
136 
137         <omgdi:waypoint x="200.5" y="265.0" />
138 
139         <omgdi:waypoint x="277.0" y="265.0" />
140 
141       </bpmndi:BPMNEdge>
142 
143       <bpmndi:BPMNEdge bpmnElement="sid-C2EBDC51-ABEC-4B69-9924-0101B7EA9E91" id="BPMNEdge_sid-C2EBDC51-ABEC-4B69-9924-0101B7EA9E91">
144 
145         <omgdi:waypoint x="580.0" y="115.0" />
146 
147         <omgdi:waypoint x="635.5" y="115.0" />
148 
149         <omgdi:waypoint x="635.5" y="180.5" />
150 
151       </bpmndi:BPMNEdge>
152 
153       <bpmndi:BPMNEdge bpmnElement="sid-BC06774A-44A2-43FA-BDF4-A5E701B3999A" id="BPMNEdge_sid-BC06774A-44A2-43FA-BDF4-A5E701B3999A">
154 
155         <omgdi:waypoint x="200.5" y="140.5" />
156 
157         <omgdi:waypoint x="200.5" y="64.0" />
158 
159         <omgdi:waypoint x="277.0" y="64.0" />
160 
161       </bpmndi:BPMNEdge>
162 
163       <bpmndi:BPMNEdge bpmnElement="sid-F7B8E655-8FC5-4205-93D8-64F39881DE28" id="BPMNEdge_sid-F7B8E655-8FC5-4205-93D8-64F39881DE28">
164 
165         <omgdi:waypoint x="377.0" y="64.0" />
166 
167         <omgdi:waypoint x="433.0" y="64.0" />
168 
169         <omgdi:waypoint x="433.0" y="97.0" />
170 
171       </bpmndi:BPMNEdge>
172 
173       <bpmndi:BPMNEdge bpmnElement="sid-FD581601-B9AC-4E1E-8161-8EA8A84844B2" id="BPMNEdge_sid-FD581601-B9AC-4E1E-8161-8EA8A84844B2">
174 
175         <omgdi:waypoint x="653.6739130434783" y="198.67391304347825" />
176 
177         <omgdi:waypoint x="690.0" y="195.02392344497608" />
178 
179       </bpmndi:BPMNEdge>
180 
181       <bpmndi:BPMNEdge bpmnElement="sid-EDCEFC1E-8C16-406B-9A75-997DF7CFAA03" id="BPMNEdge_sid-EDCEFC1E-8C16-406B-9A75-997DF7CFAA03">
182 
183         <omgdi:waypoint x="452.9949494949495" y="116.9949494949495" />
184 
185         <omgdi:waypoint x="480.0" y="116.29533678756476" />
186 
187       </bpmndi:BPMNEdge>
188 
189       <bpmndi:BPMNEdge bpmnElement="sid-85C1D7AE-4568-427E-8E6D-AFC79ED41FD9" id="BPMNEdge_sid-85C1D7AE-4568-427E-8E6D-AFC79ED41FD9">
190 
191         <omgdi:waypoint x="377.0" y="265.0" />
192 
193         <omgdi:waypoint x="635.0" y="265.0" />
194 
195         <omgdi:waypoint x="635.0" y="220.0" />
196 
197       </bpmndi:BPMNEdge>
198 
199       <bpmndi:BPMNEdge bpmnElement="sid-78026DEB-C4DA-4BF4-9723-C4EE9124E785" id="BPMNEdge_sid-78026DEB-C4DA-4BF4-9723-C4EE9124E785">
200 
201         <omgdi:waypoint x="790.0" y="190.0" />
202 
203         <omgdi:waypoint x="835.0" y="190.0" />
204 
205       </bpmndi:BPMNEdge>
206 
207       <bpmndi:BPMNEdge bpmnElement="sid-035CCFB1-2074-409A-8ADB-13CD37A98A1E" id="BPMNEdge_sid-035CCFB1-2074-409A-8ADB-13CD37A98A1E">
208 
209         <omgdi:waypoint x="219.57539682539684" y="160.42460317460316" />
210 
211         <omgdi:waypoint x="277.0" y="160.19762845849803" />
212 
213       </bpmndi:BPMNEdge>
214 
215     </bpmndi:BPMNPlane>
216 
217   </bpmndi:BPMNDiagram>
218 
219 </definitions>

啟動流程:

技術分享圖片

圖-3 流程任務實例

技術分享圖片

圖-4 員工一任務跟蹤圖

技術分享圖片

圖-5 員工二任務跟蹤圖

技術分享圖片

圖-6 主管任務跟蹤圖

完成員工一的任務:

技術分享圖片

  圖-7 完成任務一後剩下的實例

這個時候,員工一的任務就完成了。那麽,員工一只需要等待員工二完成任務,即可激活部門經理的任務了。

完成員工二任務:

技術分享圖片

圖-8 部門經理流程跟蹤圖

技術分享圖片

圖-9 員工二任務完成後實例

繼續完成部門經理的任務:

技術分享圖片

圖-10 完成部門經理任務後流程實例

這個時候,就剩下主管的任務,即可激活老板的任務了。

完成主管的任務:

技術分享圖片

圖-11 完成主管任務後流程實例

技術分享圖片

圖-11 完成主管任務後流程跟蹤圖

最終匯合到老板審批

完成老板的任務後,整個流程就結束了。

Activiti交流QQ群:634320089

並行網關 Parallel Gateway