Activities:定时器事件
涉及核心表: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());
}
}
标签:Activities,定时器,流程,System,task,事件,println,out
From: https://www.cnblogs.com/wangshaoyun/p/17202651.html