在說這個案例之前先向大家轉發一個簡單的招聘信息,我們團隊目前需要招聘兩名技術助理人員,跟隨我們做一些產品開發和技術咨詢工作,歡迎有志同道合的朋友與我們合作:http://job.cnblogs.com/offer/19632/。
一、案例業務流程說明
在前一篇文章AgileEAS.NET SOA 中間件平台工作流系統介紹之中我簡單的向大家介紹了AgileEAS.NET SOA平台工作流系統的基本介紹,本文我將向大家以一個真實的案例向大家介紹AgileEAS.NET SOA平台工作流系統的應用。
今天我們的例子來自於醫療信息化之中的一個簡單案例,關於醫院葯庫/葯房葯品報損業務的處理過程,現實業務流程如以定義:
目前的業務流程是這么要求的,由葯房管理人員發起一個報損申請,然后由葯房負責人審批,早批不通過則由葯房管理人員修改后再次提交,通過則由葯劑科長審核,審核通過之后由葯房管理人員確認報損,否則終止本次報損業務處理。
對於不同地域、不同規模、不同經營性質的醫院來說,對於葯品的報損處理流程都可能不一樣,那么擺在醫療開發商面前的一個很麻煩問題就是業務流程的定制處理,對於此類問題使用傳統方法一直是一個非常棘手的問題,可能不同醫院的業務流程的變動必須會導致程序代碼的變動,進行造成醫療軟件開發商產品版本管理混亂、產品實施周期過長進而導致開發商的間接管理成本和項目總體成本急劇提高。
二、應用AgileEAS.NET SOA平台工作流重組流程
對於上述問題,我們可以使用AgileEAS.NET SOA平台所提供的工作流系統進行業務流程自定義,使用工作流平台驅動業務數據達到業務流程再造的目的。
我們來仔細看上述業務流程就會發現,這是一個及其經典的“申請-早批-確認”業務處理流程,對於“申請”和“確認”都是一個比較固定的操作,但是對於“申請-早批-確認”的處理過程,則是一個極不確定的過程,比如一個小型醫療機構可以就需要一個簡單的審批即可,但是對於一個大型的醫療機構,其審批可以不止二級審批,可能會有三級或多級審批處理。
如果我們開發兩個功能模塊“葯房報損申請/申批”、“葯房報損確認”以及定義一個工作流“葯房報損申批流程”,並讓“葯房報損申批流程”與“葯房報損申請/申批”相結合,由工作流驅動“葯房報損申請/申批”按照“葯房報損申批流程”進行處理,並在處理完成之由“葯房報損確認”完成葯品報損,那么我們是否就可以實現這種高度靈活的流程自定義呢,回答當然是OK,那么接下來我們來看看怎么辦到這樣的效果吧。
三、如果做?一步一步來
我們來先開始模塊“葯房報損申請/申批”,其最終效果如下:
接下來我們來定義工作流“葯房報損申批流程”:
流程權限設定:
流程權限設定中包含流程發起權限及各狀態的處理權限,其設置方式都一樣,同AgileEAS.NET SOA平台中的模塊權限設置保持一致,我們在些為賬號xyf設定流程發起權限和“審請狀態”的處理權限,給帳號zhx設定“審請狀態”的處理權限,給賬號Administrator設置“審請狀態”的處理權限。
接下來需要綁定工作流與其驅動的業務模塊之間的關聯關系:
同時也需要在模塊代碼之中完成與工作流的綁定:
在功能模塊中需要做兩個地方的綁定,第一個在模塊的頭部需要標記明確WorkflowAddIn屬性,用於聲明這是一個受工作流驅動的功能模塊,另一個是需要在功能模塊中的聲音一個類型為Guid的屬性,並且標記WorkflowInstanceId屬性,用於工作流向功能模塊寫入當前工作流實例,至此為止,工作流定義及流程自定義工作完成,接下來我們看看運行效果吧。
四、如果做?一步一步來
首先,我們使用帳號xyf登錄,我們會看到如下功能:
我們打開“發起流程”:
或者直接打開“葯房報損申請”模塊發起工作流:
提交完成之后打開“我的申請”會看到剛才我們所發起的實例:
接下來,我們切換到賬號“zhx”登錄,並且打開我的待辦:
完成一級審批“葯房報損申請”:
打開已辦事宜:
接下來,我們切換到賬號“888888”登錄,並且打開我的待辦:
完成二級審核“葯房報損申請”:
打開已辦事宜:
最后我們切換到賬號“xyf”,並打開 “葯房報損確認”模塊:
至此,葯房葯品報損業務處理演示完成,若審批流程發生變更,則只需要項目實施人員根據客戶的業務流程修改工作流定義,而不需要修改程序代碼,實現流程的自定義。
五、AgileEAS.NET 4.0 下載
有關於平台最新版本的最新發布版本的程序集、類庫手冊、相關資料,請大家從AgileEAS.NET平台的官網http://www.smarteas.net/進行下載,官網設有獨立的下載頁面,從這里下載:官網下載頁面。
六、如何聯系我們
如果您在使用AgileEAS.NET開發平台中有什么問題,請使用如下幾種聯系方式或者溝通方式。
1、官方網站:
AgileEAS.NET平台:http://www.smarteas.net/
敏捷軟件工程實驗室:http://www.agilelab.cn/




