org.activiti.engine.impl.bpmn.behavior
Class MultiInstanceActivityBehavior

java.lang.Object
  extended by org.activiti.engine.impl.bpmn.behavior.FlowNodeActivityBehavior
      extended by org.activiti.engine.impl.bpmn.behavior.MultiInstanceActivityBehavior
All Implemented Interfaces:
org.activiti.engine.impl.pvm.delegate.ActivityBehavior, org.activiti.engine.impl.pvm.delegate.CompositeActivityBehavior, org.activiti.engine.impl.pvm.delegate.SignallableActivityBehavior, org.activiti.engine.impl.pvm.delegate.SubProcessActivityBehavior

public abstract class MultiInstanceActivityBehavior
extends org.activiti.engine.impl.bpmn.behavior.FlowNodeActivityBehavior
implements org.activiti.engine.impl.pvm.delegate.CompositeActivityBehavior, org.activiti.engine.impl.pvm.delegate.SubProcessActivityBehavior

Implementation of the multi-instance functionality as described in the BPMN 2.0 spec. 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.

Author:
Joram Barrez, Falko Menge

Field Summary
protected  org.activiti.engine.impl.pvm.process.ActivityImpl activity
           
protected  java.lang.String collectionElementVariable
           
protected  org.activiti.engine.delegate.Expression collectionExpression
           
protected  java.lang.String collectionVariable
           
protected  org.activiti.engine.delegate.Expression completionConditionExpression
           
protected  org.activiti.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior innerActivityBehavior
           
protected static java.util.logging.Logger LOGGER
           
protected  java.lang.String LOOP_COUNTER
           
protected  org.activiti.engine.delegate.Expression loopCardinalityExpression
           
protected  java.lang.String NUMBER_OF_ACTIVE_INSTANCES
           
protected  java.lang.String NUMBER_OF_COMPLETED_INSTANCES
           
protected  java.lang.String NUMBER_OF_INSTANCES
           
 
Fields inherited from class org.activiti.engine.impl.bpmn.behavior.FlowNodeActivityBehavior
bpmnActivityBehavior
 
Constructor Summary
MultiInstanceActivityBehavior(org.activiti.engine.impl.pvm.process.ActivityImpl activity, org.activiti.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior innerActivityBehavior)
           
 
Method Summary
protected  void callActivityEndListeners(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution)
          Since no transitions are followed when leaving the inner activity, it is needed to call the end listeners yourself.
 void completed(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution)
           
 void completing(org.activiti.engine.delegate.DelegateExecution execution, org.activiti.engine.delegate.DelegateExecution subProcessInstance)
           
protected  boolean completionConditionSatisfied(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution)
           
protected abstract  void createInstances(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution)
           
 void execute(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution)
           
protected  void executeOriginalBehavior(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution, int loopCounter)
           
 java.lang.String getCollectionElementVariable()
           
 org.activiti.engine.delegate.Expression getCollectionExpression()
           
 java.lang.String getCollectionVariable()
           
 org.activiti.engine.delegate.Expression getCompletionConditionExpression()
           
 org.activiti.engine.delegate.Expression getLoopCardinalityExpression()
           
protected  java.lang.Integer getLoopVariable(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution, java.lang.String variableName)
           
protected  java.lang.Integer getLoopVariableLocal(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution, java.lang.String variableName)
           
protected  boolean isExtraScopeNeeded()
           
 void lastExecutionEnded(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution)
           
protected  void logLoopDetails(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution, java.lang.String custom, int loopCounter, int nrOfCompletedInstances, int nrOfActiveInstances, int nrOfInstances)
           
protected  int resolveLoopCardinality(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution)
           
protected  int resolveNrOfInstances(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution)
           
 void setCollectionElementVariable(java.lang.String collectionElementVariable)
           
 void setCollectionExpression(org.activiti.engine.delegate.Expression collectionExpression)
           
 void setCollectionVariable(java.lang.String collectionVariable)
           
 void setCompletionConditionExpression(org.activiti.engine.delegate.Expression completionConditionExpression)
           
 void setInnerActivityBehavior(org.activiti.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior innerActivityBehavior)
           
 void setLoopCardinalityExpression(org.activiti.engine.delegate.Expression loopCardinalityExpression)
           
protected  void setLoopVariable(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution, java.lang.String variableName, java.lang.Object value)
           
 void signal(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution, java.lang.String signalName, java.lang.Object signalData)
           
protected  boolean usesCollection()
           
 
Methods inherited from class org.activiti.engine.impl.bpmn.behavior.FlowNodeActivityBehavior
leave, leaveIgnoreConditions
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOGGER

protected static final java.util.logging.Logger LOGGER

NUMBER_OF_INSTANCES

protected final java.lang.String NUMBER_OF_INSTANCES
See Also:
Constant Field Values

NUMBER_OF_ACTIVE_INSTANCES

protected final java.lang.String NUMBER_OF_ACTIVE_INSTANCES
See Also:
Constant Field Values

NUMBER_OF_COMPLETED_INSTANCES

protected final java.lang.String NUMBER_OF_COMPLETED_INSTANCES
See Also:
Constant Field Values

