当前位置: 首页 > 知识库问答 >
问题:

如何使用drools中的决策表实现小于和大于规则?

崔宜修
2023-03-14

我想使用决策表实现基于流口水中较少和较大值的简单规则。

在drl中实现规则非常简单,例如:

rules "less than"
when Example(value < 10)
then 
    System.out.println("Less than 10")
end

rules "equals"
when Example(value = 10)
then 
    System.out.println("Equals 10")
end

rules "greater than"
when Example(value > 10)
then 
    System.out.println("Greater than 10")
end

但是我怎样才能把它翻译成流口水的决策表呢?到目前为止,我看到的所有例子都是在条件单元格中进行比较。甚至可以在值单元格中进行比较吗?

我看到的所有示例的格式如下:

CONDITION                          |  ACTION
Example                            |
value                              |
-----------------------------------|-------------------------------------
10                                 |  System.out.println("equals to 10")

但这只适用于1条规则,执行以下操作完全有不同的含义:

CONDITION  | CONDITION  | CONDITION  | ACTION
Example
value      | value > $1 | value < $1 |
-----------+------------+------------+----------------
10         | 10         | 10         | ???

甚至可以执行以下操作吗?

CONDITION                          |  ACTION
Example                            |
value                              |
-----------------------------------+----------------------------------------
10                                 |  System.out.println("equals to 10")
> 10                               |  System.out.println("greater than 10")
< 10                               |  System.out.println("less than 10")

实施这些规则的正确方式是什么?

共有3个答案

樊令秋
2023-03-14

你可以看看这个

http://s11.postimage.org/oya6zxr83/Screenshot.png

这里,我们从用户那里获取用户位置和计数,并检查计数是否小于每个城市的初始计数,如果条件满足,循环将一直运行到循环条件。

希望这会有帮助。

顾喜
2023-03-14

可以将条件的一部分作为值给出。在标题中,您可以给出“value$参数”来评估。(顺便说一句,要能够输入==10等值,您必须将单元格格式更改为Excel中的Text)

CONDITION                          |  ACTION
Example                            |
value $param                       |
-----------------------------------+----------------------------------------
== 10                              |  System.out.println("equals to 10")
in (10, 11)                        |  System.out.println("is 10 or 11")
> 10                               |  System.out.println("greater than 10")
< 10                               |  System.out.println("less than 10")
柳涵意
2023-03-14

我发现我可以通过在约束字段单元格中放入$参数并在值单元格中放入整个约束来实现我需要的。所以决策表如下所示:

CONDITION                      | ACTION
Example                        |
$param                         | System.out.println("$param");
-------------------------------+-----------------------------------
value == 10                    | equals to 10
value > 10                     | greater than 10
value < 10                     | less than 10     
 类似资料:
  • 在一个场景中,我们有一组主规则。其中一条规则类似于以下规则: 这些规则将向客户提供。我们希望我们的客户能够定制规则。若决定不定制,则应适用规则。自定义可以在“何时”中添加其他条件,也可以覆盖现有条件,还可以添加或修改“何时”部分。他们还可以添加到规则的“then”部分。 像这样的东西: 我们还有一些需要类似定制的决策表。 根据规则,最初建议使用“extends”,但据我所知,“extends”的作

  • 因此,如果输入条件是TRUEFALSEFALSETRUEFALSE,那么有没有什么方法可以同时触发第一个规则和第二个规则,并在列表中返回结果,在本例中,第一个操作是APPROVERTWO和APPROVERFOUR。

  • 我正在使用KIE IDE 7.11.0。最终的我使用Drools决策表已经很长时间了。但我还没有看到任何文件显示如何实现这一点。例如,当我需要变量,性别和年龄时,根据这两个事实,我得到一个类型。实现这一目标的旧方法如下: 然而他们是另一种简单的方法 横轴是年龄,纵轴是性别。两个变量都给出了类型值。但是我发现我不能在Drools中做这样的决策表。 我能流口水吗?

  • 问题:我在决策表(电子表格)中有三个规则表,前两个规则表的规则定义了从第三个规则表中触发哪个规则。在第一个规则表中,根据某些条件,我更新了事实,该事实用于从第二个规则表中触发规则。在第二个规则表的ACTION列中,我更新了事实,我想根据这个更新的事实在第三个规则表中触发规则,但由于更新的事实,第一个表中的规则再次触发,然后第二个,循环继续。 每当我添加规则流组时,我都找不到在规则表中添加规则流组的

  • 我很难找到一条我知道有效的规则。drl表单,用于在决策表中工作。 这是我的drl形式的规则: 以下是我在电子表格中尝试的内容: 当我尝试从电子表格中运行规则时,我遇到以下错误: from子句似乎有问题,但我不知道为什么。我尝试了无数次谷歌搜索,这是我唯一能找到的:http://drools-moved.46999.n3.nabble.com/Question-on-excel-decision-t

  • 有人能帮我调试Drools中的决策表吗。对于我们的项目,我们正在创建一个包含1000多条规则的决策表。每当他们在规则中出现错误时,谁的电子表格不工作,也不显示准确的错误在哪里。