org.camunda.bpm.engine.impl.bpmn.behavior
Class MultiInstanceActivityBehavior

java.lang.Object
  extended by org.camunda.bpm.engine.impl.bpmn.behavior.FlowNodeActivityBehavior
      extended by org.camunda.bpm.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior
          extended by org.camunda.bpm.engine.impl.bpmn.behavior.MultiInstanceActivityBehavior
All Implemented Interfaces:
CoreActivityBehavior<ActivityExecution>, ActivityBehavior, CompositeActivityBehavior, ModificationObserverBehavior, SignallableActivityBehavior
Direct Known Subclasses:
ParallelMultiInstanceActivityBehavior, SequentialMultiInstanceActivityBehavior

public abstract class MultiInstanceActivityBehavior
extends AbstractBpmnActivityBehavior
implements CompositeActivityBehavior, ModificationObserverBehavior

Abstract Multi Instance Behavior: used for both parallel and sequential multi instance implementation.

Author:
Daniel Meyer, Thorben Lindhauer

Nested Class Summary
 
Nested classes/interfaces inherited from class org.camunda.bpm.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior
AbstractBpmnActivityBehavior.ErrorDeclarationForProcessInstanceFinder, AbstractBpmnActivityBehavior.ErrorPropagationException
 
Field Summary
protected  String collectionElementVariable
           
protected  Expression collectionExpression
           
protected  String collectionVariable
           
protected  Expression completionConditionExpression
           
protected static BpmnBehaviorLogger LOG
           
static String LOOP_COUNTER
           
protected  Expression loopCardinalityExpression
           
static String NUMBER_OF_ACTIVE_INSTANCES
           
static String NUMBER_OF_COMPLETED_INSTANCES
           
static String NUMBER_OF_INSTANCES
           
 
Fields inherited from class org.camunda.bpm.engine.impl.bpmn.behavior.FlowNodeActivityBehavior
bpmnActivityBehavior
 
Constructor Summary
MultiInstanceActivityBehavior()
           
 
Method Summary
protected  boolean completionConditionSatisfied(ActivityExecution execution)
           
protected abstract  void createInstances(ActivityExecution execution, int nrOfInstances)
           
protected  void evaluateCollectionVariable(ActivityExecution execution, int loopCounter)
           
 void execute(ActivityExecution execution)
          Default behaviour: just leave the activity with no extra functionality.
 String getCollectionElementVariable()
           
 Expression getCollectionExpression()
           
 String getCollectionVariable()
           
 Expression getCompletionConditionExpression()
           
protected  Object getElementAtIndex(int i, Collection<?> collection)
           
protected  ActivityImpl getInnerActivity(ActivityExecution execution)
          Get the inner activity of the multi instance execution.
protected  Integer getLocalLoopVariable(ActivityExecution execution, String variableName)
           
 Expression getLoopCardinalityExpression()
           
protected  Integer getLoopVariable(ActivityExecution execution, String variableName)
           
protected  void leave(ActivityExecution execution)
          Subclasses that call leave() will first pass through this method, before the regular FlowNodeActivityBehavior.leave(ActivityExecution) is called.
protected  void performInstance(ActivityExecution execution, PvmActivity activity, int loopCounter)
           
protected  int resolveLoopCardinality(ActivityExecution execution)
           
protected  int resolveNrOfInstances(ActivityExecution execution)
           
 void setCollectionElementVariable(String collectionElementVariable)
           
 void setCollectionExpression(Expression collectionExpression)
           
 void setCollectionVariable(String collectionVariable)
           
 void setCompletionConditionExpression(Expression completionConditionExpression)
           
 void setLoopCardinalityExpression(Expression loopCardinalityExpression)
           
protected  void setLoopVariable(ActivityExecution execution, String variableName, Object value)
           
protected  boolean usesCollection()
           
 
Methods inherited from class org.camunda.bpm.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior
checkIfCauseOfExceptionIsBpmnError, createCompensateEventSubscription, executeWithErrorPropagation, isCompensationEventSubprocess, isProcessEngineExceptionWithoutCause, isTransactionNotActive, propagateBpmnError, propagateError, propagateException, propagateExceptionAsError, signal, signalCompensationDone
 
