AnsweredAssumed Answered

Issue with Multi-Instance variables and extensionElements

Question asked by wilco on Nov 19, 2013
Latest reply on Nov 20, 2013 by trademak
First of all, thanks for this great framework!

In my project I'm switching from Activit 5.11 to 5.14. I'm using a bpmn serviceTask like this:

        <serviceTask id="dicomsort"
                    <miriam:configuration name="dataConsumesTag" value="manualCategorization" />
                    <miriam:configuration name="dataConsumesCategory" value="${category}" />
                    <miriam:configuration name="dataProducesTag" value="dicomsort_${loopCounter}" />
                    <miriam:configuration name="dataProducesCategory" value="${category}" />
            <multiInstanceLoopCharacteristics isSequential="true"
                                              activiti:elementVariable="category" >

The "miriam:extension" block ist used to configure some custom parameters for serviceTasks. To have a generic approach those parameters are parsed using a BpmnParseHandler implementation during parse time and resolved with an ExecutionListener on the START event during execution. If I'm NOT using a MultiInstanceLoop everything works quite well and also JUEL expressions are resolved as it should … But… when I'm using a MultiInstanceLoop (like the code above) the loop variables (in this case "category" and "loopCounter") cannot be resolved during execution using the ExecutionListener. It complains about:
org.activiti.engine.ActivitiException: Unknown property used in expression: ${category}

Since version 5.11 I was using the multi instance variables in activiti:field variables (without the "miriam:extension" block) , which was working good. But since the change to the BpmnParseHandler interface I needed to refactor my code to use the getExtensionElements() call to retrieve the custom configuration block because the activiti:field fields cannot be read using the getExtensionElements() call.

So is it possible that the Multi Instance variables cannot be retrieved using an ExecutionListener?