Drools 5使用jaxb将其暴露给Web应用程序和Web服务(SOAP)

时间:2010-06-02 11:36:29

标签: drools

我们有需求。我们需要使用ESB公开drools 5并且与web应用程序相似。尽管我已经找到了使用eclipse运行drools的方法,但是发现很难在目前使用相同的web-app配置Drools 5并且将其转换为esb 。 Guvnor和Drool-Server不仅仅足以帮助我,谷歌搜索也没有帮助 ,甚至弹簧支撑也没有。

任何帮助都将受到高度赞赏......谢谢

1 个答案:

答案 0 :(得分: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作为值。