Drools:使用动态输入的顺序规则触发

时间:2015-07-28 13:59:48

标签: java drools

我要遵循以下条件:

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

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

示例:

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”部分之前执行,因此,第二条规则失败。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,则不执行示例中的第二条规则。这是因为您不会让引擎知道某些内容已发生变化。请使用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

更多信息available in the docs

相关问题