亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

NetBPM工作流示例

系統(tǒng) 1766 0

請假流程描述

流程圖:

假設(shè):公司有兩級領(lǐng)導(dǎo),一級為主管(Chief),一級為老板(Boss),我們這里只是一個模擬,當(dāng)然現(xiàn)實生活中情況比這個更加復(fù)雜;-)

描述:

  1. 在某公司中,部門員工休假需要主管(Chief)的批準(zhǔn)。
  2. 如果休假天數(shù)大于10天,則 在部門主管同意后,還必須老板(Boss)批準(zhǔn)。
  3. 如果是部門主管請假則直接提交老板批準(zhǔn)。
  4. 在休假被批準(zhǔn)之前,申請人可以撤銷休假申請。
  5. 申請批準(zhǔn)后,對休假天數(shù)進行修改(也可以是其他業(yè)務(wù)數(shù)據(jù)處理)。 每次休假申請結(jié)束之后,不管通過未通過或是否取消,都必須記錄下來。
  6. 流程結(jié)束時,系統(tǒng)要把請假的結(jié)果信息Email給申請人。
  7. 對于大于10天的申請,如果部門主管已批準(zhǔn)同意而上級主管還未批準(zhǔn),這時申請人撤銷申請后,系統(tǒng)應(yīng)發(fā)Email通知部門主管申請已撤銷。

流程定義之processdefinition.xml

