告警关联规则引擎举例

比如网络中某设备出现“端口故障”告警,往往会导致相关的信号“帧丢失”告警发生,这也就是说“端口故障”告警是根源性的,而“帧丢失”告警是衍生出来的,所以“帧丢失”告警应该删除,不应该在最终的告警客户端显示。这条规则可以在Rule类中以一段简单的代码表示:
if ( alarmsType.equals("端口故障") )
{PortFaultSource.add (alarmsSource);}//储存产生“端口故障”告警的告警源信息
if(alarmsType.equals(“帧丢失”)&&PortFaultSource.contains(alarmsSource) )
//判断该端口是否有“端口故障”告警产生,且当前是否为“帧丢失”告警
{ClearID.add(alarmsID);break;}//若有,则删除该“帧丢失”告警
可以把规则和对规则的操作定义为规则类,具体的每一条规则实现为类的实体,同一个规则类的不同
实体对应着不同的规则,这样可以重用代码,大大减少工作量。采用面向对象技术来构造知识库系统,将
推理机制作为方法定义在知识库中,问题的求解由控制器根据定义在知识库中的过程性知识来控制。这样,
由规则与推理机制一起就构成一个面向对象的知识库系统。
比如上面的那一条同源产生的“端口故障”与“帧丢失”告警,保留“端口故障”删除“帧丢失”告
警的规则,可以实现为如下Java类的实体。
public class AlarmsSRestrain
{ …
public void getrootSource()
{//找出指定根源告警名的告警源,储存到rootSource中

while (

) {
…;
if (alarmsType.equals(rootAlarmsname))//判断是否为rootAlarmsname告警
if( !rootSource.contains(alarmsSource )
rootSource.add (alarmsSource);//储存产生rootAlarmsname告警的告警源信息

}
}
public void executerootSource()
{//将指定的衍生告警删除

while (

) {

if (rootSource.contains(alarmsSource)
&& (alarmsType.equals(deriveAlarmsname) )
avo.updateObject( ( (Integer) avo.colKeys.get("AlarmsState")).
intValue(), new String("C"));//删除告警

}
}
该规则即为实体:new AlarmsSRestrain(avo,“端口故障”,“帧丢失” )。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值