基于Parlay和XML的业务生成与执行系统的研究与实现

来源:岁月联盟 作者:李剑鹏 齐 鹏 时间:2010-08-30
摘要   传统的智能网业务生成环境是基于七号信令的,业务的执行与底层的物理密切相关,导致新业务的开发难度较大。下一代网络中的Parlay技术和OSA的结合使得应用层业务的开发不必依赖底层网络,提供了一种开发业务的通用方式。使用Parlay/OSA与XML相结合的方法实现这一系统,并给出了一个应用实例。关键词  智能网;业务生成环境;业务逻辑执行环境;Parlay/OSA;XML一、引言     传统的智能网业务开发模式使用信令消息的交互[1],根据业务特性构造信令交互过程,并调用底层网络功能,从而构造出智能网业务。这种方式不但需要开发人员熟悉底层异构网络和复杂的信令,而且还面临着业务的跨平台性问题,下一代网中Parlay和OSA的结合为解决这些问题提供了可能。二、相关技术简介     使用Parlay/OSA技术构建业务时网络体系架构如图1。Parlay API位于现有网络之上,现有网络的网络单元通过Parlay网关与应用服务器进行交互,从而提供第三方业务或综合的业务,Parlay网关与应用服务器之间的接口为Parlay API。Parlay网关与现有网络单元之间的协议采用各个网络的现有协议[2]。这种网络结构高度抽象了底层网络的能力,采用开放的API编程接口,向第三方业务开发商开放,彻底屏蔽了底层网络的复杂性。    应用程序可以通过调用API编程接口方便地利用承载网络的业务能力,如呼叫控制能力、用户信息查询能力等,而不必了解承载网络信令细节。在OSA中,承载网络的业务能力被抽象成一组业务能力特征SCF(Service Capability Features ),这些SCF由业务能力服务器[3] SCS (Service Capability Servers ) 提供和支持。


图1 Parlay API在网络中的位置

3  系统的设计与实现

3.1总体设计


图2 系统总体结构

      整个系统分为2大模块:SCE和SLEE。如图2所示SCE提供图形化界面,操作员拖拽图元图标,按适当的顺序摆放,并用适当的线条连接这些图元。以直观的图形化方式表示业务逻辑,并且最终生成新业务的XML描述文件,以作为SLEE模块的输入。SLEE读取并解析XML文件,生成与业务逻辑一致的java代码并且执行,调用Parlay网关的接口函数,支持终端用户使用新业务。考虑到跨平台的功能,这2个模块均使用java语言开发。 3.2 SCE设计与实现    SCE部分主要包括图元、线条和界面操作的设计与实现以及XML标记的定义,限于篇幅界面操作部分在此不予详述。3.2.1图元的设计与实现     图元是组成业务的基本元素,系统对图元的处理分前台界面显示(JButton的继承类)和后台处理(一个线性存储结构Vector的继承类,记为SvrItemVector)2部分,业务编辑窗口中每创建一个图元的同时把此对象加入到SvrItemVector中,始终保持界面显示与内存完全同步,以便于对图元进行处理。    本系统设计的部分图元的名称、在编辑业务时可设置的图元属性以及该图元的功能以列表的方式给出,见表1。表1:部分图元属性及功能
图元名业务编辑时可设定的属性业务执行时的功能
Begin设定业务名,最大并发用户数,数据库连接信息,所用到的SCF系统初始化,应用和框架之间的互相鉴权,业务选择和业务协议的签订
UICard卡业务的通用处理,设置卡号和密码的长度限制和结束符等提示用户按照属性中设定的格式输入卡号和密码,并收集用户的输入息
UICall设定号码长度和拨号终止符等提示用户拨被叫号码,接收所拨号码,路由寻径,接续呼叫。
UICheck设定可查询的信息类别返回查询结果,如账户余额,有效期
UINewPWD设定可修改的信息类别接受修改请求,并更新系统信息。
UICollect设定可收集的分支信息的类别、格式及范围收集分支信息,并据此转入相应处理
SwitchLoopEnd无属性设置,仅标示分支或循环的结束终止分支或循环
End无属性设置,标示业务的结束完成收尾工作,终止业务执行
 3.2.2 线条的设计与实现      线条是连接图元构成业务流程的元素。系统对线条设计与实现类似对图元的处理,也分前台显示和后台处理2部分。前台显示的作用是根据用户选定的划线起点与终点(均为图元对象),以及线条的类型,在业务编辑窗口中2个图元之间划1个带箭头的直线,从起始图元指向终止图元。不同类型的线条颜色不同。后台处理是设定一个线性存储结构Vector的继承类,记为LineVector。业务编辑窗口中每划1个线条的同时,生成1个线条对象(LineItem类对象),并设定此对象的起点图元、终点图元、线条类型等属性,然后把此对象保存到LineVector中,始终保持界面显示与内存数据完全同步,以便于对线条进行处理。     根据实际的需要本系统设计了以下5种类型线条。线条的类型、颜色和在编辑业务时可设置的属性以及在生成XML文件时该线条的作用以列表的方式给出,见表2。表2:线条类型及功能说明
线条类型线条颜色业务编辑时可设定的属性转化为XML文件时的作用
表示正常流程黑色无属性设定顺序排列所连的图元
判断为真的分支绿色无属性设定加入<IF>标记
判断为假的分支红色无属性设定加入<ELSE>标记
表示循环的线条黄色设定循环的次数加入<LOOP>标记
表示多分支的线条蓝色设定分支的CASE值加入<Switch><CASE>标记
 3.2.3 XML标记的定义及含义      XML标记的定义是根据图元和线条表示的图形化业务生成XML业务描述文件时所应遵循的标准。这些标记分为2大类,它们的名称、描述及转化为java代码时的功能见表3。表3:XML标记的描述及功能