LOOP_COUNTER

protected final java.lang.String LOOP_COUNTER
See Also:
Constant Field Values

activity

protected org.activiti.engine.impl.pvm.process.ActivityImpl activity

innerActivityBehavior

protected org.activiti.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior innerActivityBehavior

loopCardinalityExpression

protected org.activiti.engine.delegate.Expression loopCardinalityExpression

completionConditionExpression

protected org.activiti.engine.delegate.Expression completionConditionExpression

collectionExpression

protected org.activiti.engine.delegate.Expression collectionExpression

collectionVariable

protected java.lang.String collectionVariable

collectionElementVariable

protected java.lang.String collectionElementVariable
Constructor Detail

MultiInstanceActivityBehavior

public MultiInstanceActivityBehavior(org.activiti.engine.impl.pvm.process.ActivityImpl activity,
                                     org.activiti.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior innerActivityBehavior)
Parameters:
innerActivityBehavior - The original ActivityBehavior of the activity that will be wrapped inside this behavior.
isSequential - Indicates whether the multi instance behavior must be sequential or parallel
Method Detail

execute

public void execute(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution)
             throws java.lang.Exception
Specified by:
execute in interface org.activiti.engine.impl.pvm.delegate.ActivityBehavior
Overrides:
execute in class org.activiti.engine.impl.bpmn.behavior.FlowNodeActivityBehavior
Throws:
java.lang.Exception

createInstances

protected abstract void createInstances(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution)
                                 throws java.lang.Exception
Throws:
java.lang.Exception

signal

public void signal(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution,
                   java.lang.String signalName,
                   java.lang.Object signalData)
            throws java.lang.Exception
Specified by:
signal in interface org.activiti.engine.impl.pvm.delegate.SignallableActivityBehavior
Overrides:
signal in class org.activiti.engine.impl.bpmn.behavior.FlowNodeActivityBehavior
Throws:
java.lang.Exception

lastExecutionEnded

public void lastExecutionEnded(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution)
Specified by:
lastExecutionEnded in interface org.activiti.engine.impl.pvm.delegate.CompositeActivityBehavior

completing

public void completing(org.activiti.engine.delegate.DelegateExecution execution,
                       org.activiti.engine.delegate.DelegateExecution subProcessInstance)
                throws java.lang.Exception
Specified by:
completing in interface org.activiti.engine.impl.pvm.delegate.SubProcessActivityBehavior
Throws:
java.lang.Exception

completed

public void completed(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution)
               throws java.lang.Exception
Specified by:
completed in interface org.activiti.engine.impl.pvm.delegate.SubProcessActivityBehavior
Throws:
java.lang.Exception

resolveNrOfInstances

protected int resolveNrOfInstances(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution)

executeOriginalBehavior

protected void executeOriginalBehavior(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution,
                                       int loopCounter)
                                throws java.lang.Exception
Throws:
java.lang.Exception

usesCollection

protected boolean usesCollection()

isExtraScopeNeeded

protected boolean isExtraScopeNeeded()

resolveLoopCardinality

protected int resolveLoopCardinality(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution)

completionConditionSatisfied

protected boolean completionConditionSatisfied(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution)

setLoopVariable

protected void setLoopVariable(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution,
                               java.lang.String variableName,
                               java.lang.Object value)

getLoopVariable

protected java.lang.Integer getLoopVariable(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution,
                                            java.lang.String variableName)

getLoopVariableLocal

protected java.lang.Integer getLoopVariableLocal(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution,
                                                 java.lang.String variableName)

callActivityEndListeners

protected void callActivityEndListeners(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution)
Since no transitions are followed when leaving the inner activity, it is needed to call the end listeners yourself.


logLoopDetails

protected void logLoopDetails(org.activiti.engine.impl.pvm.delegate.ActivityExecution execution,
                              java.lang.String custom,
                              int loopCounter,
                              int nrOfCompletedInstances,
                              int nrOfActiveInstances,
                              int nrOfInstances)

getLoopCardinalityExpression

public org.activiti.engine.delegate.Expression getLoopCardinalityExpression()

setLoopCardinalityExpression

public void setLoopCardinalityExpression(org.activiti.engine.delegate.Expression loopCardinalityExpression)

getCompletionConditionExpression

public org.activiti.engine.delegate.Expression getCompletionConditionExpression()

setCompletionConditionExpression

public void setCompletionConditionExpression(org.activiti.engine.delegate.Expression completionConditionExpression)

getCollectionExpression

public org.activiti.engine.delegate.Expression getCollectionExpression()

setCollectionExpression

public void setCollectionExpression(org.activiti.engine.delegate.Expression collectionExpression)

getCollectionVariable

public java.lang.String getCollectionVariable()

setCollectionVariable

public void setCollectionVariable(java.lang.String collectionVariable)

getCollectionElementVariable

public java.lang.String getCollectionElementVariable()

setCollectionElementVariable

public void setCollectionElementVariable(java.lang.String collectionElementVariable)

setInnerActivityBehavior

public void setInnerActivityBehavior(org.activiti.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior innerActivityBehavior)


Copyright © 2012 evolveum. All Rights Reserved.