C++ 现有C+中的BIRT集成+;应用

C++ 现有C+中的BIRT集成+;应用,c++,eclipse,visual-studio-2012,birt,C++,Eclipse,Visual Studio 2012,Birt,我希望你做得很好,我真的很感谢你在这里对我的问题的帮助 我们的系统T3000用C++编写(代码在这里可用)。 我试图在我的C++应用程序中集成BILT报告工具。我想根据T3000系统中的可用数据创建报告。我认为BIRT是可嵌入的(??)。我们不需要编译和更改项目,只需要能够从T3000.exe调用它。 我的想法是,我们可以在现有T3000中放置一个菜单标签,并尝试以用户单击的方式显示报告 你能帮我解决我的问题吗?我真的很感激你的回答 问候 Raju答案取决于你对“可嵌入”的定义 BIRT是用纯J

我希望你做得很好,我真的很感谢你在这里对我的问题的帮助

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

你能帮我解决我的问题吗?我真的很感激你的回答

问候
Raju

答案取决于你对“可嵌入”的定义

BIRT是用纯Java编写的

我可以想出三种不同的方法:

  • 当然,可以将Java代码集成到现有的C/C++程序中(请参阅)

  • 您可以使用BIRT运行时引擎,从命令行生成PDF或HTML格式的报告(这意味着,基本上您可以使用几个参数从程序中调用java可执行文件)。有关更多信息,请参阅和

  • 您可以在第二个进程中运行类似Tomcat的Java web服务器,然后通过调用http URL启动报告(例如,您可以使用附带的Servlet示例)。看

  • 类似于3。(见下文)

  • 一些注意事项:

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

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

    对于行业质量解决方案来说,第一个选项可能是最好的,但也是最难开发的

    无论如何,Java技能对我来说是必要的

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

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

    因此,基本上,第四种方案与第三种方案相似,但有两个区别:

    • 通信是基于套接字的(而不是http),允许bi-di通信

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


    然而,开发这些程序花了几个月的时间。

    HVB:对于上面的解释,我必须向您表示不仅仅是简单的感谢,我相信这些信息将为我们节省时间。Raju将在我们深入了解项目后分享我们的经验,以便其他人能够受益

    谢谢你的解释。