flowable边界定时器
阅读数:439 评论数:0
跳转到新版页面分类
python/Java
正文
一、前言
使用边界计时器,对没有审批的任务提前进行提醒,如果用户借阅了图书,在归还时间前一天的时候,对用户进行提醒。
二、流程设计
在提醒事件上设置开始时间${startTime}
三、事件监听器
自定义监听器,实现FlowableEventListener接口。
@Component
@Slf4j
public class FlowableEventListenerTest implements FlowableEventListener {
@Override
public void onEvent(FlowableEvent event) {
try {
//FlowableEntityEventImpl 事件
if (event instanceof FlowableEntityEventImpl) {
FlowableEntityEventImpl engineEvent = (FlowableEntityEventImpl) event;
JobEntityImpl job = (JobEntityImpl) engineEvent.getEntity();
//获取任务详情
String name = job.getElementName();
String processInstanceId = job.getProcessInstanceId();
System.out.println(name);
System.out.println(processInstanceId);
} else {
//其他事件
}
} catch (Exception e) {
log.error("执行事件监听器出错,error{}", e);
}
}
@Override
public boolean isFailOnException() {
return false;
}
@Override
public boolean isFireOnTransactionLifecycleEvent() {
return false;
}
@Override
public String getOnTransaction() {
return null;
}
}
四、注册监听器
@Configuration
public class GlobalEventListenerConfig {
@Autowired
private RuntimeService runtimeService;
@PostConstruct
public void addListener() {
//第二个参数表示只处理任务执行成功的事件,没有第二个参数则表示处理 FlowableEngineEventType 的所有事件
runtimeService.addEventListener(new FlowableEventListenerTest(), FlowableEngineEventType.JOB_EXECUTION_SUCCESS);
}
}
五、测试
1、加载流程
@Test
public void createDeploymentTest() {
Deployment deployment = repositoryService.createDeployment()
.addClasspathResource("测试定时提醒.bpmn20.xml")
.deploy();
System.out.println(deployment.getId());
}
2、启动流程
@Test
public void startOneTimejobProcessDefinition() {
Map<String, Object> variables = new HashMap<String, Object>();
//定时任务启动时间
variables.put("startTime", "2022-06-26T22:40:00");
//通过流程的key启动实例
ProcessInstance processInstance =
runtimeService.startProcessInstanceByKey("oneTimejob-process", variables);
System.out.println(processInstance.getName());
}
在定时任务启动时间到来时,如果任务还没有审批,则会触发监听器的逻辑。
相关推荐
Flowable是一个采用Java开发的业务流程引擎,通过Flowable流程引擎,我们可以部署BPMN2.0的流程定义(一般为XML文件),通过流程定义创建流程实例,查询和访问流程相关的实例与数据,
一、数据库表类别
flowable是基于Activiti开发的流程引擎,表名中ACT_就是基于Activiti的,而FLW_开头的,是特定于Flowable Work或Engage的数据库表。
一、配置
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-spring-boot-starter</
一、使用文件流部署工作流
//resourceName是文件的全名称(包括文件后缀)
String resourceName = multipartFile.getOriginalFilename()
一、自定义扩展
标准通常是不同公司(不同观点)大量讨论与妥协的结果。作为阅读BPMN 2.0 XML流程定义的开发者,有时会觉得某些结构或方法十分笨重。Flowable将开发者的感受放在最高优先,因此
一、下载
从官网可以下载到flowable,其中有两个war包:flowable-ui.war和flowable-rest.war。
flowable-ui.wa
一、简介
如果需要人工执行的任务,就需要用到用户任务建模。
二、常用配置
1、执行人Assignments
(1)执行人类型:
Assignee
代理执行人,一般一个用户。
Candidat
通常我们会需要给任务运行表设置内容,因为默认启动任务或完成任务的操作时有些值为空,但我们需要给我们的字段设置值,我想给form_keys设置值,可以通过以下几种方式:
1、常用情况