首页 > 解决方案 > 如何使用 Drools (mvel) 将元素添加到数组

问题描述

我需要使用 Drools 在现有数组中插入一个新值。我的例子:

rule "insert new address"
dialect "java"
when
     $data : Data( source.address != null)
then
     Address address = (Address) $data.source.address
     System.out.println("Element: "+address );
     $data.target.addressList.add(address);
end

发生的错误是这样的:规则中“插入新地址”的异常执行结果:[错误:$data.target.addressList.add(address): null]

编辑:添加模型

public class Data {
  private Source source;
  private Client target;
}

public class Source {
  ...
  private Address address;
}

public class Client {
  ...
  private List<Address> addressList;
}

标签: droolsmvel

解决方案


回答标题中的问题,即如何将元素添加到数组中——答案基本上是“与 Java 中的方法相同”。

要回答您实际提出的没有数组的问题,您的错误实际上是 NullPointerException,或另一个指示该字段无法修改的指示符(例如不可变列表。)

这个:

Error: $data.target.addressList.add(address): null]

表示$data.targetor$data.target.addressList为 null,或者可能$data.target.addressList是不可变列表。

确保任何“目标”都已被初始化,并且其“地址列表”也被初始化为可变列表类型。


推荐阅读