XML标记类别名称描述转换成java代码时的功能
第一类:与图元严格对应与图元同名,如:<Begin>标记中含的属性正是图元中能设置的属性以属性值作为参数调用此图元对应的Parlay API
第二类:公用标记,主要是流程控制标记 <service>业务流程的定界标记在程序中构造业务执行的框架{  }
<IF>标示流程中为真的判断加入 if ( expr) 及expr为真时要执行的程序块:if ( ) {  }
<ELSE>标示流程中为假的判断加入expr为假时要执行的程序块 else {  }
<LOOP>标示流程中的循环加入循环控制框架,如for (;;){  }
<Switch>标示流程中的多分支加入switch (){  }
<CASE>标示流程中的分支值加入case value1:{  }case value2:{  }
  3.2.4生成XML文件      业务编辑窗口中显示的图元和线条连成的业务流程图,在内存中有相应的存储数据与它们保持完全对应,即上面提到的存储图元的线性结构SvrItemVector和存储线条的线性结构LineVector。依照图元,线条以及XML标记的对应关系(见表1~表3),生成相应的XML元素,并组合这些元素成为XML文件,描述业务流程。对内存中线性存储结构中的每个元素进行处理。依次取出LineVector中的每个元素lineItem,根据lineType属性插入用于流程控制的XML标记,根据lineItem的fromItem和toItem属性插入与相应图元对应的XML标记。对线性存储结构中的每个元素循环使用此方法,构建一个XML结构树,然后通过org.jdom.XMLOutputter的Output()方法向磁盘输出XML文件。 3.3 SLEE的设计与实现    SLEE模块的功能是把XML文件描述的业务转化成完整的java代码,并编译执行。通过调用Parlay网关的接口函数,支持新业务。Java代码分为2部分:用于初始化的通用部分(每种业务都需要用到的)和与专门与某个图元对应的部分。3.3.1 通用部分     主要包括业务应用程序和Parlay网关之间的鉴权、业务选择以及业务协议签订这些功能。由Begin图元对应的代码完成,它组合相应的用于鉴权和业务协议签订的一些Parlay API。3.3.2 针对具体图元的代码     通用部分代码生成后,SLEE读取并解析XML文件,根据读出的标记,插入与具体图元对应的代码。     具体业务支持的特定功能由相应图元对应的代码完成。各图元对应的Parlay API,主要有以下几个,限于篇幅在这里统一描述:     (1) 一般呼叫控制业务管理接口IpCallControlManager的enableCallNotification()方法,完成触发事件标准注册[4];     (2) 一般呼叫控制业务的回调管理接口IpAppCallControlManager的callEventNotify ()方法,业务能力服务器通过它实现通知应用有呼叫产生[4];     (3) 用户交互呼叫接口IpUICall 的sendInfoAndCollectReq()方法和sendInfoReq()方法,向业务能力服务器请求信息[4];     (4) 用户交互呼叫回调接口IpAppUICall的sendInfoAndCollectRes()方法,业务能力服务器通过它实现通知机制[4];     (5) 呼叫接口类IpCall 的routeReq()方法[4],完成用户呼叫的接续。3.3.3 编译与执行      SLEE编译并执行生成的java代码,并调用实际的Parlay网关或模拟器(如朗讯的模拟器 MiLife ISG)的Parlay API就能够支持新业务的应用了。4  应用实例4.1 200号预付费卡业务的流程:     (1)      摘机,听到拨号音后拨“200”并进行语言选择;     (2)      按提示音依次输入200卡帐号和密码;     (3)      听到“请输入被叫号码”提示音后,输入要拨叫的号码;     (4)      通话控制与计费处理。4.2 200业务的生成和执行     (1)      根据200业务的流程和功能在SCE中选择几个图元(每个图元的具体功能见表1),并使用约定的线条连接成流程图,如图3。


图3 200业务实例

SCE为此业务生成的XML文件如下(记为200.xml)。<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE service SYSTEM "./T_xml.dtd"><service>  <Begin SCF="P_GENERIC_CALL_CONTROL;P_USER_INTERACTION;" Name="*200" MaxSize="20" DBDriver="OracleDriver" ConnStr="10.10.139.1:1521" UserName="scott" PWD="tiger" />  <UICard CardLen="10" CardEnd="#" PWDLen="6" PWDEnd="#" />  <Switch>    <UICollect>      <CASE case="1">        <UICall CallLen="13" CallEnd="#" />      </CASE>      <CASE case="2">        <UICheck />      </CASE>      <CASE case="3">        <UINewPWD />      </CASE>    </UICollect>  </Switch>  <SwitchLoopEnd />  <End /></service>     (2)业务执行环境SLEE调用业务描述文件200.xml,生成java代码,并编译、执行此代码,连接实际的Parlay网关或网络模拟器(如Lucent MiLife ISGSIM)就能支持200业务,终端用户就能使用此项业务了。 

[1] 杨放春,孙其博.智能网技术及其[M].北京:北京邮电大学出版社,2002.11-31[2] 中华人民共和国信息产业部.Parlay应用程序接口(API)技术规范(版本3.0).3-20.[3] 陈建亚,余浩. 软交换与下一代网络[M]. 北京:北京邮电大学出版社,2003.258-264.[4] ETSI ES 201 915-1.V1.1.1(2002-02).ETSI Standard. Open Service Access(OSA).Application Programming Interface(API).Part 4:Call Control SCF ,.pp:14-36

图片内容