我试图在决策表(excel)中包含单个RuleTable下的更多规则,这意味着在单个RuleTable下包含两个或多个具有条件和操作的行,如图所示。如果我包含,我只能从三个操作项中获得单个操作。例如,如果我将值声明值设为11 - >我得到动作输出为Done-2。但如果我将索赔值设为12,我就没有得到任何输出。
如果我的方法有误,请告诉我。
编辑:
我已经完成了图中所示的更改,现在它没有给我任何输出。
答案 0 :(得分:0)
Excel表中的此部分不是根据Drools决策表的规则编写的。我只是指出了所有的偏差 - 请阅读文档以了解如何编写决策表。 (单元格根据从A1到H9的已发布PNG进行编号。另外,请注意,为了简单起见,我使用value,value1和value2而不是原始访问代码来实现事实值。)
tm
,它会生成无效的RHS代码(tm.System.out.println(...)
)。Age < 2
不是有效模式。这是因为B3是空的。Claim(value == 10 == "true")
和Claim(value == 10 == "value == 11")
或类似的。这会编译,但几乎不需要测试声明事实中的值。System.out.println("Done-1");
(或类似)和System.out.println("System.out.println(\"$param\");");
尝试猜测为什么没有得到预期的输出并没有多大意义。您有列定义规则属性议程组和激活组的列,但您没有提供代码设置和切换议程组。从这个Excel代码段中可以看出,这两列都没有多大意义。
该文档包含有效决策表的足够示例,因此我不会重复轻松获取的信息。
修改必须将条件写为四行中的单元格。 (您只使用了三个。)以下是如何为同一类的属性编写一对约束。请注意,第2和第3条规则没有基于年龄的约束。
CONDITION CONDITION
-------------- Claim -------------
value == age <
Value must match Age must be less
10 2
11
12
以上显示7行,2列。
ACTION
System.out.println( "$param" )
Print something...
Done-1
Done-2
Done-3
再次7行,1列。
文档中两者几乎都有相同的例子。