`
taupo
  • 浏览: 29384 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

BAC Monitor Rule分析

    博客分类:
  • BAC
阅读更多

 

 

 Mointor Rule是BAC数据来源的起点,数据传到BAC的BUS后都是通过Monitor Rule取得。所以重要性就不用说了。

 

以下是对FieldToValueRule的分析,其他的Rule大致流程也差不多了。

 

1  initRuleIfNeeded 方法的主要作用就是建立AccumulatorAccumulator可以看做是一个容器,用于传递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 

 

分享到:
评论

相关推荐

    Bac-to-bac表达系统中文版说明书.pdf

    **Bac-to-Bac杆状病毒表达系统**是一种高效便捷的重组蛋白表达工具,尤其适用于在昆虫细胞中实现目的基因的高水平表达。该系统的核心原理是利用杆状病毒的Tn7转座子机制,将含有目的基因的pFastBac捐赠质粒插入到E. ...

    Bac-to-Bac杆状病毒表达系统.doc

    Bac-to-Bac 杆状病毒表达系统 Bac-to-Bac 杆状病毒表达系统是一种快速有效的方法,用于产生重组杆状病毒。该系统基于让已经转入杆状病的质粒(杆粒)的位点特意转座子的表达框的质粒在 Ecoli 中扩增。 该系统的...

    bac.rar_bac

    这份"bac.doc"可能包含了若干编程题目、数据分析任务、系统设计挑战或者算法实现问题,旨在测试考生的实际操作能力和理论知识的结合。 在准备这类考试时,考生需要扎实掌握以下关键知识点: 1. **编程语言基础**:...

    HP BAC与SiteScope集成

    ### HP BAC与SiteScope集成详解 #### 一、HP SiteScope 安装与配置 HP SiteScope是一款功能强大的性能监控工具,适用于多种环境,包括Web应用、数据库、服务器等。其安装流程主要包括: 1. **查找安装文件**:...

    Android statusBar添加bac

    Android statusBar添加bac

    大数据-算法-水稻基因组BAC物理图谱构建以及省略关数据库分析查询系统的本地搭建.pdf

    本文件探讨的是大数据在水稻基因组BAC(Bacterial Artificial Chromosome)物理图谱构建中的应用,以及相关数据库分析查询系统的本地搭建。 **1. 大数据与基因组作图** 大数据在基因组学中的应用主要体现在基因组...

    Elco-宜科 条码阅读器-BAC 48产品手册.pdf

    Elco-宜科 条码阅读器-BAC 48产品手册pdf,Elco-宜科 条码阅读器-BAC 48产品手册

    Bac_to_bac表达系统中文版说明书.doc

    3. **控制表达的质粒**:含有Gus和/或CAT基因,这些基因在病毒感染细胞后表达,产生β-葡萄糖酸酐酶和/或氯霉素乙酰转移酶,有助于检测和分析重组病毒的活性。 **操作流程**大致分为四步: 1. **目的基因克隆**:将...

    Bac-to-bac表达系统中文版说明书模板.doc

    【Bac-to-Bac杆状病毒表达系统】是一种在昆虫细胞中高效表达目的基因的生物技术,主要用于蛋白质功能研究和生产。...通过精确的操作,研究人员可以在昆虫细胞中实现目标蛋白质的高效表达和功能分析。

    迅饶BACnet 网关BAC1002-ARM

    ### 迅饶BACnet 网关BAC1002-ARM #### 一、产品概述 迅饶BACnet 网关BAC1002-ARM是一款高性能、多功能的网关设备,专门用于实现不同通信协议之间的转换,特别是将各种设备连接到BACnetIP网络中。该网关适用于楼宇...

    Bac_to_bac表达系统中文版说明书.pdf

    **Bac-to-Bac杆状病毒表达系统**是一种高效、快速的重组病毒生成工具,尤其适用于在昆虫细胞中实现目标基因的高水平表达。该系统基于Tn7位点特异性转座子机制,大大简化了重组病毒的构建过程,减少了传统同源重组...

    惠普业务可用性中心(HP BAC)

    - HP BAC能够分析复杂的应用环境,包括J2EE、.NET、SAP、Oracle、Siebel等,帮助识别问题的根本原因。 - 这种能力有助于组织更快地解决问题,减少故障时间,提高整体效率。 5. **性能问题快速解决:** - HP BAC...

    BAC-S-MOD-M配置软件使用说明.pdf

    在详细解读“BAC-S-MOD-M配置软件使用说明.pdf”文档内容后,我们可以提炼以下IT知识点: ### BAC-S-MOD-M配置软件功能及应用 1. **软件目的:** 该配置软件主要用于对BAC-S-MOD-M网关进行参数配置,包括网关的IP...

    BACnet IP网关BAC1022-ARM

    软件特点: -绿色免安装,支持中英文; -支持60种协议同时转为BACnet IP服务器; -支持WEB浏览,查看,设置,进行监视和控制; -支持线性转换,取位,高低字节转换; -配置软件X2BACnet配置工程方便,1000个点20分钟内...

    Elco-宜科 条码阅读器-BAC500产品手册.pdf

    Elco-宜科 条码阅读器-BAC500产品手册pdf,Elco-宜科 条码阅读器-BAC500产品手册

    BAC0:BAC0-依赖于BACpypes(Python 3)的库来为BACnet应用程序构建自动化脚本

    BAC0 BAC0是一个Python 3(3.5及更高版本)脚本应用程序,它使用处理IP网络上的BACnet消息。 该库带出简单的命令来浏览BACnet网络,从BACnet设备读取属性或对其进行写入。 Python是一种简单易学的语言,并且是用于...

    STV0900BAC_datasheet_H_datasheet_dvb_

    《STV0900BAC DVB解码芯片技术详解》 STV0900BAC是一款由全球知名半导体制造商意法半导体(STMicroelectronics)推出的高性能数字视频广播(DVB)解码芯片。该芯片在数字电视接收、卫星电视接收等领域具有广泛的...

Global site tag (gtag.js) - Google Analytics