日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第15篇: Flowable-BPMN操作流程之排他网关

發布時間:2024/9/27 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第15篇: Flowable-BPMN操作流程之排他网关 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

接上一篇:
第14篇:Flowable-BPMN操作流程之任務完成
https://blog.csdn.net/weixin_40816738/article/details/102902647

文章目錄

  • 一、背景
  • 二、定義
  • 三、流程準備
  • 四、流程文件
  • 五、控制器
  • 六、流程通過驗證
    • 6.1. 創建新流程
    • 6.2. 啟動流程
    • 6.3. 控制臺查看任務ID
    • 6.4. 通過流程
    • 6.5. 查看流程圖
  • 七、流程拒絕驗證
    • 7.1. 創建新流程
    • 7.2. 啟動流程
    • 7.3. 控制臺查看任務ID
    • 7.4. 拒絕流程
    • 7.5. 查看流程圖

一、背景

  • 流程在審批的過程中需要進行一些判斷然后再看下一步怎么走,完成判斷邏輯的是網關,排他網關就是其中的一種。

二、定義

排他網關(也叫異或(XOR)網關,或更技術性的叫法 基于數據的排他網關), 用來在流程中實現決策。 當流程執行到這個網關,所有外出順序流都會被處理一遍。 其中條件解析為true的順序流(或者沒有設置條件,概念上在順序流上定義了一個’true’) 會被選中,讓流程繼續運行。簡單理解條件為True繼續執行,False將不執行。

三、流程準備

我們在Modeler中給我們的流程配置一個排他網關,添加后流程如下:
在排他網關的到結束的連接線上配置好網關是否通過的條件,比如審核通過我們設置為${outcome==‘通過’},當走到這里流程變量outcome為通過的時候將會走審核通過這個流程,等于拒絕的時候走下面的流程,參數配置如下圖所示:

四、流程文件

流程文件內容如下:

<?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="通過結束"></endEvent><userTask id="testUser" name="用戶任務測試" 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="審核結果"></exclusiveGateway><sequenceFlow id="sid-50731902-EF37-4E07-9DED-2E83F7EB54B7" sourceRef="testUser" targetRef="ex_gateway_check"></sequenceFlow><endEvent id="end_fail" name="失敗結束"></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>

五、控制器

  • 控制器原來直接是個完成任務現在,我們方便起見拆分為2個一個是通過任務,一個是拒絕任務,如果你的排他網關使用的都是該參數那么就可以通用。
@RequestMapping("/accept")@ResponseBodypublic Map<String,Object> acceptTask(@RequestBody @RequestParam(required = false) Map<String,String> paras){Map<String,Object> res =new HashMap<>();Map<String,String> data = new HashMap<>();if (MapUtils.isEmpty(paras)){res.put("msg","請輸入任務參數");res.put("res","0");res.put("data",data);return res;}String taskId = paras.get("taskId");if (StringUtils.isEmpty(taskId)){res.put("msg","請輸入任務ID");res.put("res","0");res.put("data",data);return res;}Map<String,Object> flowParas=new HashMap<>();flowParas.putAll(paras);flowParas.put("outcome","通過");boolean bok = flowService.completeTask(taskId,flowParas);if (bok){data.put("taskId",taskId);res.put("msg","通過任務成功");res.put("res","1");}else {data.put("taskId",taskId);res.put("msg","通過任務失敗");res.put("res","0");}res.put("data",data);return res;}@RequestMapping("/reject")@ResponseBodypublic Map<String,Object> rejectTask(@RequestBody @RequestParam(required = false) Map<String,String> paras){Map<String,Object> res =new HashMap<>();Map<String,String> data = new HashMap<>();if (MapUtils.isEmpty(paras)){res.put("msg","請輸入任務參數");res.put("res","0");res.put("data",data);return res;}String taskId = paras.get("taskId");if (StringUtils.isEmpty(taskId)){res.put("msg","請輸入任務ID");res.put("res","0");res.put("data",data);return res;}Map<String,Object> flowParas=new HashMap<>();flowParas.putAll(paras);flowParas.put("outcome","拒絕");boolean bok = flowService.completeTask(taskId,flowParas);if (bok){data.put("taskId",taskId);res.put("msg","拒絕任務成功");res.put("res","1");}else {data.put("taskId",taskId);res.put("msg","拒絕任務失敗");res.put("res","0");}res.put("data",data);return res;}

六、流程通過驗證

6.1. 創建新流程

使用測試BPMN模型4.bpmn20.xml的流程配置文件,輸入創建地址完成創建。
http://localhost:8989/flow/create

6.2. 啟動流程

http://localhost:8989/flow/start?processKey=test_bpmn
輸入改地址完成流程啟動

6.3. 控制臺查看任務ID

  • 此時查看流程后臺,會打印當前的任務ID

6.4. 通過流程

