Java 如何在Drools中处理动态Json/类?

Java 如何在Drools中处理动态Json/类?,java,drools,rule-engine,Java,Drools,Rule Engine,我正在编写一个RESTful服务来根据一些规则计算一些值 例如: 有这样一个JSON: { "amount": 100, "destination":"A" } rule "rule3" no-loop true lock-on-active true salience 1 when $s : Order(fields["customer"] == "Trump") then $s.setPrice(price *

我正在编写一个RESTful服务来根据一些规则计算一些值

例如:

有这样一个JSON:

{ "amount": 100,
  "destination":"A"
}
rule "rule3"
    no-loop true
    lock-on-active true
    salience 1
    when
        $s : Order(fields["customer"] == "Trump") 
    then
        $s.setPrice(price * 2);
        update($s);
此数据是一个请求正文,发送到我的控制器:

@RequestMapping(value = "/orders", method= RequestMethod.POST)
public void getOrderRequest(@RequestBody Order order){

// use Drools to calculate and return the result

}
以下是实体类:

public class Order{
    private Integer amount;
    private String destination;
    private Float price;
    // getters and setters
}
我使用Drools计算价格(假代码):

添加新规则: 如果客户是特朗普,则价格加倍:

rule "rule3"
    no-loop true
    lock-on-active true
    salience 1
    when
        $s : Order(customer == "Trump") 
    then
        $s.setPrice(price * 2);
        update($s);
但我必须向Order类添加一个新变量并重新启动服务

我想知道是否有任何方法可以在不重新启动REST服务的情况下实现这一点


或者我可以通过其他BRM动态处理JSON数据吗

使用地图携带所有订单详细信息:

public class Order{
    private Map<String, Object> fields;
    // getters and setters
}
public class Order{
    private Map<String, Object> fields;
    // getters and setters
}
rule "rule3"
    no-loop true
    lock-on-active true
    salience 1
    when
        $s : Order(fields["customer"] == "Trump") 
    then
        $s.setPrice(price * 2);
        update($s);