专利名称:一种信令展示方法及系统的制作方法
技术领域:
本发明涉及信令跟踪领域,特别是指一种信令展示方法及系统。
背景技术:
当前,信令跟踪系统在通信系统中逐渐得到普遍应用,信令跟踪运用在包括短信、 彩信等多种业务中,它能够对业务流程间交互的信令进行跟踪显示,并提供相应的解释和 分析,方便开发人员观察信令内容和交互流程,定位业务出现的问题,例如信令的缺失和信 令内容的异常。信令跟踪系统总体上可分为信令跟踪前台和信令跟踪后台两个部分。信令 跟踪前台通常运行在业务处理机上,负责向信令跟踪后台发送业务处理中的信令,信令跟 踪后台运行在跟踪客户端上,例如个人计算机,负责建立和取消跟踪任务,显示信令内容, 所述业务处理机根据业务的不同而不同,包括短信业务处理机、彩信业务处理机等。现在的信令跟踪工具一般是将信令逐条显示,并以文本的方式将信令的关键信息 显示出来,所述关键信息为信令的结构字段的值,所述结构字段是信令的特征字段,例如参 数项等。这种方法的缺点显而易见,首先,这种方法的可扩展性不强,不同的信令,其信令结 构也不同,所述信令结构为包含不同结构字段的信令,这样,信令结构不同,其包含的结构 字段自然也不同,针对不同的信令结构需要区别处理,如果某种业务的信令结构成百上千, 这种方法处理起来无疑代码量巨大,维护工作复杂;其次,文本方式显示信令关键信息不能 很好地体现信令结构中根节点和叶子节点、母结构与其各个子结构之间的关系,不能表示 出各关键信息在结构中的相对位置,进而表达出信令的结构;再次,这种方法是读取承载信 令的码流,通过关键信息在码流中的不同字段,获得关键信息的,如果码流异常,将无法定 位并获取关键信息。
发明内容
有鉴于此,本发明的主要目的在于提供一种信令展示方法及系统,清楚显示信令 中的结构关系,有利于问题定位。为达到上述目的,本发明的技术方案是这样实现的本发明提供了一种信令展示方法,该方法包括转换模块将C语言表示的信令结构转换为java语言表示的结构类,信令跟踪后台 配置结构类与键值的对应关系,将结构类与键值对象化,成为类对象,确定接收的信令中的 键值与类对象匹配,根据类对象将接收的信令展示为树结构。上述方案中,所述信令跟踪后台配置结构类与键值的对应关系包括信令跟踪后 台根据结构规则,配置结构类名称与键值的对应关系,保存在特定文件中。上述方案中,所述将结构类与键值对象化,成为类对象包括创建与特定文件匹配 的类,创建所述类的类对象,将键值添加到类对象中,根据结构类中的结构构造方法创建结 构类的结构对象,将结构对象添加到类对象中,保存类对象。上述方案中,所述确定接收的信令中的键值与类对象匹配包括接收信令,所述信令中包含根据结构规则添加的键值,读取信令中的键值,根据键值查询类对象,确定类对象 中的键值与所读取的信令中的键值相符,则键值与类对象匹配。上述方案中,所述根据类对象将接收的信令展示为树结构包括读取类对象中的 结构对象,调用结构对象中的树结构展示方法,将信令展示为树结构,同时调用结构对象中 的结构字段赋值方法,将信令中结构字段对应的内容添加到树结构的相应结构字段中。本发明还提供了一种信令展示系统,该系统包括转换模块、信令跟踪前台、信令 足艮S宗M ;转换模块,用于将C语言表示的信令结构转换为java语言表示的结构类;信令跟踪前台,用于接收信令跟踪后台的跟踪条件,根据跟踪条件将包含键值的 信令发送给信令跟踪后台;信令跟踪后台,用于配置结构类与键值的对应关系,将结构类与键值对象化,成为 类对象;向信令跟踪前台发送跟踪条件,确定所接收的信令中的键值与类对象匹配,根据类 对象将所接收的信令展示为树结构。上述方案中,所述信令跟踪后台具体用于,根据结构规则,配置结构类名称与键值 的对应关系,保存在特定文件中。上述方案中,所述信令跟踪后台具体用于,创建与特定文件匹配的类,创建所述类 的类对象,将键值添加到类对象中,根据结构类中的结构构造方法创建结构类的结构对象, 将结构对象添加到类对象中并保存。上述方案中,所述信令跟踪后台,具体用于读取所接收的信令中的键值,根据键值 查询类对象,确定类对象中的键值与所读取的信令中的键值相符,则键值与类对象匹配。上述方案中,所述信令跟踪后台,具体用于读取类对象中的结构对象,调用结构对 象中的树结构展示方法,将接收的信令展示为树结构,同时调用结构对象中的结构字段赋 值方法,将信令中结构字段的内容添加到树结构的相应结构字段中。本发明所述的信令展示方法及系统,根据信令结构,通过树结构的方式展示信令, 更加清楚的显示信令的结构关系,有利于问题定位;进一步的,转换为java结构类的信令 结构,包含信令结构的所有类型,信令跟踪后台接收的信令的信令结构不同,根据树结构展 示方法及不同的转换后的信令结构,将信令展示为树结构,维护工作简单;信令出现异常, 可快速准确的定位。
图1为本发明实现信令展示方法流程示意图;图2为本发明实现信令展示系统组成示意图。
具体实施例方式本发明的基本思想是将C语言表示的信令结构转换为java语言表示的结构类, 配置结构类与键值的对应关系,并将结构类与键值对象化,称之为类对象,接收信令跟踪前 台发送的包含键值的信令,确定所接收的信令中的键值与类对象匹配,根据类对象将信令 展示为树结构;所述键值根据业务的不同而不同,可以是事件号、线程号等。
5
下面通过具体实施例与附图来对本发明进行详细说明,一种信令展示方法,如图1 所示,具体步骤如下步骤101、信令跟踪后台配置结构类与键值的对应关系,并将结构类与键值对象 化,成为类对象;信令跟踪后台将结构类与键值相关联,所述结构类为转换模块将C语言表示的信 令结构转换为java语言表示的信令结构,称之为结构类,是包含结构字段的文件,所述结 构字段是信令的特征字段,例如参数项等。所述转换模块可以通过现有技术中的C语言转换为java语言的转换工具实现, 具体转换过程为首先根据信令结构中不同类型的结构字段所占用字节数确定结构字段的
^flJJl1J, C i吾^“中的 char> signed char java i吾^“中的 byte, C i吾^“中的 unsigned char、short> signed short 对应 java i吾 llf 中白勺 short, C i吾言中白勺 unsigned short> int> signed int> long 对应 java i吾言中白勺 int, C i吾言中白勺 unsigned int> unsigned long对应java语言中的long,转换规则确定以后,就可以实现转换,下面以信令结构 InterCommSendXMLReq_T为例介绍转换过程。以下为C语言描述的该信令结构,typedef struct{unsigned short all_len ;unsigned char tag—did ;DialogueIDd_id ;unsigned char i_id ;unsigned chartag—lid ;unsigned charl_id ;OperCodeopercode ;unsigned charl_component ;CParametersi_para ;}InterCommSendXMLReq_T ;其中 DialogueID、OperCode、CParameters 为父结构 InterCommSendXMLReq 的子结 构,根据转换规则,可得出该信令结构对应的java语言标识的信令结构,如下所示,public int all_len ;public short tag_did ;public DialogueID d_id ;public short i_id ;public short tag_lid ;public short l_id ;public OperCode opercode ;public short l_component ;public CParameters i_para ;C语言表示的信令结构为预置在转换模块中的包含了所有结构类型的多种信令结 构;本发明中所述的信令跟踪后台用java语言编写,只能识别java语言,而信令结构为C
6语言,则需要将C语言表示的信令结构转换为java语言表示的结构类,所述结构类的名称 可根据需要自行命名,同时,在转换后的结构类中预置结构构造方法、结构字段赋值方法及 树结构展示方法,所述结构构造方法指结构构造方法的程序代码,是java中常用的构造方 法,用于将结构类创建为结构对象,所述结构字段赋值方法指结构字段赋值方法的程序代 码,用于将结构字段对应的内容赋值给相应的结构字段,所述树结构展示方法指树结构展 示方法的程序代码,用于将信令展示为树结构。转换模块与信令跟踪后台的关系是转换模块负责结构转换,转换得到的结构类 添加到信令跟踪后台的java工程中,编译后生成可运行的信令跟踪后台。所述将结构类与键值相关联包括信令跟踪后台根据结构规则将结构类名称与相 应的键值相关联,并将结构类与键值的对应关系保存在特定文件中,所述特定文件为java 可以解析的文件,例如可扩展标记语言Uml)文件,包含了一组一组的信令结构、即结构类 与键值的对应关系;所述结构类名称可以与一个或多个键值相关联,所述结构规则包括具 体的信令结构的种类及应关联的键值的类别与个数。以下列程序为例< ? xml version = “ 1.0〃 encoding = “ gb2312〃 ? ><trace><general><struct_count>2</struct_count></general><struct><structevent = " 9212 " opecode =" 3 " structname =〃 InterCommSendXMLReq_T" /><struct2 event = " 9213 " opecode = 〃 4 〃 structname =〃 InterCommSendXMLRsp_T" /></struct></trace>结构类名称为InterCommSendXMLReq_T的信令结构与键值为event = " 9212〃及 opecode = “ 3〃关联,结构类名称为In terCommSendXMLRsp_T的信令结构与键值为event ="9213〃及opecode =〃 4〃关联,并保存在xml文件中。所述将信令结构与键值对象化包括java语言是面向对象的编程,只能直接调用 对象,因此,需要先创建与特定文件匹配的类,以下列程序为例class Item{protected String event ;protected String opecode ;protected String structname ;protected String struct ;public Item(String event, String opecode, String structname, object struct){
7
this, event = event ;this, opecode = opecode ;this, structname = structname ;this, struct = struct ;}}上述类文件定义了四个变量,event对应键值event,例如event =〃 9212", opecode对应键值opecode,例如opecode = 〃 3 〃 ,structname对应结构类名禾尔,例如 InterCommSendXMLReq_T, struct用于保存结构对象,所述类与结构类名称、如structname 一一对应,也就是说一组结构类与键值的对应关系对应一个类。然后将类创建为类对象,定义一个一维数组,用于保存类对象,所述一维数组的长 度、即一维数组中元素的个数与类的个数对应,也就是说一组结构类与键值的对应关系对 应一个一维数组元素,一个一维数组元素保存一个类对象,例如,假设xml文件有两组结构 类与键值的对应关系,则一维数组的长度为2,其中的第一组结构类与键值的对应关系中的 结构类及键值,所对应的类对象的一维数组元素假设为AW],第二组结构类与键值的对应 关系中的结构类及键值,所对应的类对象的一维数组元素假设为A[l]。信令跟踪后台将键 值添加到所对应的类对象中,同时根据特定文件中结构类包含的结构构造方法,创建结构 类的对象,即结构对象,将结构对象添加到所匹配的类所对应的类对象中,例如,将xml文 件中,第一组结构类与键值的对应关系中的键值添加到AW],将第一组结构类与键值的对 应关系中的结构类根据结构构造方法创建为结构对象,添加到A
中,将第二组结构类与 键值的对应关系中的键值添加到A[l],将第二组结构类与键值的对应关系中的结构类根据 结构构造方法创建为结构对象,添加到A[l]中。信令跟踪后台保存类对象,所述的类、类对 象是指不同的结构形式。步骤102、信令跟踪前台接收信令跟踪后台发送的跟踪条件,将信令发送给信令跟 S示后台ο信令跟踪后台向信令跟踪前台发送跟踪条件,所述跟踪条件包括所要跟踪的终端 号码、信令的业务类型等等,信令跟踪前台接收跟踪条件,读取业务处理机中符合跟踪条件 的信令,根据结构规则,在信令中添加键值,并发送给信令跟踪后台。同样的,信令跟踪后台 可向信令跟踪前台发送取消跟踪信息,则信令跟踪前台停止跟踪,停止向信令跟踪后台发 送{曰令。步骤103、信令跟踪后台根据信令中的键值确定匹配的类对象,根据类对象将信令 展示为树结构。信令跟踪后台接收信令,读取信令中的键值,根据键值查询保存的类对象,若类对 象中的键值与所读取的信令中的键值不相符,则流程结束;若类对象中的键值与所读取的信令中的键值相符,读取所述类对象的结构对 象,在用户选择查看此信令的结构时,调用结构对象中的结构字段赋值方法,将所述信令 中结构字段对应的内容,例如数值,添加到结构对象对应的结构字段中,以信令结构为 InterCommSendXMLReq_T为例,所述结构字段赋值过程如下public void parse(byte input[], int start)
8
TLangAdaptor adaptor = new TLangAdaptor(platform, bitorder);
all_len = adaptor, getint(input, " unsigned short" , start);
start = start+2 ;
tag_did = adaptor, getshort(input, " unsigned char" , start);
start = start+1 ;
d_id. parse (input, start);
start = start+d_id. length ;
i_id = adaptor, getshort(input, " unsigned char" , start);
start = start+1 ;
tag_lid = adaptor, getshort (input, " unsigned char" , start);
start = start+1 ;
l_id = adaptor, getshort (input, " unsigned char" , start);
start = start+1 ;
opercode. parse(input, start);
start = start+opercode. length ;
l_component = adaptor, getshort(input, " unsigned char" , start);
start = start+1 ;
i_para. parse(input, start);
start = start+i_para. length ;
};
根据平台类型platform、字节序bitorder解析信令内容,所述平台类型及字节序
为预先定义的参数,假设platform为true时为intel平台,bitorder为true时是从高位 到低位开始解析,根据叶子节点类型的字节长度,以alljen为例,all_len类型为int,字 节长度为2,则allien对应的内容为从高位到低位选取信令中与结构对象对应位置的2个 字节长度的内容。然后根据结构对象中的树结构展示方法,将所述信令展示为树结构。具体内 容包括首先创建一个树结构类StructTree,所述树结构类StructTree,包含节点名称 structName、子树sonTree、节点信息structlnfo、结构起始位置startlndex及结束位置 endlndex,具体结构如下public class StructTree{public String structName ;public Vector sonTree ;public String structlnfo ;public int startlndex, endlndex ;public StructTree(String name, String info, int start, int end){structName = name ;
90120]structlnfo = info ;
0121]sonTree = null ;
0122]startlndex = start ;
0123]endlndex = end ;
0124]}
0125]public void addTreeNode (StructTree tree)
0126]{
0127]if (sonTree == null)
0128]sonTree = new Vector ();
0129]sonTree. add (tree);
0130]}}然后将树结构类StructTree创建为对象,即为树结构类对象,将结构对象中的结 构字段作为节点,所述节点包括根节点、叶子节点等,其在树结构类对象中的起始及结束位 置可根据节点的类型的字节长度获取,然后结合节点信息将树节点创建节点对象,将创建 的节点对象添加进树结构类对象,所述节点信息包括节点名称、节点对应的内容、节点起始 位置、节点结束位置。下面以信令结构为InterCommSendXMLReqJ的信令展示为树结构为 例进行说明public StructTree getStructTree(int startindex){int start = startindex, end = startindex ;StructTree tree = new StructTree ();start = end ;end+ = 2 ;tree. addTreeNode (newStructTree {“ all_len",Integer. toString(all_en), start,end));start = end ; end+ = 1 ;tree. addTreeNode (newStructTree (" tag—did",Integer. toString (tag—did), start,end));start = end ;end+ = d—id. length ;StructTree d—idtree = d—id. getStructTree (start);d_idtree. structName = /r d一id";tree. addTreeNode (d—idtree);start = end ;end+ = 1 ;tree. addTreeNode (new StructTree {“ i—id",Integer. toString(i—id), start,end));start = end ;end+ = 1 ;tree. addTreeNode (new
10
StructTree(“ tag_lid〃 , Integer. toString(tag_lid),start,end))
start = end ;end+ = 1 ;
tree. addTreeNode (new StructTree {“ l_id",Integer. toString(l_id),start,end))
start = end ;end+ = opercode. length ;
StructTree opercodetree = opercode. getStructTree(start);
opercodetree. structName = “ opercode“;
tree. addTreeNode(opercodetree);
start = end ;end+ = 1 ;
tree. addTreeNode (new
StructTree (" l_component",Integer. toString(l_component),start,end))
start = end ;end+ = i_para. length ;
StructTreei—paratree = i_ara. getStructTree (start);
i—paratree· structName =" i—para";
tree· addTreeNode(i—paratree);
tree. structName =" InterCommSendXMLReq—T";
return tree ;
}
将StructTree创建为树结构类对象,以InterCommSendXMLReq_T中的叶子节点
all_len为例,all_len在树结构类对象中的起始及结束位置,根据all_len类型,即int 的字节长度获取,int的字节长度为2,则allien的起始位置为0,结束位置为2,然后结 合 all_len 信息将 all_len 创建为节点对象,即 newStructTree(〃 all_len〃,Integer. toString(all_len),start, end),将创建的all_len的对象添加到树结构类对象中。基于上述方法,本发明还提供了一种信令展示系统,如图2所示,该系统包括转 换模块201、信令跟踪后台202、信令跟踪前台203 ;转换模块201,用于将C语言表示的信令结构转换为java语言表示的信令结构, 称之为结构类,同时在结构类中预置结构构造方法、结构字段赋值方法及树结构展示方法; 所述结构类名称可根据需要自行命名;所述结构构造方法指结构构造方法的程序代码,是 java中常用的构造方法,用于将结构类创建为结构对象,所述结构字段赋值方法指结构字 段赋值方法的程序代码,用于将结构字段对应的内容赋值给相应的结构字段,所述树结构 展示方法指树结构展示方法的程序代码,用于将信令展示为树结构;信令跟踪后台202,用于根据结构规则配置结构类与键值的对应关系并保存在特 定文件中,所述特定文件为信令跟踪后台可解析的文件,例如xml文件,将结构类与键值对 象化,形成类对象;向信令跟踪前台203发送跟踪条件,接收信令跟踪前台203发送的信令, 确定所接收的信令的键值与类对象匹配,根据类对象将信令展示为树结构,所述结构类与 键值的对应关系,即为结构类名称与键值的对应关系;信令跟踪前台203,用于接收信令跟踪后台202发送的跟踪条件,确定与跟踪条件相符的信令,根据结构规则在信令中添加键值,将包含键值的信令发送给信令跟踪后台 202;所述结构规则包括具体的信令结构的种类及应关联的键值的类别与个数。信令跟踪后台202,具体用于创建与特定文件匹配的类,所述类与特定文件中的结 构类与键值的对应关系一一对应,进一步创建类对象,所述类对象与类一一对应,也就是说 特定文件中的一组结构类与键值的对应关系对应一个类对象,定义一维数组,所述一维数 组中的元素与所述类对象对应,用于保存类对象,将特定文件中的键值添加到所对应的类 对象中,读取特定文件中的结构类名称对应的结构类,根据结构类中的结构构造方法创建 结构类对象,即为结构对象,并添加到所对应的类对象中。信令跟踪后台202,具体用于读取所接收的信令中的键值,根据键值查询所保存的 类对象,确定有类对象中的键值与所接收的信令中的键值相符,则所接收信令的键值与类 对象匹配。信令跟踪后台202,具体用于读取类对象中的结构对象,调用结构对象中的结构字 段赋值方法,将信令中结构字段的内容添加到结构对象中相应的结构字段中,调用结构对 象中的树结构展示方法,将信令展示为树结构。信令跟踪后台202进一步用于,向信令跟踪前台203发送取消跟踪信息;信令跟踪前台203,用于接收取消跟踪信息,停止信令跟踪,停止向信令跟踪后台 202发送信令。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在 本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护 范围之内。
权利要求
一种信令展示方法,其特征在于,该方法包括转换模块将C语言表示的信令结构转换为java语言表示的结构类,信令跟踪后台配置结构类与键值的对应关系,将结构类与键值对象化,成为类对象,确定接收的信令中的键值与类对象匹配,根据类对象将接收的信令展示为树结构。
2.根据权利要求1所述的信令展示方法,其特征在于,所述信令跟踪后台配置结构类 与键值的对应关系包括信令跟踪后台根据结构规则,配置结构类名称与键值的对应关系,保存在特定文件中。
3.根据权利要求2所述的信令展示方法,所述将结构类与键值对象化,成为类对象包括创建与特定文件匹配的类,创建所述类的类对象,将键值添加到类对象中,根据结构类 中的结构构造方法创建结构类的结构对象,将结构对象添加到类对象中,保存类对象。
4.根据权利要求1至3任一项所述的信令展示方法,其特征在于,所述确定接收的信令 中的键值与类对象匹配包括接收信令,所述信令中包含根据结构规则添加的键值,读取信令中的键值,根据键值查 询类对象,确定类对象中的键值与所读取的信令中的键值相符,则键值与类对象匹配。
5.根据权利要求3所述的信令展示方法,其特征在于,所述根据类对象将接收的信令 展示为树结构包括读取类对象中的结构对象,调用结构对象中的树结构展示方法,将信令展示为树结构, 同时调用结构对象中的结构字段赋值方法,将信令中结构字段对应的内容添加到树结构的 相应结构字段中。
6. 一种信令展示系统,其特征在于,该系统包括转换模块、信令跟踪前台、信令跟踪 后台;转换模块,用于将C语言表示的信令结构转换为java语言表示的结构类;信令跟踪前台,用于接收信令跟踪后台的跟踪条件,根据跟踪条件将包含键值的信令 发送给信令跟踪后台;信令跟踪后台,用于配置结构类与键值的对应关系,将结构类与键值对象化,成为类对 象;向信令跟踪前台发送跟踪条件,确定所接收的信令中的键值与类对象匹配,根据类对象 将所接收的信令展示为树结构。
7.根据权利要求6所述的信令展示系统,其特征在于,所述信令跟踪后台具体用于,根据结构规则,配置结构类名称与键值的对应关系,保存 在特定文件中。
8.根据权利要求7所述的信令展示系统,其特征在于,所述信令跟踪后台具体用于,创建与特定文件匹配的类,创建所述类的类对象,将键值 添加到类对象中,根据结构类中的结构构造方法创建结构类的结构对象,将结构对象添加 到类对象中并保存。
9.根据权利要求6至8任一项所述的信令展示系统,其特征在于,所述信令跟踪后台,具体用于读取所接收的信令中的键值,根据键值查询类对象,确定 类对象中的键值与所读取的信令中的键值相符,则键值与类对象匹配。
10.根据权利要求8所述的信令展示系统,其特征在于,所述信令跟踪后台,具体用于读取类对象中的结构对象,调用结构对象中的树结构展 示方法,将接收的信令展示为树结构,同时调用结构对象中的结构字段赋值方法,将信令中 结构字段的内容添加到树结构的相应结构字段中。
全文摘要
本发明公开了一种信令展示方法,包括转换模块将信令结构转换为java语言表示的结构类,信令跟踪后台配置结构类与键值的对应关系,将结构类与键值对象化,成为类对象,确定接收的信令中的键值与类对象匹配,根据类对象将接收的信令展示为树结构,所述结构类还预置了结构构造方法、结构字段赋值方法、树结构展示方法。本发明还公开了一种信令展示系统,采用本发明所述的方法及系统,清楚显示信令中的结构关系,有利于问题定位。
文档编号G06F9/45GK101916202SQ201010251389
公开日2010年12月15日 申请日期2010年8月9日 优先权日2010年8月9日
发明者孟凡波 申请人:中兴通讯股份有限公司