-----本文原作者:孫文博,發(fā)于http://www.tkk7.com/swboo為了讓更多人了解如要轉(zhuǎn)載請(qǐng)說明,謝謝大家支持原創(chuàng).
對(duì)于剛開始接觸JBPM的朋友來說,理解工作流引擎著個(gè)概念來說是要費(fèi)工夫的(本人很苯,也是理解了好久才知道引擎的意思的).現(xiàn)在網(wǎng)上大多數(shù)的JBPM例子都是使用的是JUNIT來說明問題的,但是對(duì)于一些沒有從事過JAVA或的剛開始從事JAVA開發(fā)的朋友來說,無疑是很有難度的,所以我在這里寫一個(gè)WEB的例子來教大家JBPM的的使用,以及引擎的含義,好了接下來讓咱們開始.
1環(huán)境準(zhǔn)備
至于如何配置JBPM環(huán)境我就不說了,要是不會(huì)請(qǐng)去看陳剛老師的BLOG上面很詳細(xì)(http://www.tkk7.com/chengang/category/12967.html)我在這里只做如何將JBPM和WEB組合起來
1.1使用環(huán)境
JDK1.5
Tomcat5.5.9
JBPM3.1.4
數(shù)據(jù)庫mssql2000
1.2創(chuàng)建一個(gè)WEB項(xiàng)目,不說了用過eclipse的人都知道如何創(chuàng)建
1.3創(chuàng)建一個(gè)流程定義,就是在web項(xiàng)目中添加Process Definition
1.4流程定義代碼
注明:下面我將流程寫如流程定義文件當(dāng)中要是想使用請(qǐng)刪除里面的流程說明部分
<?xml version="1.0" encoding="UTF-8"?>
開始結(jié)點(diǎn)
<process-definition
xmlns="" name="shenpi">
流程開始結(jié)點(diǎn)
<start-state name="start">
<task name="startrequest">
<controller>
設(shè)置請(qǐng)假人的流程變量
<variable name="name"></variable>
設(shè)置請(qǐng)假天數(shù)的流程變量
<variable name="countday"></variable>
設(shè)置審批請(qǐng)假角色的流程變量
<variable name="roles"></variable>
</controller>
</task>
<event type="node-leave">
當(dāng)離開開始結(jié)點(diǎn)后處理的類
<action name="startleave" class="com.jbpm.handler.StartLeave"></action>
</event>
<transition name="" to="shenpi">
</transition>
</start-state>
審批結(jié)點(diǎn)
<task-node name="shenpi">
審批任務(wù)
<task name="whoshenpi">
<controller>
設(shè)置是否通過的流程變量
<variable name="shifoutongguo"></variable>
保存該誰審批的流程變量
<variable name="who"></variable>
</controller>
</task>
用來處理進(jìn)入審批結(jié)點(diǎn)的類
<event type="node-enter">
<action name="com.jbpm.handler.ShenpiEnter"></action>
</event>
用來處理離開審批結(jié)點(diǎn)的類
<event type="node-leave">
<action name="com.jbpm.handler.ShenpiLeave"></action>
</event>
<transition name="" to="decision1"></transition>
</task-node>
設(shè)置下一個(gè)人審批的結(jié)點(diǎn)
<node name="whocheck">
設(shè)置下一個(gè)審批人的類
<action class="com.jbpm.handler.WhoCheckAction">
</action>
設(shè)置離開此結(jié)點(diǎn)的類
<event type="node-leave">
<action name="whocheckleave" class="com.jbpm.handler.WhoCheckLeave"></action>
</event>
設(shè)置進(jìn)入此結(jié)點(diǎn)的類
<event type="node-enter">
<action name="whocheckenter" class="com.jbpm.handler.WhoCheckEnter"></action>
</event>
<transition name="" to="decision2"></transition>
</node>
判斷是否審批人是否通過的結(jié)點(diǎn)
<decision name="decision1">
判斷此業(yè)務(wù)流程的類
<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>
判斷是否審批人是否是最后一個(gè)人的結(jié)點(diǎn)
<decision name="decision2">
判斷是否通過的類
<handler class="com.jbpm.decision.IsGoDecisionHandler"/>
<transition name="end" to="end">
判斷是夠是最后一個(gè)人的類
<action class="com.jbpm.handler.ProcessEnd"></action>
</transition>
<transition name="go" to="shenpi"></transition>
</decision>
流程結(jié)束結(jié)點(diǎn)
<end-state name="end">
判斷是否通過的變量
<controller>
<variable name="shifoutongguo" access="read"></variable>
</controller>
</end-state>
</process-definition>
1.5流程說明
本流程定義了一個(gè)請(qǐng)假流程其中員工提出申請(qǐng)開始一個(gè)請(qǐng)假流程,然后主管審批,此例子我設(shè)置了3個(gè)chief來處理,只要里面一個(gè)不通過流程就結(jié)束了.
(太晚了明天繼續(xù))2007.7.12
posted on 2007-07-12 23:10
大博的BLOG 閱讀(6743)
評(píng)論(5) 編輯 收藏 所屬分類:
jbpm