点击这里给我发消息 点击这里给我发消息

J2EE工作流管理系统jBPM详解(二)

添加时间:2013-12-7
    相关阅读: 设计 开发 技术 维护 系统 项目

    子流程的使用

    成果介绍

    详细阐述开发成果
    评审标准:清楚介绍开发成果

    当一个流程的业务逻辑非常复杂的时候,可以考虑使用子流程。子流程和主流程是相对独立的。

    设计思路

    描述主要的设计思路,开发方法以及技术要点
评审标准:清晰表达设计思路和技术要点

    在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>

    可以看到,上面我们使用到了,在jbpm中,process-state标签代表的是引用子流程。这里我们接着定义子流程文件。

    子流程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>

[1] [2] [3] [4] [5] [6] [7] [8] 下一页

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册