Blog‎ > ‎

Calling a versioned call activity in Activiti

posted Feb 24, 2014, 2:20 AM by Luca Stancapiano   [ updated Feb 24, 2014, 2:21 AM ]
When you call a 'call activity' inside a versioned process you would call a versioned call activity too. By default activiti calls always the last deployed key of call activity perhaps if it is called by a versioned process. To call a versioned call activity you must customize the activiti framework extending the following classes:

org.activiti.engine.impl.bpmn.parser.factory.DefaultActivityBehaviorFactory

org.activiti.engine.impl.bpmn.behavior.CallActivityBehavior.

Then configure the activiti.cfg.xml configuration file adding the new activity behavior factory in the process engine configuration:

<bean id="processEngineConfiguration" class=….

   <property name="activityBehaviorFactory" ref="activityBehaviorFactory" />

   …

Add the new bean:

<bean id="activityBehaviorFactory"

class=“${my new DefaultActivityBehaviorFactory}”>

</bean>

In this new class you must add the new call activity reference using the new extended class. In the CallActivityBehavior class, update the 'execute' method instead of:

ProcessDefinitionImpl processDefinition = Context

      .getProcessEngineConfiguration()

      .getDeploymentManager()

      .findDeployedLatestProcessDefinitionByKey(processDefinitonKey);

write:

ProcessDefinitionImpl processDefinition = Context

      .getProcessEngineConfiguration()

      .getDeploymentManager()

      .findDeployedProcessDefinitionById(processDefinitionId);

Comments