文/車宇 羅釗航
辦公流程信息化是企業(yè)進(jìn)入信息化辦公模式的重要步驟,也是當(dāng)前各行業(yè)進(jìn)行產(chǎn)業(yè)轉(zhuǎn)型與升級(jí)的主要手段。
開發(fā)一套完整的以流程為核心的辦公系統(tǒng)有較高的復(fù)雜度,往往牽涉到數(shù)十個(gè)辦公流程,多種審批流結(jié)構(gòu),上百個(gè)用戶進(jìn)行權(quán)限管理等內(nèi)容。每條流程內(nèi)部也包括多個(gè)步驟,每一步驟也將包括責(zé)任人、處理內(nèi)容、處理策略等多個(gè)需要追蹤的信息屬性。
將共通的模塊集成為系統(tǒng)化的開發(fā)引擎,將代碼進(jìn)行智能化封裝,能夠大幅度的降低流程信息化系統(tǒng)開發(fā)的難度。本文探討流程引擎平臺(tái)建設(shè)的各模塊思路。
流程引擎平臺(tái)集成流程設(shè)計(jì)、表單設(shè)計(jì)、用戶管理、策略管理等模塊。在前端提供圖形化的流程設(shè)計(jì)界面,通過封裝的引擎,將前端繪制的流程自動(dòng)轉(zhuǎn)化為相應(yīng)的代碼,對(duì)數(shù)據(jù)庫進(jìn)行操作。
整體思路為用戶在前端界面進(jìn)行流程繪制,平臺(tái)將繪制完成的流程按照相應(yīng)策略封裝于數(shù)據(jù)庫表單中,并且生成程序分配給特定用戶。特定用戶發(fā)起流程,根據(jù)用戶填寫的信息和數(shù)據(jù)庫表單中的流程信息,引擎按照策略生成對(duì)應(yīng)的數(shù)據(jù)庫實(shí)例。平臺(tái)根據(jù)策略,將對(duì)應(yīng)的數(shù)據(jù)實(shí)例發(fā)送至對(duì)應(yīng)的用戶,收集用戶的錄入信息與審批信息,進(jìn)行流程實(shí)例的更新運(yùn)轉(zhuǎn)。
主要分為前端開發(fā)層,模塊集成層與數(shù)據(jù)結(jié)構(gòu)層共三級(jí)架構(gòu)。如圖1所示。
用戶前端通過圖形界面的方式進(jìn)行流程繪制,繪制界面可引用成熟的相關(guān)控件,繪制完成后的流程基本遵照固定的格式,包括一個(gè)流程起點(diǎn),零到多個(gè)的流程中間點(diǎn),一個(gè)或多個(gè)流程終點(diǎn),連接各流程處理點(diǎn)的箭頭,每個(gè)流程處理點(diǎn)綁定對(duì)應(yīng)表單。
繪制完成后的流程按照策略存入數(shù)據(jù)庫,利用多個(gè)數(shù)據(jù)表完成流程的數(shù)據(jù)化。
表1-流程表:包括流程ID,流程名稱,流程起點(diǎn)ID,對(duì)應(yīng)表單ID等屬性。
表2-流程處理點(diǎn)表:包括流程處理點(diǎn)ID,處理點(diǎn)名稱,對(duì)應(yīng)表單ID,審批人范圍,前流程ID(可為空),后流程ID(可為空)等屬性。
圖1:辦公自動(dòng)化系統(tǒng)開發(fā)引擎平臺(tái)整體架構(gòu)
其中流程表的流程起點(diǎn)ID與流程處理表的流程處理ID有對(duì)應(yīng)關(guān)系。流程的每一個(gè)處理點(diǎn)都被統(tǒng)一存入表2中,系統(tǒng)在遍歷流程時(shí),從表1讀取起點(diǎn)ID,再于表2檢索對(duì)應(yīng)ID的流程處理點(diǎn),再通過表2的后流程去檢索下一步的處理點(diǎn)ID,直到獲取整個(gè)流程。
按照規(guī)則,每個(gè)流程都對(duì)應(yīng)一份或多份表單,表單包含流程需要錄入與處理的各項(xiàng)數(shù)據(jù),將必要的數(shù)據(jù)提供給審批人,并將審批人的處理意見記錄。
每個(gè)流程處理點(diǎn)對(duì)應(yīng)一份表單,也可以通過邏輯判斷來對(duì)應(yīng)多份。每個(gè)處理點(diǎn)將表單分為展示信息,錄入信息和無關(guān)信息三部分。
表單在單獨(dú)的界面進(jìn)行創(chuàng)建,創(chuàng)建完成的表單將格式保存于數(shù)據(jù)庫表中,將第三方控件的格式文件保存,數(shù)據(jù)庫采用主從表的方式存儲(chǔ)表單信息。
流程設(shè)計(jì)完成后,在數(shù)據(jù)庫中存儲(chǔ)了整個(gè)流程的數(shù)據(jù)結(jié)構(gòu)。整個(gè)流程被封裝為一套程序,可以授權(quán)給指定用戶進(jìn)行訪問。
用戶啟動(dòng)指定流程,引擎讀取數(shù)據(jù)庫中的流程結(jié)構(gòu),按照從多個(gè)數(shù)據(jù)表中形成的數(shù)據(jù)結(jié)構(gòu),調(diào)用封裝好的代碼,展示流程表單界面,并提供錄入信息與操作流程的功能。
將具備完整功能性的程序稱為流程(例:人員加班流程),并將每一個(gè)單獨(dú)的調(diào)用稱為流程實(shí)例。
用戶發(fā)起流程后,引擎自動(dòng)創(chuàng)建一個(gè)流程實(shí)例。實(shí)例的數(shù)據(jù)包括所屬流程ID,所處流程點(diǎn)ID,對(duì)應(yīng)表單ID,發(fā)起人編號(hào),流程狀態(tài),流程各項(xiàng)錄入的信息等。同樣通過主從表的方式,來解決屬性數(shù)量不定的情況。
選擇發(fā)起對(duì)應(yīng)流程,或者打開待處理的某個(gè)流程后,對(duì)應(yīng)該流程步驟的表單就會(huì)展示,將無關(guān)信息隱藏,將展示信息進(jìn)行只讀展示,為錄入信息提供相應(yīng)的錄入或編輯工具。并提供相應(yīng)的發(fā)送、退回、打印等功能。
流程實(shí)例表中,會(huì)保存上一步處理者,當(dāng)前處理者和下一步處理者三項(xiàng)屬性,用于確定流程的流轉(zhuǎn)方向。
實(shí)例狀態(tài)是流程實(shí)例的一項(xiàng)重要屬性。一般來說,可以將狀態(tài)分為發(fā)起中、待審批、被退回、被結(jié)束、已完成等。與實(shí)例所處步驟這一屬性相結(jié)合,可以明確流程所處的具體階段。
開發(fā)引擎平臺(tái)通過對(duì)第三方控件的調(diào)用,也可以便捷的支持流程數(shù)據(jù)的餅圖、柱狀圖、曲線圖等分析方法的實(shí)現(xiàn)。
辦公自動(dòng)化系統(tǒng)可以顯著的提高業(yè)務(wù)工作效率,實(shí)現(xiàn)過去難以實(shí)現(xiàn)的數(shù)據(jù)分析統(tǒng)計(jì),展現(xiàn)信息化發(fā)展的優(yōu)勢(shì)。開發(fā)引擎平臺(tái)則能顯著提高辦公自動(dòng)化系統(tǒng)的開發(fā)效率,無需關(guān)注代碼本身,即可將業(yè)務(wù)需求與工作流程形成一整套辦公自動(dòng)化程序。