0

我们有reqmt。我们需要用 ESB 和 web 应用程序同时公开 drools 5。虽然我已经找到了用 eclipse 运行 drools 的方法,但是发现目前很难用相同的 web 应用程序配置 Drools 5 并在未来将其转换为 esb . Guvnor 和 Drool-Server 不仅足以帮助我,谷歌搜索也没有帮助,甚至弹簧支持也不可用。

任何帮助将不胜感激......谢谢

4

1 回答 1

1

您需要在什么级别“公开” ESB 中的 Drools?我在使用异步 Web 服务的企业解决方案中使用 Drools;我的许多工作流程运行时间都非常长(2 周到一个月)。关键是在调用之间暂时保持 StatefulKnowledgeSession。有一个 JPAStatefulKnowledgeSession 序列化会话并将其作为 blob 存储在关系数据库中。我决定不使用此解决方案,因为我的许多异步任务在被调用后一秒钟内完成。在 RDBMS 中持久化进程的性能成本对我的需求来说太高了。我的解决方案是将会话存储在内存缓存中。Infinispan 的配置和使用非常简单,而且我对框架没有任何问题。

您是否需要让 ESB 和 Web 应用程序使用相同的 KnowledgeSession?它必须是 StatefulKnowledgeSession 吗?如果您需要维护状态,您应该考虑使用基于队列的系统并每隔一段时间使用 fireAllRules()。如果您的操作是基于命令的(插入对象、启动进程等),我相信 Drools 已经拥有该模式的 API(我相信这就是 Drools Server 在后台所做的)。您还可以将 KnowledgeSession 设为单例;但考虑使用 ReentrantLock 来防止对象上的并发调用。如果您要隔离会话,则创建自己的存储库效果最好。Infinispan 的 Cache 实现了 ConcurrentHashMap,因此您可以使用会话的 ID 作为键,使用 KnowledgeSession 作为值。

于 2011-03-18T22:49:06.503 回答