processdefinition.xml
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> 1 <? xmlversion="1.0" ?>
2 <!-- NOTE:在定義流程時,建議先畫出流程圖,然后再來定義,這樣思維清晰,也不易于出錯
3 關(guān)于processdefiniton.xml如何定義,請嚴格按照nPdl規(guī)定 -->
4 < process-definition >
5
6 <!-- =================================== -->
7 <!-- ==PROCESSDEFINITIONPROPERTIES== -->
8 <!-- =================================== -->
9 < name > 請假DEMO </ name >
10 < description > 該流程模擬公司的請假流程,MadeByLuBen </ description >
11 < responsible > ae </ responsible >
12
13 <!-- ====================== -->
14 <!-- ==START&ENDSTATE== -->
15 <!-- ====================== -->
16 < start-state name ="startleaverequest" >
17 < description > 提交請假單 </ description >
18 <!-- 定義了role,引擎在該start-state節(jié)點執(zhí)行時,就會把執(zhí)行者信息賦值給角色對應(yīng)的屬性“requester” -->
19 < role > requester </ role >
20 <!-- 在這里定義start-state的field,它表示該filed相關(guān)聯(lián)的屬性,并且在該state,它對屬性的訪問權(quán)利。
21 如果需要定義其在web表單上的操作界面,如何進行web表單顯示等,需要在webinterface.xml文件對應(yīng)節(jié)點補充該field -->
22 < field attribute ="startdate" access ="write-only-required" />
23 < field attribute ="enddate" access ="write-only-required" />
24 < field attribute ="leavedays" access ="write-only-required" />
25 < field attribute ="comment" access ="write-only" />
26 < transition to ="IsCancelFork" />
27 </ start-state >
28
29 <!-- 結(jié)束節(jié)點除名稱外不要定義其他 -->
30 < end-state name ="end" />
31
32
33 <!-- ====================== -->
34 <!-- ==Actions== -->
35 <!-- ====================== -->
36 <!-- 解釋:這里定義process-definition節(jié)點的action,有效的事件類型為:process-instance-start,process-instance-endandprocess-instance-cancel -->
37
38 <!-- 此處具體為:在流程結(jié)束的時候,發(fā)送E-Mail消息給申請者,記錄請假日志 -->
39 < action event ="process-instance-end"
40 handler ="NetBpm.Example.LeaveOfAbsence.EmailAction,NetBpm.Example.LeaveOfAbsence" on-exception ="log" >
41 <!-- 定義action參數(shù),供委托類實例化類調(diào)用方法時獲取使用。如這里的EmailAction的run方法發(fā)送郵件,需要知道發(fā)給誰,郵件標(biāo)題等等,那么
42 參數(shù)可以提供輔助 -->
43 < parameter name ="to" > previousActor </ parameter >
44 < parameter name ="subject" > 您提交了請假申請 </ parameter >
45 < parameter name ="message" > yourequestedaholidayfrom${startdate}to${enddate}withcomment${comment} </ parameter >
46 </ action >
47 <!-- 此處具體為:在流程結(jié)束的時候記錄請假日志,此處Log模擬注意:每個節(jié)點可以定義多個action -->
48 < action event ="process-instance-end"
49 handler ="NetBpm.Example.LeaveOfAbsence.LogLeaveInfoAction,NetBpm.Example.LeaveOfAbsence" on-exception ="log" >
50 < parameter name ="LogInfo" > 記錄請假日志?:) </ parameter >
51 </ action >
52
53 <!-- ================ -->
54 <!-- ==ATTRIBUTES== -->
55 <!-- ================ -->
56 <!-- 解釋:定義屬性值及其序列化方式。屬性值一般包括3類 -->
57 <!-- one:角色對應(yīng)的屬性 -->
58 < attribute name ="requester" type ="actor" />
59 < attribute name ="chief" type ="actor" />
60 < attribute name ="boss" type ="actor" />
61
62 <!-- two:所有acitivity-state(包括start-state)處需要更新的屬性,和用戶表單內(nèi)容對應(yīng) -->
63 < attribute name ="startdate" type ="date" />
64 < attribute name ="enddate" type ="date" />
65 < attribute name ="leavedays" type ="integer" />
66 < attribute name ="comment" type ="text" initial-value ="請假理由或者備注" />
67 < attribute name ="Chiefevaluationresult" type ="evaluation" />
68 < attribute name ="Bossevaluationresult" type ="evaluation" />
69
70 <!-- three:標(biāo)識屬性,該屬性不會在web界面上體現(xiàn),主來用來存儲流程標(biāo)識信息,供后面的邏輯處理使用 -->
71 <!-- 該屬性不會在界面上呈現(xiàn),在具體流程路徑中被設(shè)置以決定DecideWhichAction如何走 -->
72 < attribute name ="RunTrace" type ="text" />
73 <!-- 該屬性不會在界面上呈現(xiàn),該屬性被用來設(shè)置流程結(jié)束將要發(fā)送給用戶的郵件信息(郵件標(biāo)題,如果需要郵件內(nèi)容可擴展) -->
74 < attribute name ="ToUserEmailSubject" type ="text" />
75
76 <!-- =========== -->
77 <!-- ==NODES== -->
78 <!-- =========== -->
79 <!-- 定義流程包含的所有節(jié)點 -->
80
81 <!-- 定義decision節(jié)點,從decision可以流出多條邊(transition),這些邊可以目的地相同,也可以不同。
82 如下面,雖然decision分出了3條供選擇的邊,但是邊的目的地都是end節(jié)點,只是邊的名稱不同 -->
83 < decision name ="DecideWhichAction"
84 handler ="NetBpm.Example.LeaveOfAbsence.WhichWayDecision,NetBpm.Example.LeaveOfAbsence" >
85 < parameter name ="attribute" > RunTrace </ parameter >
86 < transition name ="approve" to ="end" >
87 < action event ="transition" handler ="NetBpm.Example.LeaveOfAbsence.AutoSetAttributesAction,NetBpm.Example.LeaveOfAbsence" on-exception ="log" >
88 < parameter name ="attribute" > ToUserEmailSubject </ parameter >
89 < parameter name ="setValue" > 您的請假申請已經(jīng)被批準(zhǔn)holidayfrom${startdate}to${enddate}withcomment${comment} </ parameter >
90 </ action >
91 </ transition >
92
93 < transition name ="disapprove" to ="end" >
94 < action event ="transition" handler ="NetBpm.Example.LeaveOfAbsence.AutoSetAttributesAction,NetBpm.Example.LeaveOfAbsence" on-exception ="log" >
95 < parameter name ="attribute" > ToUserEmailSubject </ parameter >
96 < parameter name ="setValue" > 您的請假申請沒有獲得批準(zhǔn),holidayfrom${startdate}to${enddate}withcomment${comment} </ parameter >
97 </ action >
98 </ transition >
99
100 < transition name ="requestercancel" to ="end" >
101 < action event ="transition" handler ="NetBpm.Example.LeaveOfAbsence.AutoSetAttributesAction,NetBpm.Example.LeaveOfAbsence" on-exception ="log" >
102 < parameter name ="attribute" > ToUserEmailSubject </ parameter >
103 < parameter name ="setValue" > 您取消了請假申請,holidayfrom${startdate}to${enddate}withcomment${comment} </ parameter >
104 </ action >
105 <!-- 請假人取消請假的時,如果主管已經(jīng)審批了,則需要發(fā)郵件通知他 -->
106 < action event ="transition" handler ="NetBpm.Example.LeaveOfAbsence.EmailChiefAction,NetBpm.Example.LeaveOfAbsence" on-exception ="log" >
107 <!-- -action的參數(shù)只能有3個,切記切記,調(diào)試的時候搞暈了 -->
108 < parameter name ="to" > role(chief) </ parameter >
109 <!-- <parametername="cancelMan">previousActor</parameter> -->
110 < parameter name ="subject" > 請假申請被取消啦 </ parameter >
111 < parameter name ="message" > requestedaholidayfrom${startdate}to${enddate}withcomment${comment} </ parameter >
112 </ action >
113 </ transition >
114 </ decision >
115
116
117 <!-- ====================== -->
118 <!-- ==CONCURRENTBLOCK== -->
119 <!-- ====================== -->
120 <!-- 解釋:定義并發(fā)塊,concurrent-block一定包括一個fork,一個join,且邊不可越出其界。concurrent-block是可以嵌套的 -->
121 < concurrent-block >
122 <!-- 定義fork,若沒有定義forkhandler,那么其在forkflow時將按照默認行為執(zhí)行 -->
123 < fork name ="IsCancelFork" >
124 < transition name ="CancelLeaveRequest" to ="RequestCancel" />
125 < transition name ="evaluation" to ="IsChiefDecision" />
126 </ fork >
127
128 <!-- 定義join,此處定義了joinhandler,則當(dāng)有forkedflow到達join時,將根據(jù)該委托判斷是否要激活父flow,
129 若沒有定義joinhandler,那么將按照默認行為(AndJoin委托類,也就是所有forkedflow都匯聚到達Join才激活父flow)執(zhí)行 -->
130 < join name ="joinbeforedecided" handler ="NetBpm.Example.LeaveOfAbsence.AnyOneJoin,NetBpm.Example.LeaveOfAbsence" >
131 < transition to ="DecideWhichAction" />
132 </ join >
133
134 < activity-state name ="RequestCancel" >
135 < description > 在請假申請被最終審批前,您可以在這里取消申請. </ description >
136 < role > requester </ role >
137 <!-- fieldsareoptional.theylimittheaccesstoattributesinanactivity -->
138 < field attribute ="startdate" access ="read-only" />
139 < field attribute ="enddate" access ="read-only" />
140
141 <!-- eg。請假理由備注先不被看到
142 <fieldattribute="leavedays"access="read-only"/>
143 <fieldattribute="comment"access="read-only"/>
144 -->
145 < action event ="perform-of-activity" handler ="NetBpm.Example.LeaveOfAbsence.AutoSetAttributesAction,NetBpm.Example.LeaveOfAbsence" on-exception ="log" >
146 < parameter name ="attribute" > RunTrace </ parameter >
147 < parameter name ="setValue" > requestercancel </ parameter >
148 </ action >
149 < transition to ="joinbeforedecided" />
150 </ activity-state > <span style=
分享到:

