4

我想使用决策表根据流口水中较小和较大的值来实施简单的规则。

在 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")

执行这些规则的正确方法是什么?

4

3 回答 3

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     
于 2012-07-08T21:08:08.830 回答
5

可以将条件的一部分作为值给出。在标题中,您可以给出“ value $param ”来评估。(顺便说一句,为了能够输入 == 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")
于 2014-02-19T15:46:26.563 回答
1

你可以看看这个

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

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

希望它会有所帮助。

于 2013-02-06T11:16:00.423 回答