Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated
BoundaryEventRegistryEventActivityBehavior 边界事件注册事件活动行为类
/**
* 边界事件注册事件活动行为类
*
* @author Tijs Rademakers
*/
public class BoundaryEventRegistryEventActivityBehavior extends BoundaryEventActivityBehavior {
private static final long serialVersionUID = 1L;
protected String eventDefinitionKey;
public BoundaryEventRegistryEventActivityBehavior(String eventDefinitionKey, boolean interrupting) {
super(interrupting);
this.eventDefinitionKey = eventDefinitionKey;
}
@Override
public void execute(DelegateExecution execution) {
CommandContext commandContext = Context.getCommandContext();
ExecutionEntity executionEntity = (ExecutionEntity) execution;
ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration(commandContext);
String eventDefinitionKey = getEventDefinitionKey(executionEntity, processEngineConfiguration);
EventSubscriptionEntity eventSubscription = (EventSubscriptionEntity) processEngineConfiguration.getEventSubscriptionServiceConfiguration()
.getEventSubscriptionService().createEventSubscriptionBuilder()
.eventType(eventDefinitionKey)
.executionId(executionEntity.getId())
.processInstanceId(executionEntity.getProcessInstanceId())
.activityId(executionEntity.getCurrentActivityId())
.processDefinitionId(executionEntity.getProcessDefinitionId())
.scopeType(ScopeTypes.BPMN)
.tenantId(executionEntity.getTenantId())
.configuration(CorrelationUtil.getCorrelationKey(BpmnXMLConstants.ELEMENT_EVENT_CORRELATION_PARAMETER, commandContext, executionEntity))
.create();
CountingEntityUtil.handleInsertEventSubscriptionEntityCount(eventSubscription);
executionEntity.getEventSubscriptions().add(eventSubscription);
}
@Override
public void trigger(DelegateExecution execution, String triggerName, Object triggerData) {
ExecutionEntity executionEntity = (ExecutionEntity) execution;
BoundaryEvent boundaryEvent = (BoundaryEvent) execution.getCurrentFlowElement();
Object eventInstance = execution.getTransientVariables().get(EventConstants.EVENT_INSTANCE);
if (eventInstance instanceof EventInstance) {
EventInstanceBpmnUtil