邱 敏
(作者單位:南京高等職業技術學校)
隨著信息化技術的發展,企業軟件系統建設要能支撐起各種業務職能,最終使企業的運維變得高效有序。而一個行業或企業信息化系統的建設與運維因業務的不同,通常需要專門定制開發,投入使用后也需要運維人員長效地運行維護。另外,隨著企業的發展或業務的調整,信息化系統也需不斷地升級調整。而企業人力資源、固定資產、財務、辦公審批、項目管理等職能的信息化,往往意味著高昂的建設、運維成本,對于中小企業而言,這是實現數據管理信息化最大的難題。
本次設計開發的目的是實現一款數據結構、框架、業務流程與權限可完全自定義的通用數據管理系統,能夠滿足中小企業日常業務中對信息化系統的需求。用戶只需通過后臺調整配置,即可實現實時增減數據模塊和字段等要素,也可實現系統的自我升級調整,從而大大降低系統后期的開發維護成本。
通過對信息化系統場景分析發現,中小型企業通常信息數據量小于千萬級,但應用場景多變,信息框架常隨業務需求進行調整。常使用的信息模塊包括人力資源管理、固定資產管理、銷售、生產管理等模塊。要滿足這些需求,就要實現在基于常見信息系統架構的基礎上來定制開發應用系統。
現階段信息系統架構常見以下幾種:
CS架構,即Client/Server(客戶機/服務器),通常在小型局域網使用。需要在每臺客戶機上安裝相應的客戶端程序,從而與服務端程序實現數據交互,完成業務數據的處理。優勢是客戶端響應速度快、可處理大量復雜數據;劣勢是應用場景有限,部署、維護成本較高。
BS架構,即Browser/Server(瀏覽器/服務器)。服務端為Web服務器和相應業務處理程序,客戶端為瀏覽器(Browse)。其優勢是僅通過瀏覽器即可完成客戶端功能,維護成本低;劣勢是處理復雜邏輯性能差,數據安全較難保障,特別在跨瀏覽器響應上不盡如人意。
SOA架構,即Service-Oriented Architecture(面向服務的體系結構),在Internet環境下解決業務集成需求,通過Web service接口連接實現信息系統業務功能。其服務以粗粒度、開放式、松耦合方式呈現,應用程序通過訪問服務接口完成信息交換。其優勢是系統維護成本低,有良好的可用性和可擴展性;劣勢是安全性、可靠性、系統效率性能略差。
ROA架構,即Resource-Oriented Architecture(面向資源的架構體系),體系中所有業務組件被稱為資源。資源作為一個獨立的、可識別的實體,被分配一個統一的資源定位符(URI),信息系統客戶端通過標準通用接口實現對資源信息的管理。其優勢是交易復雜信息處理問題,且代碼共用,開發維護成本較低,有良好的可擴展性,相對SOA有較好性能、效率和易用性;劣勢是接口規范過于簡單,復雜操作適用性不佳,特別在僅支持POST、GET的復雜網絡應用環境下,應用受到限制。
一個通用可自定制信息化系統設計若想滿足企業實用要求,須滿足以下幾個基本要求:
(1)安全。安全幾乎是所有信息化系統的基本要求,其內容涵蓋數據庫安全、服務器安全、通信數據安全、登錄授權審計、業務權限等多方面,都需要在信息系統框架設計中被考慮。
(2)可用。作為通用應用系統,設計需建立標準模塊,要支持在不同業務流下,各種數據的查詢、增加、修改、刪除、顯示的實現,從而滿足人力資源、成產調度、資產管理等各種應用環境的使用需求。
(3)靈活。一個通用信息系統,往往意味著需求多樣,在使用中也是多變的。這樣導致數據管理將不再結構固化,需要具備基于動態的維護模式。
(4)易用。為滿足企業跨地域的應用,在復雜互聯網環境下需有良好的可用性:可擴展、易擴展、易維護、架構簡單,易在云端部署。
基于安全、可用、靈活的互聯網信息系統應用需求考慮,顯然SOA架構在本次信息化系統設計中會有良好的表現。
基本框架由mongoDB副本集數據庫+Tomcat部署環境+Java接口程序+C#應用程序(Windows端)組成,如圖1所示:
系統客戶端為Windows系統下C#應用程序,包括客戶端維護、數據解析顯示、信息數據的增改刪查等基本數據管理功能。考慮互聯網通信的可用性和安全性,客戶端與接口基于https協議,以post方式通過接口管理、獲取服務器數據資源。
服務端采用了Jersey RESTful基本開源框架,考慮接口對各種終端的可用性,接口均采用post方式實現Web服務。接口內容包括數據的增改刪查管理、信息系統動態配置管理、客戶端機及用戶的鑒證授權、客戶端升級維護、日志等。
數據庫系統為服務端提供數據支撐,系統采用基于分布式文件存儲的mongoDB數據庫,并工作在副本集模式,可實現良好的數據冗余。mongoDB數據庫數據模式自由(schema-free),無須進行任何結構定義,這將非常有利于信息數據結構的隨時變換調整,從而使整個系統的彈性架構成為可能。
服務的部署為centos系統,Web服務使用tomcat。系統部署簡單,可非常方便地在云服務器上以復制方式部署。隨著業務量增加,可采取Nginx實現性能擴展。
mongoDB作為基于分布式文件存儲的數據庫,介于關系數據庫和非關系數據庫之間,數據結構非常松散,類似json的bson格式,可以存儲較復雜的數據類型,通過gridFS也可實現文件的存儲管理。mongoDB數據使用“面向集合”概念,數據被存儲在數據集合(Collection)中,類似RDBMS中的表(table),但其無須進行字段定義。實際上,可以根據需要隨時把不同結構的數據以BSON形式存儲在一個文檔(Document)里,類似關系數據庫表中的記錄。
出于便于管理和彈性化組合的目的,需要對數據結構進行標準化處理,此處引入以下幾個概念:
(1)數據單元。每個數據單元對應數據庫中的一個集合,包括系統數據單元和應用數據單元。系統數據單元包括用戶、用戶組、日志、配置、收藏等5個數據單元;應用數據單元則由配置模塊動態生成,如人力資源信息管理中的人員信息表、資產管理表等。
(2)數據流屬性。每個數據文檔(記錄)在數據單元中所處的流程狀態,如固定資產信息管理中,有在庫房、在使用中、已報廢等不同狀態。流程的定義與各流程間關系同樣由配置模塊動態生成。
(3)數據元素。每個數據文檔中的標準數據屬性。本設計中對數據類型進行了標準處理,使之形成標準組件。系統根據配置可統一調整組件在客戶端顯示的大小、位置、外觀、形式;同時,根據不同組件類型,系統在數據庫中有不同的存儲模式,在終端也有不同編輯顯示形式,如表1所示。

