鐘興



關鍵詞:煙草行業;信息化建設;系統集成;軟件體系結構;軟件總線
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2023)03-0051-03
1 引言
近年來,在煙草行業高質量發展的要求下,越來越多的業務通過信息化實現了從線下到線上的轉換,比如辦公自動化系統、統一營銷平臺、物流管控平臺、專賣管理系統、安全管理系統、人事系統、財務報銷系統等[1]。這些系統的使用給業務工作的開展帶來了很大的便利,有效降低了企業的成本,提高了企業的生產效率[2]。
但是,各個信息系統的建設往往都是單獨建設的,缺少統一的規劃和設計,從而暴露出一些問題:一是使用上不夠人性化,系統過多導致密碼容易遺忘、操作煩瑣的問題;二是產生運維管理難題,系統存在的一些安全漏洞對網絡安全帶來了很大的威脅[3];三是造成資源浪費,系統建設過多,會造成資金、軟硬件資源的浪費;四是系統眾多卻缺少集成,就會造成信息孤島持續增加[4]。因此,對煙草行業信息系統集成技術的研究就顯得十分重要。
2 軟件總線
2.1 軟件總線的概念
軟件總線這個概念從計算機的硬件總線中衍生而來。硬件總線是計算機中各種功能部件之間的公共信息傳輸通道。與硬件總線的功能相似,軟件總線通過為軟件系統中的功能構件提供統一的接口規范,為各個功能構件之間的信息交互提供了虛擬的公共傳輸通道,因此可以看作一種虛擬的硬件總線[5]。
如圖1所示,在基于軟件總線的系統中,系統功能實現的基本單元是功能構件。通過為功能構件提供標準接口,軟件總線為系統內各功能構件之間的信息交互提供了虛擬的公共數據通道和接口服務。任何一個功能構件只要是根據軟件總線提供的接口規范來設計開發,就都可以在系統內實現“即插即用”,并與系統內的其他功能構件進行通信,實現軟件系統的集成[6]。
2.2 軟件總線的優勢
軟件總線的使用增強了功能構件之間的獨立性,實現了系統的“高內聚、低耦合”,實現了功能構件的復用,節約了軟件的開發時間和成本,提高了系統的可擴展性、可維護性和可靠性[7-8]。
采用軟件總線后,由于系統中各個功能構件之間沒有直接的依賴關系,可以根據實際需要方便地對功能構件進行修改、替換,對系統功能進行新增、擴展、重組,從而為信息系統不斷增長的規模提供有效的解決方案。
3 軟件體系結構設計
為了解決煙草行業信息系統建設中存在的使用煩瑣、管理困難、網絡安全隱患、資源浪費、信息孤島等問題,本文研究了軟件總線技術在煙草行業信息系統集成中的應用。在該系統集成方法中,煙草行業的各項具體的業務被封裝為一個個構件(如專賣管理構件、卷煙銷售構件等),并通過軟件總線來為各個功能構件提供統一的通信方式和管理服務。
如圖2所示為基于軟件總線的信息系統集成軟件體系結構,按照層次關系由上到下分為四層:應用層、傳輸支持層、傳輸層和軟件總線層。
3.1 應用層
在基于軟件總線的信息系統集成軟件體系結構中,應用層是系統業務功能的具體實現,由系統中的各個能解決特定業務問題的功能構件組成。可以根據煙草行業的各項業務來分別設置對應的功能構件,功能構件的顆粒度可大可小,例如專賣管理業務可以單獨設置為一個功能構件,也可以細分為證件管理構件、案件管理構件、執法管理構件等。功能構件的顆粒度越小,功能構件之間的耦合度就越低。
每一個功能構件只需要考慮自身內部如何進行功能邏輯的實現,而不需要考慮如何從其他功能構件中獲取數據。功能構件與功能構件之間的信息交互通過統一的接口規范由軟件總線來間接實現。各功能構件要將其構件名稱、話題名稱、消息類型等具體信息向軟件總線進行注冊,這樣才能夠正常使用。
在實際使用中,可以根據每個使用人員的職責不同,為其配置履行崗位職責所需要使用到的功能構件,從而實現了對系統功能的靈活配置。當人員發生調崗時,只需要將其不需要使用的功能構件注銷掉,再為其配置新崗位所需要的功能構件,就可以靈活地為用戶進行系統功能授權。
3.2 傳輸支持層
傳輸支持層的主要功能是實現消息的序列化與反序列化。消息的序列化是指將功能構件之間傳輸的消息數據轉換成二進制串的過程。反序列化是指將二進制串轉換成功能構件之間傳輸的消息數據的過程。
通過進行消息的序列化和反序列化,可以屏蔽各個功能構件之間的差異,從而提高系統的兼容性。
3.3 傳輸層
傳輸層負責進行功能構件之間的消息傳輸。傳輸層為功能構件之間提供端到端的消息傳輸服務,不需要知道功能構件之間傳輸的消息的具體內容。在傳輸層中,經過序列化處理后的二進制消息能夠可靠無誤地傳輸到目的功能構件。
3.4 軟件總線層
在基于軟件總線的信息系統集成軟件體系結構中最核心的部分就是軟件總線層。軟件總線層的功能包括構件管理、消息管理和數據管理三個功能。
軟件總線要對所有功能構件進行管理,包括構件注冊管理和狀態監測管理。構件注冊管理是為每一個功能構件提供注冊服務,維護著其相關信息。軟件總線也需要實時監測系統中各個功能構件的狀態,包括其CREATE(創建)、START(啟動)、RUN(運行)、STOP(停止)的全生命周期。
消息管理主要是進行消息路由和資源調度。消息的路由負責將消息轉發到需要的功能構件上。資源調度是對系統中的消息根據其優先級和功能構件的負載進行合理的調度,使得系統資源得到合理使用。
數據管理主要是對消息數據和構件信息進行管理,通過維護消息列表和構件列表來實現。消息列表記錄了消息的具體內容,包括各個字段的類型和含義。構件列表記錄了所有與功能構件相關的信息,包括構件ID、構件名稱、消息類型、生命狀態等。
4 通信機制
為了解決功能構件與功能構件之間的信息交互問題,該軟件體系結構采用了基于消息的交互機制,有效降低了系統的耦合度。
4.1 消息通信方式
在基于軟件總線的信息系統集成軟件體系結構中,軟件總線為各個功能構件提供了一種“發布/訂閱”的信息交互方式。
在發布/訂閱通信方式下,發送消息的功能構件稱為發布者,接收消息的功能構件稱為訂閱者。發布者和訂閱者之間的信息交互通過話題來進行,只要發布者將消息朝某一個特定的話題進行發布,那么系統中訂閱了該話題的所有訂閱者就都能夠接收到發布者發布的消息。一個話題既可以有一個或多個發布者,也可以有一個或多個訂閱者,這樣就實現了功能構件之間的一對一、一對多和多對多通信。如圖3所示為發布/訂閱通信方式的示意圖。
發布/訂閱通信方式中的話題具有唯一性,每一個話題都有其對應的消息類型,并由軟件總線負責進行管理。在這種通信方式下,進行通信的功能構件按照定義好的話題和消息類型進行消息封裝即可,而具體的消息路由則交給軟件總線來實現。
4.2 消息通信協議
在基于消息的交互機制下,需要定義統一的通信協議格式。每個功能構件均需要按照這個統一的通信協議格式進行信息交互,這樣才能成功解析對方發出的消息。
如表1所示為功能構件之間的消息通信協議。消息由消息頭和消息體兩個部分組成。消息頭中的字段都是固定的,記錄了整條消息的基本信息,如起始標記、消息類型、話題名稱、消息負載長度、序列號、時間戳等信息。消息體,即消息負載,記錄的是消息的具體內容。消息負載中的內容是可變的,要根據其對應的話題來進行填充。
5 應用場景
下面以卷煙銷售到零售戶的場景為例,介紹基于軟件總線的信息系統集成軟件體系結構在煙草行業的實際應用。
實現該一場景涉及專賣管理、卷煙銷售和物流配送三個方面的業務。零售戶首先需向當地的煙草專賣局申請煙草專賣零售許可證,然后進行卷煙訂貨,最后煙草公司為其進行分揀配送。現有的系統開發方式是為這三個方面的業務開發獨立的專賣、營銷、物流系統,系統之間缺少交互對接,數據共享大多由人工進行。而采用基于軟件總線的信息系統集成軟件體系結構對該應用場景進行改進后,設計了如圖4所示的系統結構。對功能構件的設計采用了“高內聚、低耦合”的原則,根據實際對專賣管理、卷煙銷售和物流配送業務進行了細化,設計了許可證申請構件、實地核查構件、證件管理構件、客戶管理構件、卷煙訂貨構件、訂單處理構件、倉儲分揀構件、卷煙送貨構件。每一個功能構件都只關注于自身業務邏輯的實現,而功能構件之間的信息交互則采用“發布/訂閱”的方式通過統一的消息通信協議由軟件總線來實現。
基于軟件總線的信息系統集成軟件體系結構應用之后,對現有的卷煙銷售過程進行了改進,更具有優勢。具體表現為:1) 現有的各個業務系統是分散的、獨立的,缺乏集成,而軟件總線則將各個業務系統進行了充分的集成,形成了一個整體;2) 現有的各個業務系統之間的數據缺乏共享,不少情況下需要人工進行數據的導入導出,而軟件總線則高效地實現了各個業務系統之間的數據傳輸與共享;3) 現有的各個業務系統耦合度高,可維護性差,一般需要對整個業務系統進行停機運維,而基于軟件總線的體系結構中由于構件具有高內聚、低耦合、“即插即用”的特點,便于對構件進行升級、維護,只要構件遵守統一的標準和協議,就能集成到系統中擴展系統的功能。
6 結束語
本文研究了軟件總線技術在煙草行業信息系統集成中的應用,闡述了一種基于軟件總線的分層軟件體系結構,并從消息通信方式和消息通信協議兩個方面介紹了系統的通信機制。這種軟件體系結構有效地解決了信息系統集成的問題,能夠靈活適應不斷變化的信息系統規模,打通各個信息系統之間的數據孤島,實現系統之間數據的高效共享。