Class TakeOutgoingSequenceFlowsOperation

java.lang.Object
org.flowable.engine.impl.agenda.AbstractOperation
org.flowable.engine.impl.agenda.TakeOutgoingSequenceFlowsOperation
All Implemented Interfaces:
Runnable

public class TakeOutgoingSequenceFlowsOperation extends AbstractOperation
Operation which purpose is to leave a FlowNode. This can be done by setting either the FlowNode or selecting a particular SequenceFlow: - when the execution currently is at a FlowNode, leaves it by following the outgoing sequence flow, evaluating conditions if necessary. - when the execution currently is at a SequenceFlow, this sequence flow will be followed. Any condition is ignored, as the assumed use case for this situation is a custom ActivityBehavior (such as a gateway) that has non-default behavior of leaving the FlowNode by checking conditions on all sequence flow and taking those which evaluate to true.
Author:
Joram Barrez, Tijs Rademakers
  • Field Details

    • evaluateConditions

      protected boolean evaluateConditions
    • forcedSynchronous

      protected boolean forcedSynchronous
  • Constructor Details

    • TakeOutgoingSequenceFlowsOperation

      public TakeOutgoingSequenceFlowsOperation(CommandContext commandContext, ExecutionEntity executionEntity, boolean evaluateConditions, boolean forcedSynchronous)
  • Method Details

    • run

      public void run()
    • getFlowNode

      protected FlowNode getFlowNode(FlowElement currentFlowElement)
    • handleAsynchronousLeave

      protected void handleAsynchronousLeave(FlowElement currentFlowElement, FlowNode sourceFlowNode)
    • handleFlowNode

      protected void handleFlowNode(FlowNode flowNode)
    • handleActivityEnd

      protected boolean handleActivityEnd(FlowNode flowNode)
    • leaveFlowNode

      protected void leaveFlowNode(FlowNode flowNode)
    • handleAdhocSubProcess

      protected void handleAdhocSubProcess(FlowNode flowNode)
    • handleSequenceFlow

      protected void handleSequenceFlow()
    • cleanupCompensation

      protected void cleanupCompensation()
    • cleanupExecutions

      protected void cleanupExecutions(FlowElement currentFlowElement)
    • findNextParentScopeExecutionWithAllEndedChildExecutions

      protected ExecutionEntity findNextParentScopeExecutionWithAllEndedChildExecutions(ExecutionEntity executionEntity, ExecutionEntity executionEntityToIgnore)
      Parameters:
      executionEntityToIgnore - The execution entity which we can ignore to be ended, as it's the execution currently being handled in this operation.
    • allChildExecutionsEnded

      protected boolean allChildExecutionsEnded(ExecutionEntity parentExecutionEntity, ExecutionEntity executionEntityToIgnore)
    • shouldExecuteEndListeners

      protected boolean shouldExecuteEndListeners(FlowNode flowNode)