【问题标题】:Return BIRT calculated report values back to custom web application for further processing将 BIRT 计算的报告值返回给自定义 Web 应用程序以进行进一步处理
【发布时间】:2012-04-22 13:58:07
【问题描述】:

我想在自定义应用程序中运行报告(没有 birt 查看器,将报告引擎直接集成到应用程序代码中,以便在后台呈现报告并提供指向最终文档的链接)。

呈现报告后,我需要读回报告中计算的特定值 - 例如用于将其推送到不同应用程序的 Web 服务。

想象一下包含主数据和明细数据的发票报告,该报告在主数据部分计算,然后是所有发票明细的汇总付款总和。如果我需要将计算的付款金额从应用程序(不在报告中!)传递给支付服务 - 我该怎么做?

  • 我在 Birt API 中看到了 DataExtractionTasks。然而,在我发现的罕见示例中,它们似乎与查询密切相关,我不确定它们是否也能以某种方式处理非结果集数据。

  • 我尝试使用 GlobalPersistentReportVariables 并在通过 API 呈现报告后访问它们 - 但是通过 API,它们似乎总是为空。不确定这是否是访问计算报告值的“正确方法”。我认为它们主要用于在不同的报表元素(如表格)之间共享数据。

我当然不想在应用程序中复制报表逻辑,只是为了再次计算支付金额。

【问题讨论】:

    标签: eclipse web-services reporting birt


    【解决方案1】:

    虽然我认为理论上 DataExtraction 任务是正确的,但我无法获得简单的报表元素(例如动态文本元素)的值来将其发布到其他地方。

    我现在通过滥用神圣的 appContext(通用用途的任何东西)将所需的数据返回到我的应用程序(报告将计算值写入 appcontext - 应用程序在呈现报告后读取)来工作)。

    【讨论】:

    • 使用 appContext 是这里推荐的也是迄今为止最简单的解决方案。我们正在这样做。另一种选择是传递特定于应用程序的上下文对象并将其用作报告参数,但这会使在 IDE 中开发报告变得更加困难。
    【解决方案2】:

    首先是集成 --> http://wiki.eclipse.org/Birt_3.7_Migration_Guide

    其次,您必须为 BIRT 创建自定义 XML 插件。

    将该插件添加到您的集成 BIRT 中。

    现在以 XML 格式呈现您的报告(记住 XML 格式将在您的插件中定义,因此请提供这样的格式,以便您可以使用任何 javascript、jquery 或 Java 文件轻松阅读它)

    现在做任何你喜欢的计算/操作。

    就我而言,我有 2 个上下文文件,即

    Context-1(Myapplication.war)--calling-->> Context-2(带有自定义XML插件的BIRT.war)

    我使用 javascript XMLRequest 方法调用了 BIRT 报告 网址:“http://localhost:8080/birt/frameset?_report=GraphReport1.rptdesign&_format=xml”

    以及在javascript中读取xml格式并根据数据显示自定义的jquery图。

    【讨论】:

    • 正如我在问题中所说的,我根本不需要 Birt Viewer(战争)——在技术上和要求上都不需要。所以在任何情况下都没有必要通过 web 层。该引擎在没有 Birt Viewer 的情况下也能正常工作,并在我自己的 Web 应用程序中 100% 呈现 PDF/Excel。
    • 是的,该选项也存在。完全取决于你的要求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多