-----本文原作者:孙文博,发于http://www.blogjava.net/swboo为了让更多人了解如要转载请说明,谢谢大家支持原创.
对于刚开始接触JBPM的朋友来说,理解工作流引擎着个概念来说是要费工夫的(本人很苯,也是理解了好久才知道引擎的意思的).现在网上大多数的JBPM例子都是使用的是JUNIT来说明问题的,但是对于一些没有从事过JAVA或的刚开始从事JAVA开发的朋友来说,无疑是很有难度的,所以我在这里写一个WEB的例子来教大家JBPM的的使用,以及引擎的含义,好了接下来让咱们开始.
1环境准备
至于如何配置JBPM环境我就不说了,要是不会请去看陈刚老师的BLOG上面很详细(http://www.blogjava.net/chengang/category/12967.html)我在这里只做如何将JBPM和WEB组合起来
1.1使用环境
JDK1.5
Tomcat5.5.9
JBPM3.1.4
数据库mssql2000
1.2创建一个WEB项目,不说了用过eclipse的人都知道如何创建
1.3创建一个流程定义,就是在web项目中添加Process Definition
1.4流程定义代码
注明:下面我将流程写如流程定义文件当中要是想使用请删除里面的流程说明部分
<?xml version="1.0" encoding="UTF-8"?>
开始结点
<process-definition
xmlns="" name="shenpi">
流程开始结点
<start-state name="start">
<task name="startrequest">
<controller>
设置请假人的流程变量
<variable name="name"></variable>
设置请假天数的流程变量
<variable name="countday"></variable>
设置审批请假角色的流程变量
<variable name="roles"></variable>
</controller>
</task>
<event type="node-leave">
当离开开始结点后处理的类
<action name="startleave" class="com.jbpm.handler.StartLeave"></action>
</event>
<transition name="" to="shenpi">
</transition>
</start-state>
审批结点
<task-node name="shenpi">
审批任务
<task name="whoshenpi">
<controller>
设置是否通过的流程变量
<variable name="shifoutongguo"></variable>
保存该谁审批的流程变量
<variable name="who"></variable>
</controller>
</task>
用来处理进入审批结点的类
<event type="node-enter">
<action name="com.jbpm.handler.ShenpiEnter"></action>
</event>
用来处理离开审批结点的类
<event type="node-leave">
<action name="com.jbpm.handler.ShenpiLeave"></action>
</event>
<transition name="" to="decision1"></transition>
</task-node>
设置下一个人审批的结点
<node name="whocheck">
设置下一个审批人的类
<action class="com.jbpm.handler.WhoCheckAction">
</action>
设置离开此结点的类
<event type="node-leave">
<action name="whocheckleave" class="com.jbpm.handler.WhoCheckLeave"></action>
</event>
设置进入此结点的类
<event type="node-enter">
<action name="whocheckenter" class="com.jbpm.handler.WhoCheckEnter"></action>
</event>
<transition name="" to="decision2"></transition>
</node>
判断是否审批人是否通过的结点
<decision name="decision1">
判断此业务流程的类
<handler class="com.jbpm.decision.IsGoDecisionHandler"/>
<transition name="end" to="end">
判断流程是否通过的类
<action class="com.jbpm.handler.ProcessEnd"></action>
</transition>
<transition name="go" to="whocheck"></transition>
</decision>
判断是否审批人是否是最后一个人的结点
<decision name="decision2">
判断是否通过的类
<handler class="com.jbpm.decision.IsGoDecisionHandler"/>
<transition name="end" to="end">
判断是够是最后一个人的类
<action class="com.jbpm.handler.ProcessEnd"></action>
</transition>
<transition name="go" to="shenpi"></transition>
</decision>
流程结束结点
<end-state name="end">
判断是否通过的变量
<controller>
<variable name="shifoutongguo" access="read"></variable>
</controller>
</end-state>
</process-definition>
1.5流程说明
本流程定义了一个请假流程其中员工提出申请开始一个请假流程,然后主管审批,此例子我设置了3个chief来处理,只要里面一个不通过流程就结束了.
(太晚了明天继续)2007.7.12
posted on 2007-07-12 23:10
大博的BLOG 阅读(6736)
评论(5) 编辑 收藏 所属分类:
jbpm