Package org.flowable.engine.impl.agenda
Class TakeOutgoingSequenceFlowsOperation
java.lang.Object
org.flowable.engine.impl.agenda.AbstractOperation
org.flowable.engine.impl.agenda.TakeOutgoingSequenceFlowsOperation
- All Implemented Interfaces:
Runnable
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 Summary
FieldsModifier and TypeFieldDescriptionprotected boolean
protected boolean
Fields inherited from class org.flowable.engine.impl.agenda.AbstractOperation
agenda, commandContext, execution
-
Constructor Summary
ConstructorsConstructorDescriptionTakeOutgoingSequenceFlowsOperation
(CommandContext commandContext, ExecutionEntity executionEntity, boolean evaluateConditions, boolean forcedSynchronous) -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
allChildExecutionsEnded
(ExecutionEntity parentExecutionEntity, ExecutionEntity executionEntityToIgnore) protected void
protected void
cleanupExecutions
(FlowElement currentFlowElement) protected ExecutionEntity
findNextParentScopeExecutionWithAllEndedChildExecutions
(ExecutionEntity executionEntity, ExecutionEntity executionEntityToIgnore) protected FlowNode
getFlowNode
(FlowElement currentFlowElement) protected boolean
handleActivityEnd
(FlowNode flowNode) protected void
handleAdhocSubProcess
(FlowNode flowNode) protected void
handleAsynchronousLeave
(FlowElement currentFlowElement, FlowNode sourceFlowNode) protected void
handleFlowNode
(FlowNode flowNode) protected void
protected void
leaveFlowNode
(FlowNode flowNode) void
run()
protected boolean
shouldExecuteEndListeners
(FlowNode flowNode) Methods inherited from class org.flowable.engine.impl.agenda.AbstractOperation
executeExecutionListeners, executeExecutionListeners, findFirstParentScopeExecution, getAgenda, getCommandContext, getCurrentFlowElement, getExecution, setAgenda, setCommandContext, setExecution
-
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
-
handleAsynchronousLeave
-
handleFlowNode
-
handleActivityEnd
-
leaveFlowNode
-
handleAdhocSubProcess
-
handleSequenceFlow
protected void handleSequenceFlow() -
cleanupCompensation
protected void cleanupCompensation() -
cleanupExecutions
-
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
-