Flowable源码地址:https://github.com/flowable/flowable-engine
包路径 org.flowable.common.engine.api.delegate.event
FlowableEvent Flowable事件
package org.flowable.common.engine.api.delegate.event;
/**
* 描述Flowable引擎中发生的事件,该事件被分派给外部监听器(如果有)。
*
* @author Frederik Heremans
*
*/
public interface FlowableEvent {
/**
* @return 事件类型.
*/
FlowableEventType getType();
}
FlowableEventListener Flowable事件监听器
package org.flowable.common.engine.api.delegate.event;
import java.util.Collection;
import java.util.Collections;
/**
* 描述一个类,该类监听引擎调度的事件{@link FlowableEvent}.
*
* @author Frederik Heremans
* @author Joram Barrez
* @author Filip Hrisafov
*/
public interface FlowableEventListener {
/**
* 在触发事件时调用
*
* @param event 事件
*/
void onEvent(FlowableEvent event);
/**
* @return 当此监听器执行引发异常时,当前操作是否应失败。
*/
boolean isFailOnException();
/**
* @return 在事务生命周期事件上(提交或回滚之前/之后),返回事件发生时是否立即触发此事件监听器
*/
boolean isFireOnTransactionLifecycleEvent();
/**
* @return 如果非空,则指示当前事务生命周期中应该触发事件的时间点。
*/
String getOnTransaction();
/**
* 此事件监听器需要注册的事件类型
*
* @return 此监听器应为其自身注册的特定事件类型
*/
default Collection<? extends FlowableEventType> getTypes() {
return Collections.emptySet();
}
}
FlowableEventDispatcher 事件调度器接口
package org.flowable.common.engine.api.delegate.event;
/**
* 调度器(Dispatcher)允许向Flowable引擎添加和删除事件监听器{@link FlowableEventListener},并将事件{@link FlowableEvent}分配给所有注册的监听器。
*
* @author Frederik Heremans
*/
public interface FlowableEventDispatcher {
/**
* 添加一个事件监听器,调度器将通知该监听器所有事件.
*
* @param listenerToAdd
* 要添加的监听器
*/
void addEventListener(FlowableEventListener listenerToAdd);
/**
* 添加一个事件监听器,该监听器仅在给定类型的事件发生时收到通知.
*
* @param listenerToAdd
* 要添加的监听器
* @param types
* 应通知监听器的事件类型
*/
void addEventListener(FlowableEventListener listenerToAdd, FlowableEventType... types);
/**
* 从此调度器中删除给定的监听器。无论最初注册的是哪种类型,监听器都不会再收到通知.
*
* @param listenerToRemove
* 要删除的监听器
*/
void removeEventListener(FlowableEventListener listenerToRemove);
/**
* 将给定事件分派给任何已注册的监听器.
*
* @param event
* 要调度的事件.
* @param engineType
* 要调度的引擎类型
*/
void dispatchEvent(FlowableEvent event, String engineType);
/**
* @param enabled
* 设置事件调度,为true则启用.
*/
void setEnabled(boolean enabled);
/**
* @return 如果启用了事件调度器,则为true.
*/
boolean isEnabled();
}