java怎么设置不同事件_activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便...
如果我們像給任務(wù)配置監(jiān)聽,按照常規(guī)的做法是這樣的
一個個配置,比較麻煩。
現(xiàn)在利用ActivitiEventListener,監(jiān)聽全局事件,并且可以判斷不同的事件類型,進而執(zhí)行不同的業(yè)務(wù)邏輯。
1.定義事件處理handler接口
用接口來定義統(tǒng)一約定
public interface EventHandler {
void handle(ActivitiEvent event);
}
2.實現(xiàn)不同事件
任務(wù)結(jié)束事件
*/
public class TaskCompleteListener implements EventHandler {
protected Logger logger = LoggerFactory.getLogger(getClass());
@Override
public void handle(ActivitiEvent event) {
ActivitiEntityEventImpl eventImpl = (ActivitiEntityEventImpl) event;
TaskEntity taskEntity = (TaskEntity) eventImpl.getEntity();
}
}
任務(wù)創(chuàng)建事件
public class TaskCreateListener implements EventHandler {
protected Logger logger = LoggerFactory.getLogger(getClass());
@Override
public void handle(ActivitiEvent event) {
ActivitiEntityEventImpl eventImpl = (ActivitiEntityEventImpl) event;
TaskEntity taskEntity = (TaskEntity) eventImpl.getEntity();
}
}
還有很多事件,比如TASK_ASSIGNED,PROCESS_STARTED,PROCESS_COMPLETED
3.實現(xiàn)ActivitiEventListener
public class GlobalEventListener implements ActivitiEventListener {
protected Logger logger = LoggerFactory.getLogger(getClass());
/**
* 各類 Event 的處理器
*/
private Map handlers = new HashMap();
@Override
public void onEvent(ActivitiEvent event) {
EventHandler eventHandler = handlers.get(event.getType());
if(eventHandler!=null){
eventHandler.handle(event);
}
}
@Override
public boolean isFailOnException() {
return false;
}
public Map getHandlers() {
return handlers;
}
public void setHandlers(Map handlers) {
this.handlers = handlers;
}
}
4.注冊事件監(jiān)聽
classpath*:*
優(yōu)點
這樣代碼清晰,業(yè)務(wù)邏輯解耦,單一職責(zé)
省去在bpmn.xml中配置,方便。
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的java怎么设置不同事件_activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java自动拆装箱面试_跟王老师学泛型(
- 下一篇: java应用重启导致数据丢失_java