唐毅 陸媚 覃敬波



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