- 浏览: 29416 次
- 性别:
- 来自: 重庆
最新评论
Mointor Rule是BAC数据来源的起点,数据传到BAC的BUS后都是通过Monitor Rule取得。所以重要性就不用说了。
以下是对FieldToValueRule的分析,其他的Rule大致流程也差不多了。
1、 initRuleIfNeeded 方法的主要作用就是建立Accumulator,Accumulator可以看做是一个容器,用于传递Samples。在该方法内部
1.1:判断KPI是否已经初始化
kpi.getTransientValue("__ACT_WAS_INITIALIZED");//判断KPI是否初始化,是否初始化的标准就是KPI是否包含Accumulator
1.2:若没有初始化,通过调用LeafRule的internalInit(access, node, kpi)方法,对KPI进行初始化。初始化过程如下:通过新建一个Accumulator,初始化maxCount=1,并调用kpi.setStateValue("__ACT_ACCUMULATOR", accumulator);对Accumulator进行保存。注意:在这里其实是建立的SampleBasedAccumulator(Accumulator子类)
1.3、完成KPI初始化过后,调用init(access, node, kpi)做进一步的初始化工作,但是在FieldToValueRule中,这里啥也不干。
1.4
kpi.setTransientValue("__ACT_WAS_INITIALIZED", Boolean.TRUE);//这行就不需多解释了 kpi.setTransientValue("__ACT_INITIALIZED_ON", new Long(access.getDataEndTime()));//保存KPI初始化时间
1.5、如果在调用initRuleIfNeeded 之前已经完成了初始化,那么initRuleIfNeeded 啥也不干。
2、完成1过后调用clearPreviousStatus(kpi),清理KPI历史数据。
objective.removeTransientValue("__ACT_LastStatus"); objective.removeResultValue("is_no_data_status");
3、做SLM的Downtime检查,对FieldToValueRule来说,没有什么用,跳过
4、calculate方法调用。因为LeafRule重写了该方法,所以这里实际上是调用LeafRule的calculate方法。
该方法的具体逻辑如下:
4.1 、
Accumulator accumulator = getAccumulator(kpi); 这里会尝试获得和KPI相关的Accumulator
4.2、调用processSamples,
4.2.1 若有Sample传到BAC,那么会把所有的sample取出来,包装成ExtractedSample,并添加到新建的
ExtractedSampleContainer中。具体怎么取的呢?参考上一篇帖子。然后对取出的sample做过
滤, 具体对FieldToValueRule来说,过滤的实现为空,也就是说不过滤任何sample。过滤过
后, 就把 所有的sample加入到4.1中的Accumulator 中。
4.2.2 若此时没有sample传到BAC,调用accumulator.removeSamplesIfNeeded(access);来删除旧的
sample。但是对FieldToValueRule来说在会保留至少一个sample,即最新的。对其他和时间相
关 的 Rule,会删除所有的超时sample。
4.3 取出最新的sample,如果不为空,通过对比KPI的“LAST_TIMESTAMP”和该sample的“time_stamp”
决定是否更新“LAST_TIMESTAMP”
kpi.setStateValue("LAST_TIMESTAMP", new Long(latestTimestamp));
4.4 通过accumulator.removeSamplesIfNeeded(access)删除多余sample,和上面分析的一样,保留最新的
4.5 判断是否超时,若超时就安无数据处理。【?】同时 calculate方法结束,返回execute方法。
4.6 若不超时,调用父类calculate。在父类calculate中调用doPreCalculation,同样,在FieldToValueRule
啥 也不干。
4.7 调用calculateKpi。由于该方法会被LeafRule重写,所有在这里调用的是LeafRule的calculateKpi,而在
LeafRule中有个重载的calculateKpi方法,而该重载的calculateKpi方法一般会再次被子类重写,
所以最后真正调用的是FieldToValueRule的calculateKpi。不过在调用之前会把会通过
accumulator获得ExtractedSampleContainer,并把后者当做参数传入FieldToValueRule的
calculateKpi中,最后在重写的calculateKpi方法中,我们把需要的值取出来,并以
"Result"的形式保存到KPI的RuleObjective中
4.8 完成值的保存过后,通过calculateValueForObjective回去保存的值,这个方法也需要重写。
4.9 利用evaluateObjective(objective, objectiveValue)把值和设置的阈值对比,计算出状态结果
4.10 利用updateStatus(access, objective, newStatus)跟新KPI状态
objective.setResultValue("status", status); 若状态有变,同时更新KPI的"LastStatusChange"属性 objective.setResultValue("LastStatusChange", new Long(access.getDataEndTime()));
4.11 调用doPostCalculation,同样在这里啥也不做 。到这里calculate算是执行完了。返回execute
5、 执行完execute后,主要的取值逻辑也执行完了,剩下的就是对结果、状态做进一步处理,
比如调用handleAlerts(access, node, kpi);处理告警 等的
FieldToValueRule——>DashboardSampleRule——>SampleRule——>LeafRule——>BaseRule
从继承关系来看,一切的Rule都是集成之BaseRule,BaseRule规定了取值(计算)的一般流程,它会暴露execute方法给外部调用,而在execute方法内部通过调用BaseRule或者其子类的其他方法完成了计算。我们从execute方法开始来分析BAC的取值(计算)过程。
1、 initRuleIfNeeded 方法的主要作用就是建立Accumulator,Accumulator可以看做是一个容器,用于传递Samples。在该方法内部
1.1:判断KPI是否已经初始化
kpi.getTransientValue("__ACT_WAS_INITIALIZED");//判断KPI是否初始化,是否初始化的标准就是KPI是否包含Accumulator
发表评论
-
嵌入EUM报告
2010-12-08 17:22 9051。解决Genrate Button无反应问题 修改t ... -
BAC Business Rule分析之二
2010-08-19 02:23 835BaseRule中execute方法是 ... -
Matcher log
2009-12-02 01:08 1168Trinity listens to BAC's BUS an ... -
WDE log
2009-12-02 00:51 1091The Web Data Entry is the sampl ... -
Rule log
2009-12-02 00:47 873The Rule Engine contains the ac ... -
KPI Matcher
2009-12-02 00:44 985Trinity uses the Matcher as the ... -
BAC数据DEBUG(WDE & Loader Troubleshooting)
2009-11-27 20:37 1408WDE Data Collectors send data ... -
Sample日志
2009-11-04 13:33 949D:\HPBAC\conf\core\Tools\log4j\ ... -
Dashborad Tables
2009-09-23 17:41 1480Dashboard Repository BC_R ... -
MyBac Tables
2009-09-23 17:40 1246All MyBSM (MyBAC) related tabl ... -
BAC Log files
2009-09-23 17:30 1668Dashboard Monitor displ ... -
读BAC7.5 源码有感
2009-09-06 01:10 810累,脑细胞不知道死了多少了。而且由于官方放出的源代码太少,只 ... -
Bac7.5 中Generic Sample Rule分析
2009-09-02 22:44 893Dashbord中的Generic Sample Rule用的 ...
相关推荐
**Bac-to-Bac杆状病毒表达系统**是一种高效便捷的重组蛋白表达工具,尤其适用于在昆虫细胞中实现目的基因的高水平表达。该系统的核心原理是利用杆状病毒的Tn7转座子机制,将含有目的基因的pFastBac捐赠质粒插入到E. ...
Bac-to-Bac 杆状病毒表达系统 Bac-to-Bac 杆状病毒表达系统是一种快速有效的方法,用于产生重组杆状病毒。该系统基于让已经转入杆状病的质粒(杆粒)的位点特意转座子的表达框的质粒在 Ecoli 中扩增。 该系统的...
这份"bac.doc"可能包含了若干编程题目、数据分析任务、系统设计挑战或者算法实现问题,旨在测试考生的实际操作能力和理论知识的结合。 在准备这类考试时,考生需要扎实掌握以下关键知识点: 1. **编程语言基础**:...
### HP BAC与SiteScope集成详解 #### 一、HP SiteScope 安装与配置 HP SiteScope是一款功能强大的性能监控工具,适用于多种环境,包括Web应用、数据库、服务器等。其安装流程主要包括: 1. **查找安装文件**:...
Android statusBar添加bac
本文件探讨的是大数据在水稻基因组BAC(Bacterial Artificial Chromosome)物理图谱构建中的应用,以及相关数据库分析查询系统的本地搭建。 **1. 大数据与基因组作图** 大数据在基因组学中的应用主要体现在基因组...
Elco-宜科 条码阅读器-BAC 48产品手册pdf,Elco-宜科 条码阅读器-BAC 48产品手册
3. **控制表达的质粒**:含有Gus和/或CAT基因,这些基因在病毒感染细胞后表达,产生β-葡萄糖酸酐酶和/或氯霉素乙酰转移酶,有助于检测和分析重组病毒的活性。 **操作流程**大致分为四步: 1. **目的基因克隆**:将...
【Bac-to-Bac杆状病毒表达系统】是一种在昆虫细胞中高效表达目的基因的生物技术,主要用于蛋白质功能研究和生产。...通过精确的操作,研究人员可以在昆虫细胞中实现目标蛋白质的高效表达和功能分析。
### 迅饶BACnet 网关BAC1002-ARM #### 一、产品概述 迅饶BACnet 网关BAC1002-ARM是一款高性能、多功能的网关设备,专门用于实现不同通信协议之间的转换,特别是将各种设备连接到BACnetIP网络中。该网关适用于楼宇...
**Bac-to-Bac杆状病毒表达系统**是一种高效、快速的重组病毒生成工具,尤其适用于在昆虫细胞中实现目标基因的高水平表达。该系统基于Tn7位点特异性转座子机制,大大简化了重组病毒的构建过程,减少了传统同源重组...
- HP BAC能够分析复杂的应用环境,包括J2EE、.NET、SAP、Oracle、Siebel等,帮助识别问题的根本原因。 - 这种能力有助于组织更快地解决问题,减少故障时间,提高整体效率。 5. **性能问题快速解决:** - HP BAC...
在详细解读“BAC-S-MOD-M配置软件使用说明.pdf”文档内容后,我们可以提炼以下IT知识点: ### BAC-S-MOD-M配置软件功能及应用 1. **软件目的:** 该配置软件主要用于对BAC-S-MOD-M网关进行参数配置,包括网关的IP...
软件特点: -绿色免安装,支持中英文; -支持60种协议同时转为BACnet IP服务器; -支持WEB浏览,查看,设置,进行监视和控制; -支持线性转换,取位,高低字节转换; -配置软件X2BACnet配置工程方便,1000个点20分钟内...
Elco-宜科 条码阅读器-BAC500产品手册pdf,Elco-宜科 条码阅读器-BAC500产品手册
BAC0 BAC0是一个Python 3(3.5及更高版本)脚本应用程序,它使用处理IP网络上的BACnet消息。 该库带出简单的命令来浏览BACnet网络,从BACnet设备读取属性或对其进行写入。 Python是一种简单易学的语言,并且是用于...
《STV0900BAC DVB解码芯片技术详解》 STV0900BAC是一款由全球知名半导体制造商意法半导体(STMicroelectronics)推出的高性能数字视频广播(DVB)解码芯片。该芯片在数字电视接收、卫星电视接收等领域具有广泛的...