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

Bac7.5 中Generic Sample Rule分析

    博客分类:
  • BAC
阅读更多
Dashbord中的Generic Sample Rule用的是FieldToValueRule.class[FTVR],该类有几个很重要的方法,getExtractedKeys、calculateKpi,我们先来看getExtractedKeys方法




  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是否为数字,如果不是数字那么就丢弃,所以在界面上就会看见“暂缺”。若果是数字,那么就展示出来。


可能分析得不是很精确,不过大体的原理就是这样的了。
分享到:
评论

相关推荐

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

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

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

    Bac-to-Bac 杆状病毒表达系统是用来帮助你产生重组杆状病毒,在昆虫细胞中进行高水平表达目的基因的系统。该系统可以帮助你快速产生杆状病毒表达你的重组蛋白,但是使用这系统更倾向于有杆状病毒生物学和昆虫表达...

    bac.rar_bac

    总的来说,"bac.doc"中的试题很可能涵盖了计算机科学的多个核心领域,为考生提供了一个全面展示自己技术实力的平台。对于备考者来说,通过解题可以有针对性地提升自己的技能,并了解研究生阶段可能面临的学术要求。

    HP BAC与SiteScope集成

    2. **配置SiteScope**:在BAC的SAM管理(系统可用性管理)中新建一个SiteScope配置,填写显示名称、主机名称等基本信息。 3. **查看配置结果**:在SiteScope的首选项-系统集成首选项中检查配置是否正确显示。 ####...

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

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

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

    【Bac-to-Bac杆状病毒表达系统】是一种高效、快速的重组病毒生成技术,尤其适用于在昆虫细胞中实现目标基因的高水平表达。该系统基于Tn7位点特异性转座子机制,大大简化了传统同源重组过程,缩短了从克隆到重组病毒...

    Android statusBar添加bac

    Android statusBar添加bac

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

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

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

    【Bac-to-Bac杆状病毒表达系统】是一种在昆虫细胞中高效表达目的基因的生物技术,主要用于蛋白质功能研究和生产。该系统基于Tn7位点特异性转座子的机制,简化了重组杆状病毒的生成过程,提高了实验效率。 **系统...

    7.5画角的和、差、倍.pdf

    标题中的“7.5画角的和、差、倍.pdf”可能指的是一份包含与数学几何相关的教学文档,内容涉及到角度的计算方法,如角度的和、差以及倍数的关系。这个标题明确指出文档的核心内容是关于角度的算术运算,这些都是数学...

    迅饶BACnet 网关BAC1002-ARM

    迅饶BACnet 网关BAC1002-ARM是一款高性能、多功能的网关设备,专门用于实现不同通信协议之间的转换,特别是将各种设备连接到BACnetIP网络中。该网关适用于楼宇自动化、工业控制等多种应用场景,能够有效地提升系统的...

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

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

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

    通过这些知识点,用户可以更有效地操作BAC-S-MOD-M配置软件,并且解决在配置过程中可能遇到的问题。该软件的使用涉及了网络基础、通讯协议以及网关设备配置等多方面的IT技能,为自动化集成和建筑自动化提供了便捷的...

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

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

    BACnet IP网关BAC1022-ARM

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

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

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

    七年级数学下册第七章相交线与平行线7.5平行线的性质中考中平行线性质及应用素材新版冀教版

    在例3中,AE 和 CE 分别平分∠ BAC 和∠ ACD,因此可以利用角平分线的性质求出∠ AEC 的度数。 在平行线的应用问题中,通常需要结合其他几何知识,如角度的计算、三角形的性质等。例如,例4中的公路修建问题,利用...

Global site tag (gtag.js) - Google Analytics