public void initEventHandlers() { if (eventHandlers == null) { eventHandlers = new HashMap<String, EventHandler>(); SignalEventHandler signalEventHandler = new SignalEventHandler(); eventHandlers.put(signalEventHandler.getEventHandlerType(), signalEventHandler); CompensationEventHandler compensationEventHandler = new CompensationEventHandler(); eventHandlers.put(compensationEventHandler.getEventHandlerType(), compensationEventHandler); MessageEventHandler messageEventHandler = new MessageEventHandler(); eventHandlers.put(messageEventHandler.getEventHandlerType(), messageEventHandler); } if (customEventHandlers != null) { for (EventHandler eventHandler : customEventHandlers) { eventHandlers.put(eventHandler.getEventHandlerType(), eventHandler); } } }
protected void dispatchActivitiesCanceledIfNeeded(EventSubscriptionEntity eventSubscription, ExecutionEntity execution, FlowElement currentFlowElement, CommandContext commandContext) { if (currentFlowElement instanceof BoundaryEvent) { BoundaryEvent boundaryEvent = (BoundaryEvent) currentFlowElement; if (boundaryEvent.isCancelActivity()) { dispatchExecutionCancelled(eventSubscription, execution, commandContext); } } }
protected void dispatchExecutionCancelled(EventSubscriptionEntity eventSubscription, ExecutionEntity execution, CommandContext commandContext) { // subprocesses for (ExecutionEntity subExecution : execution.getExecutions()) { dispatchExecutionCancelled(eventSubscription, subExecution, commandContext); } // call activities ExecutionEntity subProcessInstance = commandContext.getExecutionEntityManager().findSubProcessInstanceBySuperExecutionId(execution.getId()); if (subProcessInstance != null) { dispatchExecutionCancelled(eventSubscription, subProcessInstance, commandContext); } // activity with message/signal boundary events FlowElement flowElement = execution.getCurrentFlowElement(); if (flowElement instanceof BoundaryEvent) { BoundaryEvent boundaryEvent = (BoundaryEvent) flowElement; if (boundaryEvent.getAttachedToRef() != null) { dispatchActivityCancelled(eventSubscription, execution, boundaryEvent.getAttachedToRef(), commandContext); } } }
protected void processEventSync(EventSubscriptionEntity eventSubscriptionEntity, Object payload) { // A compensate event needs to be deleted before the handlers are called if (eventSubscriptionEntity instanceof CompensateEventSubscriptionEntity) { delete(eventSubscriptionEntity); } EventHandler eventHandler = getProcessEngineConfiguration().getEventHandler(eventSubscriptionEntity.getEventType()); if (eventHandler == null) { throw new ActivitiException("Could not find eventhandler for event of type '" + eventSubscriptionEntity.getEventType() + "'."); } eventHandler.handleEvent(eventSubscriptionEntity, payload, getCommandContext()); }
@Override public void handleEvent(EventSubscriptionEntity eventSubscription, Object payload, CommandContext commandContext) { // As stated in the ActivitiEventType java-doc, the message-event is // thrown before the actual message has been sent if (commandContext.getProcessEngineConfiguration().getEventDispatcher().isEnabled()) { commandContext .getProcessEngineConfiguration() .getEventDispatcher() .dispatchEvent( ActivitiEventBuilder.createMessageEvent(ActivitiEventType.ACTIVITY_MESSAGE_RECEIVED, eventSubscription.getActivityId(), eventSubscription.getEventName(), payload, eventSubscription.getExecutionId(), eventSubscription.getProcessInstanceId(), eventSubscription.getExecution().getProcessDefinitionId())); } super.handleEvent(eventSubscription, payload, commandContext); }
protected void dispatchActivityCancelled(EventSubscriptionEntity eventSubscription, ExecutionEntity boundaryEventExecution, FlowNode flowNode, CommandContext commandContext) { // Scope commandContext.getEventDispatcher().dispatchEvent( ActivitiEventBuilder.createActivityCancelledEvent(flowNode.getId(), flowNode.getName(), boundaryEventExecution.getId(), boundaryEventExecution.getProcessInstanceId(), boundaryEventExecution.getProcessDefinitionId(), parseActivityType(flowNode), eventSubscription)); if (flowNode instanceof SubProcess) { // The parent of the boundary event execution will be the one on which the boundary event is set ExecutionEntity parentExecutionEntity = commandContext.getExecutionEntityManager().findById(boundaryEventExecution.getParentId()); if (parentExecutionEntity != null) { dispatchActivityCancelledForChildExecution(eventSubscription, parentExecutionEntity, boundaryEventExecution, commandContext); } } }
public void handleEvent(EventSubscriptionEntity eventSubscription, Object payload, CommandContext commandContext) { ExecutionEntity execution = eventSubscription.getExecution(); FlowNode currentFlowElement = (FlowNode) execution.getCurrentFlowElement(); if (currentFlowElement == null) { throw new ActivitiException("Error while sending signal for event subscription '" + eventSubscription.getId() + "': " + "no activity associated with event subscription"); } if (payload instanceof Map) { @SuppressWarnings("unchecked") Map<String, Object> processVariables = (Map<String, Object>) payload; execution.setVariables(processVariables); } if (currentFlowElement instanceof BoundaryEvent || currentFlowElement instanceof EventSubProcess) { try { dispatchActivitiesCanceledIfNeeded(eventSubscription, execution, currentFlowElement, commandContext); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new ActivitiException("exception while sending signal for event subscription '" + eventSubscription + "':" + e.getMessage(), e); } } Context.getAgenda().planTriggerExecutionOperation(execution); }
public void initEventHandlers() { if (eventHandlers == null) { eventHandlers = new HashMap<String, EventHandler>(); SignalEventHandler signalEventHandler = new SignalEventHandler(); eventHandlers.put(signalEventHandler.getEventHandlerType(), signalEventHandler); CompensationEventHandler compensationEventHandler = new CompensationEventHandler(); eventHandlers.put(compensationEventHandler.getEventHandlerType(), compensationEventHandler); MessageEventHandler messageEventHandler = new MessageEventHandler(); eventHandlers.put(messageEventHandler.getEventHandlerType(), messageEventHandler); } if (customEventHandlers != null) { for (EventHandler eventHandler : customEventHandlers) { eventHandlers.put(eventHandler.getEventHandlerType(), eventHandler); } } }
protected void processEventSync(Object payload) { EventHandler eventHandler = Context.getProcessEngineConfiguration().getEventHandler(eventType); if (eventHandler == null) { throw new ActivitiException("Could not find eventhandler for event of type '" + eventType + "'."); } eventHandler.handleEvent(this, payload, Context.getCommandContext()); }
protected void dispatchExecutionCancelled(EventSubscriptionEntity eventSubscription, ExecutionEntity execution, CommandContext commandContext) { // subprocesses for (ExecutionEntity subExecution : execution.getExecutions()) { dispatchExecutionCancelled(eventSubscription, subExecution, commandContext); } // call activities ExecutionEntity subProcessInstance = commandContext.getExecutionEntityManager().findSubProcessInstanceBySuperExecutionId(execution.getId()); if (subProcessInstance != null) { dispatchExecutionCancelled(eventSubscription, subProcessInstance, commandContext); } // activity with message/signal boundary events ActivityImpl activity = execution.getActivity(); if (activity != null && activity.getActivityBehavior() != null) { dispatchActivityCancelled(eventSubscription, execution, activity, commandContext); } }
protected void dispatchActivitiesCanceledIfNeeded(EventSubscriptionEntity eventSubscription, ExecutionEntity execution, FlowElement currentFlowElement, CommandContext commandContext) { if (currentFlowElement instanceof BoundaryEvent) { BoundaryEvent boundaryEvent = (BoundaryEvent) currentFlowElement; if (boundaryEvent.isCancelActivity()) { dispatchExecutionCancelled(eventSubscription, execution, commandContext); } } }
if (eventSubscription.getExecutionId() != null) { super.handleEvent(eventSubscription, payload, commandContext);
protected void dispatchActivityCancelledForChildExecution(EventSubscriptionEntity eventSubscription, ExecutionEntity parentExecutionEntity, ExecutionEntity boundaryEventExecution, CommandContext commandContext) { List<ExecutionEntity> executionEntities = commandContext.getExecutionEntityManager().findChildExecutionsByParentExecutionId(parentExecutionEntity.getId()); for (ExecutionEntity childExecution : executionEntities) { if (!boundaryEventExecution.getId().equals(childExecution.getId()) && childExecution.getCurrentFlowElement() != null && childExecution.getCurrentFlowElement() instanceof FlowNode) { FlowNode flowNode = (FlowNode) childExecution.getCurrentFlowElement(); commandContext.getEventDispatcher().dispatchEvent( ActivitiEventBuilder.createActivityCancelledEvent(flowNode.getId(), flowNode.getName(), childExecution.getId(), childExecution.getProcessInstanceId(), childExecution.getProcessDefinitionId(), parseActivityType(flowNode), eventSubscription)); if (childExecution.isScope()) { dispatchActivityCancelledForChildExecution(eventSubscription, childExecution, boundaryEventExecution, commandContext); } } } }
protected void initEventHandlers() { if (eventHandlers == null) { eventHandlers = new HashMap<>(); SignalEventHandler signalEventHander = new SignalEventHandler(); eventHandlers.put(signalEventHander.getEventHandlerType(), signalEventHander); CompensationEventHandler compensationEventHandler = new CompensationEventHandler(); eventHandlers.put(compensationEventHandler.getEventHandlerType(), compensationEventHandler); MessageEventHandler messageEventHandler = new MessageEventHandler(); eventHandlers.put(messageEventHandler.getEventHandlerType(), messageEventHandler); } if (customEventHandlers != null) { for (EventHandler eventHandler : customEventHandlers) { eventHandlers.put(eventHandler.getEventHandlerType(), eventHandler); } } }
protected void processEventSync(Object payload) { EventHandler eventHandler = Context.getProcessEngineConfiguration().getEventHandler(eventType); if (eventHandler == null) { throw new ActivitiException("Could not find eventhandler for event of type '" + eventType + "'."); } eventHandler.handleEvent(this, payload, Context.getCommandContext()); }
protected void dispatchActivitiesCanceledIfNeeded(EventSubscriptionEntity eventSubscription, ExecutionEntity execution, ActivityImpl boundaryEventActivity, CommandContext commandContext) { ActivityBehavior boundaryActivityBehavior = boundaryEventActivity.getActivityBehavior(); if (boundaryActivityBehavior instanceof BoundaryEventActivityBehavior) { BoundaryEventActivityBehavior boundaryEventActivityBehavior = (BoundaryEventActivityBehavior) boundaryActivityBehavior; if (boundaryEventActivityBehavior.isInterrupting()) { dispatchExecutionCancelled(eventSubscription, execution, commandContext); } } }
@Override public void handleEvent(EventSubscriptionEntity eventSubscription, Object payload, CommandContext commandContext) { // As stated in the ActivitiEventType java-doc, the message-event is thrown before the actual message has been sent if (commandContext.getProcessEngineConfiguration().getEventDispatcher().isEnabled()) { commandContext.getProcessEngineConfiguration().getEventDispatcher().dispatchEvent( ActivitiEventBuilder.createMessageEvent(FlowableEngineEventType.ACTIVITY_MESSAGE_RECEIVED, eventSubscription.getActivityId(), eventSubscription.getEventName(), payload, eventSubscription.getExecutionId(), eventSubscription.getProcessInstanceId(), eventSubscription.getExecution().getProcessDefinitionId())); } super.handleEvent(eventSubscription, payload, commandContext); }
protected void initEventHandlers() { if(eventHandlers == null) { eventHandlers = new HashMap<String, EventHandler>(); SignalEventHandler signalEventHander = new SignalEventHandler(); eventHandlers.put(signalEventHander.getEventHandlerType(), signalEventHander); CompensationEventHandler compensationEventHandler = new CompensationEventHandler(); eventHandlers.put(compensationEventHandler.getEventHandlerType(), compensationEventHandler); MessageEventHandler messageEventHandler = new MessageEventHandler(); eventHandlers.put(messageEventHandler.getEventHandlerType(), messageEventHandler); } if(customEventHandlers != null) { for (EventHandler eventHandler : customEventHandlers) { eventHandlers.put(eventHandler.getEventHandlerType(), eventHandler); } } }
protected void processEventSync(EventSubscriptionEntity eventSubscriptionEntity, Object payload) { // A compensate event needs to be deleted before the handlers are called if (eventSubscriptionEntity instanceof CompensateEventSubscriptionEntity) { delete(eventSubscriptionEntity); } EventHandler eventHandler = getProcessEngineConfiguration().getEventHandler(eventSubscriptionEntity.getEventType()); if (eventHandler == null) { throw new ActivitiException("Could not find eventhandler for event of type '" + eventSubscriptionEntity.getEventType() + "'."); } eventHandler.handleEvent(eventSubscriptionEntity, payload, getCommandContext()); }
protected void initEventHandlers() { if(eventHandlers == null) { eventHandlers = new HashMap<String, EventHandler>(); SignalEventHandler signalEventHander = new SignalEventHandler(); eventHandlers.put(signalEventHander.getEventHandlerType(), signalEventHander); CompensationEventHandler compensationEventHandler = new CompensationEventHandler(); eventHandlers.put(compensationEventHandler.getEventHandlerType(), compensationEventHandler); MessageEventHandler messageEventHandler = new MessageEventHandler(); eventHandlers.put(messageEventHandler.getEventHandlerType(), messageEventHandler); } if(customEventHandlers != null) { for (EventHandler eventHandler : customEventHandlers) { eventHandlers.put(eventHandler.getEventHandlerType(), eventHandler); } } }