一种对业务运行状态进行跟踪的方法及系统的制作方法

文档序号:9432441阅读:673来源:国知局
一种对业务运行状态进行跟踪的方法及系统的制作方法
【技术领域】
[0001]本发明涉及数据处理技术领域,具体涉及一种对业务运行状态进行跟踪的方法及系统。
【背景技术】
[0002]电信运营商的业务支撑系统中,由于业务繁多且流程复杂,并且存在多系统之间的交互。想要了解每一个业务的各个运行环节,或者业务处理过程出现故障时希望能快速定位故障的环节,都会因为系统的复杂度而面临巨大的挑战。
[0003]传统的业务系统维护过程中,有处理失败的业务,需要前台营业员或者其他业务人员提交故障单,故障单提交后通过人工分类再分发给对应的维护人员手里,维护人员再根据故障描述细节,在服务器上搜索当时的处理日志,通过日志定位出错环节,如果日志信息不够,还需要重现故障业务处理过程,以便分析原因;确定环节后再根据具体情况或修复bug,或修正数据;或撤销交易等手段做故障处理;处理完成后关闭故障单。
[0004]通常在人工定位故障的环节会花费较长时间,因为业务流程可能会拉的很长,或者跨越多个系统,或者业务日志提供的信息不足以确认问题原因。
[0005]为了提高故障处理效率,需要对系统的运行信息的记录进行优化,但传统的业务日志输出都依赖开发人员的自己的日志输出习惯,经验丰富的开发者的日志更容易定位问题,但经验缺乏者可能相反,这导致业务日志的质量不容易控制。

【发明内容】