![66`9L`WWNIVY)`C[3]B$5ZP 66`9L`WWNIVY)`C[3]B$5ZP](/image/aHR0cHM6Ly9pbWFnZXMuY25ibG9ncy5jb20vY25ibG9nc19jb20vZWFzdGphZGUvMjAxMjAyLzIwMTIwMjI2MDExNzEyMjIyMC5qcGc=.png)


![CUCJIE[)F{@75%Y]XN2LFRI CUCJIE[)F{@75%Y]XN2LFRI](/image/aHR0cHM6Ly9pbWFnZXMuY25ibG9ncy5jb20vY25ibG9nc19jb20vZWFzdGphZGUvMjAxMjAyLzIwMTIwMjI2MDExNzE4ODQ2Mi5qcGc=.png)
![BH6]J4Q6_RH0H7SRE[%YG$H BH6]J4Q6_RH0H7SRE[%YG$H](/image/aHR0cHM6Ly9pbWFnZXMuY25ibG9ncy5jb20vY25ibG9nc19jb20vZWFzdGphZGUvMjAxMjAyLzIwMTIwMjI2MDExNzIxMzE0OC5qcGc=.png)



![V]OUMBWZ~V(}(DWQ294H1KX V]OUMBWZ~V(}(DWQ294H1KX](/image/aHR0cHM6Ly9pbWFnZXMuY25ibG9ncy5jb20vY25ibG9nc19jb20vZWFzdGphZGUvMjAxMjAyLzIwMTIwMjI2MDExNzQwNzIzMS5qcGc=.png)






![313OFP%R%FH_3]N)LSANIFO 313OFP%R%FH_3]N)LSANIFO](/image/aHR0cHM6Ly9pbWFnZXMuY25ibG9ncy5jb20vY25ibG9nc19jb20vZWFzdGphZGUvMjAxMjAyLzIwMTIwMjI2MDExODA4MzQyMC5qcGc=.png)
![JIIL}C)~(0AI]QRG3_~~Y3A JIIL}C)~(0AI]QRG3_~~Y3A](/image/aHR0cHM6Ly9pbWFnZXMuY25ibG9ncy5jb20vY25ibG9nc19jb20vZWFzdGphZGUvMjAxMjAyLzIwMTIwMjI2MDExODE5ODcwOS5qcGc=.png)
![L3O25XZ[%XP]H8Z{_BXF$Y3 L3O25XZ[%XP]H8Z{_BXF$Y3](/image/aHR0cHM6Ly9pbWFnZXMuY25ibG9ncy5jb20vY25ibG9nc19jb20vZWFzdGphZGUvMjAxMjAyLzIwMTIwMjI2MDExODIyOTIwLmpwZw==.png)

