全局监听
就是所有的动作做一些统一处理
由于实际情况下我们会把表单、流程数据同步到业务系统。这个时候我们全局监听就起到很大的作用了。
1、配置全局监听器,利用EventDispatcher添加监听器
/**
* 全局监听配置 ContextRefreshedEvent在类被初始化之后触发
*/
@Configuration
public class FlowableGlobListenerConfig implements ApplicationListener<ContextRefreshedEvent> {
@Autowired
private SpringProcessEngineConfiguration configuration;
@Autowired
private ActivityCompleteListener activityCompleteListener;
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
FlowableEventDispatcher dispatcher = configuration.getEventDispatcher();
//任务完成全局监听
dispatcher.addEventListener(globalTaskCreateListener, FlowableEngineEventType.TASK_COMPLETED);
}
}
2、这里我们就写一个任务监听器吧
/**
* 任务完成全局监听器
*/
@Component
@Slf4j
public class ActivityCompleteListener implements FlowableEventListener {
private static Logger logger = LoggerFactory.getLogger(ActivityCompleteListener.class);
@Override
public void onEvent(FlowableEvent event) {
FlowableActivityEventImpl entity = (FlowableActivityEventImpl) event;
String activityType = entity.getActivityType();
...
}
@Override
public boolean isFailOnException() {
return true;
}
@Override
public boolean isFireOnTransactionLifecycleEvent() {
return false;
}
@Override
public String getOnTransaction() {
return null;
}
}