下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第Flowable中定时器的玩法详解目录1.流程定义定时激活2.流程实例定时挂起3.定时任务执行过程
1.流程定义定时激活
在之前松哥给小伙伴们介绍流程定义的时候,流程都是定义好之后立马就激活了,其实在流程定义的这个过程中,我们还可以设置一个激活时间,也就是流程定义好之后,并不会立马激活(不激活就不能据此流程定义创建新流程),而是在延迟某一个固定时间之后,才会激活,代码如下:
@RestController
public
class
ProcessDeployController
{
@Autowired
RepositoryService
repositoryService;
@PostMapping("/deploy")
public
RespBean
deploy(MultipartFile
file,String
tenantId)
throws
IOException
{
System.out.println(new
Date());
DeploymentBuilder
deploymentBuilder
=
repositoryService.createDeployment()
.category("javaboy的工作流分类")
.name("javaboy的工作流名称")
.addInputStream("fff.bpmn",
file.getInputStream())
.tenantId(tenantId)
.activateProcessDefinitionsOn(new
Date(System.currentTimeMillis()
+
1000
*
60))
.key("javaboy的工作流key666");
Deployment
deployment
=
deploymentBuilder
.deploy();
return
RespBean.ok("部署成功",deployment.getId());
}
.activateProcessDefinitionsOn(newDate(System.currentTimeMillis()+1000*60))表示流程在延迟一分钟之后,才激活。
此时,我们启动项目,然后调用该接口部署一个流程,部署完成之后,如果立马调用流程启动方法去启动流程,就会抛出如下异常:
可以看到,这里也说的很明确了,这个流程定义目前是一个挂起的状态,无法启动。
这个时候,我们去查看ACT_RU_TIMER_JOB表,就会发现该表中多了一条定时任务执行计划:
该表有一个DUEDATE_字段,这个字段描述了这个定时任务执行的具体时间,在到达时间后,定时任务会自动执行,将ACT_RE_PROCDEF表中,流程的状态字段SUSPENSION_STATE_由2改为1。
2.流程实例定时挂起
除了流程定义可以定时挂起外,流程实例也可以定时挂起。方式如下:
@Autowired
RepositoryService
repositoryService;
@Test
void
test23()
{
repositoryService.suspendProcessDefinitionByKey("UserTaskDemo",
true,
new
Date(System.currentTimeMillis()
+
120
*
1000));
这个执行完成后,也会在ACT_RU_TIMER_JOB表中添加一条定时任务,在两分钟之后,会自动挂起这个流程定义以及与之相对应的流程。实际上就是将对应表中的SUSPENSION_STATE_字段值由1改为2。
3.定时任务执行过程
前面两个小节,松哥都和大家提到,ACT_RU_TIMER_JOB表中会保存定时任务信息,时间到了就会自动执行。
但是小伙伴们注意,定时任务每次执行的时候,其实并不是去ACT_RU_TIMER_JOB表中查询数据,而是去ACT_RU_JOB表中查询数据并执行。
当定时的时间到了后,Flowable会自动将数据从ACT_RU_TIMER_JOB表中移动到ACT_RU_JOB表中,然后定时器查询到ACT_RU_JOB表中的数据之后,就立马自动执行了。大致上就是这样一个流程。
我给大家手动演示一个。
我现在的流程定义和流程实例都挂起了,我想要在4分钟之后,将之全部启动,代码如下:
@Test
void
test24()
{
repositoryService.activateProcessDefinitionByKey("UserTaskDemo",
true,
new
Date(System.currentTimeMillis()
+
240
*
1000));
当这行代码执行之后,4分钟之后,流程定义和流程实例就全部都启动了。但是我现在忽然就不想等四分钟了,我想立马执行,那么我们可以去ACT_RU_TIMER_JOB表中找到这个定时任务的ID,然后执行如下代码:
@Autowired
ManagementService
managementService;
@Test
void
test25()
{
managementService.moveTimerToExecutableJob("b7e9501d-5075-11ed-9706-acde48001122");
这个代码表示将ID为b7e9501d-5075-11ed-9706-acde48001122的记录由ACT_RU_TIMER_JOB表移动到ACT_RU_JOB表中,移动完成后,这个任务就会被立马执行。
当一个定时任务开启了,还能不能取消呢?当然可以!我们将这个定时任务放到私信队列表即可,私信队列表是ACT_RU_DEADLETTER_JOB,具体操作方式如下:
@Test
void
test27()
{
managementService.moveJobToDeadLetterJob("6b95dc62-5081-11ed-a00f-acde48001122");
上面这个方法执行的参数是ACT_RU_TIMER_JOB表中的任务ID,执行完成后,ACT_RU_TIMER_JOB表中对应的记录就会被移动到ACT_RU_DEADLETTER_JOB表中,所以定时任务就不会被执行了。
对于已经移动到私信队列的定时任务,也可以再通过如下方法移动回ACT_RU_JOB表中被立马执行(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年度医师定期考核考试历年机考真题集含答案详解【完整版】
- 2024-2025学年山西卫生健康职业学院单招数学模拟试题及答案详解(夺冠)
- 2024-2025学年度注册公用设备工程师通关题库含完整答案详解【必刷】
- 2024-2025学年六盘水职业技术学院妇产护理期末题库附完整答案详解【典优】
- 2024-2025学年度临床执业医师自我提分评估附参考答案详解(综合题)
- 2024-2025学年度电梯考试考试历年机考真题集含答案详解【预热题】
- 2024-2025学年公务员(国考)考前冲刺测试卷附完整答案详解(夺冠系列)
- 2024-2025学年度电梯考试考试黑钻押题及答案详解(考点梳理)
- 2024-2025学年度专升本高频难、易错点题【模拟题】附答案详解
- 肾结石急性发作处理措施
- 黄金冶炼项目可行性研究报告
- 第15课《十月革命与苏联社会主义建设》中职高一下学期高教版(2023)世界历史全一册
- GB/T 11981-2024建筑用轻钢龙骨
- 2024年高等教育文学类自考-06216中外建筑史考试近5年真题集锦(频考类试题)带答案
- 《AutoCAD 2023基础与应用》 课件全套 劳动 项目1-8 AutoCAD 2023 入门、绘制简单平面图形-综合实训
- 缠论-简单就是美
- 教师读书分享《做温暖的教育者》
- QCT1177-2022汽车空调用冷凝器
- 2.1科学探究感应电流的方向课件-高二物理(2019选择性)
- 2024陆上风电场安全生产标准化实施规范
- 基于PLC的混凝土搅拌站控制系统设计
评论
0/150
提交评论