一种面向城市应急联动问题的资源服务化方法及其支撑工具*
2
喻建军1,,杨冬菊1,韩燕波1
(1.中国科学院计算技术研究所,北京100080;2.中国科学院研究生院,北京100049)
摘 要:针对建设支持即时应用集成的城市应急联动系统的实际需求,提出一种可定制的轻量级应用资源服务化方法,为面向业务用户的服务构建提供了一种思路,并实现其支撑工具,可更有效地实现资源服务的按需构建和自动发布。
关键词:城市应急联动系统;资源服务化;Web服务即时集成
中图法分类号:TP311 文献标识码:A 文章编号:1001-3695(2006)02-0053-04
AnApproachtoBuildingWebServicesofResources
inEmergencyControlSystemandItsSupportTool
2
YUJian-jun1,,YANGDong-ju1,HANYan-bo1
(1.InstituteofComputingTechnology,ChineseAcademyofSciences,Beijing100080,China;2.GraduateSchool,ChineseAcademyofSciences,Beijing100049,China)
Abstract:Fortherequirementofjust-in-timeapplicationconstructionofservice-orientedintegrationinemergencycontrolsys-tem,thepaperpresentsanlightweightapproachtobuildingWebservicesfromencapsulationofresources,whichprovideani-deaforendusertobuildingWebservicesondemand,andpublishthemautomatically.Basedonthisapproachweimplement
itssupporttool.
Keywords:EmergencyControlSystem;WebServicesofResource;Just-in-TimeApplicationConstructionofService-Orien-tedIntegration
城市应急联动系统为实现业务汇聚,需要动态集成分布、异构资源,这种动态、开放的集成环境给资源间的互操作带来很多问题。在中科院计算所城市应急联动系统中,采用了具有
[1]松耦合特征的面向服务的体系结构(SOA)来构建整个平
资源服务构建。并且在这些环境下的服务构建都需要软件人员的参与,开发周期相对较长,业务人员对服务不具有自主增添和修改能力,无法满足应急联动系统对服务的按需即时构建的要求。
台,很好地解决了离散资源间互操作和动态集成问题,并通过
[2][3]可视化编程语言VINCA和CAFISE应用开发方法,实现对
! 城市应急联动系统介绍
城市应急联动系统的目标是实现离散资源的互联互通,实现各部门迅速、高效的联合行动,实现对突发事件的统一指挥、统一部署、统一行动,并且能及时、准确地对突发事件做出预测、预报和预警。应急联动系统的核心部分是能够动态集成分布、异构资源的业务汇聚平台,一方面要解决资源的接入和共享问题,另一方面要解决资源的协同和互操作。该平台主要包括四部分:服务构建工具、服务资源社区、应急联动中心办公区和规范构建工具,如图1所示。
应用专家首先通过规范构建工具构建资源使用的规范,包括各种服务、领域知识、使用实体等。根据资源的描述规范和框架,服务资源社区将符合规范的Web服务接入系统,并根据规范对服务进行抽象和归类,进行相应的组织和管理。在应急联动中心办公区中,用户可以根据需要对各种层次的资源进行随意的组合,即时构造应用。服务构建工具则用于遗留系统的资源服务化,将用户已有的文件、数据、遗留系统等封装成标准Web服务。
业务层面应用的即时构造。然而VINCA是基于Web服务的语言,它首先假定各组织的Web服务已经存在,再以这些Web
[2]服务为对象进行业务端编程,其自身并不能实现Web服务
的构建。如何将各组织分布、异构资源服务化,实现的
[4]Web服务成为一个亟待解决的问题。目前工业界存在很多
构建Web服务的产品和解决方案,如IBMWebSphereStudioApplicationDeveloper可以将JavaBean和EJB转换成Web服务;在.NET框架下,MicrosoftVisualStudio.NET也可以根据COM组件创建Web服务。然而这些产品都采用集成开发环境与应用服务平台密切结合的方法,受到应用平台很大的。在城市应急联动系统中,我们面对的是分属不同组织不同部门的异构资源,对各组织机构的基础设施要求不可能太高,因此这种重量级的解决方案并不适合用于城市应急系统中的收稿日期:2005-02-04;修返日期:2005-04-03
基金项目:国家“十五”攻关计划奥运科技专项资助项目(2001BA904B07)
・54・计算机应用研究2006年
\" 服务构建原理
基于系统现有组件实现Web服务是一种较好的方法,但是好的基于组件的应用程序未必能构成好的面向服务的应用程序。在城市应急联动系统中,服务接口是从业务层面进行定义的,是面向服务的接口设计,在现有系统中很难找到功能单元组件能够与之完全匹配,所以基于现有组件实现Web服务的方法在城市应急联动系统应用环境下并不适用。并且城市应急联动系统需要实现的Web服务主要是对各种关系和非关系数据资源的访问和数据转换,是一种数据服务
[4]
# 关键技术
#.! =>?模式的语义元数据定义
资源描述框架(RDF)是W3C组织定义的用来表现万维网上各类资源信息的一种语言,它最初用于表达关于Web资源的元数据。然而,随着Web资源这一概念泛化后,RDF可被用来表达任何可在Web上被标志的事物信息,同时演变成为一种用于结构化元数据编码、交换和重用的基础架构。RDF使用XML作为交换和处理元数据的公共语法。借助于XML语法提供的性、可扩展性、可读性和复杂结构表示能力,RDF。所
以我们摒弃了基于组件的Web服务实现方法,提出了一种基于数据层的服务构建方法。服务构建原理如图2所示。
图1 城市应急联动系统图2 服务构建原理
该方法首先根据物理资源的数据结构,定义出领域相关的语义元数据。在语义元数据基础上定制服务的业务逻辑,形成服务定义。服务发布模块根据该定义生成服务描述文件,并向外发布。服务实现模块则负责在接收到请求时调用服务定义,将其业务逻辑转换成对物理资源的实际操作,操作结果经封装后作为服务响应返回,从而实现物理资源的服务化。
对于语义元数据的定义,我们采用了RDFSchemas[7]来进
行描述。RDFSchema具备很好的人类可读性和机器可处理性,并且有良好的性、互操作和可扩展能力,非常适合于领域语义的定义。这些语义对于业务用户来说是一些相当熟悉的领域概念,在其基础上定义服务,可以屏蔽底层复杂的数据结构,降低对专业技术知识的要求,使得以业务用户为主导的服务定义成为可能。但这同时也带来了新的问题:服务在定义阶段是基于语义元数据的,而在实现阶段却更多地依赖于程序对象,如何在两者间实现平滑过渡。RDFSchema面向对象的特性和XML语法结构,恰恰很好地解决了这个问题。通过XML/Object映射,可以将RDFSchema定义的资源语义元数据和程序对象自然而紧密地联系起来,使它们一一对应起来。正是这种一致的映射关系,使得资源服务的业务逻辑可以使用一种面向对象的操纵语言来进行描述。ODMG组织制定的对象
查询语言OQL
[8]
完整地定义了各种对象操作,将OQL作为服务定义的语法,可以很好地实现领域模型中语义元数据操作到运行环境中程序对象操作的过渡。在运行环境中OQL的执行只是对程序对象的操作,这种操作必须最终反映到物理资源上。由于RDFSchema中定义的语义元数据本身是由物理资源的数据结构抽象而来,其映射得到的程序对象与物理资源的数据结构间同样具有很好的对应关系,通过Object到Data的绑定,程序对象的操作可一致地反映为物理数据的操作。
从图2可以看出,通过RDFSchema、XML/Object映射、Ob-ject/Data绑定和OQL语言,服务定义、服务发布和服务实现各个过程被有机地结合起来。
能够明确的、无歧异的表达语义,并使得标准元数据的编码、交换和处理能够一致。RDF还定义了一个简单却很强大的数据模型,通过该模型RDF可以一种标准的机制来表达语义信息。这使得RDF能够容易地在对立元数据集之间协同工作。RDF另外也提供了一种发布人类可读和机器可处理的词汇表的方式,这就是RDFSchema。RDFSchema被用来声明由特定社区定义的词汇表,该词汇表是由一套语义属性类型组成。通过它可以定义RDF描述中合法的属性,以及这些属性类性的特征和。RDFSchema为RDF提供了一个类型系统,但它自身并没有针对特定应用作出词汇定义,而只是提供了描述这些类和特性的能力。RDFSchema所具有的这些能力本身也是以RDF词汇形式提供的,采用RDFSchema语言定义的词汇描述本身也是合法的RDF图。
由于RDFSchame具有这些优异的特性,所以在系统中用它来定义资源数据的元数据语义集十分适合。下面以银行领域为例,对其资源的元数据语义集作出RDFSchame定义。
首先需要人(Person)这一分类:
bank:Person rdf:type
rdfs:Class.
人(Person)具有字符串类型的名字(Name)特性,其RDF声明如下:
bank:name rdf:type rdfs:Property.bank:namerdf:rangexsd:string.bank:name
rdfs:domain
bank:Person
在定义了bank:Person类之后,我们还需定义一些类来表示各种特定角色的人,例如雇员(Employee)、客户(Customer)等。这些类定义如下:
bank:Employeerdf:typerdfs:Class.bank:Customer
rdf:type
rdfs:Class.
雇员(Employee)、客户(Customer)与人(Person)间具有特化关系(SpecializationRelationship),在RDFSchema中这种关系描述如下:
bank:Employeerdfs:subClassOfbank:Personbahk:Customer
rdfs:subClassOf
bank:Person
我们再定义账户(Account)类,账号具备开户时间creationDate)和账号(accountId)两个特性:
bank:Accountrdf:typerdfs:Class.bank:creationDaterdf:typerdfs:Property.bank:creationDaterds:rangexsd:date.bank:creationDaterdf:domainbank:Account.bank:accountIdrdf:typerdfs:property.bank:accounted
rdf:range
xsd:string.
(第2期
bank:accountedbank:accountbank:accountbank:account
喻建军等:一种面向城市应急联动问题的资源服务化方法及其支撑工具
rdf:domainrdf:typerdf:rangerdf:domain
bank:Account.rdfs:Propertybank:Account.bank:Customer.
55 ・ ・
客户(Customer)具有账户(Account)特性,RDF表示如下:
下面是以上RDF声明的RDF/XML代码,它定义了银行领域内客户、账户等资源的元数据语义集:
<?xmlversion=\"1.0\"?>
RDFxmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syn- xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xml:base=\"http://bank.example.org/schemas\">
如前所述,RDFSchema的类型系统和面向对象的编程语言(如Java)的类型很相似,并且使用了XML语法进行描述,通过XML解析器对其进行解析,按照预定义的映射关系,可以动态生成与元数据定义相对应的程序对象。
RDFSchema规范中定义了一套RDF资源(包括类和属性等)和它们间的关系约束,这些RDF资源构成了RDFSchema的核心词汇表。特定应用的词汇表都通过使用核心词汇表进行定义和描述。核心词汇表中的词汇与编程语言的对象概念有着很强的相似性,表1说明了两者间的对应关系。
在系统中我们采用这种对应关系来动态生成运行环境中的程序对象。下面我们以银行RDFSchema为例,说明其映射过程。银行RDFSchema的RDF图如图3所示。
常用核心词汇面向对象概念rdfs:Class类(Class)rdfs:Property属性(Property)rdfs:type实例(Instance)
rdfs:subClassOf继承(Extend)
rdfs:range属性类型(PropertyType)rdfs:domain包含该属性的类(Has)rdf:Bag数组(Array)rdf:Seq
列表(List)
#.# 基于对象查询语言的服务定义
ObjectQueryLanguage(OQL)是一种面向对象的类似于SQL的查询语言,我们采用它来定义资源服务。OQL是ODMG3.0中制定的对象查询语言标准,它完全面向对象,具备继承、多态和关联等特性。由于其面向对象的特点,使得OQL不仅适宜于技术人员,同时也适宜非技术人员。并且由于其处理对象与RDFSchame中语义元数据有着很紧密地对应关系,用它来定义服务逻辑,使得以业务用户为主导的服务定义成为可能。
下面是采用OQL描述的一个简单的服务定义。该服务用于查询一个客户的账户信息:
SELECTc.accountFROMCustomerAScWHEREc.name=:name
上面的OQL描述了服务的业务逻辑:服务接受一个名字请求,查询出名字与之匹配的客户后,返回该客户的账号信息。同时OQL也隐式地说明了服务请求和应答的语义及结构定义:服务的请求参数与Customer类的name属性具有一致的语义,对应于RDFSchema中bank:name;服务返回结果是一个Account对象,其语义对应于bank:Account。所以根据RDFSchema中语义描述,可生成该OQL定义服务的WSDL,其片断如下:
...
・56・计算机应用研究2006年
portTypename=\"AccountService\"> inputmessage=\"impl:queryRequest\"name=\"queryRe- outputmessage=\"impl:queryResponse\"name= operation> 层。下面是查询客户账户信息服务的OQL定义编译成目标SQL语言的例子: OQL: SELECTc.account FROMCustomerASc name WHEREc.name=: SQL: SELECTa.accountId,a.accountDate FROMAccountASa,CustomerASc WHEREa.accountId=c.accountIdANDc.name=:name 这样就通过数据映射层实现了对象到数据的绑定,并隔离数据实际存储方式,实现多种类型资源的服务化。 可以看出WSDL中的元素类型定义与RDFSchema中的语义定义很好地保持了一致。这种携带领域语义信息的WS-DL,可以帮助服务资源社区在服务注册时自动完成对服务的$ 基于数据库的资源服务化工具实现 归类和组织。 #.$ 对象到数据的绑定 由于使用了OQL对服务进行定义,服务实现时需要将这种面向对象的查询转换成对物理资源数据的操作,可以采用Object/DataBinding技术来实现这种转换。Object/DataBin-ding能够在程序对象和资源数据间建立起关系,这通过某种机制实现两者间状态的同步。JDO,ORM都属于此类技术。在实际应用环境下的物理资源大多以在关系性数据结构进行组织的,所以这里以ORM为例阐述其原理。ORM即Object-Rela-tionlMapping,它通过加入间接数据映射层将领域模型和数据库完全开,数据库和领域模型之间的所有存取操作都由数据映射层处理,并且允许双方都能变化。图5示意了ORM的实现原理。 由于程序中对象模型是由RDFSchema定义的元数据语义演变过来,与数据库中实体关系模型可能存在一定差别,为增强数据映射层的灵活性,可将对象和数据结构的映射关系集中到元数据文件,元数据文件详细描述了数据库中的列如何映射到对象的属性域。有了元数据文件,就可以通过代码生成或者反射机制来避免数据映射层的重复代码。通常使用XML文档来描述元数据映射,如银行的例子中,元数据文件如下: 数据映射层除了维护这种映射关系外,另一个重要的职责就是将OQL编译成为数据库的目标SQL语言并执行。数据映射层通过翻译器首先将OQL语句解析成为OQL树,然后根据元数据文件中描述的映射关系将其对应成为恰当的参数化SQL,并将输入参数绑定到SQL语句。当数据库完成SQL操作后,数据映射层对数据库返回的结果集进行预处理,生成与结果集相对应的对象,再将这些对象作为OQL查询结果返回上 基于上面的设计,我们实现了一个用于关系性数据库资源服务化的工具。该工具基于J2EE框架,采用了Servlet和JSP技术,以Tomcat作为应用服务器,采用JAXP完成RDFSchema到程序元数据对象的映射,Hibernate作为元数据对象到数据库资源的数据映射层,并以ApacheAxis作为SOAP服务器。工具整体结构如图6所示。 图7 服务构建工具界面 现在工具已经在中科院计算所承担的科技奥运项目———城市应急联动系统上得到了很好地应用。该工具使用方便,并缩短了Web服务构建的时间。如在以北京市为主体的抓捕疑犯的模拟环境中,需要查询疑犯的银行账号的交易记录。在使用工具前,创建查询交易记录的Web服务,从程序开发、服务部署到服务测试,需要近1天的时间。使用工具后,创建相同的服务,花费的时间缩短到不足10分钟,大大地提高了服务构建速度,很好地实现了即时构造。(下转第77页) 第2期陈 阳等:应用层组播树性能的测量研究 77 ・ ・ 我们进一步考虑相似度的高阶情况,定义: (k) Stability=the-same(n,n+k) 其均值可以按如下公式计算: Average(k)= 1m (n,n+k)*the-same mn=1 1阶到40阶的平均Stability如图3所示。由图3可见,对于这三种算法,它们的稳定性随着k的增大并没有太大的变化。我们分析取的k最大为40,也就是说,在时间上间隔将近1天。实验结果表明,最大带宽算法和最短路径树算法都具有相当高的稳定性。 。 (上接第56页)2003,18(4):484-494.andTechnology, [4]ITSO,RaleighCenter.面向服务的体系结构概述[J].IBMDeve-loperWorks,2004,特刊(1):8-13. [5]KuassiMensah,EkkehardRohwedder.DatabaseWebServices[EB/ OL].http://www.oracle.com/technology/tech/Webservices/ht-docs/dbWebservices/Database-Web-Services,2002. [6]KuassiMensah.WebServiceEnableYourDatabase[J/OL].http:// www.sys-con.com/Webservices/articleprint.cfm?id=515,2003. [7]DanBrickley,RVGuha,BrianMcBride.RDFVocabularyDescrip-tionLanguage1.0:RDFSchema[EB/OL].http://www.w3.org/TR/rdf-schema/,2004. [8]RGGCattell,DouglasKBarry,MarkBerler,etal.ObjectData Standard:ODMG3.0[M].USA:MorganKaufmann,2000.-126. [9]RobertHustead.MappingXMLtoJava[J/OL].http://www.java-world.com/javaworld/jw-08-2000/jw-0804-sax.html,2000. [10]RonaldBourret.XMLDataBindingResources[J/OL].http:// www.rpbourret.com/xml/XMLDataBinding.htm,2004. % 结论 针对城市应急联动系统的服务环境,本文提出了一种基于数据层的服务构建方法。这种轻量级的资源服务化方法不仅缩短了服务构建时间,满足了城市应急联动系统对Web服务即时构造的要求,并且降低了即时构造应用对基础设施的要求。服务构建工具作为VINCA和CAFISE应用开发方法的补充,使城市应急联动系统更加完善和。但作为城市应急系统的一部分,工具在定义服务时还缺乏一种机制与业务汇聚平台中服务语义相结合,在下一步的工作中,将在工具中增强对服务语义的支持,使其成为一个整体。参考文献: [1]MarkEndrei,JennyAng,AliArsanjani,etal.Patterns:Service-Orie-ntedArchitectureandWebServices[EB/OL].http://www.red-books.ibm.com/redbooks/pdfs/sg246303,2004. [2]熊锦华,李厚福,韩燕波,等.支持Web服务组合、面向业务用户 的可视化编程语言VINCA的设计与实现[J].计算机辅助设计与图形学学报,2004,16(2):180-185. [3]YHan,etal.CAFISE:AnApproachEnablingOn-DemandConfigu-rationofServiceGridApplications[J].JournalofComputerScience 作者简介: 喻建军(1976-),男,硕士研究生,研究方向为服务网格、资源服务化;杨冬菊(1975-),女,博士,研究方向为服务网格、网格基础服务、语境敏感计算;韩燕波(1962-),男,研究员,博士生导师,博士,主要研究领域为软件集成技术、中间件、信息网格。
因篇幅问题不能全部显示,请点此查看更多更全内容