如何在GWT中集成BIRT?

时间:2011-08-25 12:02:04

标签: gwt charts reporting birt

我需要在我的应用程序中集成BIRT图表引擎。 Birt可以生成图像作为图表输出。我的想法是生成此图表图像,然后将其发送到客户端进行显示。也许在服务器上的RemoteServiceServlet中。这是最好的方法吗?或者还有其他技术可以做到吗?

提前感谢,

2 个答案:

答案 0 :(得分:0)

生成“报告”的最强大的方法,是图像,PDF或浏览器响应用户操作需要下载的任何字节序列,是使客户端的RPC调用返回立即使用URL或令牌,稍后将提供报告内容。稍后,在这种情况下,只是意味着需要后续请求来检索报告的内容,但该模式可以很好地扩展到可能需要花费大量时间来创建报告的情况。

  1. 客户端使用报告的参数向服务器发送RPC请求。
  2. 服务器将参数添加到报告队列,并使用一些令牌进行响应,该令牌可用于稍后检索报告的内容。
    • 如果报告的计算成本很高,报告的内容将在单独的线程中生成,也可能在单独的计算机上生成。
    • 如果保证报告只需要很短的时间就可以完成,那么可以立即生成报告,但无论如何,报告的内容必须写入存储机制以便以后检索。
  3. (可选)客户端轮询某些服务以确定报告是否准备就绪。
  4. 客户端向用户显示报告。
    • 在您的情况下,演示文稿将包括创建Image窗口小部件,可能使用网址格式http://example.com/getReportImage/<Generated Token>。在报告完成之前,此请求可能会暂停。
  5. 如果报告标识符的选择是报告参数的函数并且具有稳定的语义,则可以轻松地获得工作的缓存和重复数据删除。

    至于使用data:网址的选择,只有当您的用户使用现代浏览器并且图片尺寸很小时才有意义。这不适用于一般情况。

答案 1 :(得分:0)

让客户端发送RPC并让服务器执行所有BIRT渲染。服务器完成后,将生成的HTML(或图像)流回客户端。见http://www.birt-exchange.org/org/forum/index.php/topic/15515-build-birt-report-engine-with-gwt/

myServiceImpl.getReport(
    "monthlySales",
    "2013-02-01",
    "includeGST",
    new AsyncCallback<String>() {
        public void onSuccess(String serverGeneratedBirtHtml) {
            myVerticalPanel.add(new HTML(serverGeneratedBirtHtml));
        }
    }
);