BIRT - 使用多个网络服务获取数据
BIRT - using multiple webservices to get the data
我正在尝试使用 Eclipse BIRT 报告设计器生成报告。
场景是这样的:
有 2 个 Web 服务数据源。 Web 服务有 2 个数据集 'WS1' 和 'WS2'。
一个网络服务 'WS1' 的输出元素 'COUNTRYID' 将作为另一个网络服务 'WS2' 的输入。
我做了什么:
- 创建了参数 COUNTRYID。
在 Web 服务 'WS1' 的数据集中创建了一个虚拟计算列,表达式为:
params["COUNTRYID"].value=row["COUNTRYID"]
现在 'WS2' 数据集的输入参数与全局参数 'COUNTRYID' 相关。
当我 运行 报告时,我看到全局参数包含来自 'WS1' 输出的值。
但报告不显示 Web 服务响应的值 'WS2'
我的问题:
- 如何查看网络服务是否被触发?
- 如何查看网络服务是否以正确的值触发?
除非明确绑定到报表元素,否则不会触发 WS1。通常,为了实现这一点,我们采用以下步骤:
- 在报表正文的开头插入一个数据元素
- 将此新元素的 属性 可见性设置为 false(或让它在测试期间可见)
- 绑定到第一个数据集WS1
它将强制静默执行 WS1,因此这将在 WS2 运行之前填充您的参数 COUNTRYID。
但是,如果出现以下情况,此方法将不起作用:
- 必须使用 WS2 数据集来填充报告参数的选择项(这里似乎不是这种情况)
- 如果在渲染时使用 COUNTRYID 参数。这一点更烦人,例如,如果您在图表表达式中需要此参数。如果是这样,我建议将 WS1 存储在报告变量中而不是(或者为什么不另外)报告参数中。请参阅 this topic 了解如何创建报表变量。
您可以在与报告参数相同的地方初始化它:
vars["COUNTRYID"]=row["COUNTRYID"];
并在任何地方使用
vars["COUNTRYID"];
报表变量可从表达式编辑器的调色板获得:
我正在尝试使用 Eclipse BIRT 报告设计器生成报告。
场景是这样的:
有 2 个 Web 服务数据源。 Web 服务有 2 个数据集 'WS1' 和 'WS2'。
一个网络服务 'WS1' 的输出元素 'COUNTRYID' 将作为另一个网络服务 'WS2' 的输入。
我做了什么:
- 创建了参数 COUNTRYID。
在 Web 服务 'WS1' 的数据集中创建了一个虚拟计算列,表达式为:
params["COUNTRYID"].value=row["COUNTRYID"]
现在 'WS2' 数据集的输入参数与全局参数 'COUNTRYID' 相关。
当我 运行 报告时,我看到全局参数包含来自 'WS1' 输出的值。
但报告不显示 Web 服务响应的值 'WS2'
我的问题:
- 如何查看网络服务是否被触发?
- 如何查看网络服务是否以正确的值触发?
除非明确绑定到报表元素,否则不会触发 WS1。通常,为了实现这一点,我们采用以下步骤:
- 在报表正文的开头插入一个数据元素
- 将此新元素的 属性 可见性设置为 false(或让它在测试期间可见)
- 绑定到第一个数据集WS1
它将强制静默执行 WS1,因此这将在 WS2 运行之前填充您的参数 COUNTRYID。
但是,如果出现以下情况,此方法将不起作用:
- 必须使用 WS2 数据集来填充报告参数的选择项(这里似乎不是这种情况)
- 如果在渲染时使用 COUNTRYID 参数。这一点更烦人,例如,如果您在图表表达式中需要此参数。如果是这样,我建议将 WS1 存储在报告变量中而不是(或者为什么不另外)报告参数中。请参阅 this topic 了解如何创建报表变量。
您可以在与报告参数相同的地方初始化它:
vars["COUNTRYID"]=row["COUNTRYID"];
并在任何地方使用
vars["COUNTRYID"];
报表变量可从表达式编辑器的调色板获得: