Activti流程框架

tech2024-06-09  70

  最近业务项目需要新增【审批超时邮件提醒】的功能,具体意思就是在用户任务长时间未被审批时,就定期发邮件提醒。初步想到的解决办法是结合以下技术完成:

采用边界时间事件定时触发TIME_FIRED事件;全局ActivitiEventListener事件监听器监听TIME_FIRED事件;JavaMailSenderImpl写邮件发送;

  下面就跟随小白具体实现吧!首先了解一下ISO8601时间格式语法;

1、ISO8601时间格式语法

格式:【重复次数/开始时间/间隔时间/结束日期】,由四部分组成;

1.1 重复次数

  R[次数]:表示具体重复多数次,当忽略[次数]时,代表无限次重复;

1.2 开始时间

使用T来分隔日期和时间,例如2020-09-06 T 13:23:12;

1.3 间隔时间

  以P开头,用T来分隔日期和时间;例如:P1DT2H表示间隔1天零2小时;

1Y:1年1M:1月1D:1天T3H:3小时T3M:3分钟T3S:3秒
1.4 结束日期

  使用T来分隔日期和时间,例如2020-09-08 T 13:23:01;

  一个基本例子:R2/2020-03-05 T 08:04:00/PT5M,表示从2020-03-05 T 08:04:00开始,每5分钟触发一次,总共间隔触发2次;

2、边界时间事件

2.1 配置application.properties文件
##激活作业执行器,否则定时器将不起作用 spring.activiti.async-executor-activate=true spring.activiti.job-executor-activate=true
2.2 边界时间事件流程模型XML表达
<boundaryEvent id="boundarytimer2" name="超时提醒" attachedToRef="XXX" cancelActivity="false"> <timerEventDefinition> <!-- 1、timeDuration、timeDate、timeCycle三种 2、<timeXXX>重复次数/开始时间/间隔时间</timeXXX> 3、R/P1D:表示每间隔1天执行一次 --> <timeCycle>R/P1D</timeCycle> </timerEventDefinition> </boundaryEvent>

  上图的边界时间事件只要用户任务节点没有被执行,那么边界时间事件就会每间隔一天触发一次,从而达到超时提醒的效果;

2.2 Cancel activiti的作用
False:表示当触发边界时间事件时,不终止主线路上被依附的节点任务,顺带执行边界分支;True: 表示触发边界时间事件时,终止主线路上被依附的节点任务,顺带执行边界分支; (更多有关activiti的项目开发内容请等下次更新,欢迎点评,共同进步哦!)
最新回复(0)