云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

_天翼云盘登陆_免费

小七 141 0

SAP BusinessObjects BI平台实现了对各种数据源的支持。但是,总有一个数据源的连接器不可用。

JavaBean是将BI平台连接到此类数据源的解决方案之一。它使客户或合作伙伴能够使用Java语言编写连接器。这些连接器可以作为数据源来支持WebI报告。

本博客中描述的JavaBean功能随SAP BusinessObjects BI Platform 4.3提供(请参阅BI 4.3新数据源)。如果您使用的是以前的版本,请在尝试复制本文之前进行升级。

本文档旨在:

帮助您确定编写JavaBean是适合您的解决方案的情况根据一个真实的例子演示如何编写JavaBean解释如何将JavaBean集成到产品中,并创建使用它的报告。

在开始编写代码之前,最好确保选择了正确的解决方案。

BI平台是为关系数据源构建的。在这个世界上,数据库可以公开一组表,这些表可以使用SQL语言进行查询。BI平台使用这种语言过滤、连接和聚合来自不同表的数据。

连接到关系数据源假定数据源实现所有这些功能,包括SQL语言的运行时。另一方面,JavaBean被设计为易于实现。因此,对查询语言或查询构造的支持故意不属于此技术的一部分。JavaBean的目标是将表返回给WebI。任何额外的过滤、连接或计算都应该直接在报表中使用WebI计算器来实现。

因此,大数据学习,连接到关系数据源时,最好检查关系连接选项。如果sapbi平台PAM中支持数据源,那么就不用多想,应该使用受支持的连接器。对于其他关系数据源,可以调整配置文件以获得自定义关系连接器。

但是,这排除了非关系数据源的世界:文件、自定义服务器、机器、web服务……这些可以提供有价值的数据,但不是完整的关系实现。JavaBean是正确的选择:

如果可以用Java访问它,那么开发人员就可以实现JavaBean通过将我们期望的特性集降低到最低限度来降低实现成本:一个表

为了演示如何编写JavaBean,最好依赖一个真实的示例。本章的源代码摘录自一个工作bean,完整的源代码不能复制到这里,因为它太长了,但关键点已经演示了。

简介和目标

我们目前正处于一个危机中,COVID-19已经发展成一种流行病。主要的卫生组织现在正在发布关于大流行状态的数据,能够使用我们常用的BI工具分析这些数据将是非常有趣的。

我们要分析的数据集是欧洲疾病预防控制中心发布的数据,在https://www.ecdc.europa.eu/en/publications-data/download-todays-data-geographic-distribution-covid-19-cases-worldwide。我们的目标是从WebIntelligence连接到实时数据

数据是JSON格式的,不幸的是BI平台无法连接到JSON数据集。能够使用URL连接到数据将启用最新数据的实时报告。

数据集基本上是一个表,不能通过关系数据库访问,但可以通过代码访问。这非常适合JavaBean的范围。

为了使bean可重用,最好使它能够访问其他位置的数据。然而,如果我们试图构建这个,我们可能会遇到任何类型的JSON数据,这将是一个巨大的任务。因此,我们的方法是期望数据源返回一个具有相同平面结构(没有嵌套对象)的JSON对象数组,但不是直接从URL下载,而是调用一个脚本(通过脚本引擎),其目的是为bean重新格式化JSON。

因此,bean可以用来访问比我们开始调查时使用的COVID数据集更广泛的数据源集。

总结一下bean的需求是:

它可以调用脚本引擎并请求执行脚本。此执行的输出被写入控制台,并且应该是共享相同平面结构的对象的JSON数组。bean将这个数组转换成相关的结构供ConnectionServer使用

一般的JavaBean结构

在开始编写bean之前,我们应该了解它的结构,以及ConnectionServer和BI平台如何使用它。

JavaBean基本上是一个Java类。JavaBean这个名字主要是历史性的:我们以前的连接器实现在很大程度上依赖于JavaBean规范。这种依赖关系已经解除,但名称仍然存在。为了简单起见,本文档的其余部分使用"bean"术语来表示JavaBean驱动程序使用的Java类。

JavaBean驱动程序的目标是将bean中的方法公开为存储过程。如果方法有参数,则这些参数将作为存储过程参数公开(仅支持标量类型,即字符串、数字和日期/时间)。

为了将数据返回到ConnectionServer,方法将返回一个表格结果集(如JDBC规范中所定义)。

最后,为了使ConnectionServer能够实例化和初始化类,bean必须实现一个没有参数的构造函数和initialize方法(稍后描述)。

下面的模式总结了通过JavaBean驱动程序公开类的要求: