APP下载

一种面向SSC的电信增值业务的生成方法及实现

2018-01-20范晖黄健吕林涛

现代电子技术 2018年1期
关键词:脚本语言

范晖+黄健+吕林涛

摘 要: 随着电信业务需求的发展,业务的快速开发成为研究的热点。为了提高业务流程的开发效率,针对电信增值业务的特点,设计了一种业务生成系统。系统采用类C语法结构对业务进行描述,通过业务逻辑解释程序进行业务数据生成,再通过业务逻辑编译程序和业务逻辑执行程序完成标准业务组件SSC的生成。业务使用者通过SSC组合来完成新业务流程的处理。同基于CPL脚本的业务生成系统的比较,证明了该系统是可行有效的,可以提高业务开发速度,降低业务描述复杂度。

关键词: 增值业务; 业务逻辑; 标准业务组件; 业务逻辑编译; 业务逻辑执行; 脚本语言

中图分类号: TN98?34; TP314 文献标识码: A 文章编号: 1004?373X(2018)01?0160?05

Abstract: With the development of the telecommunication service demand, the rapid development of service becomes the research hotspot. According to the characteristics of the telecommunication value?added service, a business generation system was designed to improve the development efficiency of service process. The class C syntax structure is adopted in the system to describe the services. The service logic interpretive program is used to perform service data generation. The standard service component (SSC) generation is realized by means of the service logic compiling program and service logic executive program. The service user can process the new service flow by means of SSC combination. In comparison with the service generation system based on CPL script, the proposed system is feasible and effective, can improve the speed of service development, and reduce the complexity of service description.

Keywords: value?added service; service logic; standard service component; service logic compiling; service logic execution; scripting language

0 引 言

随着社会、经济和科学技术的不断发展,人们对信息的需求量日益增大,各种用户对电信业务的需求也变得越来越复杂,这就要求电信网能迅速而灵活地向用户提供各种电信业务。传统做法是:用户特征控制集中于每一个交换机中,每增加一种新业务,通信网中的全部交换机就需要增加一部分软件,由于交换机数量十分庞大,而且其类型多种多样,每种交换机的结构、软件、设计方法等各不相同。每增加一种新业务,必须要对网中全部交换机软件进行修改,不但工作量极大,而且由于对业务规范理解不一致,各种交换机间新业务互通经常会出现各种问题。因此,传统的新业务提供方法成本很高,可靠性差,而且需要较长时间[1]。

智能网(Intelligent Network,IN)是在原有通信网络的基础上为快速提供新的业务而设置的附加网络结构。其目的是为现有的、未来的所有通信网络提供服务,使得电信运行商能经济有效地提供客户所需的各类电信新业务,使得客户对网络有更强的控制能力,能够方便灵活地获取所需的信息。

当前业务的生成方式,根据其抽象程度,分为:基于API的编程方式;基于构件的开发方式;基于脚本语言的开发方式等[2]。文献[3]设计了一个基于CPL脚本的可视化编辑器,为开发电信增值业务提供了一种有效的方式。文献[2]在CPL语法基础上进行了扩展,引入了很多新的语法,扩展后的语言称为XPL,业务开发者可以通过手工书写脚本的方式开发业务流程。

目前这些业务流程开发大多使用脚本语言进行设计,需要进行解释,降低了业务执行速度,效率较低。脚本语言的描述是松散的类型定义,没有类型声明,并且需要在运行时进行动态类型检查,不能提前发现业务生成的问题,需要等到业务部署后才可以发现。同时由于脚本语言的语法结构受限,导致不能描述丰富多彩的业务内容,个性化不够。而且,脚本语言不易理解,需要将其翻译成目标语言才能执行。

针对这个问题,以C语言为蓝本设计并实现了一种面向智能网IN的业务生成系统。为了适应电信业务的定制需要,对标准C的语法单位进行了扩展,通过使用这种扩展C语言,对业务进行规则描述,编写相应的处理动作,交给业务逻辑解释程序、业务逻辑编译程序和业务逻辑执行程序,最后形成C目标程序(业务标准组件SSC),用户通过组合不同SSC完成对业务的灵活设置。同时,业务开发者也可以快速进行SSC的开发。

1 业务逻辑设计

业务是电信运营部门为满足用户对通信的要求而提供的通信能力。业务逻辑则是由用户定制的一系列业务处理动作的集合。endprint

业务逻辑首先由业务生成系统或者业务开发者手工编写。之后再由业务逻辑解释程序翻译成业务执行程序可以识别且高效执行的中间语言。最后交由业务编译程序编译成目标代码,由业务执行程序按照一定的规则执行,完成所规定业务动作。

设计的系统业务逻辑由用户使用系统提供的标准业务组件SSC(Standard Service Component)进行设计,可以用巴克斯范式(BNF)描述业务逻辑。

SSC在提取众多业务特征基础上,抽取和业务无关的部分,编写最基本的功能模块。这些SSC可以被不同的业务逻辑复用。业务设计时,通过对不同的SSC进行顺序组合,即可完成不同业务需求的定制。

一个SSC通常包括:输入、输出和功能。其中输入包含三部分:逻辑入口、业务支撑数据、呼叫实例数据。

输出包含两部分:逻辑出口、呼叫实例数据。

功能包括两部分:编解码、操作。

业务逻辑词法描述和C语言类似,下面重点介绍语法结构。

定义1:输入信息描述了SSC的输入参数的格式。BNF定义如下:

INPUT::=″″|″″| ″″;

其中第一列表示输入字段的名字;第二列表示输入字段的长度或者分隔符;第三列表示对输入字段进行预先转换的函数。

定义2:输出信息描述了SSC的输出格式。

BNF定义如下:

OUTPUT ::=″< OutLength 2 int >″|″< OutDest 2 int>″ | ″< ErrorCode 1 int>″ |″″;

其中第一列表示输出字段的名字;第二列表示输出字段的长度或者分隔符;第三列表示輸出字段的类型。

定义3:编解码规则描述SSC对输入数据的解码和对输出数据的编码。

1) TRANSIN_request::=″″; 表示将标准的输入消息(INPUT)或者指针p所指向的数据,按照消息结构request进行解码。

2) FILLOUT_relay::=″″;表示将指针p所指向的数据或者relay数据,按照OUTPUT结构进行编码,结果存入OUTPUT中。

业务逻辑的语法支持以下几种逻辑:

1) 任意算术运算和逻辑运算。

2) 支持变量、临时变量(声明、赋值、读取)。

3) 选择语句。

if(Expr)Statement;if(Expr)Statement

else Statement;

4) 循环语句。

while (Expr) Statement;do Statement

while (Expr);break;continue。

业务逻辑语法又在上面子集的基础上进行了扩展:

1) SQL语句。

2) 输入协议解读/输出协议组成。

3) 调用外部C程序函数。

下面重点介绍SQL语句,分为以下几种:

EXEC SQL select_statement,EXEC MYSQL

select_statement,EXEC SQL plsql_statement,EXEC SQL dml_state? ment,EXEC SQL ddl_statement,COMMIT,ROLLBACK,FETCH,FETCHME等9种语句。

为了支持SQL语句的嵌套执行,必须有多个SQL句柄。而以前使用的登录句柄中只包含了一个语句句柄,无法执行SQL语句的嵌套。因此,对登录句柄的结构进行修改。

修改后,登录句柄中有两个公用句柄:一个专门执行查询语句;另外一个执行DML,DDL语句。

用户又可以自己申请一个私有语句句柄,存储自己的语句信息。关键字EXEC MYSQL和FetchMe就是利用用户句柄执行SQL语句。

编程人员使用词法和语法结构,根据要求编写业务逻辑,形成标准的业务组件SSC,再通过词法分析工具FLEX和语法分析工具YACC进行处理,形成变量表、SQL语句表、执行动作表,最后形成业务逻辑数据。具体如图1所示。

2 业务逻辑数据定义

业务执行程序的业务逻辑数据全部来自业务解释程序。业务解释程序与业务执行程序之间的数据接口为某种格式的文件,具体见表1所示。

1) 变量表存储结构

struct VARLIST

{

int Type;

char IsCnst;

char Name[20];

union

{

int iValue;

double fValue;

char sValue[VARLEN]; };

}VarList[MAXVAR];

2) SQL语句存储结构

struct SQLLIST

