如何迭代字符串列表并在流口水的 RHS 中更改它

How to iterate over a list of String and change it in RHS in drools

我的用例我想遍历字符串列表并更改与 LHS 中的条件匹配的条目

这是json

{
  "name":[
    "james",
    "harry",
    "potter",
    "james"
    ]
}

这是我的drl

when        
    $names:Names($nameslist:name)
    $value:String()  from $nameslist
    Boolean(booleanValue == true) from $value == "james"
    then
    System.out.println("Pojo Welcome-------");
end

我的要求是我想更改列表以便 其中名字是 james 我想把它改成 Peter。 我应该怎么做?

这是我的 pojo class

package pojo_Classes;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"name"
})
public class Assignment1News {

@JsonProperty("name")
private List<String> name = null;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();

@JsonProperty("name")
public List<String> getName() {
return name;
}

@JsonProperty("name")
public void setName(List<String> name) {
this.name = name;
}

@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}

@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}

}

我的要求是我想更改列表以便 其中名字是 james 我想把它改成 Peter。 我应该怎么做?

避免使用简单的函数(或静态方法)来完成更新列表的简单工作是没有意义的。

rule "james to peter"
when        
$names:Names($nlist:name contains "james")
then
  modify( $names ){ setName( replace( $nlist, "james", "peter" ) ); }
end