表1 數據元素組件
系統Tomcat服務端設計采用了Jersey RESTful基本開源框架,在java環境下實現各種資源的接口服務。信息數據管理維護采用統一URI接口,使用post方式提交Json數據對象,對象屬性包括命令碼、Token令牌等參數。本系統設計基本接口命令如表2所示。

表2 服務端訪問接口
對于文件組件數據元素的維護則需要使用單獨的uri接口,上傳接口依然采用post方式,除了文件本身外,還將提交文件所屬集合、文檔信息。當文件上傳完畢后,接口同步更新關聯的數據信息。而下載則采用get方式,方便共享或調用,客戶端向接口提交下載申請后,服務接口返回一個臨時下載鏈接,一次下載完畢后則鏈接失效,以確保數據安全。
系統客戶端設計運行在Windows系統下.net 4.0運行環境。作為和用戶的交互終端,客戶端設計主要承擔信息化系統數據解析維護,以及系統配置功能。客戶端框架分為前臺數據維護項目和后臺工具配置項目,如圖2所示:
WSAPI類實現了至服務端接口訪問的完整封裝,前臺類僅需處理數據采集和顯示問題,通過該類獲取或保存數據,無須關心URI、認證、權限、數據格式等問題。
后臺設計事實上是整個彈性框架信息系統的核心,而數據元素的動態定義,對每個數據屬性的讀寫權限配置均在此完成,用戶操作界面如圖3所示。
該界面為cfgMng窗體類生成,配置數據均為json對象格式,配置通過校驗后,將提交服務端寫入配置接口,客戶端或服務端也將實時加載配置,實現數據架構調整。數據元素的配置可通過圖4了解。
doc數組屬性為數據集合中所有數據配置組,其中每個對象均為一個信息數據庫集合的一個數據元素,對象中Typ屬性數據元素類別。在配置中,可以調整元素控件在客戶端顯示的大小、位置、顯示形式及內容。
系統前臺設計主要著重與用戶的交互,包括數據集合、數據文件的查詢、顯示、導入、管理等功能。如圖5所示。
TableMng類用完數據集合的查詢、收藏、列表顯示功能。如圖6所示:
TabelEdit類用于編輯、顯示數據元素詳細內容。
TableImport類用于從EXCEL文件導入數據。
TableSel 用戶lnk類型數據元素從其他數據集合映射關聯數據。
圖6中,左側為數據集合圖標入口,通過后臺配置動態生成,中間欄為數據元素查詢欄,可在搜索配置中調整聯合查詢的內容。右側欄為搜索數據文檔結果的展示。右側欄上為“數據流”顯示,點擊可篩選處于當前數據的數據文檔。
安全性是衡量信息系統可用性的一個最重要的指標。系統的安全涵蓋數據庫安全、部署環境安全、數據傳輸安全、認證授權、功能權限、日志等多方面內容。
數據庫安全,系統設計使用mongoDB數據庫,其工作在副本集模式下,數據和保存文件的冗余可保證系統信息資料不被損壞,同時客戶端并不直接訪問數據庫,可配置數據庫白名單僅允許接口服務的IP地址訪問。同時設置數據庫訪問授權,可充分保證數據安全。
部署環境和傳輸安全,通過對centos防火墻設置,系統僅開放443端口,客戶端對服務接口的調用需通過https的post方式進行數據交換,以保證傳輸數據安全,并減少服務端被網絡攻擊風險。
認證授權,系統限制用戶登錄時需協調用戶、密碼、客戶端MAC參數,登錄接口驗證用戶密碼通過后,對比服務端第一次登錄時存儲的mac地址,匹配則通過驗證,并返回用戶對各數據集合的訪問權限。如用戶多次登錄失敗,登錄賬號自動被鎖定。
日志,在系統設計中,日志模塊被附加在所有服務端接口,登錄驗證,數據增改刪查均被記錄至日志數據庫中。
信息系統使用之初,常需要開發者和使用者的反復磨合,如字段調整、顯示等;系統使用中,使用者也會要求調整數據結構、類型。對于使用關系數據庫信息的系統,這些修改通常需要付出時間和開發成本。本設計引入了mongoDB非關系數據庫作為數據、文件的存儲核心。在系統實際應用中,用戶可以實時在線調整數據配置,亦可以即時生效。其非結構化、松散的特性,對于彈性數據架構體系設計要求,表現出了非常良好的適應性和可用性。