AnsweredAssumed Answered

Dynamic parallel fork-join

Question asked by simonovdenis on Nov 26, 2018
Latest reply on Nov 26, 2018 by simonovdenis

Hello Gurus.
Didn't find the answer to my question in existing topics.
We've had previously JBPM as BPM engine and had the solution to create dynamically branches of some fork-join, defined in process, depending on content of some collection variable from execution context. ie for each element in some collection(content of JBPM variable VARIABLES) separate execution branch is created and concrete branch will contain new variable VARIABLE with value of concrete element of collection provided.
Could you please suggest, how to achieve same/similar behaviour in Flowable/Activiti/Camunda?
For example:

<start-state name="Start state">
    <transition to="For each variable start subprocess" name="For each variable start subprocess">
        <action class="some.package.name.ParallelForEachAction">
            <currentKeyVariableName>VARIABLE</currentKeyVariableName>
            <forEachCollectionExpression>#{VARIABLES}</forEachCollectionExpression>
            <signalChildrenAsynchronously>true</signalChildrenAsynchronously>
        </action>
    </transition>
</start-state>

<state name="For each variable start subprocess">
    <transition to="Subprocess execution"/>
</state>

<process-state name="Subprocess execution">
    <sub-process name="Subprocess" binding="late"/>
    <variable access="read" name="VARIABLE" mapped-name="VARIABLE"/>
    <variable access="write" name="OUTPUT_VARIABLE" mapped-name="OUTPUT_VARIABLE"/>
    <transition to="joinAfterSubprocess"/>
</process-state>

<join name="joinAfterSubprocess">
    <transition to="end-state"/>
</join>

Outcomes