如何在PHP应用程序中使用Drools?

时间:2011-10-25 23:53:33

标签: php soap drools

我有一个公司选择采用的PHP应用程序。我们已经为Java应用程序实现了规则引擎(Drools)。一切都通过SOAP消息传递通过中间件平台。我知道我们将不得不为我们的PHP应用程序做一堆自定义类来处理可以通过规则引擎处理的情况。

如何将Drools与我们的PHP应用程序集成?我应该坚持使用PHP应用程序中的SOAP消息通过我们的ESB到规则引擎并返回吗?

3 个答案:

答案 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,如果你的公司已经有一个,那么组织的复杂性需要它。使用该工具可以保持系统分离和组件可管理。

请参阅以下链接以获取示例: