Drools:如何对List中的所有元素应用规则,并找到满足给定条件的子集元素

时间:2018-02-05 23:04:59

标签: list loops drools

我是流口水的相对新手,我正在拉我的头发来实现以下场景。

我有一个日期列表,比方说10个日期。现在,我必须在这些元素中应用一组规则来查找满足所有规则的4个日期的匹配集。

假设以下是规则。如何在流氓中迭代这个并在提供的10个日期中找到四个日期。

date2> date1 + (6W - 4D)
date3> date2 + (4W - 4D)
date4 > date3 + (6M - 4D)
date4 > date1 + (4Y - 4D)

1 个答案:

答案 0 :(得分:1)

我建议你创建一个知道如何使用日期算术的助手类。

public class Helper {
    public static Date calculate(Date source, String expression) {
        //Do the magic
    }  
}

然后,您可以在规则中使用此帮助程序类,如下所示:

rule "Find subset"
when
  $d1: Date()
  $d2: Date(this > Helper.calculate($d1, "6W-4D"))
  $d3: Date(this > Helper.calculate($d2, "4W-4D"))
  $d4: Date(
    this > Helper.calculate($d1, "4Y-4D"), 
    this > Helper.calculate($d3, "6M-4D")
  )
then
  //Do whatever you need 
end

希望它有所帮助,