Drools Fusion支持持久的长期运行事件

Tom*_*icz 5 java drools complex-event-processing drools-fusion

我正在考虑使用Drools Fusion来实现以下示例性规则:

  • 如果顾客在一年内购买了两件相同的产品,她将免费获得第三件
  • 为了在最多连续三次交易中花费超过200美元,客户可以获得折扣
  • 当客户闲置超过一年时,会生成提醒
  • 当单个订单大于最后六个monhts内的平均订单价值时,将通知主管
  • ......等等,这些只是我头脑中的例子

所有这些规则都可以使用Drools Fusion轻松表达.然而,在创建原型并查看文档后,似乎该产品更适合短期,瞬态事件(股票市场,实时决策).

问题是:是否需要将所有事件存储在内存中?(可能有数百万的旧购买).此外,Drools Fusion可以存储事件,以便它们在服务器重启后能够存活吗 (理想情况下在数据库中).

我知道Drools Fusion事件只是Drools Expert中的事实,所以也许这个问题可以扩展到:Drools Expert能否坚持并懒惰加载事实?

sal*_*boy 3

您可以做的是在每次获得该客户的新交易时加载该客户的历史信息。或者定期加载信息以查看不活跃的客户。你提到的所有例子对我来说都是事实。显然,您可以将所有内容建模为事件,但正如您所提到的,这将导致您需要将所有内容都存储在内存中。要回答有关存储/处理数百万个事件的问题,您首先需要回答 JVM 是否支持将所有这些对象存储在内存中的问题。

干杯

  • 是的,这意味着您可以对某些事实实现延迟加载,但显然将所有事实都存储在主内存中,引擎会工作得更好。对于事件,您拥有自动生命周期管理功能。这意味着所有未与任何规则匹配的事件将被自动丢弃。在专家中,您可以使用逻辑断言来删除不再为插入它们的规则备份的事实。 (2认同)