首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实例化决策表中的局部变量

如何实例化决策表中的局部变量
EN

Stack Overflow用户
提问于 2014-02-04 20:39:51
回答 3查看 4.2K关注 0票数 0

我是drools的新手,我被分配了下面的任务。

我将一些POJO插入到我的KieSession对象中,并将它们检索到决策表中的变量中,如下所示。

代码语言:javascript
复制
CONDITION            CONDITION            CONDITION          ACTION
abc: classABC       xyz: classXYZ        lmn : classLMN
var1 == $param       var2 == $param                                                                                

1                   2                     3

据我所知,上面的表格将产生以下规则

代码语言:javascript
复制
 when 
    abc:classABC(var1==1)
    xyz:classXYZ(var2==2)
    lmn:classLMN(var3==3)
 then
    some action

我想要的是获得以下内容。

代码语言:javascript
复制
  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方法中传递的对象的值,然后在决策表的另一列中使用该对象。

EN

回答 3

Stack Overflow用户

发布于 2014-02-04 21:06:03

我不确定我是否得到了决策表周围的需求,但您可以“使用”规则的触发来创建新的事实并插入它们,并使用来自原始事件的参数。然后可以使用这些规则来触发进一步的规则,如下所示(假设var4是布尔值):

代码语言:javascript
复制
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
    ...
票数 0
EN

Stack Overflow用户

发布于 2014-02-05 20:32:23

可以通过两种方式将X($y:y)放入电子表格中。首先,在第4列中

代码语言:javascript
复制
X($y:y /*$param*/)

并在列中填入您喜欢的任何字符。另一种方式可能在第3列(!)

代码语言:javascript
复制
fgh:classFGH($var:var4) lmn:classLMN
var3==$param

这些技巧总是有点可疑。要求简单地“抓取”一个事实的规则对于电子表格来说不是典型的,并且可能是你没有追求最佳方法的第一个迹象。

票数 0
EN

Stack Overflow用户

发布于 2014-07-19 20:26:33

  • CONDITION
  • fgh:classFGH
  • $param:var4
  • Comment cell
  • $var
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21552848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档