问题标签 [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 投票
2 回答
10952 浏览

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

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

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

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

0 投票
1 回答
1663 浏览

drools - 在规则条件下使用撤回的问题

我正在尝试编写一个规则来检测给定事件是否在最后“m”时间段内发生了“n”次。我正在使用drools 5.4.Final 版。我也试过 5.5.Final 没有效果。

我发现有几个条件元素,正如 Drools 所说的,积累和收集。我在下面的示例规则中使用了收集

结尾

注入日志的代码如下。该代码每 3 秒注入一次日志并触发规则。

有了这个,我可以实现的是在最后 10 秒内检查上述 LogMessage 的存在。我还可以找出触发规则的最后 10 秒内发生的确切 LogMessage 集。

问题是,一旦处理了这些消息,它们就不应参与下一个评估周期。这是我无法实现的。我将举例说明这一点。

考虑下面的时间线,时间线显示日志消息的插入和应该发生的警报生成状态。

预期结果

-- 日志 -- 警报

0 -- LogMessage1 -- 无警报

3 -- LogMessage2 -- 无警报

6 -- LogMessage3 -- Alert1 (LogMessage1, LogMessage2, LogMessage3)

9 -- LogMessage4 -- 无警报

12 -- LogMessage5 -- 无警报

15 -- LogMessage6 -- Alert2 (LogMessage4, LogMessage5, LogMessage6)

但是当前代码发生的事情是

实际结果

-- 日志 -- 警报

0 -- LogMessage1 -- 无警报

3 -- LogMessage2 -- 无警报

6 -- LogMessage3 -- Alert1 (LogMessage1, LogMessage2, LogMessage3)

9 -- LogMessage4 -- Alert2 (LogMessage2, LogMessage3, LogMessage4)

12 -- LogMessage5 -- Alert3 (LogMessage3, LogMessage4, LogMessage5)

15 -- LogMessage6 -- Alert4 (LogMessage4, LogMessage5, LogMessage6)

本质上,我无法丢弃已处理并参与警报生成的消息。我尝试使用retract从其工作记忆中删除已处理的事实。但是当我在规则的then部分添加retract 时,规则完全停止触发。我无法弄清楚为什么添加retract后规则停止触发。

请让我知道我哪里出错了。

0 投票
1 回答
542 浏览

drools - Drools 时间规则

我是 Drools 的新手。如果进程运行时间超过一段时间,我正在尝试生成通知 - 比如说 5 分钟。

为了实现上述目的,我在 DRL 文件中编写了以下代码。但这似乎不起作用。

.drl 文件

在上面的.drl文件中,我有一个名为Message声明的事件。该规则正在检查是否msgtext存在1st message并且它正在运行 5 分钟 - 如果是这种情况,我必须生成一个通知。在这个例子中,我只是打印结果。

提前致谢。我感谢您的帮助。

0 投票
0 回答
475 浏览

drools - Drools 事件到期问题

我们目前正在使用 drools 5.1 版本。我们希望在某个时间后过期事件。我们正在尝试以下方法。

我们在规则中使用了累积函数。并观察到实例没有从工作内存中收回(过期)。我总是得到相同的事实计数。

是否有任何指针可以在某个时间后使事件过期。

我们已经尝试了 5.3 并观察到在 CEP 和具有累积功能的规则的情况下到期未按预期工作。

请提供解决问题的指示。

0 投票
1 回答
525 浏览

java - 在 changeset.xml 中指定多个 drl 目录

目前使用 drools 5.1.1。如果我尝试使用变更集配置多个带有 drls 的目录。我观察到最后一个目录正在被 drools 扫描。这种行为是否正确?我的要求是我需要配置多个 drl 目录。如果有任何替代方案,请提供一些解决问题的指示。

0 投票
1 回答
374 浏览

drools - Drools Fusion“期间”时间运算符的问题

我已经开始使用 Drools Fusion 并且在时间运算符期间遇到了奇怪的问题。出于某种原因,例如在操作员工作正常之后,我不能让它太工作。

这是我的事件的声明 - 它只包含特定类型的间隔:

这是我的规则:

当我运行它时,没有任何东西被解雇。

但是,当我得到以下结果之后更改为:

并查看值,我清楚地看到,基于开始时间戳和持续时间,第二个事件在第一个事件内,因此应该触发持续时间。

是 Drools Fusion 中的错误还是我做错了什么?

顺便说一句 - 我在模式下运行

0 投票
1 回答
332 浏览

drools - 事件基础 Drools 规则

我是 Drools Fusion 的新手,我无法为以下情况创建规则

  1. 使用(日期、错误消息等)读取服务器日志文件
  2. 如果找到事件类型:带有事件消息的错误:“内存错误”必须触发一些事件(截至目前SOP
  3. 另一个(有)1小时它不应该触发相同事件消息和事件类型的事件(如果它在日志文件中找到)
  4. 1小时后如果发现相同,则必须触发事件

注意:必须使用日志文件中指定的相同日期和时间

请做同样的事情。

0 投票
2 回答
404 浏览

drools - 事件处理

我是 Drools 的新手。我正在尝试使用 Drools Fusion 编写一个简单的复杂事件处理 (CEP) 应用程序。

我的要求是

我有一个简单的事件类,如下所示:

规则文件如下:

为了测试,我将 4 个事件注入到工作内存中 - e1、e2、e3、e4 分别具有以下时间线 0m、4m、10m、12m。

Jave 类文件

我希望 e1 通过规则,因为它没有前面的事件。我也希望 e3 能够通过,因为前面的事件离我们还有 6 分钟。

但是,我得到了不同的输出:

期望输出

  • 事件引起的 CRITICAL 警报:e1
  • 由事件引起的 CRITICAL 警报:e3

但我越来越

  • 事件引起的 CRITICAL 警报:e1
  • 由事件引起的 CRITICAL 警报:e2
  • 由事件引起的 CRITICAL 警报:e3

补充信息:我正在使用 STREAM 模式进行事件处理。谁能解释一下输出并告诉我哪里错了。谢谢!

0 投票
1 回答
164 浏览

drools - 是否可以访问 Drools Fusion 事件的隐式时间戳?

我正在尝试编辑现有的 Drools Fusion 规则。我们用于事件的类没有任何类型的时间戳,因此该规则依赖于 Drools 在创建事件时隐式添加的时间戳。

我想在规则的“then”块中添加一些代码,以从数据库中检索与事件发生时间相关的数据。但是,我找不到访问这些隐式时间戳的方法。

有什么办法可以做到这一点,还是我必须重新定义事件类?

0 投票
0 回答
137 浏览

drools - Drools Fusion-需要帮助

这是我在小型 POC 中用于特定功能实现的 DRL。

这是我的问题(请原谅我,如果它是由于缺乏理解引起的,因为我是融合新手)....

当我这样做时,

我期待这个输出,

但我明白了,

这是预期的行为吗?我的理解错了吗?有人能告诉我这里到底发生了什么吗?

注意:会话是为“流”模式配置的有状态会话。时钟是一个 SessionPseudoClock。