陶 承
(中國鐵道科學研究院集團有限公司 電子計算技術研究所, 北京 100081)
采購管理是物資管理極為重要的組成部分,它以市場交易行為來完成鐵路運輸生產(chǎn)和基本建設的物資采購,是保障企業(yè)經(jīng)營持續(xù)進行的重要環(huán)節(jié)。招標采購管理系統(tǒng)是鐵路信息化的重要內(nèi)容,涵蓋項目申報與受理、集體決策、標前準備、開評標、采購結果管理等業(yè)務功能。
當前,國內(nèi)對鐵路招標采購的相關研究比較多,文獻[1]針對鐵路采購管理工作的現(xiàn)狀和難點,提出了采購管理信息系統(tǒng)開發(fā)的思路、總體框架、功能模塊構架和系統(tǒng)業(yè)務流程,并給出了實現(xiàn)方案。文獻[2]在具體技術實現(xiàn)上,注重新技術在招標采購過程中的運用,提出智慧型采購的概念并實現(xiàn),通過內(nèi)外網(wǎng)的互聯(lián)互通實現(xiàn)與商務平臺數(shù)據(jù)共享,使新的采購功能滿足鐵路總公司需求。
現(xiàn)階段鐵路招標采購的研究,多從功能定制、業(yè)務流程管理等角度對系統(tǒng)進行研發(fā),對基于微服務構建系統(tǒng)的研究較少。各鐵路局集團有限公司(簡稱:鐵路局)在招標采購業(yè)務流程上存在客觀差異,在招標流程和具體操作層面都有不同的需求,傳統(tǒng)的基于業(yè)務流程的系統(tǒng)缺乏靈活性配置策略,難以滿足這種個性化需求。
本文基于微服務架構,研究、設計鐵路招標采購管理系統(tǒng),對招標采購過程中涉及的業(yè)務進行服務化封裝,利用流程編制技術對微服務進行組裝,形成滿足各鐵路局不同招標采購需求的技術方案。
實現(xiàn)招標采購業(yè)務的全過程管理,內(nèi)容涵蓋項目管理、審批、招評標管理等方面,能夠滿足鐵路總公司、鐵路局以及鐵路局下屬單位的招標采購業(yè)務需求,為鐵路物資招標采購的標準化、規(guī)范化、信息化提供支撐。本系統(tǒng)的具體目標如下:
(1)流程可規(guī)范。雖然各鐵路局在招標采購的具體流程上有差距,但招標采購的具體實現(xiàn)環(huán)節(jié)是有法律法規(guī)進行規(guī)范的,系統(tǒng)設計的流程必須滿足合法性、規(guī)范性要求[3]。
(2)數(shù)據(jù)可共享。實現(xiàn)與物資管理、商務等外部系統(tǒng)的數(shù)據(jù)交互,提供統(tǒng)一的數(shù)據(jù)服務接口。
(3)系統(tǒng)可通用。提供靈活、可擴展的架構方式,針對不同單位、不同采購標的需求,提供個性化的招標采購解決方案。
(4)業(yè)務可審計。記錄招標采購全過程數(shù)據(jù),保存流程信息、評審信息、招投標文件、合同文件等,為審計提供數(shù)據(jù)支撐,通過系統(tǒng)流程進一步規(guī)范招標采購業(yè)務。
采用面向服務的需求分析方法對系統(tǒng)的功能需求進行梳理,主要功能需求如下:
(1)項目管理服務。提供采購項目的基本信息維護功能,包括采購項目的創(chuàng)建、修改、存儲,數(shù)據(jù)的導入、導出等。
(2)審批服務。提供通用的審批流程服務功能,對審批事項、審批人員、審批時間等進行管理。
(3)會議管理服務。提供招標采購過程中所需的會議編輯、會議室申請、會議通知、會議費用等管理服務。
(4)招標服務。提供招標文件編輯、管理、招公告發(fā)布等功能。
(5)評標服務。提供簽到、唱標過程信息以及現(xiàn)場視頻服務接口,對評標項目創(chuàng)建、評委抽選、評委分工、評標過程、結果審核及定標等信息進行管理。
(6)基礎數(shù)據(jù)管理服務。提供評標專家?guī)?、供應商庫、法?guī)標準、文檔模板等基礎數(shù)據(jù)管理服務。
為保證系統(tǒng)能夠持續(xù)穩(wěn)定地提供易用的招標采購服務,本系統(tǒng)還應滿足如下需求:
(1)可配置性。具備基于圖形化的流程配置功能,用戶可以根據(jù)業(yè)務需求進行流程的個性化定制。
(2)可維護性。針對微服務提供統(tǒng)一的服務治理功能,可實現(xiàn)微服務的全生命周期管理。
(3)高可用性。提供高可靠的運行能力,保證招標采購流程的穩(wěn)定運行和關鍵信息的可靠傳遞。
(4)易用性。為用戶提供友好、邏輯清晰、基于流程圖的可視化操作界面,實現(xiàn)招標采購信息的可視化展現(xiàn)。
由于不同鐵路局的招標采購流程不同,不同采購標的的采購流程也不同,而且各單位的采購流程隨著業(yè)務的發(fā)展也會發(fā)生變化。傳統(tǒng)的基于固定流程的招標采購系統(tǒng)由于缺乏靈活性,難以應對這種挑戰(zhàn)。系統(tǒng)要滿足多樣化的招標采購需求,必須滿足兩個條件:(1)流程可定制,各單位能根據(jù)自身需求進行靈活定制,要求系統(tǒng)提供流程編制和管理工具,實現(xiàn)服務的靈活組裝;(2)流程調(diào)用的服務實現(xiàn)可定制,各單位可對流程節(jié)點的實現(xiàn)方案進行定制,要求系統(tǒng)具備服務熱插拔功能,實現(xiàn)服務的動態(tài)部署。
2.2.1 微服務架構
微服務是一些協(xié)同工作的小而自治的服務,它具有高內(nèi)聚性和高自治性[4]。微服務根據(jù)業(yè)務的邊界來確定服務的邊界。微服務架構是一種架構模式,它將單一應用程序劃分成一組小的服務,服務之間相互協(xié)調(diào)、相互配合[5]。微服務架構具有松耦合、語言無關、獨立部署、獨立可擴展等特點。
2.2.2 微服務協(xié)同編制
微服務架構下需要通過各微服務之間的協(xié)作來實現(xiàn)一個完整的業(yè)務流程,微服務的協(xié)調(diào)方式分為兩種:(1)編制(Orchestration)面向可執(zhí)行的流程,通過一個可執(zhí)行的流程來協(xié)同內(nèi)部及外部的服務交互。通過中心流程來控制總體的目標、涉及的操作,以及服務調(diào)用順序;(2)編排(Choreography)面向合作,通過消息的交互序列來控制各個部分資源的交互。參與交互的資源都是對等的,沒有集中的控制。雖然編排提供了較高的靈活性,但缺乏統(tǒng)一的流程管理,不滿足本系統(tǒng)對流程管理的需求。所以在本系統(tǒng)中采用面向流程的編制來處理微服務協(xié)同關系。
本系統(tǒng)在借鑒微服務架構的基礎上[6],結合自身業(yè)務需求,對系統(tǒng)邏輯架構進行設計。架構主要是從IT基礎設施、微服務框架、管理平臺、公共基礎設施、微服務容器、流程編排服務、以及應用程序編程接口(API)網(wǎng)關等維度來劃分,如圖1所示。
圖1 系統(tǒng)邏輯架構
(1)IT基礎設施。為系統(tǒng)提供IT運行環(huán)境支撐,包括計算、網(wǎng)絡、存儲等資源,可依托云計算平臺提供服務。
(2)公共基礎服務。微服務平臺依賴的通用基礎服務資源,主要包括應用性能管理、分布式事務、安全管理等功能。
(3)微服務框架。系統(tǒng)將微服務所需的服務注冊、服務發(fā)現(xiàn)、服務路由、熔斷隔離等能力統(tǒng)一設計為服務框架,由框架為微服務的運行提供支持。
(4)管理平臺。系統(tǒng)提供微服務的灰度發(fā)布、服務降級、鏈路跟蹤、監(jiān)控警告、配置中心等維護管理功能。
(5)微服務容器。系統(tǒng)提供微服務運行的容器,所有業(yè)務相關的微服務均位于該容器。這些服務包括項目管理服務、審批服務、會議管理服務等。
(6)流程編排服務。本部分采用流程編制引擎,通過調(diào)用微服務提供的Rest API接口,將獨立的微服務組裝成為滿足用戶需要的流程。編制好的流可通過Rest API接口供外部調(diào)用。
(7)API網(wǎng)關?;谝?guī)則、路徑、協(xié)議、轉(zhuǎn)發(fā)等實現(xiàn)服務調(diào)用。API網(wǎng)關自動判斷服務請求屬性,對來自PC、APP、外部系統(tǒng)調(diào)用的請求進行轉(zhuǎn)發(fā)。
系統(tǒng)技術架構融合了微服務流程編排、外部系統(tǒng)數(shù)據(jù)交互、負載均衡、統(tǒng)一身份認證、微服務治理等功能,可以有效滿足招標采購系統(tǒng)的業(yè)務和管理需求[7]。具體架構如圖2所示。
圖2 系統(tǒng)技術架構
系統(tǒng)為用戶提供PC、APP兩種訪問方式,通過負載均衡服務對請求進行分發(fā),支持高并發(fā)訪問,可滿足鐵路總公司的部署需求。統(tǒng)一身份認證服務可對用戶進行認證和授權,確保用戶的合法性。網(wǎng)關服務實現(xiàn)基于規(guī)則的請求轉(zhuǎn)發(fā),根據(jù)訪問終端的不同,為用戶提供不同的顯示內(nèi)容,避免業(yè)務交叉。流程編制服務通過調(diào)用微服務和平臺基礎服務進行流程編排,提供流程服務。平臺通過微服務的方式實現(xiàn)與外部系統(tǒng)的數(shù)據(jù)交互。整個系統(tǒng)IT基礎設施可部署在云計算平臺上。
微服務是最小的業(yè)務單元,負責完成單一任務。一個服務通常實現(xiàn)一組同一范疇的業(yè)務功能,例如項目管理服務、審批服務等。服務可獨立進行部署及擴展伸縮,每個服務定義了明確的邊界,有利于規(guī)?;_發(fā)[8]。它的結構包括業(yè)務邏輯、數(shù)據(jù)存儲、適配器、服務接口等。微服務實現(xiàn)結構如圖3所示。
圖3 微服務結構
微服務通過接口與外部系統(tǒng)實現(xiàn)數(shù)據(jù)交互。接口包括外部調(diào)用服務的接口REST API,以及微服務調(diào)用外部服務的客戶端REST CLIENT。業(yè)務邏輯負責實現(xiàn)微服務提供服務的所有業(yè)務規(guī)則;數(shù)據(jù)庫適配器為微服務提供不同數(shù)據(jù)庫的適配功能,便于微服務在不同數(shù)據(jù)庫環(huán)境中遷移。數(shù)據(jù)庫服務器為微服務提供數(shù)據(jù)存儲支持,保證服務的原子性和獨立性,微服務通常使用獨立的數(shù)據(jù)存儲服務[9]。
微服務編制引擎包括流程引擎、任務、監(jiān)控和管理后臺等功能。流程引擎采用DSL來編寫流程定義文件,可以通過手動編寫和圖形化界面編輯兩種方式定義流程。任務功能包括流程任務的創(chuàng)建、刪除、取消、列表、并行計算等[10]。監(jiān)控主要對流程各個節(jié)點的任務運行情況進行監(jiān)控,及時了解流程的運行狀態(tài),方便用戶做出相應決策。引擎同時提供任務調(diào)度功能,滿足分布式定時調(diào)度的需求。管理后臺可查看任務和工作流的元數(shù)據(jù)定義、工作流的執(zhí)行狀態(tài)、歷史任務、歷史流程等信息。
通過使用流程引擎提供的功能,可以快速實現(xiàn)微服務的流程組合,為用戶提供靈活可定制的流程服務。流程引擎組裝微服務的結構如圖4所示。
圖4 流程引擎組裝微服務
用戶通過微服務編制引擎,按照業(yè)務需求編制招標采購的業(yè)務流程,再通過流程引擎提供的接口,調(diào)用微服務注冊中心中提供的微服務,為流程各個節(jié)點注入實現(xiàn)服務。微服務編制引擎通過自身的協(xié)調(diào)控制機制,根據(jù)微服務返回的數(shù)據(jù)進行判斷,引導完成流程操作。
本文對鐵路招標采購管理系統(tǒng)的需求進行了分析,并給出了基于微服務架構的解決方案。該方案降低了業(yè)務功能服務組件的耦合度,可對流程優(yōu)化、功能變更等需求做到快速響應、敏捷開發(fā)、靈活配置、快速部署?;谖⒎占軜嫷蔫F路招標采購管理系統(tǒng)已應用于鐵路調(diào)度管理系統(tǒng)、智慧乘務系統(tǒng)、高鐵Wi-Fi運營服務系統(tǒng)等行業(yè)信息化業(yè)務中,并得到用戶的普遍認可,為鐵路招標采購業(yè)務的發(fā)展提供了有力的技術支持。