基于Camunda实现自定义bpmn流程控制
实例代码
Demo环境
idea 2020.1 + Maven + Mysql
使用步骤
1.下载好代码,通过idea或者eclipse 编译,初始化环境 2.安装mysql ,注意Camunda对应的Mysql版本是有限制的,支持的Mysql 版本为 5.1 ,5.5, 5.6,使用的mysql 驱动类,一般为5.1,和8.0 网上有说 5.5,5.6,5.7的mysql-connector-java不支持,具体没有验证,本项目用的是8.0版本的表示没有什么问题。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
3.默认的H2数据库是不用手动初始化数据库的,下面讲的是 MySQL初始化数据库,Resources目录下面有个,comunda_init_sql.sql文件,直接执行里面的sql 应该就能还原一个完整的库,还有一种初始化库的方法,在camunda-engine包下面有一个engine–>db–>create目录下有很多库的初始化sql,这样就可以很方便的找到相应的初始化sql了,但是这些sql执行的时候有可能会报错(大部分是数据库版本问题)具体想要查camunda对应的数据库支持版本,还是需要去官网找的。 初始化完之后的数据库是这样的:
OK,上代码讲解了,
代码演示
1.首先注意我自定义的Resources文件夹下面的DZJY.bpmn文件, 划重点:ID 字段配置, Camunda 会自动扫描资源目录下面的.bpmn文件,并且会解析这些文件的合法性,后面会讲不合法会报啥错,系统在调用流程的时候也会通过这个ID去找对应的BPMN流程 2.启动项目 正常启动是这个样子,如果bpmn文件里面有错误,这里会直接解析失败。 访问camunda网站: http://localhost:8080/app/cockpit/default/#/login 最初是0,0,0
演示如何启动自定义的bpmn
启动流程
代码: 通过Swagger-Ui调用 http://localhost:8080/swagger-ui.html#/rwgk-controller/ParticipatingProjectUsingPOST_1 流程成功启动 启动配置细节 配置流程节点的分组,${department} 表示,引用系统中的变量属性值 对应的代码里面这个参数: 调用的上面提到的流程ID对应的是PROCESS_ID这个参数:
获取流程TaskId
1.调用 获取预处理流程节点任务ID 流程图配置:
代码逻辑: 主要是通过之前流程节点设置的属性去查找的(建议最好不要有中文,时不时就给你乱码,都找不到原因的那种), taskName对应的是“预处理” ${department}对应的是启动流程时设置的“武汉大学” 获取到预处理流程的ID 执行预处理操作: process 对应的属性是预处理流程节点上的一个变量 逻辑代码 执行成功后,流程图就会变成这样,进入下一步 进入的条件是: 就是这个finish_process变量值大于25 ,刚刚设置的是26,满足条件,如果不满足条件就会走下面这条: 自循环了, 大概Demo讲解就到这了。后期慢慢完善。
