告警規則算法 RealTimeAlarm 01

import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import com.huawei.ngbss.esbm.notifyhandler.webservice.EsbmIntfServiceStub;
import com.huawei.ngbss.esbm.notifyhandler.webservice.NotifyRequestDocument;
import com.huawei.ngbss.esbm.notifyhandler.webservice.ResultHeaderDocument;
import com.huawei.ngbss.esbm.notifyhandler.webservice.NotifyRequestDocument.NotifyRequest;
import com.huawei.ngbss.esbm.notifyhandler.webservice.NotifyRequestDocument.NotifyRequest.Body;
import com.huawei.ngbss.esbm.notifyhandler.webservice.NotifyRequestDocument.NotifyRequest.Header;

public class RealTimeAlarm
{
private static Logger logger = Logger.getLogger(RealTimeAlarm.class);

private RealTimeAlarm()
{

}

public static void realTimecheck(Map<String, String> values)
{
logger.debug("realTimecheck flag:" + values.get("flag"));
boolean result = false;
String ruleid = null;
// 檢測網絡異常以及系統超時情況
if ("3".equals(values.get("flag")) || "4".equals(values.get("flag")))
{
result = true;
ruleid = "";
}
// 如果沒有超時
if (result == false)
{
String realValue = null;
String key_name = null;
String wsdl = null;
// 進行規則匹配,遍歷規則
for (Map.Entry<String, List<Rule>> entry : RuleTools.getRuleMap()
.entrySet())
{
logger.debug("Rule size:" + RuleTools.getRuleMap().size());
Iterator<Rule> iterator = entry.getValue().iterator();
Rule ruleCompare = null;
ruleid = entry.getKey();
while (iterator.hasNext())
{
ruleCompare = iterator.next();
// 真實的數據與規則中的content進行比較
key_name = ruleCompare.getKey();
// 特殊處理,如果規則條件中有servicename,那麼需要將在前面增加wsdl的值還有一個點,
// 格式:wsdl.servicename.還有可能是OCS的工單wsdl.servicename.operateid
if (key_name.equals("servicename"))
{
wsdl = values.get("wsdl");
wsdl = wsdl == null ? "" : wsdl;
realValue = values.get("key_name");
realValue=realValue==null?"":realValue;
realValue=wsdl+"."+realValue;
}
else
{
realValue=values.get(ruleCompare.getKey());
}
if(logger.isDebugEnabled())
{
logger.debug("ruleCompare:" + ruleCompare.toString()
+ " and realValue : " + realValue);
}
result=ruleCompare.compare(realValue);
// 如果規則匹配不成功,不需要發實時告警,直接跳出while循環,下一個規則匹配
if(result==false)
{
break;
}
}
// 如果已經有規則匹配成功,不需要匹配下個rule
if(result==true)
{
break;
}
}
}
logger.debug("The result of realTimecheck is:" + result);
// 需要發實時告警
if(result==true)
{
logger.debug("Sending real time message to ESBM");
EsbmIntfServiceStub stup;
//構造發實時告警消息
NotifyRequestDocument doc=null;
try
{
發佈了88 篇原創文章 · 獲贊 0 · 訪問量 4470
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章