輸入新增的通過地址完成流程審批
http://localhost:8989/flow/accept?taskId=99bb7920-0082-11ea-8f3c-f8a2d6bfea5a

6.5. 查看流程圖

進入流程查看地址:
http://localhost:8989/flow/processDiagram?processId=8f9bf5e7-0083-11ea-9dbd-f8a2d6bfea5a
查看我們的審批流程走到了最后,而拒絕沒有發生變化,說明排他網關成功的區分了兩個流程,流程進展如下圖所示:

七、流程拒絕驗證

7.1. 創建新流程

替換罪行的流程配置文件,輸入創建地址完成創建。
http://localhost:8989/flow/create

7.2. 啟動流程

http://localhost:8989/flow/start?processKey=test_bpmn
,輸入改地址完成流程啟動

processId:976c4c43-0106-11ea-85ad-f8a2d6bfea5a

7.3. 控制臺查看任務ID

  • 此時查看流程后臺,會打印當前的任務ID

7.4. 拒絕流程

輸入新增的通過地址完成流程審批
http://localhost:8989/flow/reject?taskId=9774b0b9-0106-11ea-85ad-f8a2d6bfea5a

7.5. 查看流程圖

進入流程查看地址:
http://localhost:8989/flow/processDiagram?processId=976c4c43-0106-11ea-85ad-f8a2d6bfea5a
,查看我們的審批流程走到了最后,而拒絕沒有發生變化,說明排他網關成功的區分了兩個流程,流程進展如下圖所示:

代碼下載:

gitlab鏈接:https://gitlab.com/gb-heima/flowablestudy/tree/master/flowablelech15

碼云鏈接:https://gitee.com/gb_90/flowable-study/tree/master/flowablelech15

總結

以上是生活随笔為你收集整理的第15篇: Flowable-BPMN操作流程之排他网关的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 女人一级一片30分 | 国产伦精品一区二区免费 | 国产毛片久久久久 | 夜夜嗨老熟女av一区二区三区 | 国产精品av在线播放 | 成人依依网 | 一级片在线免费看 | 成人免费一区二区三区在线观看 | 国产日韩一区二区在线 | 中文字幕丰满孑伦无码专区 | 免费日韩精品 | 国产精品一区二区白浆 | 欧美99久久精品乱码影视 | 国产性色av | 亚洲欧美日韩在线一区二区 | 日本不卡视频一区二区 | 久久国产精品影视 | 国产精品爽爽 | 国产情侣91 | 国产精品无码久久久久久电影 | 国产伦理久久精品久久久久 | 亚洲精品国产欧美 | 免费观看全黄做爰的视频 | 日韩性生活视频 | 国产欧美日韩一区二区三区 | 亚洲4区| 日本欧美亚洲 | 美足av| 五月天在线播放 | 999精品一区 | 手机在线免费观看av | 成人在线观看一区二区 | 91久久影院| 色网址在线 | 婷婷去俺也去 | 制服丝袜av一区二区三区下载 | 国产成人无码精品久久久性色 | 熟睡侵犯の奶水授乳在线 | 亚洲免费小视频 | 天天天操操操 | 国产对白在线 | 国产精品亚州 | 99riav国产在线观看 | 国产午夜精品理论片在线 | 少妇又紧又色又爽又刺激 | 国产成人免费电影 | 最新视频–x99av | 日韩精品在线看 | 狂野欧美性猛交xxxx | 色婷婷av一区二区三区麻豆综合 | www狠狠爱 | 久久久久久久久久久久久久久久久 | 人人模人人干 | 国产二级毛片 | 在线观看国产黄色 | 伊人涩涩| 欧美骚少妇| 极品91 | 欧美日韩中文国产 | 国产99久久久国产精品成人免费 | 国产一区二区视频网站 | 美女被猛网站 | 最近免费中文字幕中文高清百度 | 天天色天天干天天 | 高清无码一区二区在线观看吞精 | 国产99在线 | 亚洲 | 黄色一级淫片 | 日韩视频一区二区三区四区 | 国产精品无码一区二区三区在线看 | 97在线观看视频 | 蜜臀av免费一区二区三区水牛 | 免费裸体美女网站 | 黄色理伦片 | 日本熟伦人妇xxxx | 青青成人| 在线观看免费小视频 | 禁网站在线观看免费视频 | 色四月| 午夜高潮| 2021av视频 | 久久成人国产 | 天堂av在线电影 | av天天网| 少妇高潮一区二区三区 | jzzjzz日本丰满成熟少妇 | 一区二区三区播放 | 亚洲一区你懂的 | 国产精品天美传媒沈樵 | 在线观看免费观看在线 | 天堂999| 青青青手机视频 | 艳母动漫在线播放 | 黄在线免费观看 | 性欢交69精品久久久 | 国产伦精品一区二区三区精品 | 亚洲国产麻豆 | 日韩精品久久久久 | 欧美三级视频在线观看 | 中国xxxx性xxxx产国 |