前言
前面介绍了camunda的基本使用,该篇文章主要介绍camunda的一些进阶的东西,业务决策和定时边界事件的使用
该专栏主要为介绍camunda的学习和使用
Camunda使用
1、添加Business Rule Task绑定业务决策
DMN主要上Camunda用来管理业务决策使用的。详细的介绍上一篇文章已经介绍过了,这就不在赘述了。
- 选择
Business Rule Task
活动图标
-
指定好决策id
决策id为下面添加的dmn的决策
-
点击右上角添加一个DMN决策
-
点击决策左上角表格添加决策详情表单
-
点击进入表单详情,可以看到Input和Output,分别表示输入和输出,可以点击+号添加多个输入和输出;下面表示接收的数据
-
双击表头Input表头,可以添加输入的字段内容
-
双击Output可以编辑输出的表单字段名称以及数据类型
-
添加具体条件判断,因为填写的是表达式,表示前面传递过来的数据中,name字段如果是和
"wanwu"
匹配,则approved输出false
,如果是和not("wanwu")
匹配则输出true
-
最后和bpmn一样一起发送
查看是否写入成功
- 添加一个活动数据进行测试,可以看到通过name会自动返回对应的结果
经理审核后,就会经过业务决策活动
我们在到刚刚到业务决策里面去查看对应的业务决策数据,就可以看到刚刚那条经过的活动数据
在点击这条活动的id,就可以看到这条活动的数据数据
2、添加Timer Boundary Event 定时边界事件
在Camunda BPM中,Timer Boundary Event(定时边界事件)是一种特殊的中间事件类型,它被附加到活动(通常是任务或子流程)边缘上。这个事件可以触发流程的中断或非中断行为,具体取决于它的设置
类型
定时边界事件可以配置以下几种类型:
- 时间周期(Time Cycle) :基于某个周期性触发,如每天、每周、每月等。这在长期任务或重复事件中很常见。
- 具体时间日期(Time Date) :在指定的一个具体日期和时间触发。对于有明确截止时间的任务很有用。
- 持续时间(Duration) :定义了当前活动开始后经过一定时长后触发,如“3天后”或“1小时后”。适用于设置任务的有效期限。
示例用法
- 超时处理:如果某个任务必须在特定时间内完成,可以设置一个Timer Boundary Event来在超时时自动中断任务,并按照新的流程逻辑进行提醒或自动处理。
- 自动审批:对于某些非关键任务,可能会设置一个定时的边界事件,表示如果任务X天没有完成,则认为任务已经通过审批。
- 提醒功能:可以非中断地提醒执行者任务将到期,但任务仍允许继续执行直到完成。
中断与非中断
Timer Boundary Event可以配置为:
- 中断(Interrupting) :一旦事件触发,活动被中断,流程根据边界事件的输出连线继续执行。
- 非中断(Non-Interrupting:当事件触发时,当前活动不会被中断,流程会同时沿边界事件的输出连线进行多个分支的执行。在流程设计中,这允许你设置多个并行的路径,直到原来的活动完成。
2.1、自动审批
-
添加事件
我们可以添加一个总经理审批在自动审批前面,在这个总经理审批,添加一个中间事件,然后在给这个中间事件指定为定时边界事件
指定定时边界事件
-
添加表单
给表单的数据设置都默认值
-
配置自动审批时
示例
R3/2022-03-11T12:13+01/PT5M
:从2022年3月11号的12点这个时间开始,每过五分钟发送一次,总共重复3次(重复执行的选择cycle)。R3/PT5M
:从到这一步的活动时间开始过五分钟发送一次,总共重复3次。(重复执行的选择cycle)2022-03-11T12:13+01
:指定的时间执行,(选择date)0 */5 * * * *
:也可以使用Cron表达式(选择cycle)P14D
:14天后执行
假如我们的业务要求是,经理2分钟不审批的话,就自动通过审批。则选择Duration,设置为
PT3M
,表示2分钟后执行
-
测试数据
我们先把流程部署保存,然后在添加一条数据,审批到这一步
我们可以查看jobs这个位置,表示定时边界事件执行的列表,表示05开始计时,两分钟之后自动审批,因为我们设置的是两分钟
当执行完之后,这条数据会被删除。
2.2、超时处理
-
创建任务
假如我们不想让马上存档,想过几分钟在存,我们可以在下面在加一个定时边界事件。
-
把流程部署上去,然后在添加一条数据
-
然后我们在经理审批掉,就可以看到,这个任务被卡在了定时事件这等待
时间已过,可以看到已经被放行到下一步去了
2.3、提醒审批
-
添加非中止任务
假如我们想如果经理不审批就一直提醒他,可以添加一个提醒的定时边界事件,通过cron表达式的方式。并且需要切换为一个非中断的定时边界事件,因为只是提醒,而不用去中断主线审批任务
-
创建任务,设置配置
使用cron表达式配置
-
测试查看
提交部署,添加一条数据测试,可以看到过了
可以看到,事件一到就会去重复的生成支线的提醒任务。并且不会把主线的审批任务关闭掉。