Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated
BoundaryEscalationEventActivityBehavior 边界扩大事件活动行为类
/**
* 边界扩大事件活动行为类
*
* 扩大事件大多数用在连接子流程和父流程,用于触发一个子流程,不能发起流程实例
* 与错误事件不同,扩大事件不是临界事件,在抛出扩大事件的地方会继续执行
*
* @author Tijs Rademakers
*/
public class BoundaryEscalationEventActivityBehavior extends BoundaryEventActivityBehavior {
private static final long serialVersionUID = 1L;
protected EscalationEventDefinition escalationEventDefinition;
protected Escalation escalation;
public BoundaryEscalationEventActivityBehavior(EscalationEventDefinition escalationEventDefinition, Escalation escalation, boolean interrupting) {
super(interrupting);
this.escalationEventDefinition = escalationEventDefinition;
this.escalation = escalation;
}
@Override
public void execute(DelegateExecution execution) {
CommandContext commandContext = Context.getCommandContext();
ExecutionEntity executionEntity = (ExecutionEntity) execution;
String escalationCode = null;
String escalationName = null;
if (escalation != null) {
escalationCode = escalation.getEscalationCode();
escalationName = escalation.getName();
} else {
escalationCode = escalationEventDefinition.getEscalationCode();
}
// 从命令上下文中获取流程引擎配置,进而获取事件调遣器
ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration(commandContext);
FlowableEventDispatcher eventDispatcher = processEngineConfiguration.getEventDispatcher();
if (eventDispatcher != null && eventDispatcher.isEnabled()) {
eventDispatcher.dispatchEvent(FlowableEventBuilder.createEscalationEvent(FlowableEngineEventType.ACTIVITY_ESCALATION_WAITING, executionEntity.getActivityId(), escalationCode,
escalationName, executionEntity.getId(), executionEntity.getProcessInstanceId(), executionEntity.getProcessDefinitionId()),
processEngineConfiguration.getEngineCfgKey());
}
}
}
BoundaryTimerEventActivityBehavior 边界定时器事件活动行为类
/**
* 边界定时器事件活动行为类
*
* @author Joram Barrez
*/
public class BoundaryTimerEventActivityBehavior extends BoundaryEventActivityBehavior {
private static final long serialVersionUID = 1L;
protected TimerEventDefinition timerEventDefinition;
public BoundaryTimerEventActivityBehavior(TimerEventDefinition timerEventDefinition, boolean interrupting) {
super(interrupting)