一方面,我有一个我的公司选择采用的PHP应用程序。我们已经为Java应用程序实现了一个规则引擎(Drools)。一切都通过SOAP消息传递的中间件平台运行。我知道我们将不得不为我们的PHP应用程序编写一系列自定义类,以处理可以通过规则引擎处理的情况。
如何将Drools与我们的PHP应用程序集成?我是否应该继续使用SOAP消息传递,从PHP应用程序通过ESB到规则引擎,然后再返回?
发布于 2011-11-03 23:39:14
尽量不要在已经很复杂的系统中添加更多的移动部件。我建议您听从直觉,通过SOAP将要处理的数据发送到Java应用程序。这样,您就可以在一个区域中整合业务逻辑,并在多个地方重用它。这确实是分布式系统的强大之处。
发布于 2011-11-02 23:48:33
您可以使用Java Native Interface (JNI)从PHP调用Java部件。Java部分将有一个公共接口,该接口接收来自PHP的调用,通过Drools处理信息,然后将anszer返回给PHP。通过这样做,您不需要修改当前的Java应用程序,只需要从PHP提供一个入口点。
从简单开始!只需发送一些原始类型(数字)并检索它们。然后,字符串等等,最后传递几个参数和复杂的对象。
有一个项目可以帮助搭建PHP语言和Java语言之间的桥梁:http://php-java-bridge.sourceforge.net/pjb/
PHP文档谈到了对Java的本机调用:http://www.php.net/manual/en/book.java.php
发布于 2012-09-12 05:26:38
由于ESB已经就位,而且您已经打算使用SOAP来解决语言障碍,因此您只需通过ESB即可。
当已经存在ESB,并且ESB具有可以作为端点的BPM模块时,不要耦合您的应用程序。
PHP具有用于消息传递集成的AMQP和Stomp客户端,当然,您也可以使用SOAP作为服务。
理想情况下,您的Java应用程序(如果当前耦合到规则引擎)也将通过ESB使用服务来完成此任务。然后,PHP应用程序和Java将访问相同的规则引擎。规则当然是集中共享和管理的。最坏的情况是,在PHP的请求和规则引擎的响应之间可能需要一个Java组件或消息转换器。
对于复杂的ESB,如果您的公司已经有了ESB,那么组织的复杂性就需要它。使用该工具来保持系统的解耦和组件的可管理性。
有关示例,请参阅以下链接:
https://stackoverflow.com/questions/7897225
复制相似问题