Hello all. I'm new to jBPM and I have searched the forums for an answer to this question. I saw a similar issue in http://www.jboss.com/index.html?module=bb&op=viewtopic&t=78536, but it did not seem to completely answer my question...
We have an initial process definition from which a number of additional workflows may execute. Specifically, we are developing a Service Request workflow. The initial request entails reviewing the request for the request type (password change, new software requirement, etc.), and then spawning the necessary secondary workflow depending on the request type.
My question: We are trying to determine if each of these additional workflows should be considered sub-processes, or brand new workflows. I am concerned that if we consider them sub-processes, the main process instance will not end until the entire sub-process has completed. Therefore, instead we'd really like to spawn the secondary request workflow and then immediately end the initial workflow. Is this an advisable way to perform this task?
Here is my rudimentary processdefinition.xml:
<process-definition name="srq"> <!-- SWIMLANES --> <swimlane name="analyst"> <assignment class="org.jbpm.delegation.assignment.ActorAssignmentHandler" config-type="field"> <type>role</type> <name>Analyst</name> </assignment> </swimlane> <swimlane name="requestor"> <assignment class="org.jbpm.delegation.assignment.ActorAssignmentHandler" config-type="field"> <type>role</type> <name>Requestor</name> </assignment> </swimlane> <!-- START-STATE --> <start-state name="incoming request"> <transition to="review request"/> </start-state> <!-- NODES --> <task-node name="review request"> <task name="review" description="#{review.description}"> <assignment actor-id="#{actor.id}"/> </task> <transition name="" to="process1"></transition> <transition name="cancel" to="done"></transition> <transition name="reject" to="done"></transition> </task-node> <end-state name="done"/> <process-state name="process1"> </process-state> </process-definition>
I do this the way you suggest in bold. I implement it using custom Actions which use Java code to create new process instances.