一个JBPM工作流管理示例

一个JBPM工作流管理示例

 

 

示例:
在某一公司中,部门员工要休假的话需要部门主管的批准。如果休假天数大于10天的话,在部门主管的同意后,还必须上级主管批准。如果是部门主管要休假只要上级主管批准即可。在休假被批准之前,申请人可以撤销休假申请。
每个员工还有多少天休假必须管理起来,在员工提交休假申请时要检查申请天数是否超过可用天数。申请批准后,要在可用天数里减去申请天数。每次休假申请结束之后,不管通过未通过或是否取消,都必须记录下来。主管在批复申请之后,系统要将批复结果Email给申请人。对于大于10天的申请,如果部门主管已批准同意而上级主管还未批准,这时申请人撤销申请后,系统应发Email通知部门主管申请已撤销。 
  processdefinition.xml
如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v2004 rel. 3 U (
http://www.xmlspy.com) by Keller (zju) -->
<!DOCTYPE process-definition PUBLIC
    "-//jBpm/jBpm Mapping DTD 2.0//EN"
    "
http://jbpm.org/dtd/processdefinition-2.0.dtd">
<process-definition  name="RequestLeave">
 <swimlane name="requester">
  <description>
申请者</description>
 </swimlane>
 <swimlane name="chief">
  <description>
部门主管
</description>
  <delegation class="kellerdu.jbpm.delegation.ChiefSwimlane"/>
 </swimlane>
 <swimlane name="boss">
  <description>
上级主管
</description>
  <delegation class="kellerdu.jbpm.delegation.BossSwimlane"/>
 </swimlane>
 <start-state name="request" swimlane="requester">
  <transition to="Begin Request"/>
 </start-state>
 <fork name="Begin Request">
  <transition to="Requester Cancel"/>
  <transition to="IsChief"/>
 </fork>
 <decision name="IsChief">
  <delegation class="kellerdu.jbpm.delegation.ChiefDecision"/>
  <transition name="Boss Approve"  to="Boss Approve"/>
  <transition name="Chief Approve"  to="Chief Approve"/>
 </decision>
 <state name="Requester Cancel">
  <assignment swimlane="requester"/>
  <transition name="cancel" to="Decided">
   <action>
    <!--
将请假的状态改变为取消
”-->
    <delegation class="kellerdu.jbpm.action.RequestCancel"/>
   </action>
  </transition>
 </state>
 <state name="Chief Approve">
  <assignment swimlane="chief"/>
  <transition name="approve" to="NeedBossApprove">
   <action>
    <!--
将请假的状态改变为主管批准
”-->
    <delegation class="kellerdu.jbpm.action.ChiefApprove"/>
   </action>
  </transition>
  <transition name="disapprove" to="Decided">
   <action>
    <!--
将请假的状态改变为主管否决
”-->
    <delegation class="kellerdu.jbpm.action.ChiefDisapprove"/>
   </action>
  </transition>
 </state>
 <state name="Boss Approve">
  <assignment swimlane="boss"/>
  <transition name="approve" to="Decided">
   <action>
    <!--
将请假的状态改变为老板批准
”-->
    <delegation class="kellerdu.jbpm.action.BossApprove"/>
   </action>
  </transition>
  <transition name="disapprove" to="Decided">
   <action>
    <!--
将请假的状态改变为老板否决
”-->
    <delegation class="kellerdu.jbpm.action.BossDisapprove"/>
   </action>
  </transition>
 </state>
 <decision name="NeedBossApprove">
  <!--
请假天数大于10天的要老板批准
  -->
  <delegation class="kellerdu.jbpm.delegation.NeedBossApproveDecision"/>
  <transition name="need" to="Boss Approve"/>
  <transition name="notNeed" to="Decided"/>
 </decision>
 <join name="Decided">
  <description>
有一个先到达即进行父
Token</description>
  <delegation class="kellerdu.jbpm.delegation.DecidedJoin"/>
  <transition to="Do Something"/>
 </join>
 <decision name="Do Something">
  <description>
   
根据请求的状态决定。

   
1主管或者老板批准‘approve’:修改员工休假的总天数,设定发给用户E-Mail的信息。
   
2主管或者老板否决”-“disapprove”:设定发给用户EMail的信息。
   
3撤销”-"cancel"-设定发给用户EMail的信息。如果主管批准,要发给主管消息说明已经撤销。
    </description>
  <delegation class="kellerdu.jbpm.delegation.DoSomethingDecision"/>
  <transition name="disapprove" to="Finished">
   <action>
    <delegation class="kellerdu.jbpm.action.Disapprove"/>
   </action>
  </transition>
  <transition name="approve" to="Finished">
   <action>
    <delegation class="kellerdu.jbpm.action.Approve"/>
   </action>
  </transition>
  <transition name="cancel" to="Finished">
   <action>
    <delegation class="kellerdu.jbpm.action.Cancel"/>
   </action>
  </transition>
 </decision>
 <end-state name="Finished"/>
 <action event-type="process-end">
  <!--
发送EMail消息给申请者,记录请假日志 -->
  <delegation class="kellerdu.jbpm.action.ProcessEndAction"/>
 </action>
</process-definition>

 
2017年jBPM 正式发布了全新的 7版本。jBPM一个完全开源的业务流程管理(BPM)和案例管理解决方案。它支持流程和案例的完整生命周期,从编写工具到执行一直到监控和管理。 在核心引擎之上,提供了许多功能和工具来支持整个生命周期中的业务流程: 基于Eclipse和基于Web的编辑器,用于支持业务流程的图形化创建(拖放)。 基于JPA / JTA的可插拔持久性和事务。 基于WS-HumanTask的可插拔人工任务服务,用于包含需要由人类执行者执行的任务。 管理控制台支持流程实例管理,任务列表和任务表单管理以及报告。 部署流程的可选流程仓库(和其他相关知识)。 历史记录(用于查询/监视/分析)。 与Seam,Spring,OSGi等集成 BPM通过以业务用户和开发人员喜欢的方式提供流程管理功能和工具,从而实现业务分析师,开发人员和最终用户之间的桥梁。域特定的节点可以插入调色板,使业务用户更容易理解这些过程。 jBPM支持自适应和动态过程,需要灵活性来模拟复杂的现实生活中的情况,这些情况不能用刚性过程轻松描述。我们通过允许他们控制进程的哪些部分来执行,动态地偏离进程等,使控制回到终端用户。 jBPM也不仅仅是一个独立的流程引擎。复杂的业务逻辑可以被建模为业务流程与业务规则和复杂事件处理的组合。jBPM可以与Drools项目相结合,以支持将这些范例集成到一起的统一环境,您可以将业务逻辑作为过程,规则和事件的组合进行建模。 工作是MAVEN+eclipse jBPM jars也可以在中央maven仓库中使用 (也可以在JBoss maven仓库中)。 如果您使用Maven,只需添加一个依赖关系pom.xml: org.jbpm jbpm-test 7.3.0.Final 这与Gradle,Ivy和Buildr类似。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值