Package org.flowable.engine.impl.agenda
Class EndExecutionOperation
java.lang.Object
org.flowable.engine.impl.agenda.AbstractOperation
org.flowable.engine.impl.agenda.EndExecutionOperation
- All Implemented Interfaces:
Runnable
This operations ends an execution and follows the typical BPMN rules to continue the process (if possible).
This operations is typically not scheduled from an
ActivityBehavior
, but rather from another operation.
This happens when the conditions are so that the process can't continue via the
regular ways and an execution cleanup needs to happen, potentially opening up new ways of continuing the process instance.- Author:
- Joram Barrez
-
Field Summary
FieldsFields inherited from class org.flowable.engine.impl.agenda.AbstractOperation
agenda, commandContext, execution
-
Constructor Summary
ConstructorsConstructorDescriptionEndExecutionOperation
(CommandContext commandContext, ExecutionEntity execution) EndExecutionOperation
(CommandContext commandContext, ExecutionEntity execution, boolean forceSynchronous) -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
allChildExecutionsEnded
(ExecutionEntity parentExecutionEntity, ExecutionEntity executionEntityToIgnore) protected List<ExecutionEntity>
getActiveChildExecutionsForExecution
(ExecutionEntityManager executionEntityManager, String executionId) protected List<ExecutionEntity>
getEventScopeExecutions
(ExecutionEntityManager executionEntityManager, ExecutionEntity parentExecution) protected int
getNumberOfActiveChildExecutionsForExecution
(ExecutionEntityManager executionEntityManager, String executionId) protected int
getNumberOfActiveChildExecutionsForProcessInstance
(ExecutionEntityManager executionEntityManager, String processInstanceId) protected void
handleMultiInstanceSubProcess
(ProcessEngineConfigurationImpl processEngineConfiguration, ExecutionEntityManager executionEntityManager, ExecutionEntity parentExecution, ExecutionEntity currentExecution) protected void
handleProcessInstanceExecution
(ExecutionEntity processInstanceExecution) protected void
protected ExecutionEntity
handleRegularExecutionEnd
(ExecutionEntityManager executionEntityManager, ExecutionEntity parentExecution) protected ExecutionEntity
handleSubProcessEnd
(ExecutionEntityManager executionEntityManager, ExecutionEntity parentExecution, SubProcess subProcess) protected boolean
isAsyncCompleteCallActivity
(ExecutionEntity superExecution) protected boolean
isEndEventOrImpliedEndEventInMultiInstanceSubprocess
(ExecutionEntity executionEntity) protected boolean
isFlowNodeWithoutOutgoingSequenceFlow
(FlowElement flowElement) protected boolean
isInEventSubProcess
(ExecutionEntity executionEntity) void
run()
protected void
scheduleAsyncCompleteCallActivity
(ExecutionEntity superExecutionEntity, ExecutionEntity childProcessInstanceExecutionEntity) Methods inherited from class org.flowable.engine.impl.agenda.AbstractOperation
executeExecutionListeners, executeExecutionListeners, findFirstParentScopeExecution, getAgenda, getCommandContext, getCurrentFlowElement, getExecution, setAgenda, setCommandContext, setExecution
-
Field Details
-
forceSynchronous
protected boolean forceSynchronous
-
-
Constructor Details
-
EndExecutionOperation
-
EndExecutionOperation
public EndExecutionOperation(CommandContext commandContext, ExecutionEntity execution, boolean forceSynchronous)
-
-
Method Details
-
run
public void run() -
handleProcessInstanceExecution
-
isAsyncCompleteCallActivity
-
scheduleAsyncCompleteCallActivity
protected void scheduleAsyncCompleteCallActivity(ExecutionEntity superExecutionEntity, ExecutionEntity childProcessInstanceExecutionEntity) -
handleRegularExecution
protected void handleRegularExecution() -
handleSubProcessEnd
protected ExecutionEntity handleSubProcessEnd(ExecutionEntityManager executionEntityManager, ExecutionEntity parentExecution, SubProcess subProcess) -
handleRegularExecutionEnd
protected ExecutionEntity handleRegularExecutionEnd(ExecutionEntityManager executionEntityManager, ExecutionEntity parentExecution) -
handleMultiInstanceSubProcess
protected void handleMultiInstanceSubProcess(ProcessEngineConfigurationImpl processEngineConfiguration, ExecutionEntityManager executionEntityManager, ExecutionEntity parentExecution, ExecutionEntity currentExecution) -
isEndEventOrImpliedEndEventInMultiInstanceSubprocess
protected boolean isEndEventOrImpliedEndEventInMultiInstanceSubprocess(ExecutionEntity executionEntity) -
isFlowNodeWithoutOutgoingSequenceFlow
-
getNumberOfActiveChildExecutionsForProcessInstance
protected int getNumberOfActiveChildExecutionsForProcessInstance(ExecutionEntityManager executionEntityManager, String processInstanceId) -
getNumberOfActiveChildExecutionsForExecution
protected int getNumberOfActiveChildExecutionsForExecution(ExecutionEntityManager executionEntityManager, String executionId) -
getActiveChildExecutionsForExecution
protected List<ExecutionEntity> getActiveChildExecutionsForExecution(ExecutionEntityManager executionEntityManager, String executionId) -
getEventScopeExecutions
protected List<ExecutionEntity> getEventScopeExecutions(ExecutionEntityManager executionEntityManager, ExecutionEntity parentExecution) -
allChildExecutionsEnded
protected boolean allChildExecutionsEnded(ExecutionEntity parentExecutionEntity, ExecutionEntity executionEntityToIgnore) -
isInEventSubProcess
-