流口水:动态输入的顺序规则触发



我要遵循以下条件:

  • 从CSV中获取数据
  • 如果从CSV获取的数据不为空,则将其存储在map
  • 然后,将上述数据插入数据库。注:这是我试图提出的一个非常简单的例子。

我尝试使用显著性,但问题是,我的第一个规则的输出将被视为第二个规则条件的输入。据我所知,实际情况是,首先执行同一DRL文件中提到的所有规则的条件部分。因此,对于第二条规则,在条件中,变量为null。

的例子:

rule "1st rule"
salience 50
when
    $bean : Bean(a == 1)
then
    $bean.setB(10);
end
rule "2nd rule"
salience 40
when
    $bean : Bean(b == 10)
then
    System.out.println("2nd rule success");
end

上面我想指出的是,只有当第一条规则执行时,第二条规则才会执行。但是,据我所知,规则的"IF"部分在"THEN"部分之前执行,因此,第二条规则失败。

如果我理解正确的话,示例中的第二条规则没有执行。这是因为你没有让引擎知道有些东西已经改变了。请使用updatemodify

例如

// update
when
    $bean : Bean(a == 1)
then
    $bean.setB(10);
    update($bean);
end
// or with modify
when
    $bean : Bean(a == 1)
then
    modify($bean) {
      setB(10)
    };
end

更多信息见文档

最新更新