第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的內容
- 如下:
四、服務
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操作流程部署、启动的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue 项目预热
- 下一篇: 工作流实战篇_01_flowable 流