public abstract class MultiInstanceActivityBehavior extends FlowNodeActivityBehavior implements CompositeActivityBehavior, SubProcessActivityBehavior
Multi instance functionality is implemented as an ActivityBehavior that wraps the original ActivityBehavior of the activity.
Only subclasses of AbstractBpmnActivityBehavior can have multi-instance behavior. As such, special logic is contained in the AbstractBpmnActivityBehavior to delegate to the
MultiInstanceActivityBehavior if needed.
| Modifier and Type | Field and Description |
|---|---|
protected ActivityImpl |
activity |
protected String |
collectionElementIndexVariable |
protected String |
collectionElementVariable |
protected org.flowable.common.engine.api.delegate.Expression |
collectionExpression |
protected String |
collectionVariable |
protected org.flowable.common.engine.api.delegate.Expression |
completionConditionExpression |
protected AbstractBpmnActivityBehavior |
innerActivityBehavior |
protected static org.slf4j.Logger |
LOGGER |
protected org.flowable.common.engine.api.delegate.Expression |
loopCardinalityExpression |
protected String |
NUMBER_OF_ACTIVE_INSTANCES |
protected String |
NUMBER_OF_COMPLETED_INSTANCES |
protected String |
NUMBER_OF_INSTANCES |
bpmnActivityBehavior| Constructor and Description |
|---|
MultiInstanceActivityBehavior(ActivityImpl activity,
AbstractBpmnActivityBehavior innerActivityBehavior) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
callActivityEndListeners(ActivityExecution execution)
Since no transitions are followed when leaving the inner activity, it is needed to call the end listeners yourself.
|
protected void |
callCustomActivityStartListeners(ActivityExecution execution)
Since the first loop of the multi instance is not executed as a regular activity, it is needed to call the start listeners yourself.
|
void |
completed(ActivityExecution execution)
called after the process instance is destroyed for this activity to perform its outgoing control flow logic.
|
void |
completing(DelegateExecution execution,
DelegateExecution subProcessInstance)
called before the process instance is destroyed to allow this activity to extract data from the sub process instance.
|
protected boolean |
completionConditionSatisfied(ActivityExecution execution) |
protected abstract void |
createInstances(ActivityExecution execution) |
void |
execute(DelegateExecution execution)
Default behaviour: just leave the activity with no extra functionality.
|
protected void |
executeOriginalBehavior(ActivityExecution execution,
int loopCounter) |
String |
getCollectionElementIndexVariable() |
String |
getCollectionElementVariable() |
org.flowable.common.engine.api.delegate.Expression |
getCollectionExpression() |
String |
getCollectionVariable() |
org.flowable.common.engine.api.delegate.Expression |
getCompletionConditionExpression() |
AbstractBpmnActivityBehavior |
getInnerActivityBehavior() |
protected Integer |
getLocalLoopVariable(ActivityExecution execution,
String variableName) |
org.flowable.common.engine.api.delegate.Expression |
getLoopCardinalityExpression() |
protected Integer |
getLoopVariable(ActivityExecution execution,
String variableName) |
protected boolean |
isExtraScopeNeeded() |
void |
lastExecutionEnded(ActivityExecution execution) |
protected void |
logLoopDetails(ActivityExecution execution,
String custom,
int loopCounter,
int nrOfCompletedInstances,
int nrOfActiveInstances,
int nrOfInstances) |
protected int |
resolveLoopCardinality(ActivityExecution execution) |
protected int |
resolveNrOfInstances(ActivityExecution execution) |
void |
setCollectionElementIndexVariable(String collectionElementIndexVariable) |
void |
setCollectionElementVariable(String collectionElementVariable) |
void |
setCollectionExpression(org.flowable.common.engine.api.delegate.Expression collectionExpression) |
void |
setCollectionVariable(String collectionVariable) |
void |
setCompletionConditionExpression(org.flowable.common.engine.api.delegate.Expression completionConditionExpression) |
void |
setInnerActivityBehavior(AbstractBpmnActivityBehavior innerActivityBehavior) |
void |
setLoopCardinalityExpression(org.flowable.common.engine.api.delegate.Expression loopCardinalityExpression) |
protected void |
setLoopVariable(ActivityExecution execution,
String variableName,
Object value) |
void |
signal(ActivityExecution execution,
String signalName,
Object signalData) |
protected boolean |
usesCollection() |
leave, leaveIgnoreConditionsprotected static final org.slf4j.Logger LOGGER
protected final String NUMBER_OF_INSTANCES
protected final String NUMBER_OF_ACTIVE_INSTANCES
protected final String NUMBER_OF_COMPLETED_INSTANCES
protected ActivityImpl activity
protected AbstractBpmnActivityBehavior innerActivityBehavior
protected org.flowable.common.engine.api.delegate.Expression loopCardinalityExpression
protected org.flowable.common.engine.api.delegate.Expression completionConditionExpression
protected org.flowable.common.engine.api.delegate.Expression collectionExpression
protected String collectionVariable
protected String collectionElementVariable
protected String collectionElementIndexVariable
public MultiInstanceActivityBehavior(ActivityImpl activity, AbstractBpmnActivityBehavior innerActivityBehavior)
activity - innerActivityBehavior - The original ActivityBehavior of the activity that will be wrapped inside this behavior.public void execute(DelegateExecution execution)
FlowNodeActivityBehaviorexecute in interface ActivityBehaviorexecute in class FlowNodeActivityBehaviorprotected abstract void createInstances(ActivityExecution execution)
public void signal(ActivityExecution execution, String signalName, Object signalData) throws Exception
signal in interface SignallableActivityBehaviorsignal in class FlowNodeActivityBehaviorExceptionpublic void lastExecutionEnded(ActivityExecution execution)
lastExecutionEnded in interface CompositeActivityBehaviorpublic void completing(DelegateExecution execution, DelegateExecution subProcessInstance) throws Exception
SubProcessActivityBehaviorcompleting in interface SubProcessActivityBehaviorExceptionpublic void completed(ActivityExecution execution) throws Exception
SubProcessActivityBehaviorcompleted in interface SubProcessActivityBehaviorExceptionprotected int resolveNrOfInstances(ActivityExecution execution)
protected void executeOriginalBehavior(ActivityExecution execution, int loopCounter)
protected boolean usesCollection()
protected boolean isExtraScopeNeeded()
protected int resolveLoopCardinality(ActivityExecution execution)
protected boolean completionConditionSatisfied(ActivityExecution execution)
protected void setLoopVariable(ActivityExecution execution, String variableName, Object value)
protected Integer getLoopVariable(ActivityExecution execution, String variableName)
protected Integer getLocalLoopVariable(ActivityExecution execution, String variableName)
protected void callCustomActivityStartListeners(ActivityExecution execution)
protected void callActivityEndListeners(ActivityExecution execution)
protected void logLoopDetails(ActivityExecution execution, String custom, int loopCounter, int nrOfCompletedInstances, int nrOfActiveInstances, int nrOfInstances)
public org.flowable.common.engine.api.delegate.Expression getLoopCardinalityExpression()
public void setLoopCardinalityExpression(org.flowable.common.engine.api.delegate.Expression loopCardinalityExpression)
public org.flowable.common.engine.api.delegate.Expression getCompletionConditionExpression()
public void setCompletionConditionExpression(org.flowable.common.engine.api.delegate.Expression completionConditionExpression)
public org.flowable.common.engine.api.delegate.Expression getCollectionExpression()
public void setCollectionExpression(org.flowable.common.engine.api.delegate.Expression collectionExpression)
public String getCollectionVariable()
public void setCollectionVariable(String collectionVariable)
public String getCollectionElementVariable()
public void setCollectionElementVariable(String collectionElementVariable)
public String getCollectionElementIndexVariable()
public void setCollectionElementIndexVariable(String collectionElementIndexVariable)
public void setInnerActivityBehavior(AbstractBpmnActivityBehavior innerActivityBehavior)
public AbstractBpmnActivityBehavior getInnerActivityBehavior()
Copyright © 2018 Flowable. All rights reserved.