Class 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 Detail

      • evaluateConditions

        protected boolean evaluateConditions
      • forcedSynchronous

        protected boolean forcedSynchronous
    • Constructor Detail

      • TakeOutgoingSequenceFlowsOperation

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

      • run

        public void run()
      • getFlowNode

        protected org.flowable.bpmn.model.FlowNode getFlowNode​(org.flowable.bpmn.model.FlowElement currentFlowElement)
      • handleAsynchronousLeave

        protected void handleAsynchronousLeave​(org.flowable.bpmn.model.FlowElement currentFlowElement,
                                               org.flowable.bpmn.model.FlowNode sourceFlowNode)
      • handleFlowNode

        protected void handleFlowNode​(org.flowable.bpmn.model.FlowNode flowNode)
      • handleActivityEnd

        protected boolean handleActivityEnd​(org.flowable.bpmn.model.FlowNode flowNode)
      • leaveFlowNode

        protected void leaveFlowNode​(org.flowable.bpmn.model.FlowNode flowNode)
      • handleAdhocSubProcess

        protected void handleAdhocSubProcess​(org.flowable.bpmn.model.FlowNode flowNode)
      • handleSequenceFlow

        protected void handleSequenceFlow()
      • cleanupCompensation

        protected void cleanupCompensation()
      • cleanupExecutions

        protected void cleanupExecutions​(org.flowable.bpmn.model.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​(org.flowable.bpmn.model.FlowNode flowNode)