Drools中List中的搜索元素

时间:2017-09-05 14:28:58

标签: drools

我有对象列表Person。对象人包含对象列表Car。我如何只从列表中选择thoose人,谁包含汽车选择类型。对于exmplain:汽车品牌“宝马”。我不知道没有for循环。

person[0].addCar(new Car("BMW"));
person[0].addCar(new Car("Ford"));

person[1].addCar(new Car("Ford"));
person[1].addCar(new Car("Ford"));
person[1].addCar(new Car("Ford"));

如何在drools-regulations中返回人[0]。

我的代码不起作用。

rule "HardDrool"
salience 100
when
    $world : World();

    $persons: Human(
        (name == "Yura"),
        (!cars.isEmpty()),
        (Car(name == "BMW") from getCars())
        ) from $world.getPersons()
then
    System.out.println($persons);

end

1 个答案:

答案 0 :(得分:0)

rule "HardDrool"
when
  $world : World();
  $person: Human( name == "Yura", !cars.isEmpty() )
     from $world.getPersons()
  exists Car( name == "BMW" ) from $person.getCars())
then
  System.out.println( $person );
end

对于每个拥有至少一辆宝马的人来说,这应该开一次。如果你想看到每辆宝马,请省略存在。