Dynamic parallel fork-join

cancel
Showing results for 
Search instead for 
Did you mean: 
simonovdenis
Member II

Dynamic parallel fork-join

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>
1 Reply
simonovdenis
Member II

Re: Dynamic parallel fork-join

Found following:
https://www.activiti.org/userguide/index.html#bpmnMultiInstance
Probably that is the answer...