首页 > 解决方案 > 查找规则中的所有条件元素为真

问题描述

在 drool 中,当我使用事实执行无状态会话时,我们可以选择查找规则中所有条件元组满足的内容。

例如:如果我们在规则 RUL1 中有规则条件,car.schi == 'A' || car.carKind str[startsWith] 'A'

如果因为 car.schi 而满足 RUL1,那么我们是否有任何 API 可以获取此信息(car.schi)。

我给出的示例比较简单,但我们的实际业务规则非常复杂,如下所示,

|| car.schi 包含 \"CM\" || car.schi 包含 \"DW\" || car.schi 包含 \"PB\") && (validateElementRule($trainrulesRequestDTO.getElementRuleMap(),\"1_N\",true,$trainrulesRequestDTO.getCar().getCarNumb()))))) && (((car.prevSchi不包含 \"N2\" && car.prevSchi 不包含 \"N1\") && (car.prevLoadEmpty == \"L\") && ((car.prevCarKind str[startsWith] \"F\" || car .prevCarKind str[startsWith] \"YF\") && (car.prevCarKind not str[startsWith] \"FI\" && car.prevCarKind not str[startsWith] \"FA\" && car.prevCarKind not str[startsWith] \"FW\" && car.prevCarKind not str[startsWith] \"FB\") && (car.prevCarKind != \"YFB\"))) || ((car.

如果我们要将其拆分为不同的规则以查找是否满足规则是因为 (prevCarKind , prevSchi , prevLoadEmpty) 或 (nextCarKind, nextSchi,nextLoadEmpty) 拆分复杂规则太难了。

我还给出了规则条件作为从我们的 UI 应用程序中获取的图像。 上述规则条件字符串的图形视图 如果有人可以让我们知道如何根据哪个条件查找是否满足上述条件,将会很有帮助。

问候, Madhankumar。乙

谢谢,马丹

标签: drools

解决方案


不,你不能。但是您可以将规则拆分为多个规则,如下所示:

rule "RUL1A"
when
    car.schi == 'A'
then
    ...
end

rule "RUL1B"
when
    car.carKind[0] == 'A'
then
   ...
end

推荐阅读