Class PvmExecutionImpl
- java.lang.Object
-
- org.camunda.bpm.engine.impl.core.variable.scope.AbstractVariableScope
-
- org.camunda.bpm.engine.impl.core.instance.CoreExecution
-
- org.camunda.bpm.engine.impl.pvm.runtime.PvmExecutionImpl
-
- All Implemented Interfaces:
java.io.Serializable,BaseDelegateExecution,BpmnModelExecutionContext,DelegateExecution,ProcessEngineServicesAware,VariableScope,VariableEventDispatcher,ActivityExecution,PvmExecution,PvmProcessInstance
- Direct Known Subclasses:
ExecutionEntity,ExecutionImpl
public abstract class PvmExecutionImpl extends CoreExecution implements ActivityExecution, PvmProcessInstance
- Author:
- Daniel Meyer, Roman Smirnov, Sebastian Menski
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected ActivityImplactivitycurrent activityprotected booleanactivityInstanceEndListenersFailedprotected java.lang.StringactivityInstanceIdthe unique id of the current activity instanceprotected intactivityInstanceStatemarks the current activity instanceprotected java.lang.StringcaseInstanceIdthe id of a case associated with this executionprotected java.util.List<DelayedVariableEvent>delayedEventsContains the delayed variable events, which will be dispatched on a save point.protected java.lang.StringdeleteReasonprotected booleandeleteRootprotected booleanexternallyTerminatedprotected booleanignoreAsyncprotected booleanisActiveindicates if this execution represents an active path of execution.protected booleanisConcurrentprotected booleanisEndedprotected booleanisEventScopeprotected booleanisRemovedprotected booleanisScopeprotected booleanisStartingtrue for process instances in the initial phase.protected PvmActivitynextActivitythe activity which is to be started nextprotected booleanpreserveScopetransient; used for process instance modification to preserve a scope from getting deletedprotected ProcessDefinitionImplprocessDefinitionprotected PvmExecutionImplreplacedByprotected ScopeInstantiationContextscopeInstantiationContextprotected longsequenceCounterprotected TransitionImpltransitionthe transition that is currently being takenprotected java.util.List<PvmTransition>transitionsToTakeA list of outgoing transitions from the current activity that are going to be taken-
Fields inherited from class org.camunda.bpm.engine.impl.core.instance.CoreExecution
businessKey, businessKeyWithoutCascade, eventName, eventSource, id, listenerIndex, skipCustomListeners, skipIoMapping, skipSubprocesses, tenantId
-
Fields inherited from class org.camunda.bpm.engine.impl.core.variable.scope.AbstractVariableScope
cachedElContext
-
-
Constructor Summary
Constructors Constructor Description PvmExecutionImpl()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidactivityInstanceDone()voidactivityInstanceEndListenerFailure()voidactivityInstanceStarted()voidactivityInstanceStarting()voidclearDelayedEvents()Cleares the current delayed variable events.voidclearScope(java.lang.String reason, boolean skipCustomListeners, boolean skipIoMappings, boolean externallyTerminated)protected voidcollectActiveActivityIds(java.util.List<java.lang.String> activeActivityIds)protected voidcollectExecutions(java.lang.String activityId, java.util.List<PvmExecution> executions)protected voidcontinueExecutionIfNotCanceled(Callback<PvmExecutionImpl,java.lang.Void> continuation, PvmExecutionImpl execution)voidcontinueIfExecutionDoesNotAffectNextOperation(Callback<PvmExecutionImpl,java.lang.Void> dispatching, Callback<PvmExecutionImpl,java.lang.Void> continuation, PvmExecutionImpl execution)Executes the given depending operations with the given execution.java.util.Map<ScopeImpl,PvmExecutionImpl>createActivityExecutionMapping()Returns a mapping from scope activities to scope executions for all scopes that are ancestors of the activity currently executed by this execution.java.util.Map<ScopeImpl,PvmExecutionImpl>createActivityExecutionMapping(ScopeImpl currentScope)protected java.util.Map<ScopeImpl,PvmExecutionImpl>createActivityExecutionMapping(ScopeImpl currentScope, java.util.Map<ScopeImpl,PvmExecutionImpl> mapping)Creates an extended mapping based on this execution and the given existing mapping.PvmExecutionImplcreateConcurrentExecution()abstract PvmExecutionImplcreateExecution()creates a new execution.IncidentcreateIncident(java.lang.String incidentType, java.lang.String configuration)Returns the newest incident in this executionIncidentcreateIncident(java.lang.String incidentType, java.lang.String configuration, java.lang.String message)Create an incident associated with this executionprotected IncidentContextcreateIncidentContext(java.lang.String configuration)abstract CmmnExecutioncreateSubCaseInstance(CmmnCaseDefinition caseDefinition)Creates a new sub case instance.abstract CmmnExecutioncreateSubCaseInstance(CmmnCaseDefinition caseDefinition, java.lang.String businessKey)Creates a new sub case instance.PvmExecutionImplcreateSubProcessInstance(PvmProcessDefinition processDefinition)creates a new sub process instance.PvmExecutionImplcreateSubProcessInstance(PvmProcessDefinition processDefinition, java.lang.String businessKey)PvmExecutionImplcreateSubProcessInstance(PvmProcessDefinition processDefinition, java.lang.String businessKey, java.lang.String caseInstanceId)voiddelayEvent(DelayedVariableEvent delayedVariableEvent)Delays and stores the given DelayedVariableEvent on the process instance.voiddelayEvent(PvmExecutionImpl targetScope, VariableEvent variableEvent)Delays a given variable event with the given target scope.voiddeleteCascade(java.lang.String deleteReason)voiddeleteCascade(java.lang.String deleteReason, boolean skipCustomListeners, boolean skipIoMappings)voiddeleteCascade(java.lang.String deleteReason, boolean skipCustomListeners, boolean skipIoMappings, boolean externallyTerminated, boolean skipSubprocesses)voiddestroy()voiddestroy(boolean alwaysSkipIoMappings)voiddispatchDelayedEventsAndPerformOperation(Callback<PvmExecutionImpl,java.lang.Void> continuation)Dispatches the current delayed variable events and performs the given atomic operation if the current state was not changed.voiddispatchDelayedEventsAndPerformOperation(PvmAtomicOperation atomicOperation)Dispatches the current delayed variable events and performs the given atomic operation if the current state was not changed.protected voiddispatchScopeEvents(PvmExecutionImpl execution)Dispatches the current delayed variable events on the scope of the given execution.voiddisposeScopeInstantiationContext()voidend(boolean completeScope)Ends an execution.voidendCompensation()Execution finished compensation.voidenterActivityInstance()invoked to notify the execution that a new activity instance is startedvoidexecuteActivities(java.util.List<PvmActivity> activityStack, PvmActivity targetActivity, PvmTransition targetTransition, java.util.Map<java.lang.String,java.lang.Object> variables, java.util.Map<java.lang.String,java.lang.Object> localVariables, boolean skipCustomListeners, boolean skipIoMappings)Instantiates the given activity stack.voidexecuteActivitiesConcurrent(java.util.List<PvmActivity> activityStack, PvmActivity targetActivity, PvmTransition targetTransition, java.util.Map<java.lang.String,java.lang.Object> variables, java.util.Map<java.lang.String,java.lang.Object> localVariables, boolean skipCustomListeners, boolean skipIoMappings)Instantiates the given activity stack under this execution.voidexecuteActivity(PvmActivity activity)Execute an activity which is not contained in normal flow (having no incoming sequence flows).voidexecuteEventHandlerActivity(ActivityImpl eventHandlerActivity)voidexecuteIoMapping()java.util.List<java.lang.String>findActiveActivityIds()PvmExecutionImplfindExecution(java.lang.String activityId)protected PvmExecutionImplfindExecutionForFlowScope(java.lang.String targetScopeId)PvmExecutionImplfindExecutionForFlowScope(PvmScope targetFlowScope)For a given target flow scope, this method returns the corresponding scope execution.PvmExecutionImplfindExecutionForScope(ScopeImpl currentScope, ScopeImpl targetScope)java.util.List<PvmExecution>findExecutions(java.lang.String activityId)java.util.List<ActivityExecution>findInactiveChildExecutions(PvmActivity activity)java.util.List<ActivityExecution>findInactiveConcurrentExecutions(PvmActivity activity)Retrieves all executions which are concurrent and inactive at the given activity.IncidentHandlerfindIncidentHandler(java.lang.String incidentType)abstract voidfireHistoricProcessStartEvent()protected abstract java.lang.StringgenerateActivityInstanceId(java.lang.String activityId)ActivityImplgetActivity()ensures initialization and returns the activityjava.lang.StringgetActivityId()java.lang.StringgetActivityInstanceId()return the Id of the activity instance currently executed by this executionintgetActivityInstanceState()protected java.util.List<PvmExecutionImpl>getAllChildExecutions()java.lang.StringgetBusinessKey()The business key for the root execution (e.g.java.lang.StringgetCaseInstanceId()java.lang.StringgetCurrentActivityId()Gets the id of the current activity.java.lang.StringgetCurrentActivityName()Gets the name of the current activity.java.lang.StringgetCurrentTransitionId()return the Id of the current transitionjava.util.List<DelayedVariableEvent>getDelayedEvents()The current delayed variable events.java.lang.StringgetDeleteReason()java.util.List<? extends PvmExecutionImpl>getEventScopeExecutions()abstract java.util.List<? extends PvmExecutionImpl>getExecutions()returns the list of execution of which this execution the parent of.abstract java.util.List<? extends PvmExecutionImpl>getExecutionsAsCopy()protected ScopeImplgetFlowScope()protected PvmExecutionImplgetFlowScopeExecution()PvmActivitygetNextActivity()An activity which is to be started next.java.util.List<? extends PvmExecutionImpl>getNonEventScopeExecutions()returns child executions that are not event scope executions.abstract PvmExecutionImplgetParent()ensures initialization and returns the parentjava.lang.StringgetParentActivityInstanceId()return the Id of the parent activity instance currently executed by this executionjava.lang.StringgetParentId()Gets the id of the parent of this execution.PvmExecutionImplgetParentScopeExecution(boolean considerSuperExecution)AbstractVariableScopegetParentVariableScope()java.lang.StringgetProcessBusinessKey()The business key for the process instance this execution is associated with.ProcessDefinitionImplgetProcessDefinition()abstract PvmExecutionImplgetProcessInstance()ensures initialization and returns the process instance.abstract PvmExecutionImplgetReplacedBy()Returns an execution that has replaced this execution for executing activities in their shared scope.protected ScopeImplgetScopeActivity()ScopeInstantiationContextgetScopeInstantiationContext()longgetSequenceCounter()abstract CmmnExecutiongetSubCaseInstance()abstract PvmExecutionImplgetSubProcessInstance()abstract CmmnExecutiongetSuperCaseExecution()abstract PvmExecutionImplgetSuperExecution()In case this delegate execution is the process instance execution and this process instance was started by a call activity, this method returns the execution which executed the call activity in the super process instance.protected java.lang.StringgetToStringIdentity()TransitionImplgetTransition()java.util.List<PvmTransition>getTransitionsToTake()java.lang.StringgetVariableScopeKey()booleanhasChildren()booleanhasFailedOnEndListeners()booleanhasReplacedParent()voidinactivate()Inactivates this execution.voidincrementSequenceCounter()protected voidinitActivityIds(java.util.List<DelayedVariableEvent> delayedEvents, java.util.Map<PvmExecutionImpl,java.lang.String> activityInstanceIds, java.util.Map<PvmExecutionImpl,java.lang.String> activityIds)Initializes the given maps with the target scopes and current activity id's and activity instance id's.abstract voidinitialize()abstract voidinitializeTimerDeclarations()java.util.Map<PvmActivity,PvmExecutionImpl>instantiateScopes(java.util.List<PvmActivity> activityStack, boolean skipCustomListeners, boolean skipIoMappings)Instantiates the given set of activities and returns the execution for the bottom-most activityvoidinterrupt(java.lang.String reason)Interrupts an executionvoidinterrupt(java.lang.String reason, boolean skipCustomListeners, boolean skipIoMappings, boolean externallyTerminated)booleanisActive()returns whether this execution is currently active.booleanisActive(java.lang.String activityId)booleanisAsyncAfterScopeWithoutTransition()This case is special, because the execution tree is different if an async after activity is left via transition (case 1) or not (case 2).booleanisCanceled()Returns whether this execution has been canceled.booleanisCompleteScope()Returns whether this execution completed the parent scope.booleanisConcurrent()returns whether this execution is concurrent or not.booleanisDeleteRoot()booleanisEnded()returns whether this execution has ended or not.booleanisEventScope()booleanisExecutingScopeLeafActivity()booleanisExternallyTerminated()booleanisIgnoreAsync()booleanisInState(ActivityInstanceState state)booleanisPreserveScope()booleanisProcessInstanceExecution()returns whether this execution is a process instance or not.booleanisProcessInstanceStarting()booleanisRemoved()booleanisReplacedByParent()booleanisScope()Returns whether this execution is a scope.booleanisStarting()voidleaveActivityInstance()invoked to notify the execution that an activity instance is ended.voidleaveActivityViaTransition(PvmTransition outgoingTransition)voidleaveActivityViaTransitions(java.util.List<PvmTransition> _transitions, java.util.List<? extends ActivityExecution> _recyclableExecutions)Takes the given outgoing transitions, and potentially reusing the given list of executions that were previously joined.protected abstract PvmExecutionImplnewExecution()voidonConcurrentExpand(PvmExecutionImpl scopeExecution)Callback on tree expansion when this execution is used as the concurrent execution where the argument's children become a subordinate to.voidpropagateEnd()Precondition: execution is already ended but this has not been propagated yet.voidremove()voidremoveAllTasks()protected voidremoveEventScopes()protected abstract voidremoveVariablesLocalInternal()voidreplace(PvmExecutionImpl execution)Replace an execution by this execution.voidresolveIncident(java.lang.String incidentId)Resolves an incident with given id.PvmExecutionImplresolveReplacedBy()Instead ofgetReplacedBy(), which returns the execution that this execution was directly replaced with, this resolves the chain of replacements (i.e.voidsetActive(boolean isActive)makes this execution active or inactive.voidsetActivity(PvmActivity activity)voidsetActivityInstanceId(java.lang.String activityInstanceId)voidsetCanceled(boolean canceled)voidsetCaseInstanceId(java.lang.String caseInstanceId)voidsetCompleteScope(boolean completeScope)voidsetConcurrent(boolean isConcurrent)changes the concurrent indicator on this execution.voidsetDeleteReason(java.lang.String deleteReason)voidsetDeleteRoot(boolean deleteRoot)voidsetEnded(boolean isEnded)voidsetEventScope(boolean isEventScope)voidsetExternallyTerminated(boolean externallyTerminated)voidsetIgnoreAsync(boolean ignoreAsync)voidsetNextActivity(PvmActivity nextActivity)voidsetParent(PvmExecutionImpl parent)Sets the execution's parent and updates the old and new parents' set of child executionsabstract voidsetParentExecution(PvmExecutionImpl parent)Use #setParent to also update the child execution setsvoidsetPreserveScope(boolean preserveScope)voidsetProcessBusinessKey(java.lang.String businessKey)Configure a business key on the process instance this execution is associated with.voidsetProcessDefinition(ProcessDefinitionImpl processDefinition)abstract voidsetProcessInstance(PvmExecutionImpl pvmExecutionImpl)voidsetProcessInstanceStarting(boolean starting)voidsetScope(boolean isScope)Changes whether this execution is a scope or notvoidsetSequenceCounter(long sequenceCounter)voidsetStartContext(ScopeInstantiationContext startContext)voidsetStarting(boolean isStarting)abstract voidsetSubCaseInstance(CmmnExecution subCaseInstance)abstract voidsetSubProcessInstance(PvmExecutionImpl subProcessInstance)abstract voidsetSuperCaseExecution(CmmnExecution superCaseExecution)abstract voidsetSuperExecution(PvmExecutionImpl superExecution)voidsetTransition(PvmTransition transition)voidsetTransitionsToTake(java.util.List<PvmTransition> transitionsToTake)voidsetVariable(java.lang.String variableName, java.lang.Object value, java.lang.String targetActivityId)Method to store variable in a specific scope identified by activity ID.voidsignal(java.lang.String signalName, java.lang.Object signalData)voidstart()voidstart(java.util.Map<java.lang.String,java.lang.Object> variables)protected voidstart(java.util.Map<java.lang.String,java.lang.Object> variables, VariableMap formProperties)voidstartWithFormProperties(VariableMap formProperties)voidstartWithoutExecuting(java.util.Map<java.lang.String,java.lang.Object> variables)perform starting behavior but don't execute the initial activityvoidtake()java.lang.StringtoString()booleantryPruneLastConcurrentChild()-
Methods inherited from class org.camunda.bpm.engine.impl.core.instance.CoreExecution
getBusinessKeyWithoutCascade, getEventName, getEventSource, getId, getListenerIndex, getTenantId, invokeListener, isSkipCustomListeners, isSkipIoMappings, isSkipSubprocesses, performOperation, performOperationSync, setBusinessKey, setEventName, setEventSource, setId, setListenerIndex, setSkipCustomListeners, setSkipIoMappings, setSkipSubprocesseses, setTenantId
-
Methods inherited from class org.camunda.bpm.engine.impl.core.variable.scope.AbstractVariableScope
collectVariableNames, collectVariables, dispatchEvent, getCachedElContext, getSourceActivityVariableScope, getValueFromVariableInstance, getVariable, getVariable, getVariableInstance, getVariableInstanceFactory, getVariableInstanceLifecycleListeners, getVariableInstanceLocal, getVariableInstancesLocal, getVariableInstancesLocal, getVariableLocal, getVariableLocal, getVariableLocalTyped, getVariableLocalTyped, getVariableNames, getVariableNamesLocal, getVariables, getVariablesLocal, getVariablesLocalTyped, getVariablesLocalTyped, getVariableStore, getVariablesTyped, getVariablesTyped, getVariableTyped, getVariableTyped, hasVariable, hasVariableLocal, hasVariables, hasVariablesLocal, initializeVariableStore, invokeVariableLifecycleListenersCreate, invokeVariableLifecycleListenersCreate, invokeVariableLifecycleListenersDelete, invokeVariableLifecycleListenersDelete, invokeVariableLifecycleListenersUpdate, invokeVariableLifecycleListenersUpdate, removeVariable, removeVariable, removeVariableLocal, removeVariableLocal, removeVariables, removeVariables, removeVariablesLocal, removeVariablesLocal, setCachedElContext, setVariable, setVariable, setVariable, setVariable, setVariableLocal, setVariableLocal, setVariableLocal, setVariables, setVariables, setVariablesLocal, setVariablesLocal
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.camunda.bpm.engine.impl.pvm.delegate.ActivityExecution
forceUpdate
-
Methods inherited from interface org.camunda.bpm.engine.delegate.BaseDelegateExecution
getEventName, getId
-
Methods inherited from interface org.camunda.bpm.engine.delegate.BpmnModelExecutionContext
getBpmnModelElementInstance, getBpmnModelInstance
-
Methods inherited from interface org.camunda.bpm.engine.delegate.DelegateExecution
getProcessDefinitionId, getProcessInstanceId, getTenantId
-
Methods inherited from interface org.camunda.bpm.engine.delegate.ProcessEngineServicesAware
getProcessEngine, getProcessEngineServices
-
Methods inherited from interface org.camunda.bpm.engine.impl.pvm.PvmExecution
getVariable, getVariables, hasVariable, setVariable
-
Methods inherited from interface org.camunda.bpm.engine.delegate.VariableScope
getVariable, getVariableLocal, getVariableLocalTyped, getVariableLocalTyped, getVariableNames, getVariableNamesLocal, getVariables, getVariablesLocal, getVariablesLocalTyped, getVariablesLocalTyped, getVariablesTyped, getVariablesTyped, getVariableTyped, getVariableTyped, hasVariable, hasVariableLocal, hasVariables, hasVariablesLocal, removeVariable, removeVariableLocal, removeVariables, removeVariables, removeVariablesLocal, removeVariablesLocal, setVariable, setVariableLocal, setVariables, setVariablesLocal
-
-
-
-
Field Detail
-
processDefinition
protected transient ProcessDefinitionImpl processDefinition
-
scopeInstantiationContext
protected transient ScopeInstantiationContext scopeInstantiationContext
-
ignoreAsync
protected transient boolean ignoreAsync
-
isStarting
protected transient boolean isStarting
true for process instances in the initial phase. Currently this controls that historic variable updates created during this phase receive theinitialflag (seeHistoricVariableUpdateEventEntity.isInitial).
-
activity
protected transient ActivityImpl activity
current activity
-
nextActivity
protected transient PvmActivity nextActivity
the activity which is to be started next
-
transition
protected transient TransitionImpl transition
the transition that is currently being taken
-
transitionsToTake
protected transient java.util.List<PvmTransition> transitionsToTake
A list of outgoing transitions from the current activity that are going to be taken
-
activityInstanceId
protected java.lang.String activityInstanceId
the unique id of the current activity instance
-
caseInstanceId
protected java.lang.String caseInstanceId
the id of a case associated with this execution
-
replacedBy
protected PvmExecutionImpl replacedBy
-
deleteRoot
protected boolean deleteRoot
-
deleteReason
protected java.lang.String deleteReason
-
externallyTerminated
protected boolean externallyTerminated
-
isActive
protected boolean isActive
indicates if this execution represents an active path of execution. Executions are made inactive in the following situations:- an execution enters a nested scope
- an execution is split up into multiple concurrent executions, then the parent is made inactive.
- an execution has arrived in a parallel gateway or join and that join has not yet activated/fired.
- an execution is ended.
-
isScope
protected boolean isScope
-
isConcurrent
protected boolean isConcurrent
-
isEnded
protected boolean isEnded
-
isEventScope
protected boolean isEventScope
-
isRemoved
protected boolean isRemoved
-
preserveScope
protected boolean preserveScope
transient; used for process instance modification to preserve a scope from getting deleted
-
activityInstanceState
protected int activityInstanceState
marks the current activity instance
-
activityInstanceEndListenersFailed
protected boolean activityInstanceEndListenersFailed
-
sequenceCounter
protected long sequenceCounter
-
delayedEvents
protected transient java.util.List<DelayedVariableEvent> delayedEvents
Contains the delayed variable events, which will be dispatched on a save point.
-
-
Method Detail
-
createExecution
public abstract PvmExecutionImpl createExecution()
creates a new execution. properties processDefinition, processInstance and activity will be initialized.- Specified by:
createExecutionin interfaceActivityExecution
-
createSubProcessInstance
public PvmExecutionImpl createSubProcessInstance(PvmProcessDefinition processDefinition)
Description copied from interface:ActivityExecutioncreates a new sub process instance. The current execution will be the super execution of the created execution.- Specified by:
createSubProcessInstancein interfaceActivityExecution- Parameters:
processDefinition- ThePvmProcessDefinitionof the subprocess.
-
createSubProcessInstance
public PvmExecutionImpl createSubProcessInstance(PvmProcessDefinition processDefinition, java.lang.String businessKey)
- Specified by:
createSubProcessInstancein interfaceActivityExecution- Parameters:
processDefinition- ThePvmProcessDefinitionof the subprocess.businessKey- the business key of the process instance- See Also:
ActivityExecution.createSubProcessInstance(PvmProcessDefinition)
-
createSubProcessInstance
public PvmExecutionImpl createSubProcessInstance(PvmProcessDefinition processDefinition, java.lang.String businessKey, java.lang.String caseInstanceId)
- Specified by:
createSubProcessInstancein interfaceActivityExecution- Parameters:
processDefinition- ThePvmProcessDefinitionof the subprocess.businessKey- the business key of the process instancecaseInstanceId- the case instance id of the process instance- See Also:
ActivityExecution.createSubProcessInstance(PvmProcessDefinition)
-
newExecution
protected abstract PvmExecutionImpl newExecution()
-
createSubCaseInstance
public abstract CmmnExecution createSubCaseInstance(CmmnCaseDefinition caseDefinition)
Description copied from interface:ActivityExecutionCreates a new sub case instance.
Thisexecution will be the super execution of the created sub case instance.- Specified by:
createSubCaseInstancein interfaceActivityExecution- Parameters:
caseDefinition- TheCmmnCaseDefinitionof the sub case instance.
-
createSubCaseInstance
public abstract CmmnExecution createSubCaseInstance(CmmnCaseDefinition caseDefinition, java.lang.String businessKey)
Description copied from interface:ActivityExecutionCreates a new sub case instance.
Thisexecution will be the super execution of the created sub case instance.- Specified by:
createSubCaseInstancein interfaceActivityExecution- Parameters:
caseDefinition- TheCmmnCaseDefinitionof the sub case instance.businessKey- The businessKey to be set on sub case instance.
-
initialize
public abstract void initialize()
-
initializeTimerDeclarations
public abstract void initializeTimerDeclarations()
-
executeIoMapping
public void executeIoMapping()
-
start
public void start()
- Specified by:
startin interfacePvmProcessInstance
-
start
public void start(java.util.Map<java.lang.String,java.lang.Object> variables)
- Specified by:
startin interfacePvmProcessInstance
-
startWithFormProperties
public void startWithFormProperties(VariableMap formProperties)
-
start
protected void start(java.util.Map<java.lang.String,java.lang.Object> variables, VariableMap formProperties)
-
startWithoutExecuting
public void startWithoutExecuting(java.util.Map<java.lang.String,java.lang.Object> variables)
perform starting behavior but don't execute the initial activity- Parameters:
variables- the variables which are used for the start
-
fireHistoricProcessStartEvent
public abstract void fireHistoricProcessStartEvent()
-
destroy
public void destroy()
- Specified by:
destroyin interfaceActivityExecution
-
destroy
public void destroy(boolean alwaysSkipIoMappings)
- Parameters:
alwaysSkipIoMappings- set to true to always skip IO mappings, regardless of internal state of execution (=>CoreExecution.isSkipIoMappings())
-
removeAllTasks
public void removeAllTasks()
-
removeEventScopes
protected void removeEventScopes()
-
clearScope
public void clearScope(java.lang.String reason, boolean skipCustomListeners, boolean skipIoMappings, boolean externallyTerminated)
-
interrupt
public void interrupt(java.lang.String reason)
Interrupts an execution- Specified by:
interruptin interfaceActivityExecution
-
interrupt
public void interrupt(java.lang.String reason, boolean skipCustomListeners, boolean skipIoMappings, boolean externallyTerminated)
-
end
public void end(boolean completeScope)
Ends an execution. Invokes end listeners for the current activity and notifies the flow scope execution of this happening which may result in the flow scope ending.- Specified by:
endin interfaceActivityExecution- Parameters:
completeScope- true if ending the execution contributes to completing the BPMN 2.0 scope
-
endCompensation
public void endCompensation()
Description copied from interface:ActivityExecutionExecution finished compensation. Removes this execution and notifies listeners.- Specified by:
endCompensationin interfaceActivityExecution
-
propagateEnd
public void propagateEnd()
Precondition: execution is already ended but this has not been propagated yet.
Propagates the ending of this execution to the flowscope execution; currently only supports the process instance execution
-
remove
public void remove()
- Specified by:
removein interfaceActivityExecution
-
isRemoved
public boolean isRemoved()
-
createConcurrentExecution
public PvmExecutionImpl createConcurrentExecution()
-
tryPruneLastConcurrentChild
public boolean tryPruneLastConcurrentChild()
- Specified by:
tryPruneLastConcurrentChildin interfaceActivityExecution
-
deleteCascade
public void deleteCascade(java.lang.String deleteReason)
- Specified by:
deleteCascadein interfacePvmProcessInstance
-
deleteCascade
public void deleteCascade(java.lang.String deleteReason, boolean skipCustomListeners, boolean skipIoMappings)
-
deleteCascade
public void deleteCascade(java.lang.String deleteReason, boolean skipCustomListeners, boolean skipIoMappings, boolean externallyTerminated, boolean skipSubprocesses)
-
executeEventHandlerActivity
public void executeEventHandlerActivity(ActivityImpl eventHandlerActivity)
-
getReplacedBy
public abstract PvmExecutionImpl getReplacedBy()
Returns an execution that has replaced this execution for executing activities in their shared scope.
Invariant: this execution and getReplacedBy() execute in the same scope.
-
resolveReplacedBy
public PvmExecutionImpl resolveReplacedBy()
Instead ofgetReplacedBy(), which returns the execution that this execution was directly replaced with, this resolves the chain of replacements (i.e. in the case the replacedBy execution itself was replaced again)
-
hasReplacedParent
public boolean hasReplacedParent()
-
isReplacedByParent
public boolean isReplacedByParent()
-
replace
public void replace(PvmExecutionImpl execution)
Replace an execution by this execution. The replaced execution has a pointer (
getReplacedBy()) to this execution. This pointer is maintained until the replaced execution is removed or this execution is removed/ended.This is used for two cases: Execution tree expansion and execution tree compaction
- expansion: Before:
------- | e1 | scope -------After:------- | e1 | scope ------- | ------- | e2 | cc (no scope) -------e2 replaces e1: it should receive all entities associated with the activity currently executed by e1; these are tasks, (local) variables, jobs (specific for the activity, not the scope) - compaction: Before:
------- | e1 | scope ------- | ------- | e2 | cc (no scope) -------After:------- | e1 | scope -------e1 replaces e2: it should receive all entities associated with the activity currently executed by e2; these are tasks, (all) variables, all jobs
- expansion: Before:
-
onConcurrentExpand
public void onConcurrentExpand(PvmExecutionImpl scopeExecution)
Callback on tree expansion when this execution is used as the concurrent execution where the argument's children become a subordinate to. Note that this case is not the inverse of replace because replace has the semantics that the replacing execution can be used to continue execution of this execution's activity instance.
-
signal
public void signal(java.lang.String signalName, java.lang.Object signalData)- Specified by:
signalin interfaceActivityExecution- Specified by:
signalin interfacePvmExecution
-
take
public void take()
-
executeActivity
public void executeActivity(PvmActivity activity)
Execute an activity which is not contained in normal flow (having no incoming sequence flows). Cannot be called for activities contained in normal flow.First, the ActivityStartBehavior is evaluated. In case the start behavior is not
ActivityStartBehavior.DEFAULT, the corresponding start behavior is executed before executing the activity.For a given activity, the execution on which this method must be called depends on the type of the start behavior:
- CONCURRENT_IN_FLOW_SCOPE: scope execution for
PvmScope.getFlowScope() - INTERRUPT_EVENT_SCOPE: scope execution for
PvmScope.getEventScope() - CANCEL_EVENT_SCOPE: scope execution for
PvmScope.getEventScope()
- Specified by:
executeActivityin interfaceActivityExecution- Parameters:
activity- the activity to start
- CONCURRENT_IN_FLOW_SCOPE: scope execution for
-
executeActivitiesConcurrent
public void executeActivitiesConcurrent(java.util.List<PvmActivity> activityStack, PvmActivity targetActivity, PvmTransition targetTransition, java.util.Map<java.lang.String,java.lang.Object> variables, java.util.Map<java.lang.String,java.lang.Object> localVariables, boolean skipCustomListeners, boolean skipIoMappings)
Instantiates the given activity stack under this execution. Sets the variables for the execution responsible to execute the most deeply nested activity.- Parameters:
activityStack- The most deeply nested activity is the last element in the list
-
instantiateScopes
public java.util.Map<PvmActivity,PvmExecutionImpl> instantiateScopes(java.util.List<PvmActivity> activityStack, boolean skipCustomListeners, boolean skipIoMappings)
Instantiates the given set of activities and returns the execution for the bottom-most activity
-
executeActivities
public void executeActivities(java.util.List<PvmActivity> activityStack, PvmActivity targetActivity, PvmTransition targetTransition, java.util.Map<java.lang.String,java.lang.Object> variables, java.util.Map<java.lang.String,java.lang.Object> localVariables, boolean skipCustomListeners, boolean skipIoMappings)
Instantiates the given activity stack. Uses this execution to execute the highest activity in the stack. Sets the variables for the execution responsible to execute the most deeply nested activity.- Parameters:
activityStack- The most deeply nested activity is the last element in the list
-
findInactiveConcurrentExecutions
public java.util.List<ActivityExecution> findInactiveConcurrentExecutions(PvmActivity activity)
Description copied from interface:ActivityExecutionRetrieves all executions which are concurrent and inactive at the given activity.- Specified by:
findInactiveConcurrentExecutionsin interfaceActivityExecution
-
findInactiveChildExecutions
public java.util.List<ActivityExecution> findInactiveChildExecutions(PvmActivity activity)
- Specified by:
findInactiveChildExecutionsin interfaceActivityExecution
-
getAllChildExecutions
protected java.util.List<PvmExecutionImpl> getAllChildExecutions()
-
leaveActivityViaTransition
public void leaveActivityViaTransition(PvmTransition outgoingTransition)
- Specified by:
leaveActivityViaTransitionin interfaceActivityExecution
-
leaveActivityViaTransitions
public void leaveActivityViaTransitions(java.util.List<PvmTransition> _transitions, java.util.List<? extends ActivityExecution> _recyclableExecutions)
Description copied from interface:ActivityExecutionTakes the given outgoing transitions, and potentially reusing the given list of executions that were previously joined.- Specified by:
leaveActivityViaTransitionsin interfaceActivityExecution
-
removeVariablesLocalInternal
protected abstract void removeVariablesLocalInternal()
-
isActive
public boolean isActive(java.lang.String activityId)
-
inactivate
public void inactivate()
Description copied from interface:ActivityExecutionInactivates this execution. This is useful for example in a join: the execution still exists, but it is not longer active.- Specified by:
inactivatein interfaceActivityExecution
-
getExecutions
public abstract java.util.List<? extends PvmExecutionImpl> getExecutions()
Description copied from interface:ActivityExecutionreturns the list of execution of which this execution the parent of. This is a copy of the actual list, so a modification has no direct effect.- Specified by:
getExecutionsin interfaceActivityExecution
-
getExecutionsAsCopy
public abstract java.util.List<? extends PvmExecutionImpl> getExecutionsAsCopy()
-
getNonEventScopeExecutions
public java.util.List<? extends PvmExecutionImpl> getNonEventScopeExecutions()
Description copied from interface:ActivityExecutionreturns child executions that are not event scope executions.- Specified by:
getNonEventScopeExecutionsin interfaceActivityExecution
-
getEventScopeExecutions
public java.util.List<? extends PvmExecutionImpl> getEventScopeExecutions()
-
findExecution
public PvmExecutionImpl findExecution(java.lang.String activityId)
- Specified by:
findExecutionin interfacePvmProcessInstance
-
findExecutions
public java.util.List<PvmExecution> findExecutions(java.lang.String activityId)
- Specified by:
findExecutionsin interfacePvmProcessInstance
-
collectExecutions
protected void collectExecutions(java.lang.String activityId, java.util.List<PvmExecution> executions)
-
findActiveActivityIds
public java.util.List<java.lang.String> findActiveActivityIds()
- Specified by:
findActiveActivityIdsin interfacePvmProcessInstance
-
collectActiveActivityIds
protected void collectActiveActivityIds(java.util.List<java.lang.String> activeActivityIds)
-
getProcessBusinessKey
public java.lang.String getProcessBusinessKey()
Description copied from interface:DelegateExecutionThe business key for the process instance this execution is associated with.- Specified by:
getProcessBusinessKeyin interfaceDelegateExecution
-
setProcessBusinessKey
public void setProcessBusinessKey(java.lang.String businessKey)
Description copied from interface:DelegateExecutionConfigure a business key on the process instance this execution is associated with.- Specified by:
setProcessBusinessKeyin interfaceDelegateExecution- Parameters:
businessKey- the new business key
-
getBusinessKey
public java.lang.String getBusinessKey()
Description copied from interface:BaseDelegateExecutionThe business key for the root execution (e.g. process instance).- Specified by:
getBusinessKeyin interfaceBaseDelegateExecution
-
setProcessDefinition
public void setProcessDefinition(ProcessDefinitionImpl processDefinition)
-
getProcessDefinition
public ProcessDefinitionImpl getProcessDefinition()
-
getProcessInstance
public abstract PvmExecutionImpl getProcessInstance()
ensures initialization and returns the process instance.- Specified by:
getProcessInstancein interfaceDelegateExecution
-
setProcessInstance
public abstract void setProcessInstance(PvmExecutionImpl pvmExecutionImpl)
-
getCaseInstanceId
public java.lang.String getCaseInstanceId()
-
setCaseInstanceId
public void setCaseInstanceId(java.lang.String caseInstanceId)
-
getActivity
public ActivityImpl getActivity()
ensures initialization and returns the activity- Specified by:
getActivityin interfaceActivityExecution- Specified by:
getActivityin interfacePvmExecution
-
getActivityId
public java.lang.String getActivityId()
-
getCurrentActivityName
public java.lang.String getCurrentActivityName()
Description copied from interface:DelegateExecutionGets the name of the current activity.- Specified by:
getCurrentActivityNamein interfaceDelegateExecution
-
getCurrentActivityId
public java.lang.String getCurrentActivityId()
Description copied from interface:DelegateExecutionGets the id of the current activity.- Specified by:
getCurrentActivityIdin interfaceDelegateExecution
-
setActivity
public void setActivity(PvmActivity activity)
- Specified by:
setActivityin interfaceActivityExecution
-
enterActivityInstance
public void enterActivityInstance()
Description copied from interface:ActivityExecutioninvoked to notify the execution that a new activity instance is started- Specified by:
enterActivityInstancein interfaceActivityExecution
-
activityInstanceStarting
public void activityInstanceStarting()
-
activityInstanceStarted
public void activityInstanceStarted()
-
activityInstanceDone
public void activityInstanceDone()
-
activityInstanceEndListenerFailure
public void activityInstanceEndListenerFailure()
-
generateActivityInstanceId
protected abstract java.lang.String generateActivityInstanceId(java.lang.String activityId)
-
leaveActivityInstance
public void leaveActivityInstance()
Description copied from interface:ActivityExecutioninvoked to notify the execution that an activity instance is ended.- Specified by:
leaveActivityInstancein interfaceActivityExecution
-
getParentActivityInstanceId
public java.lang.String getParentActivityInstanceId()
Description copied from interface:ActivityExecutionreturn the Id of the parent activity instance currently executed by this execution- Specified by:
getParentActivityInstanceIdin interfaceActivityExecution- Specified by:
getParentActivityInstanceIdin interfaceDelegateExecution
-
setActivityInstanceId
public void setActivityInstanceId(java.lang.String activityInstanceId)
- Specified by:
setActivityInstanceIdin interfaceActivityExecution
-
getActivityInstanceId
public java.lang.String getActivityInstanceId()
Description copied from interface:ActivityExecutionreturn the Id of the activity instance currently executed by this execution- Specified by:
getActivityInstanceIdin interfaceActivityExecution- Specified by:
getActivityInstanceIdin interfaceDelegateExecution
-
getParent
public abstract PvmExecutionImpl getParent()
ensures initialization and returns the parent- Specified by:
getParentin interfaceActivityExecution
-
getParentId
public java.lang.String getParentId()
Description copied from interface:DelegateExecutionGets the id of the parent of this execution. If null, the execution represents a process-instance.- Specified by:
getParentIdin interfaceDelegateExecution
-
hasChildren
public boolean hasChildren()
- Specified by:
hasChildrenin interfaceActivityExecution- Returns:
- true if this execution has child executions (event scope executions or not)
-
setParent
public void setParent(PvmExecutionImpl parent)
Sets the execution's parent and updates the old and new parents' set of child executions
-
setParentExecution
public abstract void setParentExecution(PvmExecutionImpl parent)
Use #setParent to also update the child execution sets
-
getSuperExecution
public abstract PvmExecutionImpl getSuperExecution()
Description copied from interface:DelegateExecutionIn case this delegate execution is the process instance execution and this process instance was started by a call activity, this method returns the execution which executed the call activity in the super process instance.- Specified by:
getSuperExecutionin interfaceDelegateExecution- Returns:
- the super execution or null.
-
setSuperExecution
public abstract void setSuperExecution(PvmExecutionImpl superExecution)
-
getSubProcessInstance
public abstract PvmExecutionImpl getSubProcessInstance()
-
setSubProcessInstance
public abstract void setSubProcessInstance(PvmExecutionImpl subProcessInstance)
-
getSuperCaseExecution
public abstract CmmnExecution getSuperCaseExecution()
-
setSuperCaseExecution
public abstract void setSuperCaseExecution(CmmnExecution superCaseExecution)
-
getSubCaseInstance
public abstract CmmnExecution getSubCaseInstance()
-
setSubCaseInstance
public abstract void setSubCaseInstance(CmmnExecution subCaseInstance)
-
getScopeActivity
protected ScopeImpl getScopeActivity()
-
isScope
public boolean isScope()
Description copied from interface:ActivityExecutionReturns whether this execution is a scope.- Specified by:
isScopein interfaceActivityExecution
-
setScope
public void setScope(boolean isScope)
Description copied from interface:ActivityExecutionChanges whether this execution is a scope or not- Specified by:
setScopein interfaceActivityExecution
-
findExecutionForFlowScope
public PvmExecutionImpl findExecutionForFlowScope(PvmScope targetFlowScope)
For a given target flow scope, this method returns the corresponding scope execution.Precondition: the execution is active and executing an activity. Can be invoked for scope and non scope executions.
- Specified by:
findExecutionForFlowScopein interfaceActivityExecution- Parameters:
targetFlowScope- scope activity or process definition for which the scope execution should be found- Returns:
- the scope execution for the provided targetFlowScope
-
findExecutionForScope
public PvmExecutionImpl findExecutionForScope(ScopeImpl currentScope, ScopeImpl targetScope)
-
createActivityExecutionMapping
public java.util.Map<ScopeImpl,PvmExecutionImpl> createActivityExecutionMapping(ScopeImpl currentScope)
-
createActivityExecutionMapping
public java.util.Map<ScopeImpl,PvmExecutionImpl> createActivityExecutionMapping()
Description copied from interface:ActivityExecutionReturns a mapping from scope activities to scope executions for all scopes that are ancestors of the activity currently executed by this execution. Assumption: the current execution is active and executing an activity (ActivityExecution.getActivity()is not null).- Specified by:
createActivityExecutionMappingin interfaceActivityExecution
-
getFlowScopeExecution
protected PvmExecutionImpl getFlowScopeExecution()
-
getFlowScope
protected ScopeImpl getFlowScope()
-
createActivityExecutionMapping
protected java.util.Map<ScopeImpl,PvmExecutionImpl> createActivityExecutionMapping(ScopeImpl currentScope, java.util.Map<ScopeImpl,PvmExecutionImpl> mapping)
Creates an extended mapping based on this execution and the given existing mapping. Any entrymappingin mapping that corresponds to an ancestor scope ofcurrentScopeis reused.
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
getToStringIdentity
protected java.lang.String getToStringIdentity()
-
getVariableScopeKey
public java.lang.String getVariableScopeKey()
- Specified by:
getVariableScopeKeyin interfaceVariableScope- Overrides:
getVariableScopeKeyin classAbstractVariableScope
-
getParentVariableScope
public AbstractVariableScope getParentVariableScope()
- Specified by:
getParentVariableScopein classAbstractVariableScope
-
setVariable
public void setVariable(java.lang.String variableName, java.lang.Object value, java.lang.String targetActivityId)Method to store variable in a specific scope identified by activity ID.- Specified by:
setVariablein interfaceDelegateExecution- Parameters:
variableName- - name of the variablevalue- - value of the variabletargetActivityId- - activity ID which is associated with destination execution, if not existing - exception will be thrown
-
findExecutionForFlowScope
protected PvmExecutionImpl findExecutionForFlowScope(java.lang.String targetScopeId)
- Parameters:
targetScopeId- - destination scope to be found in current execution tree- Returns:
- execution with activity id corresponding to targetScopeId
-
getSequenceCounter
public long getSequenceCounter()
-
setSequenceCounter
public void setSequenceCounter(long sequenceCounter)
-
incrementSequenceCounter
public void incrementSequenceCounter()
-
isExternallyTerminated
public boolean isExternallyTerminated()
-
setExternallyTerminated
public void setExternallyTerminated(boolean externallyTerminated)
-
getDeleteReason
public java.lang.String getDeleteReason()
-
setDeleteReason
public void setDeleteReason(java.lang.String deleteReason)
-
isDeleteRoot
public boolean isDeleteRoot()
-
setDeleteRoot
public void setDeleteRoot(boolean deleteRoot)
-
getTransition
public TransitionImpl getTransition()
- Specified by:
getTransitionin interfaceActivityExecution
-
getTransitionsToTake
public java.util.List<PvmTransition> getTransitionsToTake()
-
setTransitionsToTake
public void setTransitionsToTake(java.util.List<PvmTransition> transitionsToTake)
-
getCurrentTransitionId
public java.lang.String getCurrentTransitionId()
Description copied from interface:DelegateExecutionreturn the Id of the current transition- Specified by:
getCurrentTransitionIdin interfaceDelegateExecution
-
setTransition
public void setTransition(PvmTransition transition)
-
isConcurrent
public boolean isConcurrent()
Description copied from interface:ActivityExecutionreturns whether this execution is concurrent or not.- Specified by:
isConcurrentin interfaceActivityExecution
-
setConcurrent
public void setConcurrent(boolean isConcurrent)
Description copied from interface:ActivityExecutionchanges the concurrent indicator on this execution.- Specified by:
setConcurrentin interfaceActivityExecution
-
isActive
public boolean isActive()
Description copied from interface:ActivityExecutionreturns whether this execution is currently active.- Specified by:
isActivein interfaceActivityExecution
-
setActive
public void setActive(boolean isActive)
Description copied from interface:ActivityExecutionmakes this execution active or inactive.- Specified by:
setActivein interfaceActivityExecution
-
setEnded
public void setEnded(boolean isEnded)
- Specified by:
setEndedin interfaceActivityExecution
-
isEnded
public boolean isEnded()
Description copied from interface:ActivityExecutionreturns whether this execution has ended or not.- Specified by:
isEndedin interfaceActivityExecution- Specified by:
isEndedin interfacePvmProcessInstance
-
isCanceled
public boolean isCanceled()
Description copied from interface:DelegateExecutionReturns whether this execution has been canceled.- Specified by:
isCanceledin interfaceDelegateExecution
-
setCanceled
public void setCanceled(boolean canceled)
-
isCompleteScope
public boolean isCompleteScope()
Description copied from interface:ActivityExecutionReturns whether this execution completed the parent scope.- Specified by:
isCompleteScopein interfaceActivityExecution
-
setCompleteScope
public void setCompleteScope(boolean completeScope)
-
setPreserveScope
public void setPreserveScope(boolean preserveScope)
-
isPreserveScope
public boolean isPreserveScope()
-
getActivityInstanceState
public int getActivityInstanceState()
-
isInState
public boolean isInState(ActivityInstanceState state)
-
hasFailedOnEndListeners
public boolean hasFailedOnEndListeners()
- Overrides:
hasFailedOnEndListenersin classCoreExecution
-
isEventScope
public boolean isEventScope()
-
setEventScope
public void setEventScope(boolean isEventScope)
-
getScopeInstantiationContext
public ScopeInstantiationContext getScopeInstantiationContext()
-
disposeScopeInstantiationContext
public void disposeScopeInstantiationContext()
-
getNextActivity
public PvmActivity getNextActivity()
Description copied from interface:ActivityExecutionAn activity which is to be started next.- Specified by:
getNextActivityin interfaceActivityExecution
-
isProcessInstanceExecution
public boolean isProcessInstanceExecution()
Description copied from interface:ActivityExecutionreturns whether this execution is a process instance or not.- Specified by:
isProcessInstanceExecutionin interfaceActivityExecution
-
setStartContext
public void setStartContext(ScopeInstantiationContext startContext)
-
setIgnoreAsync
public void setIgnoreAsync(boolean ignoreAsync)
- Specified by:
setIgnoreAsyncin interfaceActivityExecution
-
isIgnoreAsync
public boolean isIgnoreAsync()
-
setStarting
public void setStarting(boolean isStarting)
-
isStarting
public boolean isStarting()
-
isProcessInstanceStarting
public boolean isProcessInstanceStarting()
-
setProcessInstanceStarting
public void setProcessInstanceStarting(boolean starting)
-
setNextActivity
public void setNextActivity(PvmActivity nextActivity)
-
getParentScopeExecution
public PvmExecutionImpl getParentScopeExecution(boolean considerSuperExecution)
-
delayEvent
public void delayEvent(PvmExecutionImpl targetScope, VariableEvent variableEvent)
Delays a given variable event with the given target scope.- Parameters:
targetScope- the target scope of the variable eventvariableEvent- the variable event which should be delayed
-
delayEvent
public void delayEvent(DelayedVariableEvent delayedVariableEvent)
Delays and stores the given DelayedVariableEvent on the process instance.- Parameters:
delayedVariableEvent- the DelayedVariableEvent which should be store on the process instance
-
getDelayedEvents
public java.util.List<DelayedVariableEvent> getDelayedEvents()
The current delayed variable events.- Returns:
- a list of DelayedVariableEvent objects
-
clearDelayedEvents
public void clearDelayedEvents()
Cleares the current delayed variable events.
-
dispatchDelayedEventsAndPerformOperation
public void dispatchDelayedEventsAndPerformOperation(PvmAtomicOperation atomicOperation)
Dispatches the current delayed variable events and performs the given atomic operation if the current state was not changed.- Parameters:
atomicOperation- the atomic operation which should be executed
-
dispatchDelayedEventsAndPerformOperation
public void dispatchDelayedEventsAndPerformOperation(Callback<PvmExecutionImpl,java.lang.Void> continuation)
Dispatches the current delayed variable events and performs the given atomic operation if the current state was not changed.- Parameters:
continuation- the atomic operation continuation which should be executed
-
continueIfExecutionDoesNotAffectNextOperation
public void continueIfExecutionDoesNotAffectNextOperation(Callback<PvmExecutionImpl,java.lang.Void> dispatching, Callback<PvmExecutionImpl,java.lang.Void> continuation, PvmExecutionImpl execution)
Executes the given depending operations with the given execution. The execution state will be checked with the help of the activity instance id and activity id of the execution before and after the dispatching callback call. If the id's are not changed the continuation callback is called.- Parameters:
dispatching- the callback to dispatch the variable eventscontinuation- the callback to continue with the next atomic operationexecution- the execution which is used for the execution
-
continueExecutionIfNotCanceled
protected void continueExecutionIfNotCanceled(Callback<PvmExecutionImpl,java.lang.Void> continuation, PvmExecutionImpl execution)
-
dispatchScopeEvents
protected void dispatchScopeEvents(PvmExecutionImpl execution)
Dispatches the current delayed variable events on the scope of the given execution.- Parameters:
execution- the execution on which scope the delayed variable should be dispatched
-
initActivityIds
protected void initActivityIds(java.util.List<DelayedVariableEvent> delayedEvents, java.util.Map<PvmExecutionImpl,java.lang.String> activityInstanceIds, java.util.Map<PvmExecutionImpl,java.lang.String> activityIds)
Initializes the given maps with the target scopes and current activity id's and activity instance id's.- Parameters:
delayedEvents- the delayed events which contains the information about the target scopeactivityInstanceIds- the map which maps target scope to activity instance idactivityIds- the map which maps target scope to activity id
-
createIncident
public Incident createIncident(java.lang.String incidentType, java.lang.String configuration)
Returns the newest incident in this execution- Specified by:
createIncidentin interfaceDelegateExecution- Parameters:
incidentType- the type of new incidentconfiguration- configuration of the incident- Returns:
- new incident
-
createIncident
public Incident createIncident(java.lang.String incidentType, java.lang.String configuration, java.lang.String message)
Description copied from interface:DelegateExecutionCreate an incident associated with this execution- Specified by:
createIncidentin interfaceDelegateExecution- Parameters:
incidentType- the type of incident- Returns:
- a new incident
-
createIncidentContext
protected IncidentContext createIncidentContext(java.lang.String configuration)
-
resolveIncident
public void resolveIncident(java.lang.String incidentId)
Resolves an incident with given id.- Specified by:
resolveIncidentin interfaceDelegateExecution- Parameters:
incidentId-
-
findIncidentHandler
public IncidentHandler findIncidentHandler(java.lang.String incidentType)
-
isExecutingScopeLeafActivity
public boolean isExecutingScopeLeafActivity()
-
isAsyncAfterScopeWithoutTransition
public boolean isAsyncAfterScopeWithoutTransition()
This case is special, because the execution tree is different if an async after activity is left via transition (case 1) or not (case 2). In case 1, when the execution becomes async, the scope execution is already removed. In case 2 it is not.- Returns:
- true if
- the execution is in asyncAfter state and completes
- leaves a scope activity
- completes the parent scope (i.e. does not leave via a transition but propagates control to the parent)
-
-