摘 要: 探讨了基于面向服务架构(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.