【问题标题】:BIRT integration in exsiting C++ application现有 C++ 应用程序中的 BIRT 集成
【发布时间】:2016-08-14 05:10:09
【问题描述】:

我希望你做得很好,非常感谢你在这里对我的查询提供的帮助。

我们的系统 T3000 是用 C++ 编写的(http://www.temcocontrols.com/ftp/software/9TstatSoftware.zip 和代码可在此处获得 https://github.com/temcocontrols/T3000_Building_Automation_System)。

我正在尝试在我的 C++ 应用程序中集成“BIRT 报告工具”。我想根据我们 T3000 系统中可用的数据创建报告。我认为 BIRT 是可嵌入的(??)。我们不需要编译和更改项目,只需要能够主要从T3000.exe调用即可。 我的想法是我们可以在现有的 T3000 中放置一个菜单标签,并尝试在用户单击时显示报告。

您能帮我解决“BIRT”的问题吗?非常感谢您的回答。

问候 拉朱

【问题讨论】:

    标签: c++ eclipse visual-studio-2012 birt


    【解决方案1】:

    HVB:对于上面的解释,我不仅要感谢您,我相信这些信息会节省我们的时间。 Raju 将在我们深入了解该项目后分享我们的经验,以便其他人受益。

    【讨论】:

      【解决方案2】:

      嗯,答案取决于您对“可嵌入”的定义是什么。

      BIRT 是用纯 Java 编写的。

      我可以想到 3 种不同的方法:

      1. 当然可以将 Java 代码集成到现有的 C/C++ 程序中(参见 Embed Java into a C++ application?)。

      2. 您可以只使用 BIRT 运行时引擎并从命令行生成 PDF 或 HTML 格式的报告(这意味着,基本上您可以使用多个参数从程序中调用 java 可执行文件)。请参阅Birt - How to run report engine on the console?http://eclipser-blog.blogspot.de/2008/02/automatic-generation-of-birt-reports.html 了解更多信息。

      3. 您可以在第二个进程中运行 Java Web 服务器(如 Tomcat),然后通过调用 http URL 启动报告(例如,您可以使用包含的 Servlet 示例)。见http://www.eclipse.org/birt/documentation/integrating/viewer-usage.php

      4. 类似于 3.(见下文)

      一些注意事项:

      第二个选项很慢,因为 Java 和 BIRT 引擎启动开销(这可能需要几秒钟)。使用第一个和第三个选项,启动开销可以或可以最小化到只有一次(并且对于每个报告)。

      对于第二个和第三个选项,可能需要修改示例程序的现有代码以满足您的需要。

      第一个选项可能是行业质量解决方案的最佳选择,但它也是最难开发的。

      无论如何,恕我直言,Java 技能是必需的。

      如果您计划在 SOC 而不是 PC 上运行它,请考虑性能。 基于 Java 的解决方案是否非常适合这种硬件? BIRT 需要相当多的 RAM 和 CPU(对于 SOC)。我认为像 Raspi 3 这样的硬件应该很容易处理这个问题。

      我以第四种方式将 BIRT 运行时集成到现有 Python 应用程序(所有这些都在应用程序服务器上运行):我编写了一个侦听器程序,它在 TCP 套接字上侦听 BIRT 任务。它使用一个工作进程池(用 Java 编写),然后使用 BIRT 报告引擎生成输出。客户端程序(此处:用 Python 编写)打开与侦听器的 TCP 连接,并使用此套接字告诉它要生成哪个报告(包括报告参数和目标文件名)。然后监听程序依次为该任务选择一个工作进程并将该任务交给该工作进程。

      所以,基本上,这第四个选项与第三个选项相似,但有两个不同:

      • 通信是基于套接字的(而不是 http),允许双向通信。

      • 架构是多进程而不是多线程。我们选择这个是因为非常大的报告可能会导致恰好同时运行的其他无关报告出现内存不足错误。这与 Oracle 为其报表服务器选择的基本架构相同。

      但是,开发这些程序需要几个月的时间。

      【讨论】:

      • 感谢中心的解释。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多