[0006]本发明所要解决的技术问题是提供一种对业务运行状态进行跟踪的方法及系统,能够对业务运行异常进行精确定位,还能获得业务各构件之间调用的运行轨迹。
[0007]本发明解决上述技术问题的技术方案如下:
[0008]—方面,本发明提供了一种对业务运行状态进行跟踪的方法,所述方法包括:
[0009]S1、在特定业务的各构件相互调用位置处设置一构件调用函数;
[0010]S2、在当前构件调用其它构件时,利用所述设置的构件调用函数获取调用过程中的调用记录;
[0011]S3、根据所述特定业务的各构件相互调用过程中的调用记录,生成该特定业务各构件调用的运行轨迹。
[0012]另一方面,本发明提供了一种对业务运行状态进行跟踪的系统,所述系统包括:
[0013]构件调用函数设置模块,用于在特定业务的各构件相互调用位置处设置一构件调用函数;
[0014]调用记录获取模块,用于在当前构件调用其它构件时,利用所述设置的构件调用函数获取调用过程中的调用记录;
[0015]运行轨迹生成模块,用于根据所述特定业务的各构件相互调用过程中的调用记录,生成该特定业务各构件调用的运行轨迹。
[0016]本发明提供的一种对业务运行状态进行跟踪的方法及系统,通过在业务的各构件相互调用位置处设置一构件调用函数,在构件进行调用的过程中,能够获得调用过程的调用记录,然后对调用记录进行异常检测,输出异常信息,还能够根据业务各构件之间调用的调用记录,得到业务各构件调用的运行轨迹,能够跟踪业务运行状态,对业务的异常快速准确定位。
【附图说明】
[0017]图1为现有技术业务构件之间调用关系拓扑图;
[0018]图2为本发明实施例一的一种对业务运行状态进行跟踪的方法流程图;
[0019]图3为本发明实施例一业务构件调用过程中构件调用函数处理流程图;
[0020]图4为本发明实施例一中业务构件调用关系的部分处理流程图;
[0021]图5为本发明实施例二的一种对业务运行状态进行跟踪的系统图示意图。
【具体实施方式】
[0022]以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
[0023]实施例一、一种对业务运行状态进行跟踪的方法。下面结合图1-图4对本实施例提供的方法进行详细说明。
[0024]参见图2,S1、在特定业务的各构件相互调用位置处设置一构件调用函数。
[0025]具体的,参见图1,一个特定业务通常包含若干个业务构件(BP),每一个业务构件实际上就是一个函数,单个业务构件完成单一的数据处理或者条件检查,比如,在电信系统中,单个业务构件用于用户状态的检查或当前话费余额的获取等。业务构件之间通过相互调用形成树状结构成为一个完整的业务过程,比如用户缴费、资费套餐变更等。现有技术中一个构件调用其它的构件是直接的函数调用,难以在业务的各构件的调用之间加入额外的处理代码,因此,首先需要对业务中的各构件调用的方法进行调整,本实施例在业务的各构件相互调用位置处设置一构件调用函数,比如,定义如下的函数和宏:
[0026]utype氺一CALLBP(TUtypeFuncPtr bpfunc, constchar氺bpname, constutype氺ulnParam, TCtrIInfo*ctrIInfo);
[0027]#define CALLBP(bpname, uInParam, ctrllnfo)—CALLBP(bpname, #bpname, ulnParam, ctrllnfo)
[0028]对现有的构件代码进行改造,所有调用构件的地方改为使用宏CALLBP(即在构件调用处设置的构件调用函数)来调用,这个宏的实际处理过程在函数_CALLBP中实现,通过上面的代码片段可以看到,—CALLBP函数可以获得构件调用过程中的一些参数,比如,构件名称,以及全部输入和输出参数,实际的构件调用在该函数中完成。另外,对于业务异常的处理,构件服务框架的处理机制是使用C++的Except1n机制,因此,如果要获取构件的调用异常,还应该在函数中加入异常处理。
[0029]S2、在当前构件调用其它构件时,利用所述设置的构件调用函数获取调用过程中的调用记录。
[0030]具体的,在业务各构件调用位置处设置一构件调用函数,参见图3,在当前构件调用其它构件的过程中,可以利用设置的构件调用函数获取当前构件标识(比如当前构件名称)、当前构件所调用的构件标识(比如,构件名称),以及本次调用的输入参数和输出参数,另外,还能获取本次调用的服务标识(比如,服务名称,即本次调用所完成的功能)和本次调用服务入口产生的唯一流水号(即本次调用的服务入口标识)。根据构件调用函数获取的这些参数,能够生成本次调用过程中的调用记录。
[0031]S3、根据所述特定业务的各构件相互调用过程中的调用记录,生成该特定业务各构件调用的运行轨迹。
[0032]具体的,上述步骤S2在业务构件相互调用的过程中,构件调用函数获取调用过程中的调用记录,本步骤对获得的调用记录进行检测分析,比如,进行异常检测,检测本次调用过程是否出现异常,若出现异常,则获取异常信息并保存。当本次调用过程出现异常时,本次调用过程中断,因此本次调用的服务标识或者本次调用服务入口产生的唯一流水号能够作为构件调用过程中的异常位置标识。通过该异常位置标识,能够对业务构件调用过程中的故障进行准确定位,以便对故障及时的处理。若没有检测到调用过程中的异常状况,则保存输出参数。
[0033]另外,在业务的各构件相互调用的过程中,引入了链表结构对调用过程中的上下级构件进行存储,能够获取各构件的调用关系。参见图4,在整个业务的各构件调用的过程中,当开始调用一个构件时,则在链表尾上添加该构件标识(比如,该构件名称);当调用返回时,删除该构件标识,当业务的各构件相互调用完毕后,链表结构按顺序保存了所有已调用过的构件标识(构件名称)。根据链表结构中保存的各构件标识的顺序,可以生成该业务各构件调用的运行轨迹,而不是用流程图的形式来表示,因此可以清晰的看出各构件的调用关系。
[0034]实施例二、一种对业务运行状态进行跟踪的系统。下面结合图5对本实施例提供的系统进行详细说明。
[0035]参见图5,本实施例提供的系统包括构件调用函数设置模块501、调用记录获取模块502、异常检测模块503、异常信息保存模块504、异常位置标识获得模块505和运行轨迹生成模块506。
[0036]其中,构件调用函数设置模块501主要用于在特定业务的各构件相互调用位置处设置一构件调用函数。
[0037]具体的,本实施例对现有构件调用的方法进行调整,其中,构件调用函数设置模块501在业务的各构件相互调用位置处设置一构件调用函数,比如,定义如下的函数和宏:
[0038]utype氺一CALLBP(TUtypeFuncPtr bpfunc, constchar氺bpname, constutype氺ulnParam, TCtrIInfo*ctrIInfo);
[0039]#define CALLBP(bpname, uInParam, ctrllnfo)—CALLBP(bpname, #bpname, ulnParam, ctrlln
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1