子流程的使用
成果介绍
详细阐述开发成果
评审标准:清楚介绍开发成果
当一个流程的业务逻辑非常复杂的时候,可以考虑使用子流程。子流程和主流程是相对独立的。
设计思路
描述主要的设计思路,开发方法以及技术要点
评审标准:清晰表达设计思路和技术要点
在jbpm中,我们可以将一个复杂的业务流程文件根据业务逻辑的不同划分为父流程和子流程,这样一方面可以令我们的流程定义文件不会设计得太臃肿,二来可以方便我们将来的维护,只对需要修改的流程进行修改,而不影响其他流程。
如何使用
阐述如何结合项目需要应用成果进行开发。这部分需要详细描述,让其他开发人员按照此成果报告,能够进行一般简单的开发,具有较强的可操作性。
评审标准:开发人员按此使用说明基本能应用成果进行开发
这里我们介绍下关于jbpm子流程的使用,这里我们定义两个流程定义xml文件,一个是父流程定义文件,一个是子流程定义文件。这里我想当执行完Payfirst任务的时候,jbpm流程能自动去我的子流程文件中去执行那边定义的任务。
这里是父流程processdefinition.xml <?xml version="1.0" encoding="UTF-8"?> <process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="myapp"> 。。。。。。 <task-node name="PayFirst"> <task name="PayFirstTask" swimlane="finance"></task> <transition name="get house contract" to="subprocess"> <action name="action" class="com.myapp.action.MessageActionHandler"> <message> Has pay first bulk of money. Print constract now! </message> </action> </transition> </task-node> <process-state name="subprocess"> <sub-process name="subprocessdefinition"/> <transition to="end"></transition> </process-state> <task-node name="pass round for perusal"
signal="last-wait" create-tasks="false"> <task name="perusal"> <assignment actor-id="#{processStarter}">
</assignment> </task> <event type="node-enter"> <action name="createInstance"
class="com.myapp.action.CreateTaskInstanceAction"></action> </event> <transition name="backto" to="OnePersonAudit">
</transition> </task-node> </process-definition>
可以看到,上面我们使用到了
子流程subprocessdefinition定义文件
<?xml version="1.0" encoding="UTF-8"?> <process-definition xmlns="urn:jbpm.org:jpdl-3.2"
name="subprocessdefinition"> <swimlane name="service"> <assignment actor-id="service1" /> </swimlane> <start-state name="subStart"> <transition to="PrintContract"></transition> </start-state> <task-node name="PrintContract"> <task name="PrintContractTask" swimlane="service"></task> <transition name="PrintContract" to="end"> <action name="action" class="com.myapp.action.MessageActionHandler"> <message>Finish the process instance now.</message> </action> </transition> </task-node> <end-state name="end"></end-state> </process-definition>