使用Eclipse BIRT扩展点:聚合 - 编程入门网
使用Eclipse BIRT扩展点:聚合时间:2011-09-04 IBM John Ward简介:了解 BIRT 扩展点模型,使用新的 V2.3+ 扩展模型在 BIRT 中创建基 本聚合扩展。 本文介绍商业智能和报告工具(Business Intelligence and Reporting Tools,BIRT)扩展点模型,并在 BIRT V2.3.x 和 V2.5.x 中实际创建一个聚合 扩展。在较早的 BIRT 版本中,创建聚合扩展的方式是扩展 org.eclipse.birt.data.aggregation 扩展点,这会在一个名为 Total 的全局对 象中添加一个小函数,您可以在整个报告的任何表达式中使用该函数,其工作原 理类似于脚本函数扩展点。 但是,从 BIRT V2.2 到 V2.3,聚合扩展已经发生了变化。新的方式更加复杂 ,但可以在 Aggregation Widgets 下拉列表中得到一个不错的聚合,还为参数和 表达式提供了漂亮的文本框。当创建此扩展时,可以在您的表中以列绑定的形式 访问结果。 从总体上看,新的聚合扩展点包含一个对象,该对象是 IAggregationFactory 接口的扩展。可以在此接口中重载方法来完成 3 项操作: 初始化您的工厂(在构造函数中) 提供由工厂提供的一组聚合(以列表形式提供,包含聚合对象的实际实例) 返回聚合对象的单一实例 聚合的每个实例都需要实现 IAggrFunction 接口。需要实现许多含义明显的 方法,比如 getName、getDataType 和 getParmaeterDefn,还需要实现其他含义 不太明显的方法。例如,getNumberOfPasses() 和 getType() 方法是相关的。 getType() 方法制定此聚合器的执行方式和类型。有两种聚合类型: SUMMARY_AGGR 表示只为摘要计算该聚合(比如表的表头或表尾),RUNNING_AGGR 表示为表中的每一行或表尾计算聚合。getNumberOfPasses() 方法显示获得结果 所需的 pass 数。所有基于评级的聚合器,比如 TopNpercent、PercentSum 和 Percentile,都会返回值 2,其余聚合器返回值 1。 IAggrFunction 接口的实际实现必须返回其 newAccumulator() 方法中的 Accumulator 类的一个扩展。Accumulator 负责执行实际的计算。有一些默认方 法需要重载,最重要的是 onRow(),表中的每一行都需要调用该方法。使用此方 法,您可以解析函数的参数并执行计算。对于 SUM,可以添加到某个已存储的数 字;对于 ave,既可以保存到某个列表中进行存储,也可以添加到一个累计总计 并跟踪调用次数。无论您如何执行计算,实际计算都需要在这里完成。getValue () 获取您的计算的最终值或当前值。所以,对于 SUM 操作,您将会返回总数/计 数操作。在正在运行的聚合器中,将只返回正在计算的值。 下一节的示例将展示如何创建一个简单的 Word Count 聚合器。此聚合获取一 列中的所有句子并计算字数,返回一个包含该列的字数的整数值。对这种聚合的 需求很少,所以还不存在这样的聚合。对于本文中的练习,建议使用 Eclipse BIRT All-in-One 分发版。 创建新聚合插件 要创建新聚合插件: 单击 File > New > Other 创建一个新插件项目。展开 Plug-In Development 文件夹,然后单 击 Plug-in Project。 在 New Plug-in Project 窗口中(如图 1 所示) ,在 ID 字段中为项目提供一个惟一名称,使用合适的信息完成 Version、Name 和 Provider 字段。 图 1. 项目属性 使用Eclipse BIRT扩展点:聚合(2)时间:2011-09-04 IBM John Ward指定 Java™ 2 Platform, Standard Edition (J2SE) V1.5 作为执行环境,以保持与 BIRT 基本 兼容。 在 Options 区域,清除 This plug-in will make contributions to the UI 复选框。通过清除此复选框,可以限制可用模板的数量。我们不打算为此项目使 用模板。 在 Rich Client Application 区域,选择 No,因为这不是一个 Eclipse 富客户端项目。单击 Next。 在 Tem |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |