java如何操作flowable的TASK_CREATED监听在ACT_RU_IDENTITYLINK表产生数据后执行
时间: 2023-12-10 16:03:37 浏览: 191
可以通过在Flowable的配置文件中配置一个监听器,在任务被创建时触发并执行一些逻辑。具体步骤如下:
1. 创建一个类并实现FlowableEventListener接口,重写onEvent方法,在该方法中判断事件类型是否为TASK_CREATED,如果是,则获取任务信息并执行需要的操作。
```java
public class TaskCreatedEventListener implements FlowableEventListener {
@Override
public void onEvent(FlowableEvent event) {
if (event instanceof FlowableEntityEvent) {
FlowableEntityEvent entityEvent = (FlowableEntityEvent) event;
if (FlowableEngineEventType.TASK_CREATED.equals(entityEvent.getType())) {
TaskEntity taskEntity = (TaskEntity) entityEvent.getEntity();
// 获取任务信息并执行需要的操作
}
}
}
@Override
public boolean isFailOnException() {
return false;
}
}
```
2. 在Flowable的配置文件中配置监听器,并设置监听器的优先级。在该配置中,需要将任务创建事件与监听器进行关联。
```xml
<bean id="taskCreatedEventListener" class="com.example.TaskCreatedEventListener"/>
<bean id="flowableEventRegistry" class="org.flowable.spring.registry.DefaultFlowableEventListenerRegistry">
<property name="eventListeners">
<list>
<bean class="org.flowable.spring.event.registry.GenericEventListenerContainer">
<property name="eventTypes">
<list>
<value>TASK_CREATED</value>
</list>
</property>
<property name="eventListener">
<ref bean="taskCreatedEventListener"/>
</property>
<property name="priority" value="100"/>
</bean>
</list>
</property>
</bean>
```
3. 在ACT_RU_IDENTITYLINK表产生数据后执行需要的操作,可以在监听器中进行判断并执行。
```java
public class TaskCreatedEventListener implements FlowableEventListener {
@Autowired
private RuntimeService runtimeService;
@Override
public void onEvent(FlowableEvent event) {
if (event instanceof FlowableEntityEvent) {
FlowableEntityEvent entityEvent = (FlowableEntityEvent) event;
if (FlowableEngineEventType.TASK_CREATED.equals(entityEvent.getType())) {
TaskEntity taskEntity = (TaskEntity) entityEvent.getEntity();
// 判断任务的identity link是否已经创建
boolean isIdentityLinkCreated = runtimeService.createIdentityLinkQuery()
.taskId(taskEntity.getId())
.count() > 0;
if (isIdentityLinkCreated) {
// 执行需要的操作
}
}
}
}
@Override
public boolean isFailOnException() {
return false;
}
}
```
通过以上步骤,就可以实现在任务创建时监听ACT_RU_IDENTITYLINK表的数据变化并执行需要的操作。
阅读全文