我有一个公司选择采用的PHP应用程序。我们已经为Java应用程序实现了规则引擎(Drools)。一切都通过SOAP消息传递通过中间件平台。我知道我们将不得不为我们的PHP应用程序做一堆自定义类来处理可以通过规则引擎处理的情况。
如何将Drools与我们的PHP应用程序集成?我应该坚持使用PHP应用程序中的SOAP消息通过我们的ESB到规则引擎并返回吗?
答案 0 :(得分:5)
尽量不要在已经复杂的系统中添加更多移动部件。我建议你按照自己的直觉,通过SOAP将数据发送到Java应用程序。这样,您就可以在一个区域中整合业务逻辑,并在多个位置重用它。这确实是分布式系统的强大功能。
答案 1 :(得分:2)
您可以使用PHP的Java Native Interface(JNI)调用Java部分。 Java部分将有一个公共接口,接收来自PHP的调用,通过Drools处理信息,然后将anszer返回给PHP。 通过这样做,您不需要修改当前的Java应用程序,只需从PHP提供一个入口点。
开始简单!只需发送一些原始类型(数字)并检索它们即可。然后,Strings等,最后传递几个参数和复杂的对象。
有一个项目有助于在PHP和Java之间架起桥梁:http://php-java-bridge.sourceforge.net/pjb/
PHP文档讨论了对Java的Native调用:http://www.php.net/manual/en/book.java.php
答案 2 :(得分:1)
如果ESB已经到位,并且您已经将SOAP用于语言障碍,那么您应该通过ESB。
当已经存在ESB时,不要将应用程序耦合在一起,并且ESB的BPM模块可以是端点。
PHP有AMQP和Stomp客户端用于消息传递集成,或者您当然可以将SOAP用于服务。
理想情况下,您的Java应用程序(如果当前已连接到规则引擎)也将通过ESB使用服务。然后,PHP应用程序和Java都将访问相同的规则引擎。当然,规则将被集中共享和管理。最糟糕的情况是,您可能需要在PHP的请求和规则引擎的响应之间使用Java组件或消息转换器。
对于一个复杂的ESB,如果你的公司已经有一个,那么组织的复杂性需要它。使用该工具可以保持系统分离和组件可管理。
请参阅以下链接以获取示例: