问题标签 [drools-fusion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
650 浏览

events - 如何使用 Drools Fusion 处理延迟事件

事件 A然后是事件B。如果A 的 5 分钟后没有事件 B,则触发规则。

对于运行良好的实时事件,但在现实生活中,您会遇到延迟的事件,例如。从一个界面。

示例:事件 A 时间:01:00 (mm:ss) 但在 02:00 收到 上述规则将在 07:00 触发,但业务逻辑要求它在 06:00 触发

我该如何处理这种要求?

0 投票
2 回答
1905 浏览

java - 从累积函数或规则代码访问 drools 会话时钟

我正在尝试编写一个需要了解当前时间的累积函数。我显然可以使用 System.currentTimeMillis(),但是为了测试我正在运行一个带有伪时钟的 drools 会话,并且希望能够测试这个函数。

我正在寻找一种从 getResult() 方法中获取会话时钟(或者更好的是 KnowledgeRuntime)的方法,或者,如果那不可能,从 drools 代码本身(在 te when 部分中),所以我可以通过时钟功能

0 投票
1 回答
2557 浏览

drools - Drools Fusion CEP 中的测试事件到期

Ciao,我测试了好几种方法,但还是无法测试验证Drools Fusion中的Event过期机制,求指点一下,好吗?

我已阅读手册,并且对此功能感兴趣:

换句话说,一旦一个事件被插入到工作内存中,引擎就有可能发现一个事件何时不再匹配其他事实并自动收回它,释放其相关资源。

我在 Eclipse 5.4.0.Final 中使用 Drools IDE,我修改了由“New Drools Project”向导创建的模板代码来测试和验证事件过期。

下面的代码。我理解使“生命周期”正常工作的方式是:

  • 您必须在 STREAM 模式下设置 KBase - 检查
  • 您必须按时间顺序插入事件 - 检查
  • 您必须定义事件之间的时间约束 - 在我的情况下检查是最后一个 Message()

但是,当我最后检查 EventFactHandle 时,没有一个 Event() 已过期。谢谢你的帮助。

爪哇:

流口水:

请注意:即使我在 Message 事件中添加了 1 秒的过期时间,通过

我仍然没有得到预期的结果,即插入的第一个 Message 事件,我原以为现在已经过期了?谢谢你的帮助。

0 投票
1 回答
2016 浏览

drools - Drools Fusion滑动窗口示例不起作用

我是 Drools 的新手,正在尝试滑动窗口的概念。

我的问题是检测是否在 2 个销售事件中至少发生了一次成功的交易。即使这样的事件发生与否,我总是得到“销售已发生 2 个事件”的输出。

- - - - - - -博士升 - - - - -

- - - - - - -代码 - - - - -

0 投票
0 回答
287 浏览

events - 使用 Drools Fusion 检测不同类型的事件?

0 投票
2 回答
1419 浏览

drools - Drools Fusion 基于时间的滑动窗口和属性过滤器

我尝试在 Drools 5.4.0.Final 中使用滑动时间窗口,并给出以下官方文档片段:

我在想混合形式是有效的:

但是,除非我弄错了,否则它的行为并不像预期的那样(即只考虑过去 2 分钟内发生的 RHT 股票报价)。我不明白结果的逻辑。

有人可以解释一下这个技巧吗?

谢谢。

0 投票
1 回答
330 浏览

drools - 如何使用drools fusion识别和验证简单的事件序列

我找不到在“B”事件(STREAM 模式)之间计算“A”事件的最佳方式(实际上是流口水融合方式)。序列的一个例子可能是:

一个用例可能是

验证序列有效性,即每个“B”事件之间总是有 3 个“A”事件

我不知道“窗口结束”的概念在这种情况下是否合适。感谢您的帮助,我在 CEP 方式上思考仍然有些困难。

0 投票
1 回答
266 浏览

drools - 三个连续的对象在流口水

我一直在尝试查找 Drools Fusion 中是否存在三个相同类的对象。我有一个名为 Tick 的 POJO,如下所示

我试图找出是否有三个连续的 Tick 对象具有 crossovertype ==CrossOverType.bear

以下是规则和主要课程

规则是

我能够找到是否有两个连续的 Tick 对象具有 crossovertype==CrossOverType.bear 但这不适用于三个连续的对象。请给我一些建议。谢谢

0 投票
4 回答
2946 浏览

drools - 持久流口水知识会议

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

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

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

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

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

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

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

戴夫

0 投票
1 回答
641 浏览

drools - 以通用方式编写 drl

我的要求是我需要计算来自同一客户的订单请求,而无需在规则中硬编码 customerid。原因是如果我有 1000 个客户,那么我需要为此编写 1000 条规则。为避免这种情况,我需要通用方法来处理所有客户对象。

例如,customerA 和 customerB 有四个订单请求对象。我的规则应该能够计算出来自单个客户的请求数量,并且我还需要存储这些对象。

基本上我需要 sql's group by equivalent method in drools 。

请提供指点