BIRT - 使用多个Web服务来获取数据

时间:2015-02-10 07:03:02

标签: web-services report birt

我正在尝试使用Eclipse BIRT报表设计器生成报表。

情况如下:

有2个Web服务数据源。 Web服务有两个数据集&#WS;'和#WS2'分别。

输出元素' COUNTRYID'一个网络服务#WS1'将作为另一个网络服务的输入' WS2'。

我做了什么:

  • 创建了一个参数COUNTRYID。
  • 在网络服务' WS1'的数据集中创建了一个虚拟的计算列。表达式:

        params["COUNTRYID"].value=row["COUNTRYID"]
    
  • 现在' WS2'的输入参数数据集与全局参数' COUNTRYID'有关。

  • 当我运行报告时,我看到全局参数包含来自' WS1'的值。输出。

但是报告没有显示来自网络服务响应的值' WS2'

我的问题:

  • 如果网络服务被解雇了,怎么看?
  • 如果使用正确的值触发了webservice,我怎么看?

1 个答案:

答案 0 :(得分:0)

除非明确地绑定到报表元素,否则不会触发WS1。通常,为实现此目的,我们应用以下步骤:

  • 在报告正文的开头插入数据元素
  • 将此新元素的属性可见性设置为false(或在测试期间让它可见)
  • 将其绑定到第一个数据集WS1

它将强制静默执行WS1,因此这将在WS2运行之前填充参数COUNTRYID。

但是,如果符合以下条件,这种方法将无效:

  • WS2数据集必须用于填充报表参数的选择项(这里似乎不是这种情况)
  • 如果在渲染时使用COUNTRYID参数。如果您需要在图表表达式中使用此参数,那么这一点就更烦人了。如果是这样,我建议将WS1存储在报表变量中,而不是(或者除此之外)报表参数。请参阅this topic以了解如何创建报告变量。

您可以使用以下命令在与报告参数相同的位置对其进行初始化:

vars["COUNTRYID"]=row["COUNTRYID"];

并随身携带

vars["COUNTRYID"];

报表变量可从表达式编辑器的选项板中获取: