[轉(zhuǎn)]一個JBPM工作流管理示例(一)
示例:
在某一公司中,部門員工要休假的話需要部門主管的批準。如果休假天數(shù)大于10天的話,在部門主管的同意后,還必須上級主管批準。如果是部門主管要休假只要上級主管批準即可。在休假被批準之前,申請人可以撤銷休假申請。
每個員工還有多少天休假必須管理起來,在員工提交休假申請時要檢查申請?zhí)鞌?shù)是否超過可用天數(shù)。申請批準后,要在可用天數(shù)里減去申請?zhí)鞌?shù)。每次休假申請結(jié)束之后,不管通過未通過或是否取消,都必須記錄下來。主管在批復(fù)申請之后,系統(tǒng)要將批復(fù)結(jié)果Email給申請人。對于大于10天的申請,如果部門主管已批準同意而上級主管還未批準,這時申請人撤銷申請后,系統(tǒng)應(yīng)發(fā)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="BeginRequest"/>
?</start-state>
?<fork?name="BeginRequest">
??<transition?to="RequesterCancel"/>
??<transition?to="IsChief"/>
?</fork>
?<decision?name="IsChief">
??<delegation?class="kellerdu.jbpm.delegation.ChiefDecision"/>
??<transition?name="BossApprove"??to="BossApprove"/>
??<transition?name="ChiefApprove"??to="ChiefApprove"/>
?</decision>
?<state?name="RequesterCancel">
??<assignment?swimlane="requester"/>
??<transition?name="cancel"?to="Decided">
???<action>
????<!--?將請假的狀態(tài)改變?yōu)椤叭∠?/span>-->
????<delegation?class="kellerdu.jbpm.action.RequestCancel"/>
???</action>
??</transition>
?</state>
?<state?name="ChiefApprove">
??<assignment?swimlane="chief"/>
??<transition?name="approve"?to="NeedBossApprove">
???<action>
????<!--?將請假的狀態(tài)改變?yōu)椤爸鞴芘鷾省?/span>-->
????<delegation?class="kellerdu.jbpm.action.ChiefApprove"/>
???</action>
??</transition>
??<transition?name="disapprove"?to="Decided">
???<action>
????<!--?將請假的狀態(tài)改變?yōu)椤爸鞴芊駴Q”-->
????<delegation?class="kellerdu.jbpm.action.ChiefDisapprove"/>
???</action>
??</transition>
?</state>
?<state?name="BossApprove">
??<assignment?swimlane="boss"/>
??<transition?name="approve"?to="Decided">
???<action>
????<!--?將請假的狀態(tài)改變?yōu)椤袄习迮鷾省?/span>-->
????<delegation?class="kellerdu.jbpm.action.BossApprove"/>
???</action>
??</transition>
??<transition?name="disapprove"?to="Decided">
???<action>
????<!--?將請假的狀態(tài)改變?yōu)椤袄习宸駴Q”-->
????<delegation?class="kellerdu.jbpm.action.BossDisapprove"/>
???</action>
??</transition>
?</state>
?<decision?name="NeedBossApprove">
??<!--?請假天數(shù)大于10天的要老板批準??-->
??<delegation?class="kellerdu.jbpm.delegation.NeedBossApproveDecision"/>
??<transition?name="need"?to="BossApprove"/>
??<transition?name="notNeed"?to="Decided"/>
?</decision>
?<join?name="Decided">
??<description>有一個先到達即進行父Token</description>
??<delegation?class="kellerdu.jbpm.delegation.DecidedJoin"/>
??<transition?to="DoSomething"/>
?</join>
?<decision?name="DoSomething">
??<description>
????根據(jù)請求的狀態(tài)決定。
????(1)“主管或者老板批準”-‘a(chǎn)pprove’:修改員工休假的總天數(shù),設(shè)定發(fā)給用戶E-Mail的信息。
????(2)“主管或者老板否決”-“disapprove”:設(shè)定發(fā)給用戶E-Mail的信息。
????(3)“撤銷”-"cancel"-設(shè)定發(fā)給用戶E-Mail的信息。如果主管批準,要發(fā)給主管消息說明已經(jīng)撤銷。
????</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">
??<!--?發(fā)送E-Mail消息給申請者,記錄請假日志?-->
??<delegation?class="kellerdu.jbpm.action.ProcessEndAction"/>
?</action>
</process-definition>

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=242438
在某一公司中,部門員工要休假的話需要部門主管的批準。如果休假天數(shù)大于10天的話,在部門主管的同意后,還必須上級主管批準。如果是部門主管要休假只要上級主管批準即可。在休假被批準之前,申請人可以撤銷休假申請。
每個員工還有多少天休假必須管理起來,在員工提交休假申請時要檢查申請?zhí)鞌?shù)是否超過可用天數(shù)。申請批準后,要在可用天數(shù)里減去申請?zhí)鞌?shù)。每次休假申請結(jié)束之后,不管通過未通過或是否取消,都必須記錄下來。主管在批復(fù)申請之后,系統(tǒng)要將批復(fù)結(jié)果Email給申請人。對于大于10天的申請,如果部門主管已批準同意而上級主管還未批準,這時申請人撤銷申請后,系統(tǒng)應(yīng)發(fā)Email通知部門主管申請已撤銷。?
??processdefinition.xml如下:














































































































Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=242438
posted on 2006-04-11 16:07 young 閱讀(221) 評論(0) 編輯 收藏 所屬分類: jbpm