榆林市城乡建设规划局网站,wordpress 小视频,保定网站制作系统,河南省住房和城乡建设厅门户网站接上一篇#xff1a; 第9篇#xff1a;Flowable-Modeler集成以及集成代码下载 https://blog.csdn.net/weixin_40816738/article/details/102901208 文章目录一、背景二、方案设计2.1. 流程部署2.2. 模型的转换2.3. 启动流程三、BPMN业务流程文件3.1. 启动flowable-idm3.2. 启… 接上一篇 第9篇Flowable-Modeler集成以及集成代码下载 https://blog.csdn.net/weixin_40816738/article/details/102901208 文章目录一、背景二、方案设计2.1. 流程部署2.2. 模型的转换2.3. 启动流程三、BPMN业务流程文件3.1. 启动flowable-idm3.2. 启动flowable-modeler3.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 version1.0 encodingUTF-8?
definitions xmlnshttp://www.omg.org/spec/BPMN/20100524/MODEL xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:xsdhttp://www.w3.org/2001/XMLSchema xmlns:flowablehttp://flowable.org/bpmn xmlns:bpmndihttp://www.omg.org/spec/BPMN/20100524/DI xmlns:omgdchttp://www.omg.org/spec/DD/20100524/DC xmlns:omgdihttp://www.omg.org/spec/DD/20100524/DI typeLanguagehttp://www.w3.org/2001/XMLSchema expressionLanguagehttp://www.w3.org/1999/XPath targetNamespacehttp://www.flowable.org/processdefprocess idtest_bpmn name测试BPMN模型 isExecutabletruedocumentation测试BPMN模型/documentationstartEvent idstart name开始/startEventendEvent idend name结束/endEventuserTask idtestUser name用户任务测试 flowable:assigneeadminextensionElementsmodeler:initiator-can-complete xmlns:modelerhttp://flowable.org/modeler![CDATA[false]]/modeler:initiator-can-complete/extensionElements/userTasksequenceFlow idsid-8D834F3C-45A8-4C88-9AD1-1AC426CC9002 sourceRefstart targetReftestUser/sequenceFlowsequenceFlow idsid-AB59612A-1B33-4FB8-8758-5D773EDF9C44 sourceReftestUser targetRefend/sequenceFlow/processbpmndi:BPMNDiagram idBPMNDiagram_test_bpmnbpmndi:BPMNPlane bpmnElementtest_bpmn idBPMNPlane_test_bpmnbpmndi:BPMNShape bpmnElementstart idBPMNShape_startomgdc:Bounds height30.0 width30.0 x210.0 y60.0/omgdc:Bounds/bpmndi:BPMNShapebpmndi:BPMNShape bpmnElementend idBPMNShape_endomgdc:Bounds height28.0 width28.0 x525.0 y61.0/omgdc:Bounds/bpmndi:BPMNShapebpmndi:BPMNShape bpmnElementtestUser idBPMNShape_testUseromgdc:Bounds height80.0 width100.0 x315.0 y35.0/omgdc:Bounds/bpmndi:BPMNShapebpmndi:BPMNEdge bpmnElementsid-8D834F3C-45A8-4C88-9AD1-1AC426CC9002 idBPMNEdge_sid-8D834F3C-45A8-4C88-9AD1-1AC426CC9002omgdi:waypoint x239.94999779398907 y75.0/omgdi:waypointomgdi:waypoint x315.0 y75.0/omgdi:waypoint/bpmndi:BPMNEdgebpmndi:BPMNEdge bpmnElementsid-AB59612A-1B33-4FB8-8758-5D773EDF9C44 idBPMNEdge_sid-AB59612A-1B33-4FB8-8758-5D773EDF9C44omgdi:waypoint x414.9499999999903 y75.0/omgdi:waypointomgdi:waypoint x525.0 y75.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 {/*** 部署工作流*/MapString,Object createFlow(String filePath);/*** 启动工作流*/ProcessInstance strartFlow(String processKey, MapString,Object paras);
}4.2. 部署服务实现
部署的代码实现如下,代码中我们加入了流程的校验
Override
public ProcessInstance strartFlow(String processKey, MapString, 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, MapString, 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 MapString, Object createFlow() {MapString, Object res new HashMap();MapString, Object data new HashMap();String flowPath C:\\Users\\gblfy\\Desktop\\Workflow\\flowablestudy\\flowablelech10\\src\\main\\resources\\processes\\测试BPMN模型2.bpmn20.xml;MapString, Object createRes flowService.createFlow(flowPath);if (null createRes) {res.put(msg, 创建流程失败);res.put(res, 0);res.put(data, data);return res;}ListProcess processes (ListProcess) createRes.get(processes);ArrayListString 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 MapString, Object startFlow(RequestBody RequestParam(required false) MapString, String paras) {MapString, Object res new HashMap();MapString, 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;}MapString, 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?processKeytest_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