第15篇: Flowable-BPMN操作流程之排他网关
接上一篇:
第14篇:Flowable-BPMN操作流程之任務(wù)完成
https://blog.csdn.net/weixin_40816738/article/details/102902647
文章目錄
- 一、背景
- 二、定義
- 三、流程準(zhǔn)備
- 四、流程文件
- 五、控制器
- 六、流程通過驗證
- 6.1. 創(chuàng)建新流程
- 6.2. 啟動流程
- 6.3. 控制臺查看任務(wù)ID
- 6.4. 通過流程
- 6.5. 查看流程圖
- 七、流程拒絕驗證
- 7.1. 創(chuàng)建新流程
- 7.2. 啟動流程
- 7.3. 控制臺查看任務(wù)ID
- 7.4. 拒絕流程
- 7.5. 查看流程圖
一、背景
- 流程在審批的過程中需要進(jìn)行一些判斷然后再看下一步怎么走,完成判斷邏輯的是網(wǎng)關(guān),排他網(wǎng)關(guān)就是其中的一種。
二、定義
排他網(wǎng)關(guān)(也叫異或(XOR)網(wǎng)關(guān),或更技術(shù)性的叫法 基于數(shù)據(jù)的排他網(wǎng)關(guān)), 用來在流程中實現(xiàn)決策。 當(dāng)流程執(zhí)行到這個網(wǎng)關(guān),所有外出順序流都會被處理一遍。 其中條件解析為true的順序流(或者沒有設(shè)置條件,概念上在順序流上定義了一個’true’) 會被選中,讓流程繼續(xù)運(yùn)行。簡單理解條件為True繼續(xù)執(zhí)行,False將不執(zhí)行。
三、流程準(zhǔn)備
我們在Modeler中給我們的流程配置一個排他網(wǎng)關(guān),添加后流程如下:
在排他網(wǎng)關(guān)的到結(jié)束的連接線上配置好網(wǎng)關(guān)是否通過的條件,比如審核通過我們設(shè)置為${outcome==‘通過’},當(dāng)走到這里流程變量outcome為通過的時候?qū)邔徍送ㄟ^這個流程,等于拒絕的時候走下面的流程,參數(shù)配置如下圖所示:
四、流程文件
流程文件內(nèi)容如下:
<?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:flowable="http://flowable.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.flowable.org/processdef"><process id="test_bpmn" name="測試BPMN模型" isExecutable="true"><documentation>測試BPMN模型</documentation><startEvent id="start" name="開始"></startEvent><endEvent id="end" name="通過結(jié)束"></endEvent><userTask id="testUser" name="用戶任務(wù)測試" flowable:assignee="admin"><extensionElements><flowable:taskListener event="create" class="com.hyj.flowlistener.CommonUserStartListener"></flowable:taskListener><modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete></extensionElements></userTask><sequenceFlow id="sid-8D834F3C-45A8-4C88-9AD1-1AC426CC9002" sourceRef="start" targetRef="testUser"></sequenceFlow><exclusiveGateway id="ex_gateway_check" name="審核結(jié)果"></exclusiveGateway><sequenceFlow id="sid-50731902-EF37-4E07-9DED-2E83F7EB54B7" sourceRef="testUser" targetRef="ex_gateway_check"></sequenceFlow><endEvent id="end_fail" name="失敗結(jié)束"></endEvent><sequenceFlow id="check_fail" name="審核拒絕" sourceRef="ex_gateway_check" targetRef="end_fail"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${outcome=='拒絕'}]]></conditionExpression></sequenceFlow><sequenceFlow id="check_ok" name="審核通過" sourceRef="ex_gateway_check" targetRef="end"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${outcome=='通過'}]]></conditionExpression></sequenceFlow></process><bpmndi:BPMNDiagram id="BPMNDiagram_test_bpmn"><bpmndi:BPMNPlane bpmnElement="test_bpmn" id="BPMNPlane_test_bpmn"><bpmndi:BPMNShape bpmnElement="start" id="BPMNShape_start"><omgdc:Bounds height="30.0" width="30.0" x="210.0" y="120.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="end" id="BPMNShape_end"><omgdc:Bounds height="28.0" width="28.0" x="630.0" y="60.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="testUser" id="BPMNShape_testUser"><omgdc:Bounds height="80.0" width="100.0" x="315.0" y="95.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="ex_gateway_check" id="BPMNShape_ex_gateway_check"><omgdc:Bounds height="40.0" width="40.0" x="480.0" y="115.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="end_fail" id="BPMNShape_end_fail"><omgdc:Bounds height="28.0" width="28.0" x="630.0" y="180.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNEdge bpmnElement="check_fail" id="BPMNEdge_check_fail"><omgdi:waypoint x="500.5" y="154.4338310580205"></omgdi:waypoint><omgdi:waypoint x="500.5" y="194.0"></omgdi:waypoint><omgdi:waypoint x="630.0" y="194.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="sid-8D834F3C-45A8-4C88-9AD1-1AC426CC9002" id="BPMNEdge_sid-8D834F3C-45A8-4C88-9AD1-1AC426CC9002"><omgdi:waypoint x="239.94999779398907" y="135.0"></omgdi:waypoint><omgdi:waypoint x="315.0" y="135.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="sid-50731902-EF37-4E07-9DED-2E83F7EB54B7" id="BPMNEdge_sid-50731902-EF37-4E07-9DED-2E83F7EB54B7"><omgdi:waypoint x="414.95000000000005" y="135.0"></omgdi:waypoint><omgdi:waypoint x="480.0" y="135.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="check_ok" id="BPMNEdge_check_ok"><omgdi:waypoint x="500.5" y="115.5"></omgdi:waypoint><omgdi:waypoint x="500.5" y="74.0"></omgdi:waypoint><omgdi:waypoint x="630.0" y="74.0"></omgdi:waypoint></bpmndi:BPMNEdge></bpmndi:BPMNPlane></bpmndi:BPMNDiagram> </definitions>五、控制器
- 控制器原來直接是個完成任務(wù)現(xiàn)在,我們方便起見拆分為2個一個是通過任務(wù),一個是拒絕任務(wù),如果你的排他網(wǎng)關(guān)使用的都是該參數(shù)那么就可以通用。
六、流程通過驗證
6.1. 創(chuàng)建新流程
使用測試BPMN模型4.bpmn20.xml的流程配置文件,輸入創(chuàng)建地址完成創(chuàng)建。
http://localhost:8989/flow/create
6.2. 啟動流程
http://localhost:8989/flow/start?processKey=test_bpmn
輸入改地址完成流程啟動
6.3. 控制臺查看任務(wù)ID
- 此時查看流程后臺,會打印當(dāng)前的任務(wù)ID
6.4. 通過流程
輸入新增的通過地址完成流程審批
http://localhost:8989/flow/accept?taskId=99bb7920-0082-11ea-8f3c-f8a2d6bfea5a
6.5. 查看流程圖
進(jìn)入流程查看地址:
http://localhost:8989/flow/processDiagram?processId=8f9bf5e7-0083-11ea-9dbd-f8a2d6bfea5a
查看我們的審批流程走到了最后,而拒絕沒有發(fā)生變化,說明排他網(wǎng)關(guān)成功的區(qū)分了兩個流程,流程進(jìn)展如下圖所示:
七、流程拒絕驗證
7.1. 創(chuàng)建新流程
替換罪行的流程配置文件,輸入創(chuàng)建地址完成創(chuàng)建。
http://localhost:8989/flow/create
7.2. 啟動流程
http://localhost:8989/flow/start?processKey=test_bpmn
,輸入改地址完成流程啟動
7.3. 控制臺查看任務(wù)ID
- 此時查看流程后臺,會打印當(dāng)前的任務(wù)ID
7.4. 拒絕流程
輸入新增的通過地址完成流程審批
http://localhost:8989/flow/reject?taskId=9774b0b9-0106-11ea-85ad-f8a2d6bfea5a
7.5. 查看流程圖
進(jìn)入流程查看地址:
http://localhost:8989/flow/processDiagram?processId=976c4c43-0106-11ea-85ad-f8a2d6bfea5a
,查看我們的審批流程走到了最后,而拒絕沒有發(fā)生變化,說明排他網(wǎng)關(guān)成功的區(qū)分了兩個流程,流程進(jìn)展如下圖所示:
代碼下載:
gitlab鏈接:https://gitlab.com/gb-heima/flowablestudy/tree/master/flowablelech15
碼云鏈接:https://gitee.com/gb_90/flowable-study/tree/master/flowablelech15
總結(jié)
以上是生活随笔為你收集整理的第15篇: Flowable-BPMN操作流程之排他网关的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Centos/Red Hat7.9 源码
- 下一篇: pom.xml中添加阿里云Maven中央