我是drools的新手,我被分配了下面的任务。
我将一些POJO插入到我的KieSession对象中,并将它们检索到决策表中的变量中,如下所示。
CONDITION CONDITION CONDITION ACTION
abc: classABC xyz: classXYZ lmn : classLMN
var1 == $param var2 == $param
1 2 3据我所知,上面的表格将产生以下规则
when
abc:classABC(var1==1)
xyz:classXYZ(var2==2)
lmn:classLMN(var3==3)
then
some action我想要的是获得以下内容。
when
abc:classABC(var1==1)
xyz:classXYZ(var2==2)
lmn:classLMN(var3==3)
fgh:classFGH($var:var4) // I think this step is creating a new variable to hold value of var4
then
some action如何将其放到决策表中?
我尝试添加一个条件列,变量声明为fgh :classFGH,但由于数据行中没有要提供的数据,因此该列将被忽略。如果我这样做了,给出一些数据,在编译时会出现错误"no code sinppet at xyz column“。我所需要的就是声明一个变量,该变量可以保存我在main方法中传递的对象的值,然后在决策表的另一列中使用该对象。
发布于 2014-02-04 21:06:03
我不确定我是否得到了决策表周围的需求,但您可以“使用”规则的触发来创建新的事实并插入它们,并使用来自原始事件的参数。然后可以使用这些规则来触发进一步的规则,如下所示(假设var4是布尔值):
declare AllMoonsInAlignmentEvent
@role (event)
extraCheese : boolean
end
rule "Some Rule"
when
$abc:classABC(var1==1)
$xyz:classXYZ(var2==2)
$lmn:classLMN(var3==3)
$fgh:classFGH($var:var4)
then
... some action using `$var`, `$abc` etc
AllMoonsInAlignmentEvent myEvent= new AllMoonsInAlignmentEvent();
myEvent.extraCheese = $var;
insert(myEvent);
rule "With Extra Cheese"
when
$moonsAligned:AllMoonsInAlignmentEvent(extraCheese == true)
then
...
rule "Without Extra Cheese"
when
$moonsAligned:AllMoonsInAlignmentEvent(extraCheese == false)
then
...发布于 2014-02-05 20:32:23
可以通过两种方式将X($y:y)放入电子表格中。首先,在第4列中
X($y:y /*$param*/)并在列中填入您喜欢的任何字符。另一种方式可能在第3列(!)
fgh:classFGH($var:var4) lmn:classLMN
var3==$param这些技巧总是有点可疑。要求简单地“抓取”一个事实的规则对于电子表格来说不是典型的,并且可能是你没有追求最佳方法的第一个迹象。
发布于 2014-07-19 20:26:33
https://stackoverflow.com/questions/21552848
复制相似问题