我想基于使用决策表的drools中越来越少的值来实现简单的规则。
在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
但是我怎样才能将它翻译成drools的决策表呢?到目前为止我看到的所有例子都是在条件单元格中进行比较。甚至可以在价值单元格中进行比较吗?
我见过的所有例子都是以下格式:
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")
实施这些规则的正确方法是什么?
答案 0 :(得分:7)
我发现通过在约束字段单元格中放入 $ param 并在值单元格中放入整个约束,我可以实现我所需要的。所以决策表看起来像这样:
CONDITION | ACTION
Example |
$param | System.out.println("$param");
-------------------------------+-----------------------------------
value == 10 | equals to 10
value > 10 | greater than 10
value < 10 | less than 10
答案 1 :(得分:5)
可以将条件的一部分作为值。在标题中,您可以提供“ value $ param ”进行评估。 (BTW能够输入= = 10之类的值,您必须将单元格格式更改为Excel中的文本)
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")
答案 2 :(得分:1)
你可以看看这个
http://s11.postimage.org/oya6zxr83/Screenshot.png
这里我们从用户获取用户位置和计数,并检查count是否小于每个城市的初始计数,如果条件满足,则循环将一直运行到Loop Condition。
希望它会有所帮助。