- 浏览: 29407 次
- 性别:
- 来自: 重庆
最新评论
Dashbord中的Generic Sample Rule用的是FieldToValueRule.class[FTVR],该类有几个很重要的方法,getExtractedKeys、calculateKpi,我们先来看getExtractedKeys方法
由代码我们可以得知,改方法是从Kpi的页面输入参数 Field Name中提取值,并通过包装成String[]返回,该方法返回的数组一般只有一个元素,即我们需要从sample获得的值key,如Object[]={dValue}
显然得到了keys过后,我们就需要到sample中取得对应的values,如何得到values呢?
在的父类LeafRule的方法extractSample中
我们可以看到,这里调用了getExtractedKeys,并利用getExtractedKeys返回的keys,从sample中获得真正的values,最后把values赋给ExtractedSample对象。所以,ExtractedSample对象就保存了某个sample中我们感兴趣的value(一般情况下只有一个value)。
value有了,我们是不是就可以进行计算了呢? 显然不是的,因为在kpi的selector进行过滤的时候,可能存在几个满足过滤条件的sample,所以我们这里也应该有多个ExtractedSample才对。原来在LeafRule中还有一个processSamples方法
该方法太长了,就不贴了。在改方法中有一段
这段代码中的iterator就是所有同时满足过滤条件的sample。所以BAC会先遍历这个iterator,对里面的每个sample都建立一个ExtractedSample ,并保存到ExtractedSampleContainer 中,备用
最后,ExtractedSampleContainer 被当做参数传递给FTVR的calculateKpi方法。
在该方法中先取得ExtractedSampleContainer中的第一个ExtractedSample,然后从ExtractedSample中取得第一个value,该value也就是我们在前面所保存的value。
然后判断value是否为数字,如果不是数字那么就丢弃,所以在界面上就会看见“暂缺”。若果是数字,那么就展示出来。
可能分析得不是很精确,不过大体的原理就是这样的了。
protected Object[] getExtractedKeys(RuleNode ruleNode, RuleDimension ruleDimension) { // Find the name of the value field Object valueField = ruleDimension.getInputParameter(INPUT_PARAM_KEY_VALUE_FIELD); if (valueField == null) { log.error("getExtractedKeys: no " + INPUT_PARAM_KEY_VALUE_FIELD + " is defined for " + ruleNode.getID()); return new Object[]{}; } if (!(valueField instanceof String)) { log.error("getExtractedKeys: " + INPUT_PARAM_KEY_VALUE_FIELD + " for " + ruleNode.getID() + " is not defined as a String."); return new Object[]{}; } log.debug("getExtractedKeys: input param " + INPUT_PARAM_KEY_VALUE_FIELD + "[" + valueField + "]"); // Extract this field String valueFieldStr = (String) valueField; return new String[]{valueFieldStr}; }
由代码我们可以得知,改方法是从Kpi的页面输入参数 Field Name中提取值,并通过包装成String[]返回,该方法返回的数组一般只有一个元素,即我们需要从sample获得的值key,如Object[]={dValue}
显然得到了keys过后,我们就需要到sample中取得对应的values,如何得到values呢?
在的父类LeafRule的方法extractSample中
protected ExtractedSample extractSample(RuleNode node, RuleDimension kpi, SampleWrapper rawSample) { Object[] extractedKeys = getExtractedKeys(node, kpi); Object[] sampleData = new Object[extractedKeys.length]; for (int i = 0; i < extractedKeys.length; ++i) { Object key = extractedKeys[i]; sampleData[i] = rawSample.getValue(key); } long timeStampValue = getTimeStamp(node, kpi, rawSample); return new ExtractedSample(sampleData, timeStampValue); }
我们可以看到,这里调用了getExtractedKeys,并利用getExtractedKeys返回的keys,从sample中获得真正的values,最后把values赋给ExtractedSample对象。所以,ExtractedSample对象就保存了某个sample中我们感兴趣的value(一般情况下只有一个value)。
value有了,我们是不是就可以进行计算了呢? 显然不是的,因为在kpi的selector进行过滤的时候,可能存在几个满足过滤条件的sample,所以我们这里也应该有多个ExtractedSample才对。原来在LeafRule中还有一个processSamples方法
该方法太长了,就不贴了。在改方法中有一段
ExtractedSampleContainer extractedSamples = new ExtractedSampleContainer(); while (iterator.hasNext()) { SampleWrapper rawSample = iterator.next(); ExtractedSample sample = extractSample(node, kpi, rawSample); if ((sample.getTimeStamp() != 0L) && (access.getDataEndTime() / sample.getTimeStamp() > 900L)) { log.error(MessageRepository.getMessage("120729")); } extractedSamples.add(sample); }
这段代码中的iterator就是所有同时满足过滤条件的sample。所以BAC会先遍历这个iterator,对里面的每个sample都建立一个ExtractedSample ,并保存到ExtractedSampleContainer 中,备用
最后,ExtractedSampleContainer 被当做参数传递给FTVR的calculateKpi方法。
protected void calculateKpi(RuleTrinityModelAccess access, RuleNode node, RuleDimension kpi, ExtractedSampleContainer sampleContainer) { // current kpi's objective RuleObjective curObjective = getDashboardObjective(kpi); if (sampleContainer == null || sampleContainer.size() == 0) { log.debug("EMPTY samples container"); return; } /* the last sample */ ExtractedSample sample = sampleContainer.get(0); /* the sample's value */ double value = 0; Object fieldValue = sample.getValue(iKEY_VALUE_FIELD); if (!(fieldValue instanceof Number)) { Object fieldName = kpi .getInputParameter(INPUT_PARAM_KEY_VALUE_FIELD); log.error("FieldToValueRule: value for sample field[" + fieldName + "]" + " is not a Number. Aborting"); return; } if (fieldValue == null) { Object fieldName = kpi .getInputParameter(INPUT_PARAM_KEY_VALUE_FIELD); log.error("FieldToValueRule: value for sample field[" + fieldName + "] null." + " - sets value to null"); } else { value = ((Number) fieldValue).doubleValue(); } log.debug("calculateKpi: sets value to " + value); setResultData(access, node, kpi, curObjective, DashboardRulesConstants.RESULT_VALUE, new Double(value)); }
在该方法中先取得ExtractedSampleContainer中的第一个ExtractedSample,然后从ExtractedSample中取得第一个value,该value也就是我们在前面所保存的value。
然后判断value是否为数字,如果不是数字那么就丢弃,所以在界面上就会看见“暂缺”。若果是数字,那么就展示出来。
可能分析得不是很精确,不过大体的原理就是这样的了。
发表评论
-
嵌入EUM报告
2010-12-08 17:22 9051。解决Genrate Button无反应问题 修改t ... -
BAC Business Rule分析之二
2010-08-19 02:23 834BaseRule中execute方法是 ... -
Matcher log
2009-12-02 01:08 1167Trinity 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 ... -
BAC Monitor Rule分析
2009-09-08 22:27 1142Mointor Rule是BAC数据来源的起点, ... -
读BAC7.5 源码有感
2009-09-06 01:10 810累,脑细胞不知道死了多少了。而且由于官方放出的源代码太少,只 ...
相关推荐
**Bac-to-Bac杆状病毒表达系统**是一种高效便捷的重组蛋白表达工具,尤其适用于在昆虫细胞中实现目的基因的高水平表达。该系统的核心原理是利用杆状病毒的Tn7转座子机制,将含有目的基因的pFastBac捐赠质粒插入到E. ...
Bac-to-Bac 杆状病毒表达系统是用来帮助你产生重组杆状病毒,在昆虫细胞中进行高水平表达目的基因的系统。该系统可以帮助你快速产生杆状病毒表达你的重组蛋白,但是使用这系统更倾向于有杆状病毒生物学和昆虫表达...
总的来说,"bac.doc"中的试题很可能涵盖了计算机科学的多个核心领域,为考生提供了一个全面展示自己技术实力的平台。对于备考者来说,通过解题可以有针对性地提升自己的技能,并了解研究生阶段可能面临的学术要求。
2. **配置SiteScope**:在BAC的SAM管理(系统可用性管理)中新建一个SiteScope配置,填写显示名称、主机名称等基本信息。 3. **查看配置结果**:在SiteScope的首选项-系统集成首选项中检查配置是否正确显示。 ####...
本文件探讨的是大数据在水稻基因组BAC(Bacterial Artificial Chromosome)物理图谱构建中的应用,以及相关数据库分析查询系统的本地搭建。 **1. 大数据与基因组作图** 大数据在基因组学中的应用主要体现在基因组...
【Bac-to-Bac杆状病毒表达系统】是一种高效、快速的重组病毒生成技术,尤其适用于在昆虫细胞中实现目标基因的高水平表达。该系统基于Tn7位点特异性转座子机制,大大简化了传统同源重组过程,缩短了从克隆到重组病毒...
Android statusBar添加bac
**Bac-to-Bac杆状病毒表达系统**是一种高效、快速的重组病毒生成工具,尤其适用于在昆虫细胞中实现目标基因的高水平表达。该系统基于Tn7位点特异性转座子机制,大大简化了重组病毒的构建过程,减少了传统同源重组...
【Bac-to-Bac杆状病毒表达系统】是一种在昆虫细胞中高效表达目的基因的生物技术,主要用于蛋白质功能研究和生产。该系统基于Tn7位点特异性转座子的机制,简化了重组杆状病毒的生成过程,提高了实验效率。 **系统...
标题中的“7.5画角的和、差、倍.pdf”可能指的是一份包含与数学几何相关的教学文档,内容涉及到角度的计算方法,如角度的和、差以及倍数的关系。这个标题明确指出文档的核心内容是关于角度的算术运算,这些都是数学...
迅饶BACnet 网关BAC1002-ARM是一款高性能、多功能的网关设备,专门用于实现不同通信协议之间的转换,特别是将各种设备连接到BACnetIP网络中。该网关适用于楼宇自动化、工业控制等多种应用场景,能够有效地提升系统的...
Elco-宜科 条码阅读器-BAC 48产品手册pdf,Elco-宜科 条码阅读器-BAC 48产品手册
通过这些知识点,用户可以更有效地操作BAC-S-MOD-M配置软件,并且解决在配置过程中可能遇到的问题。该软件的使用涉及了网络基础、通讯协议以及网关设备配置等多方面的IT技能,为自动化集成和建筑自动化提供了便捷的...
- HP BAC能够分析复杂的应用环境,包括J2EE、.NET、SAP、Oracle、Siebel等,帮助识别问题的根本原因。 - 这种能力有助于组织更快地解决问题,减少故障时间,提高整体效率。 5. **性能问题快速解决:** - HP BAC...
-绿色免安装,支持中英文; -支持60种协议同时转为BACnet IP服务器; -支持WEB浏览,查看,设置,进行监视和控制; -支持线性转换,取位,高低字节转换; -配置软件X2BACnet配置工程方便,1000个点20分钟内即可完成. -...
Elco-宜科 条码阅读器-BAC500产品手册pdf,Elco-宜科 条码阅读器-BAC500产品手册
在例3中,AE 和 CE 分别平分∠ BAC 和∠ ACD,因此可以利用角平分线的性质求出∠ AEC 的度数。 在平行线的应用问题中,通常需要结合其他几何知识,如角度的计算、三角形的性质等。例如,例4中的公路修建问题,利用...