{

char SQL[SQLLEN];

int SqlLen;

int BindNum;

int BindVar[MAXSQLVAR];

int DefineNum;

int DefineVar[MAXSQLVAR];

}SqlList[MAXSQL];

3) 执行动作存储结构

struct _Quadruple

{

char Op[5];

int arg1;

int arg2;

int Result;

}QuadrupleList[MAXQUADRUPLE];

执行动作存储说明:

Op : 操作符。

arg1: 操作数据源,符号表的编号。

arg2: 操作数据源,符号表的编号。

Result: 当操作符为运算操作符时,表示操作数据的目的地,记录的是符号表的编号;当操作符为跳转操作符时,表示跳转的目的地,记录的是动作编号;当操作符为执行SQL操作时,表示SQL语句的编号。

4) 输入消息存储结构

struct _INPUT

{

char Name[IDENLEN];

//輸入变量的名字

int StartPos;

//输入变量在协议中的开始位置

int Length;

//输入变量在协议中的长度

int PLACE;

//输入变量在符号表中的位置

char Func[IDENLEN];

//输入变量的预处理函数

void (*FuncAddr)();

//输入变量的预处理函数的地址

}Input[MAXINPUT];

5) 输出消息存储结构

struct _OUTPUT

{

char Name[IDENLEN];

//输出变量的名字

int StartPos;

//输出变量在协议中的开始位置

int Length;

//输出变量在协议中的长度

int PLACE;

//输出变量在符号表中的位置

int Type;

//输出变量的类型

}Output[MAXOUTPUT];

3 业务执行算法

业务逻辑解释程序一次性生成接口数据文件,传递给业务逻辑编译程序和业务逻辑执行程序,由业务逻辑编译程序生成目标代码,然后交由业务执行程序执行业务逻辑所规定的动作。

根据业务逻辑解释程序与业务逻辑执行程序的接口,对接收的消息包按照执行动作表进行相应处理。

业务执行算法包括以下七步:

1) 接收消息。读取输入描述变量,根据输入描述中对各字段规定的预处理函数对输入进行预处理。

2) 业务执行程序读入第一条执行动作作为当前动作。

3) 如果当前执行动作为动作表中的最后一个动作,则跳转至7),否则取得当前执行动作的操作符OP。

4) 如果OP为无条件跳转符号,则取执行动作的result值域所指向的执行动作为当前执行动作,跳转至3)。如果为条件跳转,若条件成立,则取执行动作的Result值域所指向的执行动作为当前执行动作,跳转至3);若条件不成立,读入下一条执行动作作为当前动作,跳转至3)。

5) 如果OP为执行SQL语句,则执行Result所指向的SQL语句,并读入下一条执行动作作为当前动作,跳转至3)。

6) 如果OP为运算或赋值操作,则将arg1和arg2指向的数据执行OP操作,结果存入Result所指向的数据地址。并读入下一条执行动作作为当前动作,跳转至3)。

7) 读取输出描述变量,根据输出描述中对各字段规定的数据类型进行强制转化,并将数据发送出去,跳转到1)。

4 实验结果及分析

图2是开发的面向智能网IN的业务生成系统的软件框架结构。

业务使用者通过交互式GUI界面,使用鼠标拖放和简单数据配置来使用系统提供的SSC组件,即可自行设计业务处理流程。同时系统提供了业务在线仿真功能,来验证业务的正确性。

业务设计者通过类C语言设计SSC,通过业务逻辑解释、业务逻辑编译、业务逻辑执行程序生成SSC。设计的SSC使用前就可以发现语法和逻辑错误,避免前述论文所设计的脚本语言在执行期才可以发现错误的弊端。

从业务的开发速度、业务描述的复杂度、业务使用的难易度、业务执行速度等方面,测试了本文设计的业务生成系统及参考文献[3]的基于CPL脚本的业务生成系统。

图3是两种不同方案在开发速度和业务复杂度的对比。可以看出随着业务流程复杂度的提高,SSC比CPL表现出更快的执行速度,这主要是由于SSC使用类C开发语言设计,接近于自然语言,比脚本这种解释型语言更容易理解,语法也比其更加丰富,能够设计复杂的业务流程,同时由于其是一次性编译,而CPL是解释型的,执行速度较慢。

5 结 语

