唐毅 陸媚 覃敬波
摘要:隨著企業(yè)信息化的發(fā)展和社會對企業(yè)合規(guī)的不斷重視,不少企業(yè)的業(yè)務(wù)系統(tǒng)急需引入一套技術(shù)工具來提高審批效率,同時避免出現(xiàn)審批流程不規(guī)范的問題。審批工作流是一種常見的工作流,在企業(yè)管理和運轉(zhuǎn)中引入審批工作流是財務(wù)規(guī)范化、制度規(guī)范化、企業(yè)合規(guī)化的重要環(huán)節(jié)。該文介紹了一種基于ASP.NET Core技術(shù),適用于一般小型企業(yè)的審批工作流模塊的設(shè)計與實現(xiàn)。
關(guān)鍵詞:ASP.NET Core;審批工作流;業(yè)務(wù)系統(tǒng);企業(yè)合規(guī);設(shè)計與實現(xiàn)
中圖分類號:TP311.52? ? ? 文獻標識碼:A
文章編號:1009-3044(2023)06-0043-04
開放科學(xué)(資源服務(wù))標識碼(OSID)
0 引言
隨著信息化、無紙化辦公時代的到來,一些企業(yè)面臨著困境。它們所使用的傳統(tǒng)業(yè)務(wù)系統(tǒng)中,業(yè)務(wù)單據(jù)只標記著“未審”和“已審”兩種狀態(tài)。這樣的標記方式,只記錄了單據(jù)審核與否的狀態(tài),而沒有記錄審核的詳細過程[1]。業(yè)務(wù)員在業(yè)務(wù)系統(tǒng)中填寫完單據(jù)后,只能將其打印出來,線下根據(jù)企業(yè)相關(guān)的管理流程,分別找各個環(huán)節(jié)的關(guān)鍵人進行審核簽字,再交至最終審批人,最終審批人審核完畢后,在系統(tǒng)內(nèi)根據(jù)單據(jù)號進行審批狀態(tài)的調(diào)整。 如常見的產(chǎn)品發(fā)貨單,開單人開單打印,然后給財務(wù)人員審核簽字,最后倉庫人員確認發(fā)貨。但是,如果開單折扣比較低,根據(jù)一些企業(yè)的管理要求,業(yè)務(wù)員還要記得在財務(wù)人員審批前,給銷售部門領(lǐng)導(dǎo)審核簽字。這樣的做法使企業(yè)運轉(zhuǎn)效率低下,容易出現(xiàn)不合規(guī)的情況,并且沒有在系統(tǒng)中留痕,出問題時不方便追溯,同時也浪費了很多紙張,增加了企業(yè)的成本。不少這樣的企業(yè)也想通過引入一套成熟的審批工作流來解決此問題,但由于這些業(yè)務(wù)系統(tǒng)往往過于老舊,不少現(xiàn)在的工作流產(chǎn)品無法簡單嵌入,重新購買帶有審批工作流的業(yè)務(wù)系統(tǒng)又加大了企業(yè)的經(jīng)營成本[2-3]。 因此,如何幫助這些企業(yè)設(shè)計出一套高效率、高兼容性的審批工作流模塊變得非常迫切與必要。
1 需求分析
1.1 模塊功能性需求分析
審批工作流模塊要有良好的兼容性和獨立性,能盡量在不對原有業(yè)務(wù)系統(tǒng)進行大幅度修改的情況下輕松嵌入。要能實現(xiàn)一般企業(yè)中,常見的審批模式,如:線性審批、節(jié)點跨越審批、分支條件審批、會簽審批[3]。參與相關(guān)審批環(huán)節(jié)的用戶,要能隨時查詢審批日志,能及時在業(yè)務(wù)系統(tǒng)、郵箱或手機上接收到相關(guān)的審批通知,從而形成審批閉環(huán),避免遺漏。
該功能模塊的主要用戶包括工作流設(shè)計者、業(yè)務(wù)提交人和審批人三大類。工作流設(shè)計者可以根據(jù)企業(yè)需求在后臺配置相關(guān)參數(shù)生成工作流,并嵌入業(yè)務(wù)系統(tǒng)中。業(yè)務(wù)提交人可以將業(yè)務(wù)單據(jù)通過該模塊提交給相關(guān)審批人。審批人可進行審批意見的回復(fù),并可以將單據(jù)駁回或提交至下一審批環(huán)節(jié)。
通過上述的需求分析,筆者設(shè)計出該模塊的整體流程圖,如圖1所示。
1.2 模塊非功能性需求分析
該模塊的非功能性需求包括:適用性需求、可靠性需求、性能需求。
1.2.1 適用性需求
1)工作流的設(shè)計與配置要易上手、易學(xué)習(xí),對于非信息技術(shù)企業(yè)的信息管理人員也要能在一周培訓(xùn)時間內(nèi)掌握。
2)工作流的參數(shù)、節(jié)點權(quán)限可隨時修改,不需要代碼編譯和發(fā)版。
3)正在生產(chǎn)環(huán)境下使用的工作流也要能隨時添加、刪除、調(diào)整節(jié)點。更新后,新的業(yè)務(wù)可以按新的工作流流程進行,之前正在進行的業(yè)務(wù)繼續(xù)按之前的工作流流程進行,互不干擾。
1.2.2 可靠性需求
1)當(dāng)功能出現(xiàn)故障時,應(yīng)有相關(guān)的錯誤日志,并能快速定位問題。
2)避免出現(xiàn)信息安全問題,比如能防范常見的SQL注入、敏感字段需加密等。
1.2.3 性能需求
1)應(yīng)能支持200個以上的用戶同時在線使用。
2)一般常規(guī)操作響應(yīng)速度應(yīng)在3s以內(nèi),復(fù)雜的操作響應(yīng)速度應(yīng)在5s以內(nèi)。
2 模塊設(shè)計
2.1 模塊技術(shù)架構(gòu)
為了簡化客戶端的安裝,便于升級與維護,該模塊采用了B/S(Browser/Server,瀏覽器/服務(wù)器模式)的軟件架構(gòu)。它是C/S(Client/Server,客戶端/服務(wù)器模式)軟件架構(gòu)在Internet上基于Web應(yīng)用的一種實現(xiàn)方式[4]。在該模式下,該模塊可以非常方便地通過開放Web接口的方式,嵌入到各式各樣的業(yè)務(wù)系統(tǒng)中,并且可以輕松地跨設(shè)備跨平臺使用[5]。
另外,該模塊采用了基于DDD(Domain Driven Design,領(lǐng)域驅(qū)動設(shè)計)的設(shè)計理念。這使得該模塊的兼容性和健壯性得到很大提升,代碼模塊之間更加“高內(nèi)聚、低耦合”,增加了可維護性和可讀性,延長了模塊的生命周期[6-7]。對于使用了與該模塊相同技術(shù)架構(gòu)的業(yè)務(wù)系統(tǒng),只需要簡單修改便可輕松引入一同編譯。對于非相同技術(shù)架構(gòu)的系統(tǒng),也可以通過WebAPI接口的方式,進行調(diào)用。
該模塊的分層架構(gòu)邏輯圖如圖2所示[7]。
用戶交互層:主要負責(zé)接收用戶的網(wǎng)頁請求、業(yè)務(wù)系統(tǒng)的接口請求等可能修改到內(nèi)部業(yè)務(wù)數(shù)據(jù)的外部輸入。
應(yīng)用層:負責(zé)處理接收到用戶交互層數(shù)據(jù)的轉(zhuǎn)發(fā)、安全驗證、權(quán)限校驗等前置事件。
領(lǐng)域?qū)樱杭軜?gòu)的核心,用來表達業(yè)務(wù)概念、業(yè)務(wù)狀態(tài)和業(yè)務(wù)規(guī)則,實現(xiàn)了審批工作流模塊的核心業(yè)務(wù)邏輯。
基礎(chǔ)設(shè)施層:貫穿所有層,為其他各層提供通用的技術(shù)服務(wù),如常用工具類、消息中間件、文件操作、緩存操作及數(shù)據(jù)庫操作等。
2.2 模塊功能架構(gòu)
根據(jù)需求分析,本功能模塊分為三類用戶角色:工作流設(shè)計者、業(yè)務(wù)提交人、審批人。根據(jù)用戶角色的模塊劃分方式,不同的用戶角色模塊擁有不同的功能。其功能結(jié)構(gòu)圖如圖3所示。
2.2.1 工作流設(shè)計者功能詳細設(shè)計
工作流設(shè)計者一般為開發(fā)公司的技術(shù)人員或者企業(yè)的信息管理部門人員,負責(zé)收集企業(yè)各個業(yè)務(wù)流程的審批需求,進行工作流的審批流程設(shè)計。主要功能包括工作流的基本參數(shù)配置、各流程節(jié)點的配置、各節(jié)點相關(guān)的操作權(quán)限配置。
1)配置基本參數(shù)。設(shè)計人員可在此配置工作流的相關(guān)基本參數(shù),包括工作流的名稱、通知消息模板、與現(xiàn)有業(yè)務(wù)系統(tǒng)數(shù)據(jù)表的關(guān)聯(lián)等。
2)配置流程節(jié)點。流程節(jié)點的配置是該模塊功能的核心,設(shè)計者可在此配置單個節(jié)點的相關(guān)屬性,如:節(jié)點名稱、節(jié)點排序號、到達節(jié)點的條件、節(jié)點執(zhí)行后的回調(diào)事件等,也可以配置多個節(jié)點之間的關(guān)系。通過合理配置流程節(jié)點,可以實現(xiàn)線性審批、節(jié)點跨越審批、分支條件審批、會簽審批等在企業(yè)中較為常見的審批流程。
3)配置權(quán)限。設(shè)計人員可針對每個流程節(jié)點配置用戶權(quán)限。即哪些審批人才能在該節(jié)點下進行審批操作。該模塊支持常見的RBAC(Role-Based Access Control,基于角色的訪問控制)模型權(quán)限管理方式,也支持基于用戶顆粒度的權(quán)限管理方式。
2.2.2 業(yè)務(wù)提交人功能詳細設(shè)計
業(yè)務(wù)提交人主要為業(yè)務(wù)系統(tǒng)的開單人員。
1)業(yè)務(wù)提交人保存填寫好的業(yè)務(wù)單據(jù)后,可進行單據(jù)的提交審批操作,將單據(jù)流轉(zhuǎn)到相應(yīng)的審核人員手上,審核人員會在系統(tǒng)中接收到相應(yīng)的通知提醒。
2)審批過程查詢。業(yè)務(wù)提交人可對自己提交的單據(jù)進行流轉(zhuǎn)過程和審批日志的查詢,清晰把控單據(jù)的流轉(zhuǎn)動向。
2.2.3 審批人功能詳細設(shè)計
審批人接收到相應(yīng)的審批任務(wù)通知后,可進入到單據(jù)詳情界面,進行相應(yīng)的審批操作:
1)填寫審批意見。審批人員可對單據(jù)進行批復(fù)、填寫審批意見。
2)流轉(zhuǎn)單據(jù)。審批人員可將單據(jù)駁回至系統(tǒng)指定的上一環(huán)節(jié),也可以將單據(jù)提交至系統(tǒng)指定的下一環(huán)節(jié)。若系統(tǒng)指定了多個上一環(huán)節(jié)或下一環(huán)節(jié),審批人還可以根據(jù)實際需要自主選擇駁回或提交至其中的任一環(huán)節(jié)。同時相關(guān)人員會在系統(tǒng)中接收到相應(yīng)的通知提醒。另外,當(dāng)審批人不方便審批時,還可以委托轉(zhuǎn)交給他人進行審批。
3)審批過程查詢。單據(jù)流程的參與者可對流轉(zhuǎn)過程、審批日志進行查詢,清晰把控單據(jù)的流轉(zhuǎn)動向。
2.3 數(shù)據(jù)庫詳細設(shè)計
數(shù)據(jù)庫的詳細設(shè)計,如表1所示。
在此設(shè)計中,部分核心功能的E-R圖如圖4所示。
3 模塊實現(xiàn)
3.1 模塊開發(fā)技術(shù)概述
該模塊采用的開發(fā)語言框架是ASP.NET Core 3.1,它是微軟推出的新一代跨平臺開發(fā)技術(shù),支持跨平臺部署,同時可以讓開發(fā)人員可以開發(fā)能運行在容器環(huán)境中的微服務(wù),以便于開發(fā)能應(yīng)對高并發(fā)、高負載的系統(tǒng)[8]。ASP.NET Core的前端開發(fā)工具是Visual Studio 2022,數(shù)據(jù)庫使用的是SQL Server。同時,該模塊還采用了基于RESTful協(xié)議的 WebAPI 技術(shù)提供接口服務(wù),并按照JWT標準實現(xiàn)接口調(diào)用的安全性,無論是理論上還是實現(xiàn)技術(shù)上都具有一定的先進性。
3.2 模塊部分功能實現(xiàn)
以介紹筆者所在單位會議室申請的審批工作流的實現(xiàn)為例。該審批流程的跨職能流程圖如圖5所示。
由圖5可知,這是一個涉及分支條件的線性審批流程,該流程涉及三個關(guān)鍵角色和五個流程節(jié)點。
如圖6所示,工作流設(shè)計者先配置此工作流的基本信息,如工作流的名稱、與當(dāng)前業(yè)務(wù)系統(tǒng)相關(guān)表字段的對應(yīng)關(guān)系、通知顯示模板。
之后,便可對各個工作流節(jié)點進行配置,這是整個工作流配置的核心。如圖7所示:
其中,“層級編號”用于確定各個審批節(jié)點的先后順序,“是否必走”“條件標識”用于確定該節(jié)點是否為條件分支節(jié)點?!皹I(yè)務(wù)點狀態(tài)”“執(zhí)行人名字段”“執(zhí)行人時間字段”等用于該節(jié)點執(zhí)行后向業(yè)務(wù)系統(tǒng)回寫相關(guān)信息。右側(cè)的“可轉(zhuǎn)到流程列表”可靈活配置當(dāng)前節(jié)點可駁回或提交至哪些節(jié)點。
在完成節(jié)點配置和相關(guān)權(quán)限的授予后,通過少量的代碼編寫,便可將此工作流程嵌入到業(yè)務(wù)系統(tǒng)中,如圖8右側(cè)所示。 當(dāng)用戶點擊右側(cè)的提交或駁回按鈕后,業(yè)務(wù)系統(tǒng)會將相關(guān)工作流啟動參數(shù)傳到審批工作流模塊,然后彈出審批界面,如圖9所示。 審批人員可以按實際需求選擇提交到哪一個節(jié)點,在此例中,由于申請人勾選了需要使用投影儀的復(fù)選框,業(yè)務(wù)系統(tǒng)會在“會議室安排”這個節(jié)點的提交操作中,在工作流啟動參數(shù)中傳入“sbgly”的條件標識(即之前圖7中所配置的)。此時,審批界面默認顯示提交到“知會設(shè)備管理員”節(jié)點。輸入審批意見并選擇下一個節(jié)點接收人后,點擊確定按鈕,此節(jié)點的審批操作便完成。程序會向接收人發(fā)送審批通知,同時會更新此申請在業(yè)務(wù)系統(tǒng)中的當(dāng)前審批狀態(tài)、審批人、審批時間等字段,并執(zhí)行相關(guān)的回調(diào)函數(shù)。之后,整個流程便會以此類推繼續(xù)進行,直至整個審批流程結(jié)束。
4 結(jié)束語
對于一些老舊的業(yè)務(wù)系統(tǒng),本文提出了一種兼容性高、獨立性強的審批工作流模塊的設(shè)計和實現(xiàn)方案,并已在筆者所在企業(yè)進行應(yīng)用,具有以下特點。
1)兼容性高。該模塊獨立性較強、擴展性高,可通過接口調(diào)用的方式與其他業(yè)務(wù)系統(tǒng)輕松對接、集成。
2)操作效率高。審批操作精簡,且操作含義明確,對比線下審批,效率直線上升。
3)配置靈活。通過后臺的簡單配置,便可以實現(xiàn)企業(yè)中常見的各種審批流程,大多數(shù)情況下無須重新編譯代碼和發(fā)布,大大降低了技術(shù)人員的專業(yè)門檻。
4)及時性強。待審批事項及時通知到審批人,審批進展及時通知發(fā)起人,發(fā)起人也可選擇主動催促審批人。整個審批流程形成了審批閉環(huán),從而避免遺漏。
參考文獻:
[1] 周開舵.財務(wù)管理信息化建設(shè)的困境與建議——以中小型企業(yè)為例[J].財經(jīng)界,2021(27):121-122.
[2] 張曉鵬,王新.OA系統(tǒng)工作流精細化管理的實踐與應(yīng)用[J].中國管理信息化,2022,25(17):123-125.
[3] 劉超.輕量級工作流引擎的設(shè)計與實現(xiàn)[J].信息系統(tǒng)工程,2022(12):7-10.
[4] 查修齊,吳榮泉,高元鈞.C/S到B/S模式轉(zhuǎn)換的技術(shù)研究[J].計算機工程,2014,40(1):263-267.
[5] 李興華,李玉平,陶明.基于WebAPI的全流程條碼系統(tǒng)設(shè)計和實現(xiàn)[J].自動化與信息工程,2018,39(4):26-31.
[6] 賈子甲,鐘陳星,周世旗,等.領(lǐng)域驅(qū)動設(shè)計模式的收益與挑戰(zhàn):系統(tǒng)綜述[J].軟件學(xué)報,2021,32(9):2642-2664.
[7] 時梨.基于領(lǐng)域驅(qū)動設(shè)計在構(gòu)建IT管理系統(tǒng)的應(yīng)用研究[J].中國新通信,2021,23(16):94-95.
[8] 楊中科.ASP.NET Core技術(shù)內(nèi)幕與項目實戰(zhàn):基于DDD與前后端分離[M].北京:人民郵電出版社,2022.
【通聯(lián)編輯:謝媛媛】