long start = System.currentTimeMillis();
for (int i = 0; i < 1000; i++) {
insertHeartRate(150, 0, macAddress);
ksession.fireAllRules();
}
long stop = System.currentTimeMillis();
System.out.println("Running time: " + (stop - start));
我面临的问题是,这不起作用,因为您可以插入大量您想要的事件,而drools稍后将处理这些事件。所以这一部分的时间显然总是小于一秒钟。所以我的问题是,在处理完所有事件之后,如何调用long stop=system.currentTimeMillis()
?
FireAllRules
在所有事情发生后返回。因此,您发布的代码确实会测量插入这些事件和触发所有触发规则所用的时间。
如果您的规则启动任何计时器,它将在以后执行:那是另一回事。另外,您正在处理融合:这些事件将不会按照一个紧密的循环到达,时间戳和窗口:时间和时间操作符:没有什么会像您的规则中预期的那样工作。
如果没有时态运算符或window:time,您可以首先测量插入事实所需的时间,并测量FireAllRules的持续时间。
我目前正在撰写硕士论文,涉及使用Drools Fusion来处理来自多个XML文件流的事件(因此我将每个文件“重放”为一个流)。这些文件记录的是一场足球比赛,比赛中球员身上安装了GPS传感器,监测他们的加速度和速度,以及球员负荷等其他信息。 每个XML文件都包含事件实例,声明ID、开始时间、结束时间和代码,如下所示: 我有9个这样的文件,它们都需要同时处理,并将这些事件同时输入到引擎中。我当前的实
我使用Drools fusion处理实时事件。每个事件都有一个时间戳字段。问题是,有时事件可能会无序。drools fusion能处理这种情况吗?如果是,如何处理? 谢啦
我想看看Drools CEP的最大EPS容量。我使用的是8核2.6GHz CPU和16 GB RAM。我只是用2个规则测试200个EPS。Drools开始时很好,但后来(在5到15分钟内)它停下来或开始不着火,我已经用fireAllRules和FireUntilHalt测试过了。 RuleEngine代码
我正在使用drools fusion,我想根据实现的规则数测试这个cep系统的性能。现在,我有了一个简单的规则文件。drl扩展。我想动态生成大约1000条规则。那么,如何在不让他们在中创建一对一的情况下自动完成此操作呢。drl文件?
我正在制作一个应用程序,其中通过每5秒一次的间隔HTTP请求收集来自虚拟机的与CPU使用、内存使用、磁盘使用等相关的数据。收集的数据如下所示: 我在Drools Fusion上创建了一些规则,试图看到以下内容:例如,当CPU使用率在过去10秒内达到10%以上时,然后在屏幕上打印一些东西,但我的问题是,即使我在规则中输入了命令,即使尚未通过,规则仍然被触发。这是CPU使用率的规则: 是从HTTP响应
我尝试在Drools 5.4.0中使用滑动时间窗口。最终版本,并提供以下官方文档片段: 和 我认为混合形式是有效的: 但是,除非我弄错了,否则它的行为并不像预期的那样(即只考虑在过去2分钟内发生的RHT股票滴答声)。我不明白结果的逻辑。 有人能给我解释一下这个把戏吗? 谢谢