标签: drools-fusion

Drools Fusion有"现在"的概念吗?

我正试图写一条延迟射击的规则,直到最后一次射击至少15分钟.然而,Drools Fusion中的时间运算符仅允许推理关于彼此的两个事件而不是与当前时间相关的一个事件.

我想要这样的东西:

rule "some rule"
when
    not LastFiredEvent(this before[0m, 15m] NOW)
    …
Run Code Online (Sandbox Code Playgroud)

我已经尝试编写一个每秒触发一次的规则并插入一个心跳事件(也缩回之前的心跳),我可以在其他规则中使用它作为当前时间.

我发现这相当不优雅; 我错过了什么或者Drools Fusion真的没有这个东西吗?

NB.我不是在寻找延迟发射规则或规则,只能在15分钟的倍数上发射; 如果在最后17分钟内没有发生任何事情,规则必须立即开始以响应新事件.

rules drools temporal drools-fusion

6
推荐指数
1
解决办法
1846
查看次数

从工作记忆中检索特定类型的事实

而不是检索所有事实,我需要从工作记忆中检索特定类型的事实.

我了解到我可以从工作记忆中检索所有事实,如下所示.

drools.getWorkingMemory().getWorkingMemoryEntryPoint("Stream").getObjects();
Run Code Online (Sandbox Code Playgroud)

请提供一些指针,以从工作内存中检索特定类型的对象.

drools drools-fusion

6
推荐指数
2
解决办法
9794
查看次数

Drools Fusion和Java EE

在Web /企业应用程序上使用Drools Fusion的最佳实践是什么?你知道有用的文件吗?

我查看了JBoss上的示例(http://download.jboss.org/drools/release/5.1.1.34858.FINAL/drools-5.1.1-examples.zip),但它们是桌面应用程序.我不明白如何在服务器上保持Drools会话"运行".

drools java-ee drools-fusion

5
推荐指数
1
解决办法
795
查看次数

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

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

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

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

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

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

java drools complex-event-processing drools-fusion

5
推荐指数
1
解决办法
2257
查看次数

坚持口水知识会议

我在学区工作,我们计划使用 Drools 为学区组成学校的学生群体实施以下类型的规则:

  • 如果学生在一年内有 3 次缺勤,他们的出勤指标将变为 WARN 状态。
  • 如果学生在一年内缺勤 6 次,他们的出勤指标将变为 CRITICAL 状态。
  • 如果学生在一年内发生 3 次重大行为事件,他们的行为指标将变为 WARN 状态。
  • 如果学生在一年内发生 2 次轻微行为和 2 次重大行为事件,他们的行为指标将变为“关键”状态。
  • ...这些只是我头脑中的例子,但还有更多类似的规则。

所有这些规则都可以使用 Drools 专家来简单地表达。此外,学生的规则处理不需要同步。我有几个关于实现这一点的最佳方法的问题。

  1. 从一个角度来看,这可以看作是一个事件流的监控系统。这让我想到创建一个有状态的会话,每个新事件都将插入其中。然而,这些事件发生在 9 个月的过程中并且相对不频繁。此外,我们可以为每个学校或每个学生建立一个会话。

    • 将会话保留在内存中那么长时间会成为问题吗?
    • 如果服务器出现故障,我们是否需要从头开始重建会话状态,或者是否建议拍摄常规快照并仅恢复自快照时间以来发生的事实。
  2. 另一种选择是在为该学生处理事件后为该学生保留一个会话。当下一个事件到来时,我们将从存储中检索他们的会话并插入新的事实。这样我们就不需要为引擎的每次运行检索所有事实来获取学生的状态。会支持这样的配置吗?这样做有什么缺点吗?

  3. 第三种方法是通过检索规则需要运行的所有其他事实、创建新的 KnowledgeSession 并运行规则来响应学生的新事实。

任何关于什么可能是最好的方法的建议将不胜感激。

戴夫

drools drools-fusion

5
推荐指数
1
解决办法
2915
查看次数

Apache Camel和Drools Fusion集成

有没有人尝试将Apache Camel与Drools Fusion或Drools集成.

以下是我的用例.

  • 使用REST从外部服务获取数据.
  • 过滤数据(使用Drools中定义的规则.)
  • 来自外部服务的数据也可以是信息流(例如,Tweeter馈送,用户的实时位置)

任何帮助或指示将不胜感激.

谢谢.

rest filtering drools apache-camel drools-fusion

1
推荐指数
1
解决办法
3216
查看次数