一种处理通信网络故障的方法 【技术领域】
本发明涉及通信网管故障管理中的故障处理领域,具体提供一种处理通信网络故障的方法。
背景技术
在通信故障管理领域中,一般的告警处理程序均是通过硬编码进行处理的,作为使用者来说,无法理解这些硬编码的内容,当处理流程变化后也就无法去动态的快速的改变这些流程;而作为开发商来说也会把这部分当作厂商的机密内容而加以保护;这也就给实际的使用者和开发商之间建立起了一座鸿沟,而横跨这个鸿沟的就必须是实际使用者代表和开发商代表之间的反复沟通和随变化修改、不断验证的过程,这个过程是相当的漫长或者说复杂的。
伪编程语言是指为了解释说明程序算法而书写的一种既像程序语言又像自然语言的一种说明语言,是不能被解释或者编译成功的。伪语言以其易理解而多应用于计算机教学或者教程中。
伪语言引入到电信故障处理的领域内,主要是改变了以往只是给用户提供功能的方式,通过伪语言的表示把故障告警的采集处理逻辑开放给用户,供用户随时进行业务逻辑的调整。以往该部分对于用户来说都是黑盒操作,对用户来说是不可见的,但是该部分用户才是业务专家,如果能够开发该部分,并且降低阅读的复杂度,那么对于业务改变时,这个改变就可以由用户发起,充分发挥用户业务熟悉的优势提高软件的可用性;对于系统所不能提供的原子操作,可以通过伪语言的开放性由用户提交新流程(伪语言编写),开发商根据流程开发流程中的原子操作,避免了交流和沟通上的二义性或者多义性带来的不便,快速的进行支撑。目前本伪语言主要应用在java为基础环境的语言引擎上,伪语言本身与编程语言无关,更多的像一个描述流程的语言。
本伪语言主要涉及故障处理流程的表示,故障关联处理的业务规则的表达的描述,从电信故障告警处理的业务来看,变化大都集中在这两个方面,通过把这两方面的封装和开放,能够对变化进行快速,精确的描述和支撑。
【发明内容】
本发明的一种处理通信网络故障的方法,是针对以上问题,提供一种伪语言,建立一定的语义和语法,并且利用伪语言进行故障处理的业务逻辑表示,利用基本的编程语言来构建伪语言的语义和语法的运行环境,以便实际可执行的计算机语言代码能够识别并执行。
本发明解决其技术问题所采用的技术方案是:
一种处理通信网络故障的方法,包括以下步骤:
A、对通信网络中的告警信息的处理方式进行分析,区分出其类型后进行拆分;
B、对拆分后的告警信息通过伪语言的定义规则进行定义;
C、按照区分出的类型对定义后的告警处理进行合并,形成最后的业务逻辑模型。
告警信息类型包括共性的处理或独立的处理。
本发明地一种处理通信网络故障的方法,其具有以下要求:
1)基本概念
在这里的伪语言中的语法很简单,只需要几个简单的句式即可,并且记住这些句式内的变量内容,进行句式套用,即可进行语言的灵活应用。对于常规的事务性语言来说,其语法语义应该包括下面几项内容:
词法项 简介 预定义项 对各种变量进行定义,可以贯穿整个流程始终 活动 即某一独立事件,可以为一次赋值,也可以为 一简单流程处理 参数 输入参数,用于局部变量使用,也可赋值到上 下文中进行全局使用 流转控制 主要包括返回,继续,同时带有本次执行结果 的预判 范围界定 对模块的划分,有助于控制流转
预定义项
主要定义整个流程所需要的变量。同时指出变量的各种属性,如变量类型,变量名称,所属分类,默认值等。
活动
活动分为简单活动和复杂活动,能够在程序语言中通过基本语法实现的功能称为简单活动;由一项或多项简单活动组成的活动称为复杂活动。简单活动主要包括IF判断,赋值,switch分支等。复杂活动一律用加载命令表示。
参数
本次流程所需参数,可以为零个或多个,根据具体情况进行定义。
流转控制
流转分为直接流转和控制流转,直接流转无视本次执行结果如何直接流转;控制流转则根据本次执行的相关返回值判断进行如何流转。
范围界定
对某一业务流程或者分支进行界定,以便使业务逻辑更加清晰,如对于故障告警的处理来说,可以将活动告警的处理流程,确认告警的处理流程和清除告警的处理流程分为3个主要的业务流程进行处理。
2)词法定义
按照各种概念的定义,对伪语言的词法详细定义如下:
例如:对于要改变某一个属性的值,就需要应用到赋值的句式,如下:
<AssignValue name=″【变量】″>【值】</AssignValue>
具体到某一个具体的例子来说,假设我们要给变量xxx赋值为1,那么语法如下:
<AssignValue name=″xxx″>1</AssignValue>
再比如,对于告警处理来说,需要根据其告警状态(活动告警,确认告警和清除告警)对告警采取不同的处理,那么则可套用我们的switch分支语法进行定义如下:
<Switch condition=″告警状态″>
<Case value=″活动告警″dochain=″活动告警流程″/>
<Case value=″确认告警″dochain=″确认告警流程″/>
<Case value=″清除告警″dochain=″清除告警流程″/>
</Switch>
以上是单个句式,而多个句式的一行一行的表示,则组成了一个句群或者说是文章,对于伪语言引擎来说就是按照从上到下的顺序逐行的对这些句式进行解释执行;对于最终用户来说,只需要记住简单的几个句式就可以进行流程的重构。
本发明的一种处理通信网络故障的方法,其与现有技术下的网络故障处理方法相比,具有以下优点:
1、对于业务流程来说,无论是开发商还是最终用户来说,都是透明的,当伪语言的引入后,最终用户能够通过这些可读性更强的伪语言来自行快速的进行业务流程的重构。
2、对于代码保护方面来说,伪语言很好的屏蔽了最终的可执行代码,开放给用户的只是只读性更强的语言逻辑,而非代码逻辑,因此对于开发商的智慧结晶来说也能够起到很好的保护。
3、对于双方的沟通来说,最终用户只需要考虑如何利用伪语言来进行业务逻辑的重构上就足够了;开发商则是需要理解用户的业务,在需要的时候针对需求开发新的语言原子语素来代表业务原子组件即可,充分实现了双方优势的发挥。
采用本发明的一种处理通信网络故障的方法,其利用伪语言及伪语言引擎,能够让业务人员通过技术无关的伪语言定制业务逻辑,关注焦点更加集中到业务处理方面,开发人员只关注业务处理的原子操作。引擎会把用伪语言表示的业务逻辑与实际的可执行的计算机代码进行自动翻译并执行。通过该发明,实际的业务流程对于业务人员或者最终用户来说是透明的,这些人员可以在不涉及代码层面的情况下,快速的实现新流程的定制以及原有流程的重构;开发商则针对具体的业务发展定制更多的业务的原子操作用以支持新的句式或者词汇即可;通过这种方式,再不进行代码层面的变更前提下,缩短业务逻辑再造时间,提高了用户新需求的响应度。
【附图说明】
下面结合附图和实施例对本发明进一步说明。
图1为本发明的一种处理通信网络故障的方法的具体实施例的流程图。
【具体实施方式】
下面结合附图和具体实施例对本发明的一种处理通信网络故障的方法作进一步的描述。
如附图1所示,本发明的一种处理通信网络故障的方法如以下步骤进行实施。
第一步:分析流程图,业务拆分。
从上述的流程图我们可以看到,告警处理中既有共性的处理,如告警解析,告警发往前台展示等,也有独立的处理,如将告警时间赋值给确认时间。同时,既有简单的处理,如赋值,也有复杂处理,如告警入库等。所有流程不能一概而论,需要根据实际情况酌情拆分。
第二步:根据流程图,进行原子操作拆分
我们依据图1所述流程图,对原子操作进行一一拆分。
从流程图可知,具体活动主要涉及告警解析,告警状态判断,告警入库,确认时间赋值,告警内容重载,告警清除,告警发往前台展示7项内容。按照最原子的原则,可对7项内容定义如下:
告警解析告警解析非简单程序语言所能实现,故此处用命令(Command)方式实现为
<Command name=″告警解析″className=″com.inspur.alarm.parseAlarm″/>
告警状态判断
对于判断语句,系统提供IF判断和switch流转两种方式,按照常规来说,对于是否或者真假的判断用IF判断,对于多值判断用switch流转方式实现,故此处用switch流转方式实现
<Switch condition=″告警状态″>
<Case value=″活动告警″dochain=″活动告警流程″/>
<Case value=″确认告警″dochain=″确认告警流程″/>
<Case value=″清除告警″dochain=″清除告警流程″/>
</Switch>
告警入库
告警入库,非简单语句可实现,用命令方式实现
<Command name=″告警入库″className=″com.inspur.alarm.insertDB″/>
确认时间赋值
对于简单的赋值,打印日志等操作,可由伪语言预先定义的语句实现
<AssignValue name=″告警确认时间″>告警发生时间</AssignValue>
告警内容重载
命令方式实现
<Command name=″告警内容重载″className=″com.inspur.alarm.reloadAl″/>
告警清除
命令方式实现
<Command name=″告警清除″className=″com.inspur.alarm.clearAl″/>
告警发往前台
命令方式实现
<Command name=″告警发往前台″className=″com.inspur.alarm.sendAl″/>
第三步:合并。
合并工作为伪语言工作的最后一步工作,但同样要参照基本流程图进行酌情合并,就上述流程来说,将活动告警处理,确认告警处理和清除告警处理分为3个业务流程进行处理会使流程更清晰。故现将这3个流程所涵盖的内容进行先行合并
活动告警流程
<Chain name=″活动告警流程″>
<Command name=″告警入库″className=″com.inspur.alarm.insertDB″/>
</Chain>
确认告警流程
<Cháin name=″确认告警流程″>
<AssignValue name=″告警确认时间″>告警发生时间</AssignValue>
</Chain>
清除告警流程
<Chain name=″清除告警流程″>
<Command name=″告警内容重载″className=″com.inspur.alarm.reloadAl″/>
<Command name=″告警发往前台″className=″com.inspur.alarm.sendAl″/>
</Chain>
最后,将所有流程进行由下至上逐次合并后,生成伪语言。
综上所述,基于流程模型和规则引擎的框架,可以灵活配置业务的流程,以适合用户需要以不断变化的需求。当然,以上只是简单举例,实际运用中远比这个复杂,但其核心都是原子操作的定义与合并。
以上所述的实施例,只是本发明较优选的具体实施方式的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。