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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

第10篇:Flowable-BPMN操作流程部署、启动

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

接上一篇:
第9篇:Flowable-Modeler集成以及集成代碼下載
https://blog.csdn.net/weixin_40816738/article/details/102901208

文章目錄

  • 一、背景
  • 二、方案設計
    • 2.1. 流程部署
    • 2.2. 模型的轉換
    • 2.3. 啟動流程
  • 三、BPMN業務流程文件
    • 3.1. 啟動flowable-idm
    • 3.2. 啟動flowable-modeler
    • 3.3. BPMNxml的內容
  • 四、服務
    • 4.1. 服務接口設計
    • 4.2. 部署服務實現
    • 4.3. 啟動服務實現
    • 4.4. 部署控制器
    • 4.5. 啟動控制器
    • 4.6. 部署創建流程驗證
    • 4.7. 運行流程驗證

一、背景

本文開始將陸續開始Flowable的API編程操作,慢慢掌握Flowable的常見API操作,參考博客
https://blog.csdn.net/weixin_40816738/article/details/102887854

二、方案設計

2.1. 流程部署

  • Flowable的流程部署通過倉庫服務來完成部署,倉庫服務的接口為RepositoryService。該接口通過創建DeploymentBuilder來完成部署

2.2. 模型的轉換

  • 部署前我們編輯了一個普通的流程文件,需要加載下改文件來防止文件有錯誤,把文件轉換為BPMNModel來校驗,核心接口為BpmnXMLConverter,通過API接口convertToBpmnModel來實現xml到模型的轉換

2.3. 啟動流程

  • 加載完成流程后,我們將流程啟動,Flowable的啟動接口為runtimeService,運行時服務調用startProcessInstanceByKey啟動一個流程,并且返回流程對象ProcessInstance。該對象包含ID,后續我們將經常用到該ID。

三、BPMN業務流程文件

還是使用簡單流程來完成業務流程的學習,目前流程只包含一個開始節點/用戶任務節點/結束節點。給用戶任務節點配置一個分配人為admin.如下圖所示:

3.1. 啟動flowable-idm

java -jar .\flowable-idm.war

啟動如下圖所示,默認端口8080:

http://localhost:8080/flowable-idm/

3.2. 啟動flowable-modeler

http://localhost:8080/flowable-modeler/



注:刪除權限驗證證后,直接訪問http://localhost:8080/flowable-modeler/即可

3.3. BPMNxml的內容

  • 如下:
<?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><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><sequenceFlow id="sid-AB59612A-1B33-4FB8-8758-5D773EDF9C44" sourceRef="testUser" targetRef="end"></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="60.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="end" id="BPMNShape_end"><omgdc:Bounds height="28.0" width="28.0" x="525.0" y="61.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="testUser" id="BPMNShape_testUser"><omgdc:Bounds height="80.0" width="100.0" x="315.0" y="35.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNEdge bpmnElement="sid-8D834F3C-45A8-4C88-9AD1-1AC426CC9002" id="BPMNEdge_sid-8D834F3C-45A8-4C88-9AD1-1AC426CC9002"><omgdi:waypoint x="239.94999779398907" y="75.0"></omgdi:waypoint><omgdi:waypoint x="315.0" y="75.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="sid-AB59612A-1B33-4FB8-8758-5D773EDF9C44" id="BPMNEdge_sid-AB59612A-1B33-4FB8-8758-5D773EDF9C44"><omgdi:waypoint x="414.9499999999903" y="75.0"></omgdi:waypoint><omgdi:waypoint x="525.0" y="75.0"></omgdi:waypoint></bpmndi:BPMNEdge></bpmndi:BPMNPlane></bpmndi:BPMNDiagram> </definitions>

四、服務

4.1. 服務接口設計

有了xml之后,我們設計web的服務層接口如下

package com.gblfy.service;import org.flowable.engine.runtime.ProcessInstance;import java.util.Map;/*** 流程服務類*/ public interface IFlowService {/*** 部署工作流*/Map<String,Object> createFlow(String filePath);/*** 啟動工作流*/ProcessInstance strartFlow(String processKey, Map<String,Object> paras); }

4.2. 部署服務實現

部署的代碼實現如下,代碼中我們加入了流程的校驗:

@Override public ProcessInstance strartFlow(String processKey, Map<String, Object> paras) {if (StringUtils.isEmpty(processKey)){return null;}if (null == paras){paras = new HashMap<>();}Deployment deployment = repositoryService.createDeploymentQuery().processDefinitionKey(processKey).singleResult();if (deployment == null){log.error("沒有該流程");return null;}return runtimeService.startProcessInstanceByKey(processKey,paras);}

4.3. 啟動服務實現

啟動服務實現如下,為了防止沒有部署就去啟動,加入了流程是否存在的檢查:

@Override public ProcessInstance strartFlow(String processKey, Map<String, Object> paras) {if (StringUtils.isEmpty(processKey)){return null;}if (null == paras){paras = new HashMap<>();}Deployment deployment = repositoryService.createDeploymentQuery().processDefinitionKey(processKey).singleResult();if (deployment == null){log.error("沒有該流程");return null;}return runtimeService.startProcessInstanceByKey(processKey,paras);}

4.4. 部署控制器

web入口設計簡單,主要啟動服務,并且返回服務的部署信息,具體實現如下:

@RequestMapping("/create")@ResponseBodypublic Map<String, Object> createFlow() {Map<String, Object> res = new HashMap<>();Map<String, Object> data = new HashMap<>();String flowPath ="C:\\Users\\gblfy\\Desktop\\Workflow\\flowablestudy\\flowablelech10\\src\\main\\resources\\processes\\測試BPMN模型2.bpmn20.xml";Map<String, Object> createRes = flowService.createFlow(flowPath);if (null == createRes) {res.put("msg", "創建流程失敗");res.put("res", "0");res.put("data", data);return res;}List<Process> processes = (List<Process>) createRes.get("processes");ArrayList<String> ids = new ArrayList<>();for (Process process : processes) {ids.add(process.getId());}data.put("processKeys", ids);data.put("deployId", ((Deployment) createRes.get("deployment")).getId());res.put("data", data);res.put("msg", "創建流程成功");res.put("res", "1");return res;}

4.5. 啟動控制器

啟動控制器實現如下:

@RequestMapping("/start")@ResponseBodypublic Map<String, Object> startFlow(@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 processKey = paras.get("processKey");if (StringUtils.isEmpty(processKey)) {res.put("msg", "啟動流程失敗");res.put("res", "0");res.put("data", data);return res;}Map<String, Object> flowParas = new HashMap<>();flowParas.putAll(paras);ProcessInstance processInstance = flowService.strartFlow(processKey, flowParas);if (null == processInstance) {res.put("msg", "啟動流程失敗");res.put("res", "0");res.put("data", data);return res;}data.put("processId", processInstance.getId());res.put("msg", "啟動流程成功");res.put("res", "1");res.put("data", data);return res;}

4.6. 部署創建流程驗證

啟動服務后,在瀏覽器中輸入http://localhost:8989/flow/create驗證如下:

4.7. 運行流程驗證

輸入http://localhost:8989/flow/start?processKey=test_bpmn驗證如下:

Flowable部署啟動流程完整代碼下載
Gitlab鏈接:https://gitlab.com/gb-heima/flowablestudy/tree/master/flowablelech10
碼云地址:https://gitee.com/gb_90/flowable-study/tree/master/flowablelech10

下一篇:
第11篇:Flowable-BPMN部署常見問題沒有對ACT_RE_PROCDEF表進行插入操作
https://blog.csdn.net/weixin_40816738/article/details/102902524

總結

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

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