摘要:在日新月異的電子化、無紙化辦公新浪潮中,OA系統、ERP系統不斷普及,審批、收發文等工作流系統有著普遍性的使用需要,如何才能構建一個適用性強,且維護門檻低,使用方便的審批,收發文系統,是企事業用戶的核心需求。本文所述方案及相關平臺,已在多個企事業單位中得到很好的應用和反饋。
關鍵詞:工作流 審批 ERP 基于角色的訪問控制
0 引言
各類審批和收發文操作是企事業單位工作中非常頻繁的一個日常操作,是企事業單位加強管理的重要手段。充分利用企業內部的信息化工程,將主體信息正確、迅速的傳遞至目標人群,或者主體信息運轉于正確的流程之下,使企業在低成本的前提下高效運轉,而且定制性強,切合企業的需求,能夠方便更改流程,這是軟件業和企業一直共同奮斗的目標。在筆者開發定制的OA系統中,單據流程清楚,流轉準確無誤,且再定制性極強,學習成本低。
筆者是一位Java開發者,在工作流引擎這個領域首先是開源和大公司的產品之爭,國內的主流趨勢還是在開源領域。工作流引擎現今的趨勢是所見即所得的界面,定制性和友好性兼顧。使用開源工作流引擎如JBPM,Spring Work Flow等在完成的流程的設計后,當和UI、持久化及業務等工作進行集成時還有許多較專業的工作需要完成,對于沒有相關開發人員的企業來說,后續的維護和擴展缺乏獨立性,還要依賴于軟件企業。第二種方案是借鑒大公司的工作流產品,結合自己的業務,自己組織團隊開發一套引擎及產品,有時這也是一個好選擇。而另外一個方向就是軟件公司制作的針對某個領域的定制化較強的產品,且二次開發成本極低。各種方案各有利弊,筆者所使用的平臺其實就是上面提到的第三種類型,能夠在特定的領域直接實現業務流程的所見即所得。其實沒有完美的方案,只有最適合實際情況的方案,在資金、時間和人員的綜合考量下,客戶可以選擇最適合自己的項目方案。
1 工作流管理軟件的要素
工作流管理軟件顧名思義,是在工作流引擎的基礎上,定義及擴展出來的軟件,引擎是該軟件的核心。引擎的主要作用是定義流程中的規則,實現所見即所得的定義操作,且能夠進行導入導出流程操作,還應該具有流程跟蹤功能。但是引擎是不能獨立工作的,還需要定義完整一些周邊的模塊。首先就是UI(User Interface),針對現在主流的BS軟件,工作流需要有與客戶交互的界面,界面設計一般為表單設計的形式,表單將客戶的需求與工作流引擎結合起來。其次,為了提高系統的適應性和實用性,需要引入基于角色的控制訪問系統(RBAC),在筆者實際的開發和使用中,這些內容都必不可少。除了上面提到的必備要素外,根據實際的需要,工作流引擎也可以和其他的應用程序進行結合,如短信提醒,電子章使用等。
2 工作流引擎的要素
各種工作流引擎都有自己的一套元素定義,復雜的還會結合活動圖、狀態圖和PetriNet的知識,是不是覺得大學里UML沒學好了。但其實基本元素都是類似的,包括流程中的主體對象Object,流程中的節點或者說步驟節點Step,節點間流轉的動作Action,針對流轉動作能否成功進行的Rule。整個流轉過程可以稱為流程Process,某一次流轉的動作的成功也可以稱為一個小的流程,這是一個整體和局部的差別。前文提到了流程跟蹤功能,其實就是將每一次小的流程跟蹤記錄下來。
2.1 主體對象Object
主體對象指流轉過程中流轉的主體內容,可以是文檔,聲音,圖像等文件信息,也可以是請假信息等事件信息。這些對象一般在流程的開始和結束會有創建和最終處理的步驟,在整個流程過程中也可以進行修改。
2.2 節點Step
流程中的節點一般定義了該步驟具體信息,包括節點的類型,節點的實施者,節點對應的表單,節點需要調用的其他應用程序等。節點類型指該節點的類型,如會簽、會商和普通節點等。普通節點一般指某一個節點的實施者進行了成功的流轉動作,則流程進行至下一個節點,會簽指所有節點的實施者都進行了動作,再根據規則進行流轉,會商指該節點不光有實施者,還有參與者,參與者的意見不影響節點的進一步流程,但可以使實施者有更多的參考信息等。節點的實施者一般由上一級節點指定或者由工作流引擎提前定義好。節點的實施者可以是系統內定義的各種角色,職位,個體信息,由于引入了RBAC的概念,工作流系統能夠獲得更好的適應性和實用性,一般對實施者的定義還能進行多種范圍的交并集。如定義該節點的實施者是科長角色與某用戶的并集。
2.3 動作Action
流程中的動作與節點緊密相關,一般會為節點定義默認的動作供使用,在定義工作流時,可根據實際情況對指定的節點添加或減少動作。動作是節點與節點之間流轉的行為,而該行為成功與否,以及流程走向,則由下面介紹的規則來決定。
2.4 規則Rule
規則定義在動作之上,動作可以理解成把節點間連接起來的線的起點,而動作則是線能否通過的關鍵了。規則的定義內容由具體的需求來決定,也受工作流引擎的限制。在筆者所述的系統中,工作流引擎中Rule的機制如圖,一個動作可以有幾個具有優先級的Rule集合。當某一個高優先級的Rule集合通過時,則忽略其他的Rule集。每個Rule集中也能定義各個Rule之間的關系,最常見的為與或關系。
2.5 流程Process
這里的流程可以有兩個概念,分別指整體流程和局部的流程單元。針對最小的流程單元來說,實際就是指工作流程中的最小的不可分割的一個整體,一般至少包含兩個節點,一個動作和一個規則集。
3 基于FIX平臺的收發文系統應用方案
收文流程指辦公室部門,收到其他OA系統或郵件系統的文檔和材料后,由上至下的發送至本單位的各個職員層次。在這里,主體對象Object就為從其他OA系統或郵件系統收到的文檔和材料,文檔的流轉過程就是整體的流程Process。流程中的節點和動作一般在設計完流程之后變動的較少,而規則決定了具體如何流轉,一般需要進行多次覆蓋所有動作和規則的調試。從如下所見即所得的工作流設計上可以很形象的看到主體對象如何從一個節點流轉至另一個節點,直到最終發送至最基層職員,則收文流程結束。
發文流程則是由下至上的流程,由基層職員擬稿,上級層層審批后進行發稿。最終一般由辦公室部門統一發稿至相關人員,流程相對收文流程來說沒有那么復雜。
下面會詳細介紹下開發中各個元素的細節,限于本文篇幅,著重介紹收文流程。
3.1 主體對象的創建
主體對象的創建其實也是一個特殊的節點對象,該流程一般由指定的人員創建主體對象,然后確定下一級簽發節點的實施人并觸發流程動作。在實際項目中,主體對象為一個Word文檔內容及若干附件。
3.2 節點對象的定義
之后是進行節點對象的定義,首先是節點類型的選擇,在收文流程中可以看到簽發和收文等各級節點,這些節點分為普通和會簽節點兩類,會簽節點的概念在前面已經提及,即需要所有的實施人都完成動作后,流程才會繼續流轉下去。節點對象的定義還需要設置其他一些屬性:將已開發完成的表單對象指定給節點、定義節點對象的實施者,如實施者對應的角色、實施者對應的上級節點指定的字段,定義節點的動作種類。如簽發后存在同意和退回兩個動作選擇,在上面的流程圖中,為了流程圖的清晰,隱藏了退回動作。
3.3 默認動作和自定義動作
在上一節中提到,動作是由特定節點自己定義的,系統存在默認動作和自定義動作兩類。流程的默認動作由整個流程層次定義,定義完后,添加的新節點都默認有這些動作。開發人員能夠在此基礎上增減動作類型。如簽發節點,可以在默認的同意和退回節點基礎上,添加歸檔節點,并直接流轉至最終的文檔歸檔節點。這樣就能滿足某些只需要簽發的領導查看的文檔,瀏覽完文檔后即可以直接歸檔了。
3.4 規則的定義
針對規則的定義,我們還是舉簽發節點的例子,這級節點的實施人進行同意動作時,規則將會驗證下一級節點的實施人,如若分管領導的字段未設置,則流程不能進行下去,將會直接提示簽發節點的實施人需要設置發送至分管領導。
3.5 其他
在流程進行過程中還可以添加各類其他節點,如文件分發節點即為發送文件至各個用戶的個人郵箱,還可以添加存儲過程的調用等各類節點。
在流程中,該系統將會記錄流程進行的細節,記錄內容包括工作流進行中的幾個要素:如在該流程中,某個時間某個節點,某某實施人進行了某某動作的操作。
4 結束語
方正FIX平臺是由方正國際軟件公司開發的一款解決方案軟件,有OA,ERP,CRM,PM等各類模塊,重點針對的也是各類沒有很強開發能力的中小企業和事業政府部門。該軟件簡單易用,核心競爭力也是定制性和再開發成本較低,企業完全可以定制自己的各種流程。筆者也參與了該軟件的開發,該軟件的工作流引擎也十分強大,最新版本更實現了多線程的技術,能夠很好的幫助企事業單位提高生產效率,在筆者開發多個系統中得到了很好的應用和反饋。
參考文獻:
[1]David F. Ferraiolo,Ravi S. Sandhu,Serban Gavrila,et al. Proposed NIST standard for role-base access control[J].ACM Transactions on Information and Systems Security,2001,4(3):224~274.
[2]丁柯,金蓓弘,馮玉琳.事務工作流的建模和分析[J]計算機學報,2003,26(10):1304-1311.
[3]任軍,李勝利.基于J2EE和工作流構建BS文獻資料管理系統[J]現代電子技術,2005,14.
[4]王炎,李景文,黃俊華.基于工作流和GIS的集成信息管理系統框架設計[J] 地理空間信息,2006,12,4(6).