基于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对应的数据库支持版本,还是需要去官网找的。
https://docs.camunda.org/enterprise/announcement/
在这里插入图片描述
初始化完之后的数据库是这样的:
在这里插入图片描述

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讲解就到这了。后期慢慢完善。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
BPMN流程引擎实现自定义流程逻辑的原理是通过对流程引擎的扩展来实现的。一般来说,流程引擎提供了一些API或者接口,供开发者进行扩展。开发者可以通过实现这些API或接口来定义自己的流程逻辑,从而满足特定的业务需求。 下面是一个简单的例子,以Activiti为例,介绍如何通过实现Activiti提供的API来实现自定义流程逻辑。 Activiti提供了一些扩展点,例如ExecutionListener、TaskListener、JavaDelegate等,开发者可以实现这些扩展点来定义自己的流程逻辑。 以ExecutionListener为例,可以通过实现ExecutionListener接口来添加自定义的执行逻辑。在实现ExecutionListener接口时,需要重写以下方法: 1. start(DelegateExecution execution): 流程开始时执行的逻辑; 2. end(DelegateExecution execution): 流程结束时执行的逻辑; 3. take(DelegateExecution execution): 流程节点流转时执行的逻辑。 例如,如果需要在流程开始时,将流程实例的一些变量设置为默认值,可以实现ExecutionListener接口,并在start方法中设置相应的变量。 另外,Activiti还提供了一些其他的扩展点,例如TaskListener,可以通过实现TaskListener接口来添加自定义的任务执行逻辑。JavaDelegate可以用于执行自定义Java代码。 总之,通过实现流程引擎提供的API或接口,开发者可以定义自己的流程逻辑,并将其集成到BPMN流程引擎中,从而实现自定义流程控制

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值