摘 要: 探討了基于面向服務架構(SOA)的移動綜合應用平臺(簡稱IMAS)的研究與實現,定義了一個基于標準Web服務接口的應用系統建設框架,并在此框架上建設公共的功能組件提供給各下屬地市公司使用,整合了AD的單點登錄;提供了統一的用戶管理、統一的權限訪問控制;通用服務的共享提高了開發的效率,獲得客戶高度評價。
關鍵詞: 移動綜合應用平臺; 面向服務架構; 單點登錄
隨著企業信息化的飛速發展, 基于多種開發平臺和工具的軟件系統得到大量應用, 企業中的軟件系統變得日益龐大和復雜。如企業資源計劃(ERP)、辦公自動化(OA)、客戶關系管理(CRM)等應用系統都是在當時的業務需求下建設并分別歸屬為企業不同部門使用, 這些系統之間存在很多功能重復開發,且相互獨立運行,無法進行信息交流和共享,在企業內部形成了一個個“信息孤島”[1,6]。
中國移動某分公司同樣也存在類似情況,其業務以及人員組織架構正在經歷著快速的增長,在不同的部門中,各種信息系統被開發以滿足不同的管理需求。但是,由于在各下屬的地市公司中沒有一個標準的建設框架,并且許多同類型、同功能的系統被重復開發,這導致了諸多問題,如系統用戶信息的不一致、資源的浪費等。基于以上問題分析,本文提出建設基于面向服務架構(SOA)的綜合應用平臺的解決方案:即需要首先定義一個基于標準Web服務接口的應用系統建設框架,然后在此框架上建設公共的功能組件提供給各下屬地市公司使用。
1 基于Web Service技術的面向服務的體系結構
面向服務的體系結構(SOA)是一種基于標準的組織和實現方法,它利用網絡共享服務使IT系統緊密地服務于業務流程,通過能隱藏潛在技術復雜性的標準界面,支持將業務作為連接服務或可重復業務進行集成。也就是說它是一種能夠提高松散耦合的IT應用程序體系結構,在這種體系結構中,每個模塊后者功能被定義為一個服務,服務之間相互通信進行簡單的數據傳遞,也可以順序調用多個服務形成業務流程。所有的服務都是相互獨立的,外部只能通過服務描述來獲得服務所提供的功能,具體實現卻是不可見的[2]。
Web Service是一個應用程序,把該應用程序看作服務,這種服務可以在Internet 通過消息傳遞動態地被發現和組織,它使用SOAP(簡單對象訪問協議),并通過HTTP 的傳輸協議來傳遞SOAP消息,SOAP消息其實是以XML文檔的格式在Web服務和調用中傳遞,XML最重要的優勢就是文件能夠跨平臺,因此決定了Web服務的跨平臺性。一個服務是如何被發布、發現和調用的呢?首先,由UDDI.org開發的一個注冊中心標準統一描述發現和集成UDDI(Universal Description Discovery Integration)、發布和發現開發者提供的Web服務。其次,Web Service技術通過同樣基于XML的WSDL(Web 服務描述語言)來定義Web服務,說明如何調用它。其實,UDDI對Web服務作了絕大多數的描述,WSDL可以看作是UDDI的一個子集[3-4]。
Web Service 的主要目標是跨平臺的可互操作性, 是創建可互操作的分布式應用程序的新平臺,對于跨防火墻的通信、應用程序的集成、B2B 的集成、軟件和數據重用有其優勢。由于Web Service 的上述特點,使得Web Service 技術成為目前實現SOA架構的最理想的技術[5,7,8]。
基于Web Service的SOA有服務代理、服務請求者、服務提供者三個角色和發布、查找和綁定三個基本操作。通過三個基本操作把三個角色聯系起來,基本結構如圖1所示。
2 移動綜合應用平臺解決方案
中國移動某分公司提出了綜合應用平臺的解決方案,如圖2所示,設計面向服務架構(SOA)的應用基礎框架,包括對基于XML的Web服務接口標準的定義。平臺最終被部署在微軟的.NET框架和應用中心服務器上。
在平臺開發方面,開發了單點登錄、AD用戶同步這些基礎的管理模塊,其他還包括如用戶管理、權限控制、消息接口、郵件接口、手機短消息接口、發布管理這些基礎的公共模塊,并將持續地進行擴展以覆蓋更多高級的功能模塊。
3 組件功能及詳細設計
3.1單點登錄
3.1.1功能及實現描述
綜合應用平臺提供的單點登錄是在省公司統一信息平臺基礎上提供的本地單點登錄配置方法,對于有特殊業務需求的系統,提供Web Service的驗證接口,由應用系統自身實現邏輯。該組件提供對登錄驗證的基本管理,并提供獲取當前登錄用戶信息的接口。它包括的函數為:
FsllIAMS.SSO.GMCCIAMSModule.GetUserID():返回當前登錄用戶的員工編號;
FsllIAMS.SSO.GMCCIAMSModule.GetUserAccount():返回當前登錄用戶的登錄賬號。
3.1.2 示例代碼(ASP.NET)
<%@ Page Language="C#" %>
<%
string userid=FsllIAMS.SSO.GMCCIAMSModule.GetUserID();
string account= FsllIAMS.SSO.GMCCIAMSModule.GetUserAccount();
Response.Write("Hello: " + account);
Response.Write("<br>");
Response.Write("Your UserID is : " + userid);
%>
3.2目錄同步
3.2.1功能及實現描述
目錄同步主要用來為各個應用系統提供最新的組織架構信息、用戶信息和領導分管信息。為了保證各應用系統用戶信息的一致性,所有應用系統都應該通過目錄同步組件的Web Service接口來獲取組織架構信息、用戶信息和領導分管信息,在數據庫中保留數據副本,數據的同步可以通過Windows Service來進行自定義策略的同步更新。該組件提供應用系統獲取組織架構、用戶、領導分管信息的接口等功能。其包括的函數有:
GetAllUserInfo:獲取所有用戶的詳細信息;
GetUserInfoByUserID :根據用戶標識號(員工編號)獲取用戶的信息;
GetUserInfoByDPID :獲取指定部門/科室的所有用戶信息;
其他函數還包括:獲取所有組織單元的信息GetXXX;獲取指定用戶所在的組織單元信息GetXXX;通過組織單元編號獲取組織單元及下級單元的信息GetXXX;獲取領導分管的詳細信息GetXXX等。
3.2.2 詳細設計
應用系統通過可自定義策略的Windows Service或其他定時服務來調用目錄同步組件的Web Service接口同步用戶、組織架構和領導分管信息,自定義策略需要支持運行間隔指定和運行時間指定,一般情況下同步應設置在晚上運行。
根據人力資源屬性劃分的慣例,建議應用系統采取圖3所示的數據庫邏輯模型來保存組織架構信息、用戶信息以及相關信息。其中組織架構應該支持任意多層,在職類型與職位級別可以從用戶信息中獲取到。
同步邏輯:同步組織單元⇒同步在職類型⇒同步職位級別⇒同步用戶⇒同步領導分管信息。對于每種數據的處理,步驟為:處理已不存在的數據⇒對接口返回的數據進行新增或更新操作。若發現用戶或組織單元在Web Service接口返回的數據中已不存在,可根據應用系統的業務決定是否可以直接刪除,因為此用戶或組織單元可能在某些模塊產生了業務數據;另外在職類型和職位級別也是有可能變化的,需要進行同步更新。
因組織架構調整、崗位調轉或崗位競聘等原因,人員調整會經常發生,影響最大的是隨組織架構進行流轉的行政審批流程。故要求所有的行政審批都應該根據領導分管信息來決定流程扭轉,這樣當人力資源進行調整后所有系統都將自動調整扭轉,而不需要管理員手工調整各流程。
由于人員可能調換部門或離職,組織單元可能拆分或合并,并影響到業務模塊統計分析的結果,建議在設計統計功能邏輯時應考慮業務是優先采用組織單元匯總還是用戶匯總,考慮已經不存在的用戶或組織單元所產生的業務數據的統計值如何展現到分析結果中。
3.3 集中授權
3.3.1功能及實現描述
集中授權提供應用系統的權限管理功能。包括的函數有:
CheckACL:檢查用戶指定是否擁有指定權限粒度的訪問權限;
UpdateACLNodeXmlDom:用XML Document來更新整個權限粒度數據;
UpdateACLNode:對權限粒度的管理;
其他函數還包括:返回應用系統的所有權限粒度Get***;返回用戶對指定應用系統可訪問的權限粒度集合Get***;返回應用系統可以操作的所有角色,應用系統角色管理,設置角色可訪問的權限粒度等。
3.3.2詳細設計
其中重點描述多粒度訪問權限如下:多粒度訪問權限是指應用系統內部的各種訪問權限,例如:對模塊A、對模塊A的子模塊A.a、對模塊A.a的子模塊A.a.1、對頁面sample.aspx、對頁面a.aspx的POST方式等的訪問權限。所有訪問權限節點將組成一個多粒度訪問權限定義樹,XML文件的Schema描述為ACLNodeTree.xsd。格式圖如圖4所示。
應用系統定義的權限粒度文件應更新到綜合應用平臺,可以在綜合應用平臺上通過頁面進行上傳更新(如圖5為示例系統權限粒度定義文件上傳后的頁面)或調用集中授權組件提供的相關Web Service接口進行更新。
對于各權限粒度的權限設置可以在綜合應用平臺中設置(如圖6為設置“測試人員”角色可以訪問的權限粒度)或調用集中授權組件提供的相關Web Service接口進行設置。
綜合應用平臺提供的授權管理分為系統級訪問權限控制和系統內多粒度訪問權限控制。其中系統級訪問權限已經由單點登錄組件自動完成檢驗,應用系統無須關心;若應用系統需要通過綜合應用平臺的多粒度訪問權限控制來實現權限管理,應保證權限粒度定義數據在綜合應用平臺和應用系統之間實現同步更新;而用戶組、角色、角色訪問權限等功能可在綜合應用平臺的系統管理員專區完成設置,應用系統無須額外開發。
其他組件如消息通知和待辦待閱信息等主要用來為各個應用系統提供發送郵件、發送短消息和接收短消息、把待辦待閱信息推送到綜合應用平臺和省公司統一信息平臺等功能,在此不一一贅述。
4 產生效益
該解決方案提供了標準的應用系統執行框架,標準的應用系統接口定義,整合了AD的單點登錄,提供了統一的用戶管理,統一的權限訪問控制,通用服務的共享提高了開發的效率。目前已成為中國移動某分公司及各下屬地市所有管理系統的支柱,并獲得客戶高度評價。
參考文獻
[1] 馬俊,丁曉明. 基于SOA的異構系統集成研究[J]. 計算機工程與設計, 2008,29(14):3638-3641.
[2] 任贛. SOA助建新一代移動O-CRM系統[J]. 中國電信業,2006(12):68-70.
[3] 李安渝.Web Services 技術與實現[M].北京:國防工業出版社,2003.
[4] 曾文英,趙躍龍,齊德昱.ESB原理、構架、實現及應用[J].計算機工程與應用, 2008,44(25):225-229.
[5] 曹曉葉,王知衍,許曉偉,等. 基于SOA的企業應用集成研究與應用[J].微計算機信息,2007,23(12):16-19.
[6] 劉敏,嚴雋薇.基于面向服務架構的企業間業務協同服務平臺及技術研究[J].計算機集成制造系統, 2008,14(2):306-313.
[7] ZELEN A. Open source ESBs for application.integration (SOA optional) [EB/OL].[2007-02 - 16]. redmonk.com/public/OpenSource ESBs.pdf.
[8] 顧天竺,沈潔, 陳曉紅,等. 基于XML的異構數據集成模式的研究[J].計算機應用研究,2007,24(4):94-97.