现在,在我的drools项目中,我在单独的DRL文件中有两组规则,它们由议程组分割。对于议程组“preCheck”,我将该议程组中的每个规则的自动聚焦设置为true。例子:
rule "preCheckDuplicate"
agenda-group "preCheck"
auto-focus true
no-loop true
salience 50
when
$f : IngestFileMetadata(isDuplicate.equalsIgnoreCase("True"))
then
$f.setIsDuplicate("True");
end
对于另一个议程组-“default规则”-规则没有设置自动焦点属性。示例:
rule "duplicate file default"
agenda-group "defaultRules"
activation-group "isDuplicate"
no-loop true
salience 0
when
$f : IngestFileMetadata(isDuplicate.equals("True"))
then
insert(createResponse($f));
end
在通过RESTAPI调用规则时,我还试图通过JSON负载将焦点设置为“preCheck”议程组。例子:
{
"lookup": "defaultStatelessKieSession",
"set-focus": "preCheck",
"commands": [
{
"insert": {
"out-identifier": "IngestFileMetadata",
"return-object": "true",
"entry-point": "DEFAULT",
"object": {
"com.hms.ingestion.rules.IngestFileMetadata": {
* * * * * data attributes here * * * * *
}
}
}
},
{
"fire-all-rules": {"out-identifier": "fired"}
},
{
"query": {"name": "rulesResponses", "out-identifier": "rulesResponses"}
}
]
}
然而,在执行规则时,似乎首先要评估“defaultRules”议程组中的规则。我不知道为什么。我相对来说还不太会流口水,所以完全有可能我没有正确理解议程组的概念,但我确信这种html" target="_blank">设计将确保首先评估“预检查”规则。
有人能提供一些关于为什么没有发生这种情况的见解吗?如果我需要提供更多的细节,我可以。
提前谢谢。
议程组允许您将规则放置到组中,并将这些组放置到堆栈上。堆栈具有推送/弹出行为。在首先介绍如何使用议程组之前,我想说配置议程组取决于您在规则引擎中使用的Kie会话
类型。对于有状态会话,您可以通过调用ksession.get议程(). getAgendaGroup("preCheck"). setFocus();
来直接配置它。对于无状态会话,您必须声明一个显式规则来将会话的焦点设置为特定的议程
。您可以使用以下规则在无状态会话
中设置议程:
rule "global"
salience 100
when
$f : IngestFileMetadata()
then
drools.setFocus($f.getAgenda());
end
注意:您必须找到一些方法来获取规则文件中的议程变量。在上面的示例中,get议程()是InpresFileMetadata类中的一个方法,它返回字符串类型的议程值
我在使用R的group_by和SUMMARY函数时遇到了一些问题,我想知道你们是否可以帮我一些忙。我有一张类似的表格: 我试图使用dplyr的group_by和SUMMARY来找到频率列的平均值。下面是我的示例代码: 我所期望的是,一个表格被吐出来,分解按单个类别分组的平均频率,如下所示: 但是,我收到的是一个按类别分组的表,每个类别接收整个表的平均值,如下所示: 有什么线索吗?我应该说我是初学者
结束 当我通过ksession.insert(Object)将一些人插入工作记忆时,只计算第一个人,忽略其他的人。我对Drools激活组的理解是,如果我有X个规则,这些规则属于同一个激活组,具有不同的显着性值,那么每个人都将被规则处理,显着性最高的将被激发,其余的将被忽略。一旦完成,下一个人将通过并重复这个过程。我所经历的是,第一个触发该激活组中任何规则的人将禁用整个激活组,不再处理其他人员。有什
我目前正在使用Cucumber和Java开发一个基于Selenium的BDD测试自动化框架。我的框架使用Junit,由于Junit不支持软断言,所以我尝试在测试中使用AssertJ断言。然而,这些断言似乎不起作用。让我试着借助下面的代码来解释这一点:
我已经配置了log4j2.xml文件,application.log文件将被创建,它应该每天翻转。 但是在JVM中,applicatoin.log文件在10MB之后会翻转,如果翻转三次,第一个文件会被覆盖。也就是说我随时都application.logapplication-2020-10-16.log.zip. 为什么log4j2(v2.13)即使配置为每日,也会每10MB滚动一次文件?任何在l
我正试图将一个阻塞消费者集成为Reactor铝-SR1中的助焊剂订户。我想使用一个并行调度器,并发地执行阻塞操作。 我实现了一个主类来描述我意图:
我重新安排了云firestore的安全规则,以防止在集合中重新创建文档。以下是我使用的规则: 我用这些文档路径和用户凭据在控制台中模拟了这些规则 如果我创建了一个id为09-07-2020的文档,并使用上述路径进行模拟,则会失败。当我删除文件09-07-2020时,上述模拟工作正常。因此,它在规则模拟器中运行良好。 但当我在应用程序中尝试时,每次尝试都会再次创建文档。因此,如果文档内容以前不同,则