定时器事件
涉及核心表:ACT_RU_TIMER_JOB
开始定时器事件
-
可以设置时间,定时开始启动流程实例。
-
部署流程后,不用 startProcessInstanceByXxxx 启动流程实例,而是到达设定时间后自动启动。
-
到达设定时间后,查询下是否有对应的流程实例。
-
触发时间**(ISO-8601格式标准)**:
表示何时触发,标签元素<timeDate> ,时间格式时ISO 8601的固定格式,如:
<timerEventDefinition> <timeDate>2023-03-09T18:18:18</timeDate> </timerEventDefinition>
2023-03-09T18:18:18 -> T是日期和时间分割标记.
-
持续时间**(例如** PT5M):
表示定时器经过多少时间后触发;标签元素 <timeDuration> ,时间格式为ISO 8601的PT格式,如:
<timerEventDefinition> <timeDuration>PT10S</timeDuration> </timerEventDefinition>
要设置 一年两个月三天四小时五分六秒 ,可以写成 P1Y2M3DT4H5M6S
P 是开始标记,T 是日期和时间分割标记。没有日期只有时间T**是不能省去**,只有日期没有时间T直接省去比如:1小时后执行应该写成 PT1H ,10秒后执行 PT10S ,3天后执行 P3D 。
-
时间周期 (e.g. R3/PT10H)
表示重复触发的间隔时间;标签元素 <timeCycle> ,时间格式为ISO 8601的PT格式或Rn格式或变量,如:
<timerEventDefinition> <timeCycle>R3/PT10H</timeCycle> </timerEventDefinition>
-
R 表示永远重复;R1 重复一次;R231重复231次
-
R3/PT10H 表示重复3次每次间隔10小时
-
根据上图部署流程定义,然后10秒后观察是否有相关的流程实例...
通过模型数据部署流程定义:https://www.cnblogs.com/wangshaoyun/p/17150560.html
边界定时器事件
用于向某节点上添加边界定时事件,流程图如下:
注意:报如下错误,检查边界定时器连线问题,删除定时器符号重新绘制。
根据上图流程图启动流程
@Autowired
RuntimeService runtimeService;
@Autowired
TaskService taskService;
@Test
public void start() throws Exception {
//启动流程实例
runtimeService.startProcessInstanceByKey("testTimer2");
List<Task> tasks = taskService.createTaskQuery()
.processDefinitionKey("testTimer2")
.list();
for (Task task : tasks) {
System.out.println("当前的任务信息:");
System.out.println("任务id:"+task.getId());
System.out.println("任务名称:"+task.getName());
}
//等待20s
Thread.sleep(20*1000);
//查询任务办理情况
tasks = taskService.createTaskQuery()
.processDefinitionKey("testTimer2")
.list();
for (Task task : tasks) {
System.out.println("20s后的任务信息:");
System.out.println("任务id:"+task.getId());
System.out.println("任务名称:"+task.getName());
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!