本文设计并实现了一种电信增值业务生成系统,通过使用自定义的类C扩展语言来设计基本的SSC,将C语言进行了扩充,使得其适宜开发复杂电信业务,经过业务逻辑解释程序、业务逻辑编译程序和业务逻辑执行程序来完成业务的快速开发和实施。同基于脚本语言的CPL业务生成系统的对比测试表明,所设计的系统具有开发速度快、开发复杂度低等特点,适宜电信增值业务的快速部署。

参考文献

[1] ANL Mathematics and Computer Science Division. The message passing interface standard [EB/OL]. [2014?07?19]. http://www. mcs. anl.gov/reseach/projects/mpi/.endprint

[2] 杨骎,陈俊亮,孟祥武.一种面向LBS的电信增值业务生成方法及实现[J].软件学报,2009,20(4):966?974.

YANG Qin, CHEN Junliang, MENG Xiangwu. LBS?oriented creation method and implementation for telecommunication value?added services [J]. Journal of software, 2009, 20(4): 966?974.

[3] 任晓明,宫云站,杨朝红.电信业务脚本可视化生成系统设计与实现[J].计算机工程与设计,2009,30(6):1527?1531.

REN Xiaoming, GONG Yunzhan, YANG Chaohong. Design and realization of visual service script creation [J]. Computer engineering and design, 2009, 30(6): 1527?1531.

[4] 孙晶,谭效辉,赵会群,等.球类比赛的脚本解释器的研究与实现[J].计算机应用,2010,30(3):613?617.

SUN Jing, TAN Xiaohui, ZHAO Huiqun, et al. Research and implementation of ball games scenario interpreter [J]. Journal of computer applications, 2010, 30(3): 613?617.

[5] 洪海涛,于东,陈龙,等.数控代码解释器模块化结构的研究与实现[J].小型微型计算机系统,2013,34(3):480?485.

HONG Haitao, YU Dong, CHEN Long, et al. Research and implementation on the modular structure of NC code interpreter [J]. Journal of Chinese computer systems, 2013, 34(3): 480?485.

[6] 于江德,王希杰,樊孝忠.字标注汉语词法分析中上文和下文孰重孰轻[J].计算机科学,2012,39(11):201?203.

YU Jiangde, WANG Xijie, FAN Xiaozhong. Which is more effective for Chinese lexical analysis via character tagging: above?context versus below?context [J]. Computer science, 2012, 39(11): 201?203.

[7] 刘秀磊,廖建新,朱晓民.本体匹配中基于词义组合的词法分析算法[J].电子学报,2012,40(8):1624?1630.

LIU Xiulei, LIAO Jianxin, ZHU Xiaomin. Lexical analysis based on combining senses in ontology matching [J]. ACTA electronica sinica, 2012, 40(8): 1624?1630.

[8] 范晖,夏清国.业务逻辑编译器的设计与实现[J].计算机科学,2007,34(3):262?263.

FAN Hui, XIA Qingguo. Design and implementation of the service logical compiler [J]. Computer science, 2013, 34(3): 262?263.

[9] 陈火旺,刘春林.程序设计语言编译原理[M].3版.北京:国防工业出版社,2004.

CHEN Huowang, LIU Chunlin. Compilation theorem of programming language [M]. 3rd ed. Beijing: National Defense Industry Press, 2014.

[10] 陆钢,王哲.电信业务网络架构设计与关键技术分析[J].电信科学,2014,20(9):154?158.

LU Gang, WANG Zhe. Design of telecom service network infrastructure and analysis of key technologies [J]. Telecommucations science, 2014, 20(9): 154?158.

[11] 王勇.Web网络环境下的语义检索平台设计与分析[J].现代电子技术,2016,39(16):14?18.

WANG Yong. Design and analysis of semantic retrieval platform in web network environment [J]. Modern electronics technique, 2016, 39(16): 14?18.endprint

猜你喜欢

脚本语言
基于JavaScript在Web设计中应用
一种基于脚本的文书柔性生成技术
基于Unity3D的坦克大战游戏设计与实现
脚本语言在审计工作中运用的探讨
网站服务器维护措施探究
测控设备运行流程远程定制技术研究
浅析计算机技术在flash动画中的应用
基于SiPESC平台的Python扩展模块开发
脚本语言在远程教育动态网页设计中的运用