Methods inherited from class org.camunda.bpm.engine.impl.bpmn.behavior.FlowNodeActivityBehavior
leaveIgnoreConditions
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.camunda.bpm.engine.impl.pvm.delegate.CompositeActivityBehavior
complete, concurrentChildExecutionEnded
 
Methods inherited from interface org.camunda.bpm.engine.impl.pvm.delegate.ModificationObserverBehavior
concurrentExecutionCreated, concurrentExecutionDeleted, initializeScope
 

Field Detail

LOG

protected static final BpmnBehaviorLogger LOG

NUMBER_OF_INSTANCES

public static final String NUMBER_OF_INSTANCES
See Also:
Constant Field Values

NUMBER_OF_ACTIVE_INSTANCES

public static final String NUMBER_OF_ACTIVE_INSTANCES
See Also:
Constant Field Values

NUMBER_OF_COMPLETED_INSTANCES

public static final String NUMBER_OF_COMPLETED_INSTANCES
See Also:
Constant Field Values

LOOP_COUNTER

public static final String LOOP_COUNTER
See Also:
Constant Field Values

loopCardinalityExpression

protected Expression loopCardinalityExpression

completionConditionExpression

protected Expression completionConditionExpression

collectionExpression

protected Expression collectionExpression

collectionVariable

protected String collectionVariable

collectionElementVariable

protected String collectionElementVariable
Constructor Detail

MultiInstanceActivityBehavior

public MultiInstanceActivityBehavior()
Method Detail

execute

public void execute(ActivityExecution execution)
             throws Exception
Description copied from class: FlowNodeActivityBehavior
Default behaviour: just leave the activity with no extra functionality.

Specified by:
execute in interface CoreActivityBehavior<ActivityExecution>
Specified by:
execute in interface ActivityBehavior
Overrides:
execute in class FlowNodeActivityBehavior
Throws:
Exception

performInstance

protected void performInstance(ActivityExecution execution,
                               PvmActivity activity,
                               int loopCounter)

evaluateCollectionVariable

protected void evaluateCollectionVariable(ActivityExecution execution,
                                          int loopCounter)

createInstances

protected abstract void createInstances(ActivityExecution execution,
                                        int nrOfInstances)
                                 throws Exception
Throws:
Exception

resolveNrOfInstances

protected int resolveNrOfInstances(ActivityExecution execution)

getElementAtIndex

protected Object getElementAtIndex(int i,
                                   Collection<?> collection)

usesCollection

protected boolean usesCollection()

resolveLoopCardinality

protected int resolveLoopCardinality(ActivityExecution execution)

completionConditionSatisfied

protected boolean completionConditionSatisfied(ActivityExecution execution)

leave

protected void leave(ActivityExecution execution)
Description copied from class: AbstractBpmnActivityBehavior
Subclasses that call leave() will first pass through this method, before the regular FlowNodeActivityBehavior.leave(ActivityExecution) is called.

Overrides:
leave in class AbstractBpmnActivityBehavior

getInnerActivity

protected ActivityImpl getInnerActivity(ActivityExecution execution)
Get the inner activity of the multi instance execution.

Parameters:
execution - of multi instance activity
Returns:
inner activity

setLoopVariable

protected void setLoopVariable(ActivityExecution execution,
                               String variableName,
                               Object value)

getLoopVariable

protected Integer getLoopVariable(ActivityExecution execution,
                                  String variableName)

getLocalLoopVariable

protected Integer getLocalLoopVariable(ActivityExecution execution,
                                       String variableName)

getLoopCardinalityExpression

public Expression getLoopCardinalityExpression()

setLoopCardinalityExpression

public void setLoopCardinalityExpression(Expression loopCardinalityExpression)

getCompletionConditionExpression

public Expression getCompletionConditionExpression()

setCompletionConditionExpression

public void setCompletionConditionExpression(Expression completionConditionExpression)

getCollectionExpression

public Expression getCollectionExpression()

setCollectionExpression

public void setCollectionExpression(Expression collectionExpression)

getCollectionVariable

public String getCollectionVariable()

setCollectionVariable

public void setCollectionVariable(String collectionVariable)

getCollectionElementVariable

public String getCollectionElementVariable()

setCollectionElementVariable

public void setCollectionElementVariable(String collectionElementVariable)


Copyright © 2015 camunda services GmbH. All rights reserved.