Java 如何在Drools中处理动态Json/类?
我正在编写一个RESTful服务来根据一些规则计算一些值 例如: 有这样一个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 *
{ "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);