評論

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 激情综合五月亚洲婷婷 | 天天操夜夜 | 日韩精品免费一区二区 | 久久久久久在线 | 一区两区三不卡 | a亚洲欧美中文日韩在线v日本 | 色综合久久综合欧美综合网 | 九九热精品在线视频 | 四虎精品福利视频精品 | 变态 调教 视频 国产九色 | 非洲一级毛片 | 亚洲久操| 国产亚洲综合一区二区在线 | 伊人一区二区三区 | 欧美专区亚洲 | 亚洲视频精品在线观看 | 国产一区二三区 | 久久免费激情视频 | 8090成人午夜精品 | 日本一级成人毛片免费观看 | 久久天天躁狠狠躁夜夜呲 | 免费看搡女人的视频 | 亚洲精品高清国产麻豆专区 | 国产一二三区精品 | 一本一本久久a久久综合精品蜜桃 | 成人性生活免费视频 | 亚洲国产香蕉视频欧美 | 青青青国产免费全部免费观看 | 国产综合色在线视频区色吧图片 | 爱情片在线观看 | 97综合久久| 久久天天干 | 免费看美女吃男生私人部位 | 久久精品视频7 | 中文字幕亚洲综合久久 | 丝袜三级| 不卡的在线视频免费观看 | a高清免费毛片久久 | 国产69精品久久久久999小说 | 一级毛片短视频 | 91精品国产免费久久久久久青草 |