李 峰
(湖北三江航天紅峰控制有限公司 第六研究室, 湖北 孝感432000)
審批流程基于工作流技術(shù),目的是通過網(wǎng)絡(luò)實(shí)現(xiàn)某個(gè)特定的任務(wù),即實(shí)現(xiàn)某個(gè)特定的業(yè)務(wù)流程[1]。 一般而言,審批流程的流轉(zhuǎn)過程如下:申請人填寫申請單,提交給系統(tǒng),單據(jù)自動進(jìn)入審批環(huán)節(jié),按照預(yù)先設(shè)定的工作流程和條件,單據(jù)被送至各級審批人進(jìn)行審批處理,直至流程結(jié)束[2]。 某企業(yè)按照其集團(tuán)公司管理業(yè)務(wù)信息化全覆蓋的要求,分析相關(guān)業(yè)務(wù)需求,依托現(xiàn)有協(xié)同辦公自動化系統(tǒng),以降低后續(xù)審批流程的實(shí)現(xiàn)難度和縮減開發(fā)周期為目的,在工程實(shí)踐的基礎(chǔ)上,結(jié)合普元EOS Studio 6.2集成開發(fā)平臺特點(diǎn),初步實(shí)現(xiàn)了基于普元平臺的審批流程通用化設(shè)計(jì)。
普元Primeton EOS 平臺是一款建立在J2EE 基礎(chǔ)之上的面向服務(wù)體系架構(gòu)SOA(Service Oriented Architecture)的應(yīng)用軟件平臺,采用多層體系結(jié)構(gòu),EOS 的SOA 架構(gòu)劃分為資源層、構(gòu)件層、服務(wù)層、流程層和協(xié)同層5 個(gè)層次[3],提供面向構(gòu)件技術(shù)實(shí)現(xiàn)企業(yè)級應(yīng)用開發(fā)、運(yùn)行、管理、監(jiān)控和維護(hù)的中間件平臺[4]。
普元Primeton EOS 平臺的功能:EOS 構(gòu)件運(yùn)行和管理環(huán)境、EOS 工作流、EOS 構(gòu)件庫和EOS 構(gòu)件集成開發(fā)環(huán)境四大模塊[5]。 普元EOS 集成開發(fā)環(huán)境(EOS Studio)是集設(shè)計(jì)、開發(fā)、組裝、調(diào)試、維護(hù)、部署、監(jiān)管和發(fā)布于一體的集成開發(fā)環(huán)境,提供對SOA應(yīng)用和服務(wù)全生命周期的開發(fā)、維護(hù)和管理功能[6]。
在審批流程的設(shè)計(jì)和開發(fā)過程中,不僅要考慮平臺對單個(gè)業(yè)務(wù)流程的支持,同時(shí)要兼顧擴(kuò)展性和易用性,并能快速靈活適應(yīng)企業(yè)越來越多的網(wǎng)上審批管理需求,為后續(xù)審批流程的設(shè)計(jì)和開發(fā)提供良好的基礎(chǔ)和借鑒,這就要求采用適當(dāng)?shù)捏w系結(jié)構(gòu)統(tǒng)一設(shè)計(jì)規(guī)劃。 綜合普元平臺SOA 架構(gòu)的應(yīng)用層次及普元EOS Studio 基本開發(fā)過程,立足企業(yè)審批流程的共同特點(diǎn),本文采用層次化結(jié)構(gòu)及模塊化設(shè)計(jì)思想來實(shí)現(xiàn)審批流程的通用化設(shè)計(jì),按照普元EOS構(gòu)件包常用開發(fā)內(nèi)容,將基于普元EOS 的審批流程平臺劃分為5 層:數(shù)據(jù)資源層、頁面資源層、展現(xiàn)邏輯層、業(yè)務(wù)邏輯層和業(yè)務(wù)流程層,各層分別對應(yīng)構(gòu)件包中的數(shù)據(jù)模型、頁面資源、頁面流、邏輯流和流程,其中數(shù)據(jù)資源層實(shí)現(xiàn)數(shù)據(jù)建模,完成數(shù)據(jù)集的通用化設(shè)計(jì);頁面資源層即用戶界面層,負(fù)責(zé)頁面顯示,實(shí)現(xiàn)頁面的通用化設(shè)計(jì);展現(xiàn)邏輯層需要調(diào)用頁面資源層和業(yè)務(wù)邏輯層的內(nèi)容進(jìn)行組合,以實(shí)現(xiàn)整個(gè)功能的展示,并管理頁面和頁面間的跳轉(zhuǎn)關(guān)系,展現(xiàn)邏輯層實(shí)現(xiàn)頁面流的通用化設(shè)計(jì),而頁面流的通用化設(shè)計(jì)依賴于頁面的通用化設(shè)計(jì)和邏輯流的通用化設(shè)計(jì);業(yè)務(wù)邏輯層負(fù)責(zé)完成具體業(yè)務(wù)邏輯,實(shí)現(xiàn)邏輯流的通用化設(shè)計(jì);業(yè)務(wù)流程層用于實(shí)現(xiàn)包含人工和自動的業(yè)務(wù)活動的工作流,可為業(yè)務(wù)流程層的流程常用功能實(shí)現(xiàn)通用化設(shè)計(jì)。
數(shù)據(jù)集設(shè)計(jì)的第一步為數(shù)據(jù)庫表格設(shè)計(jì),需對各審批流程新建數(shù)據(jù)庫業(yè)務(wù)表格,該表用于存儲審批流程流轉(zhuǎn)時(shí)需要傳遞的流程相關(guān)參數(shù)及業(yè)務(wù)表單各項(xiàng)內(nèi)容。 在進(jìn)行通用化設(shè)計(jì)時(shí),各流程對應(yīng)的數(shù)據(jù)庫表格均需包括主鍵、流程實(shí)例ID、流程發(fā)起人、流程發(fā)起人ID、申請單位、申請單位ID、標(biāo)題、創(chuàng)建日期、修改日期、申請狀態(tài)、記錄狀態(tài)及業(yè)務(wù)表單相關(guān)內(nèi)容字段,之后為審批流程創(chuàng)建對應(yīng)的構(gòu)建包,通過數(shù)據(jù)建模工具導(dǎo)入數(shù)據(jù)實(shí)體,即導(dǎo)入對應(yīng)的數(shù)據(jù)庫表格,即可將數(shù)據(jù)庫表或視圖轉(zhuǎn)換為數(shù)據(jù)構(gòu)件,從而完成數(shù)據(jù)集的設(shè)計(jì)。
各審批流程按頁面功能的不同,分為申請頁面、審核頁面、查看頁面、查詢統(tǒng)計(jì)頁面及導(dǎo)出Excel 頁面。 其中,申請頁面即為業(yè)務(wù)表單,一般需要設(shè)計(jì)為審批流程對應(yīng)的單據(jù)樣式;審核頁面承擔(dān)流程過程中各環(huán)節(jié)的審批操作,包括審核、駁回、會簽、傳閱、結(jié)束等;查看頁面供流程參與者追蹤已辦任務(wù),查驗(yàn)已辦理表單及流程進(jìn)展情況,同時(shí)提供撤回功能;查詢統(tǒng)計(jì)頁面按角色主要分為審批流程管理員頁面及流程發(fā)起人頁面,可按條件進(jìn)行組合查詢,并可聯(lián)查相應(yīng)表單內(nèi)容,區(qū)別是查詢范圍為全部流程或個(gè)人發(fā)起流程;導(dǎo)出Excel 頁面用來設(shè)計(jì)導(dǎo)出Excel 表格樣式。 完成上述不同頁面設(shè)計(jì),即可實(shí)現(xiàn)流程的發(fā)起、辦理、監(jiān)督、管理及統(tǒng)計(jì)分析等常用功能。
為更好的實(shí)現(xiàn)各審批流程對應(yīng)的業(yè)務(wù)需求,在相應(yīng)頁面資源中通過創(chuàng)建JS 文件對各業(yè)務(wù)表單內(nèi)容及字段進(jìn)行數(shù)據(jù)校驗(yàn),并在其中實(shí)現(xiàn)常用頁面按鈕所調(diào)用的相關(guān)函數(shù)及其相應(yīng)功能。 如申請人用來提交給部門領(lǐng)導(dǎo)的發(fā)送函數(shù);審核過程中發(fā)送給后繼環(huán)節(jié)中的哪些環(huán)節(jié)的提交函數(shù);發(fā)送目標(biāo)只有一人時(shí)的一鍵發(fā)送函數(shù);審核頁面中將流程返回給某一環(huán)節(jié)的退回函數(shù);流程最后一個(gè)環(huán)節(jié)用來直接結(jié)束工作流的結(jié)束函數(shù);利用子流程實(shí)現(xiàn)傳閱范圍選擇的分發(fā)函數(shù);用于結(jié)束子流程實(shí)現(xiàn)傳閱功能的完成函數(shù);判斷上傳附件是否為空的校驗(yàn)函數(shù);將查詢結(jié)果導(dǎo)出至Excel 表格的導(dǎo)出函數(shù);實(shí)現(xiàn)Web 頁面轉(zhuǎn)換為PDF 文件的打印函數(shù);查詢用戶所有待辦任務(wù)及已辦任務(wù)的查詢函數(shù)等。
頁面流由一系列頁面、從這些頁面發(fā)出的用戶請求,以及系統(tǒng)為響應(yīng)用戶請求而執(zhí)行的邏輯處理所組成。 由于審批流程主要包括申請和審核兩大環(huán)節(jié),其業(yè)務(wù)處理過程不同,因而需要分別設(shè)計(jì)申請頁面流和審核頁面流。 本文將申請?zhí)峤?、查看已辦、查詢統(tǒng)計(jì)及導(dǎo)出Excel 功能統(tǒng)一為申請頁面流,由頁面圖元、賦值圖元、邏輯流、JSP 頁面、連線、開始圖元及結(jié)束圖元組成,如圖1 所示。
圖1 申請頁面流Fig. 1 Apply Page Flow
圖1 中頁面圖元主要包括申請頁面“input”,查詢統(tǒng)計(jì)頁面“query”,導(dǎo)出“excel” 頁面設(shè)置為結(jié)束圖元“導(dǎo)出Excel”的返回頁面,查看已辦任務(wù)的“view”頁面設(shè)置為結(jié)束圖元“查詢已辦任務(wù)”的返回頁面,邏輯流包括“getProcessDefID”用來根據(jù)流程定義名稱獲取流程ID,邏輯流“insert”用來保存申請時(shí)填寫的業(yè)務(wù)表單數(shù)據(jù),并創(chuàng)建和啟動流程實(shí)例,邏輯流“view”用來獲取業(yè)務(wù)詳細(xì)信息及審核意見信息,邏輯流“get”根據(jù)業(yè)務(wù)實(shí)際情況,將查詢種類分為業(yè)務(wù)管理員查詢、個(gè)人申請查詢、個(gè)人參與查詢及個(gè)人所有查詢,邏輯流“delete”和“teminate”用來實(shí)現(xiàn)授權(quán)用戶的流程刪除和終止操作。
審核頁面流主要實(shí)現(xiàn)審批單據(jù)的展示及提交,同樣由賦值圖元、邏輯流、JSP 頁面及連線組成。 如圖2 所示。
圖2 審核頁面流Fig. 2 Audit Page Flow
圖2 中的頁面圖元為審核頁面“audit”,邏輯流主要包括獲取業(yè)務(wù)數(shù)據(jù)和獲取常用詞的兩個(gè)通用邏輯流,以及用于審核提交的邏輯流“auditSubmit”,該審核頁面流不僅可以完成正常審核時(shí)的邏輯處理,同時(shí)可以完成申請單被駁回至申請人重填后審核時(shí)的邏輯處理。
邏輯流用于完成后端業(yè)務(wù)功能,通過調(diào)用運(yùn)算邏輯,將處理后的數(shù)據(jù)返回給頁面流,以實(shí)現(xiàn)特定的功能。 運(yùn)算邏輯又稱BL(BizLet)方法,基于Java 代碼實(shí)現(xiàn),用于完成特定的計(jì)算處理任務(wù)。 按照對應(yīng)的頁面流,邏輯流主要分為申請邏輯流和審核邏輯流,由于各類邏輯流又可嵌套,用以實(shí)現(xiàn)不同功能的一個(gè)或多個(gè)子邏輯流,因而在邏輯流的通用化設(shè)計(jì)過程中,更為重要的是設(shè)計(jì)供申請邏輯流和審核邏輯流調(diào)用的各類子邏輯流。
申請邏輯流主要為保存業(yè)務(wù)表并創(chuàng)建啟動流程實(shí)例的子邏輯流,用來實(shí)現(xiàn)申請?zhí)峤患皠?chuàng)建流程實(shí)例;審核邏輯流主要為保持業(yè)務(wù)表并審核辦理審批單的子邏輯流,用來實(shí)現(xiàn)審批單的修改提交、審批辦理及審核提交;供申請邏輯流和審核邏輯流調(diào)用的通用子邏輯流包括設(shè)置附件信息及保存附件的子邏輯流;調(diào)整附件順序的子邏輯流;刪除已上傳附件的子邏輯流;獲取組織機(jī)構(gòu)的子邏輯流;獲取特定組織機(jī)構(gòu)下全體人員信息的子邏輯流;臨時(shí)保存申請信息的子邏輯流;臨時(shí)保存審核信息的子邏輯流;查詢某崗位下全部人員信息的子邏輯流;設(shè)置下一個(gè)流程環(huán)節(jié)參與者的子邏輯流;設(shè)置審批流流轉(zhuǎn)至下一環(huán)節(jié)時(shí)在待辦任務(wù)中顯示基本信息的子邏輯流;刪除業(yè)務(wù)數(shù)據(jù)及流程信息的子邏輯流;判斷當(dāng)前用戶是否擁有某種角色的子邏輯流;根據(jù)流程定義名稱獲取流程定義ID 的子邏輯流;保存申請記錄日志的子邏輯流;保存審核記錄日志的子邏輯流;獲取業(yè)務(wù)詳細(xì)信息的子邏輯流;審核環(huán)節(jié)查詢業(yè)務(wù)數(shù)據(jù)及之前審核意見的子邏輯流;查看已辦審批單的子邏輯流等。
普元Primeton EOS 工作流是基于EOS 平臺上的工作流管理系統(tǒng),屬于EOS 產(chǎn)品上的一個(gè)業(yè)務(wù)工具選件。 在工作流的建立階段,應(yīng)盡量避免普適性工作流的存在,制定較為準(zhǔn)確的工作流程,以提高工作流審批的效率和準(zhǔn)確性,因而本文提出的工作流通用化設(shè)計(jì),并不是針對工作流設(shè)計(jì)本身,而是針對工作流常用輔助功能在業(yè)務(wù)流程層進(jìn)行的通用化設(shè)計(jì),且主要依賴創(chuàng)建并調(diào)用通用化的邏輯流來實(shí)現(xiàn)。
流程的發(fā)起、退回、審核、結(jié)束都伴隨著流程狀態(tài)的變更,可在人工活動的“觸發(fā)事件”或自動活動的“應(yīng)用配置”屬性里調(diào)用通用化的設(shè)置流程狀態(tài)的邏輯流來完成審批流程不同狀態(tài)的設(shè)定;普元EOS 提供一種稱之為“子流程”的工作流,主要應(yīng)用于類似“傳閱”的場景,可創(chuàng)建分發(fā)邏輯流,根據(jù)主送抄送的值解析參與者并放入相關(guān)數(shù)據(jù)區(qū)供子流程使用;根據(jù)用戶指令,將業(yè)務(wù)表中的記錄狀態(tài)改為已終止并終止流程的終止流程邏輯流;設(shè)置子流程傳閱參與者的邏輯流等。
本著簡單、適用、高效的原則,在應(yīng)用實(shí)踐的基礎(chǔ)上,本文提出了一種基于普元平臺的審批流程通用化設(shè)計(jì)開發(fā)模式,建立了層次化的通用體系結(jié)構(gòu),通過對審批流程共性功能的挖掘和研究,總結(jié)并完善了該體系結(jié)構(gòu)各層通用化設(shè)計(jì)要求及具體實(shí)現(xiàn),具有很強(qiáng)的功能擴(kuò)展性和適用性。 隨著該流程平臺應(yīng)用逐步深入,其通用化設(shè)計(jì)將不斷優(yōu)化完善,面對新增審批流程的開發(fā)需求,只需重點(diǎn)關(guān)注個(gè)性功能的設(shè)計(jì)與驗(yàn)證,極大縮短了審批流程的開發(fā)周期?;谄赵脚_的審批流程通用化設(shè)計(jì)方法,已在該企業(yè)大范圍運(yùn)用,以滿足不同的審批業(yè)務(wù)需求,取得了一定的管理效益,具有較高的應(yīng)用價(jià)值。