OSA(Open Service Access)是3GPP组织提出的用于快速部署业务的开放业务架构,它着眼于为移动通信用户提供业务,希望将业务部署与承载网络分离开来,成为独立部分以便第三方业务提供商有机会参与竞争,实现业务开发的开放性。OSA实现方式是采用一种开放的、标准的、统一的网络应用编程接口(API),使网络和应用所使用的操作系统和语言完全独立,为第三方提供业务加载手段。
1 开放业务架构OSA
1.1 OSA的结构
开放业务架构OSA的结构如图1所示[1]。
1.1.1 应用
应用是指开发的具体业务,如VPN业务、会议电视、基于位置的应用等,可以由一个或多个应用服务器来实现。
1.1.2 框架
框架是为应用提供在网络中利用业务能力的机制,同时它也作为一种业务能力特征提供给应用,叫做框架业务能力特征,主要用来进行鉴权和发现。通常,在应用使用网络所提供的业务能力之前,应用和网络之间必须签署相关的业务协议;只有签了这样的协议,该应用才有权使用网络所提供的业务能力。所以,当某个应用在使用业务能力特征所提供的网络功能之前,框架必须对这个应用进行鉴权;鉴权之后,框架的“发现机制”为应用找出业务能力服务器所提供的业务能力特征。从这个意义上讲,框架是一种管理其他类型业务能力特征的公共业务能力特征。
1.1.3 业务能力特征
业务能力特征是指从底层网络抽象出来的网络功能。应用在使用这些业务能力特征时,不用关心底层的网络结构,也不需要关心底层是无线网络还是有线网络。比较典型的业务能力特征有:呼叫控制、用户交互、移动管理、帐户管理、计费等。
业务能力特征一般由一个或多个业务能力服务器来实现,在业务能力服务器启动时,这些业务能力特征随之启动;业务能力启动后,都要向框架进行注册,以便应用需要使用某个业务能力特征时,框架能够“发现”它。
1.2 OSA的工作原理
1.2.1 应用服务器与框架间的基本机制
应用服务器与框架之间有鉴权、授权、发现、制定服务协议、安全等几种基本机制。鉴权机制用于业务部署时业务应用和框架之间的鉴权;授权机制用于确定鉴权后的业务应用程序有哪些权限;在鉴权后业务应用程序可以访问框架的发现机制接口,获得各个业务能力服务器的信息;业务应用与一个网络业务能力特征交互之前,需要建立一个业务协议。业务协议由离线部分和在线部分组成。在应用运行中接入任何网络业务能力特征之前,必须签署业务协议的在线部分。此外,框架还提供安全机制,对调用OSA API方法的业务应用程序的数据做接入检查。
1.2.2 框架和业务能力服务器间的基本机制
框架与业务能力服务器间的基本机制为注册机制。业务能力服务器中存储的所有非框架业务能力特征只有到框架服务器中注册后,才能被授权的应用发现。业务能力服务器启动时,它所支持的业务能力特征要到框架中注册。此外,随着业务的不断拓展,网络所提供的业务能力也不断增加,就会扩展一些新的业务能力特征或新的业务能力服务器,它们也必须到框架中注册登记,然后框架才能为应用提供发现机制。
1.2.3 应用和业务能力服务器间的基本机制
应用和业务能力服务器之间的基本机制是唤醒机制。如果一个用户已经签约了某个业务,那么当业务能力服务器收到该用户与该业务的相关消息时,会唤醒对应的业务应用程序。
2 可扩展标记语言(XML)
和可扩展样式表变换语言(XSLT)
2.1 可扩展标记语言
可扩展标记语言(Extensible Markup Language),缩写为XML,是标准通用标记语言(SGML [ISO 8879])针对特定应用领域的一个子集[2]。
XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。用户可以根据某些通用的原理来创建自己需要的标记,扩充标记库,因此具有相当的灵活性。新创建的标记可在文档类型定义(DTD)中加以描述[3]。
XML标记描述的是文档的结构和意义,它不描述页面元素的格式化。文档本身只说明文档包括什么标记,而不说明文档看起来是什么样的,但是可用样式单为文档增加格式化信息。
2.2 XML语言的优点
XML语言可以设计与特定领域有关的标记语言,允许各种不同的专业(如音乐、化学、数学等)开发与自己的特定领域有关的标记语言。因此,该领域中的人们可以交换笔记、数据和信息,而不用担心接收端的人是否有特定的软件来创建数据。
XML语言是自描述语言,基本上使用简单的数据格式,可以用纯ASCII文本来书写,也可以用几种其他定义好的格式来书写。XML文本几乎不会"磨损",即使丢失一些字节,剩下的数据还是可以读取的。
XML语言可用于应用间交换数据。它的功能非常强大,且容易阅读和编写,因此它成为在不同应用间交换数据的理想格式。人们可以利用任何理解XML语言的工具来处理数据,而不必因为数据的专有格式被限制在一个特定的程序上。
XML语言利于结构化和集成的数据。由于XML的数据是结构化的,用户不仅可以指定文档中元素的词汇表,还可以指定元素之间的关系。
由此可见,XML是一种很好的多层应用程序粘合剂[4]。
2.3 可扩充样式表变换语言
XML不是一种单独的技术,而是多种相关技术的组合。XML允许用户定义自己的元素标记和属性,所以它需要用户必须有一个样式表,指定如何显示自己的元素。用户需要一种机制,将自己的文档与样式表联系起来。
随着相关技术的发展,XML的角色从一种文档标记工具演变成一种用于应用程序和应用程序组件间交互数据的工具,变换“模块”的独立意义日益突出,最终与格式化和显示毫无关联,引起了格式化可扩充样式表语言(XSL)和变换XSL(XSLT)的分解。
XSL旨在添加、移动以及重排文档树元素的顺序,而XSLT是将一种格式的XML文档变换成其他格式XML文档的语言。XSLT样式表的输入虽然必须是规范的XML文档,但可以设法使XSLT生成普通文本或其他格式的输出。
XSL通过采用XSLT描述一个文档怎样变换成另一个使用格式化词汇表的XML文档来制定被变换文档的样式。XSLT也可以独立于XSL之外使用。XSLT不用作完全通用的XML变换语言,它主要用于作为XSL的一部分所需要的变换类型。用XSLT编写的文本称作样式表,当XSLT被变换成XSL格式化词汇表之时,该变换用作样式表。
XSLT样式表是一个根元素为<xsl:stylesheet>的XML文档。如果把XML文档看作树状结构,XSLT就表示源树到结果树的变换。样式表包含一个模板规则集合。模板规则由两部分构成:一部分是与源树节点匹配的模式,另一部分是可以初始化以形成结果树组成部分的模板。变换通过建立模式和模板之间的联系来实现。模式与源树中的元素相匹配。模板经初始化来创建结果树构成。结果树与源树相分离。结果树结构可以与源树结构完全不同。构造结果树时,可以过滤并重新排序来自源树的元素,并可以通过<xsl:apply-templates/>元素添加随机结构。
应用于节点的模板可能不止一个,这时采用优先规则确定应用哪个模板规则。一个节点通过查找带有匹配于该节点模式的所有模板规则,并从中选择最佳规则而加以处理;然后采用该节点作为当前节点,采用源节点列表作为当前节点列表初始化选定规则的模板。模板通常包含选择一个附加源节点加以处理的指令,通过依次处理列表中的每个成员创建树结果。
在变换过程中,任何给定时刻都有一个源节点列表,通过查找匹配模式,初始化与模式相关联的一个模板,产生结果树。变换过程以处理只包含根节点的列表开始,源节点列表为空时变换过程结束。
3 XSLT在OSA业务开发中的应用
3.1 传统的OSA业务开发
传统的OSA业务开发中,业务开发者根据具体的业务流程,调用相应的接口函数,并实现相应的回调函数,产生不同的业务逻辑,从而完成不同的业务开发。
以号码翻译(Number Translation)业务为例。如图2所示,一个业务流程由各个接口中的接口函数“串联”而成。这些函数可以分为业务能力服务器端的接口函数和应用端的接口函数两部分。业务能力服务器端的接口函数,如图2所示enableCallNotification()、routeReq()、deassignCall()等,在业务能力服务器中实现,在开发业务时调用。应用端的接口函数,也称为回调函数,如图2所示的callEventNotify()、routeRes()等,需要在开发业务时由业务开发者根据不同的业务自己来实现,这些函数体现出业务的逻辑关系。此外,业务开发者还可以根据业务的需要添加一些附加函数。 可以说,整个业务的“骨架”由接口函数组成。
3.2 开发OSA业务的新方法
传统的OSA业务开发中,由于都是直接通过实现相应的回调函数来完成业务逻辑,因此要求业务开发者对OSA的接口函数以及业务的逻辑关系有比较深刻的理解。
我们提出一种开发OSA业务的新方法:使用XML语言,定义出与接口函数同名的标记,使用这些标记来描述业务。这样,一个业务就可以用一个或者多个XML文档来表示,然后通过XSLT变换成Java代码编译执行。这种业务的开发及其执行方式如图3所示。
仍然以号码翻译业务为例。首先定义出描述业务需要的标记,如图2中的接口函数所示,定义标记:
<!ELEMENT enableCallNotification EMPTY>
<!ATTLIST enableCallNotification
assignmentID %TpAssignmentID; #REQUIRED
appCallControlManager %IpAppCallControlManagerRef; #REQUIRED
eventCriteria %TpCallEventCriteria; #REQUIRED
>
这样就完成了标记enableCallNotification及其参数的定义,其余标记的定义类似。使用定义好的标记来描述业务流程和逻辑,生成一个或多个XML文档。
按照业务的需求,定制合适的模板。针对以上标记,可以定义规则为[5]:
<xsl:template match="enableCallNotification">
enableCallNotification标记的转换
</xsl:template>
然后使用定义好的XSLT模板对XML文件进行变换,生成相应的Java代码;最后将Java代码放在业务执行环境中编译执行。
3.3 使用XSLT开发OSA业务的优点
使用XML语言开发业务,形成的业务用一个或多个XML文档来表示,然后使用定义好的XSLT模板把XML文档转换成相应的Java代码,最后在业务执行环境中加载业务。业务执行环境进一步封装了OSA的一些接口,还具有线程池和数据库连接池功能,完成业务逻辑以外的辅助功能。由于有了业务执行环境的支持,很多处理可以在业务执行环境中完成,对于业务开发者特别是第三方业务开发者来说,很大程度上简化了业务的开发过程。对他们来说,只需要关心业务的逻辑关系,不必关心很多细节问题。这样必将吸引更多的业务开发商来开发业务。
另外,由于使用XML描述的业务是一个个XML文档,我们可以设计一个图形化的业务开发界面,以更加方便业务的开发。在业务开发环境中,我们使用Java的JDOM技术来完成XML文档的生成。在图形化的界面中,业务逻辑可以用一个代表标记的控键串表示,这样会在很大程度上方便业务开发者对业务的开发和修改。可以说,提供图形化的业务开发界面是使用XML语言和XSLT语言开发业务最突出的优点。
4 结束语
在未来的通信系统中,很难再找到像第2代移动通信系统中的语音业务这样的“杀手级应用”(Killer Application),但是带宽的增加将使通信系统可以为用户提供更多的业务,从某种程度上说,业务的多样性将成为未来通信系统的“杀手级应用”。把XML和XSLT运用于OSA业务的开发有诸多优点,有利于吸引更多的第三方业务开发商,有利于更加方便快捷的开发出多种多样的业务,也有利于吸引更多的用户,必将有很好的前景。
5 参考文献
[1] Ericsson. Virtual Home Environment / Open Service Architecture (3G TS 29.xxx version 0.1.0)[S].
[2] Elliotte Rusty Harold. XML实用大全[M]. 杜大鹏, 李善茂译. 北京: 中国水利水电出版社, 2000.
[3] Mohammad Akif, Steven Brodhead. Java XML程序员参考手册[M].
马树奇译. 北京: 电子工业出版社, 2002.
[4] Justin Couch. J2EE宝典[M]. 马琳, 杨旭译. 北京: 电子工业出版社,2002.
[5] Tom Myer, Alexander Nakhimovsky. Java XML编程指南[M]. 王辉, 张晓辉译. 北京: 电子工业出版社, 2002.
收稿日期:2003-08-25
[摘要] 在未来的移动通信系统中,随着带宽的增加,业务的多样性将是吸引移动用户的关键性因素,如何方便快捷地开发出业务也成为各方关注的焦点。鉴于XML语言诸多优点,其应用领域也越来越广泛,因此把XML和XSLT运用于OSA业务的开发具有重大的意义。文章详细地介绍了OSA开放业务架构和XML语言的优点,并讨论了如何把XML语言和XSLT应用于OSA业务的开发。
[关键词] 业务开发;可扩展标记语言;可扩充样式表变换语言;开放业务架构
[Abstract] In the unborn Mobile Communication System, with the increase of bandwidth, the diversity of services will be the key causation to attract the mobile users, so how to develop services expediently and quickly becomes a focus everyone pays attention to. With its advantages, XML has been applied in more and more fields. It is constructive to apply XML and XSLT to service development of Open Service Access (OSA). This article introduces OSA and the merits of XML in detail, and discusses how to apply XML and XSLT to service development of OSA.
[Keywords] service development; XML; XSLT; OSA