drools如何获取处理(执行)结果?
在Drools的使用过程中,经常会有朋友问到,如何获得返回的结果。通常情况下,我们是通过传入的Fact对象来携带规则中处理之后的结果的。
通常我们会定义个用于返回编码和错误信息的父类Result:
@Data
public class Result {
/**
* 操作编码
*/
private String code;
/**
* 描述信息
*/
private String desc;
}
然后对应的Fact对象继承自该父类:
@EqualsAndHashCode(callSuper = true)
@Data
public class User extends Result{
private String username;
private BigDecimal amount;
}
这样,在规则中的RHS中便可以将结果设置到code和desc字段中:
package com.choupangxia.calculate;
import com.choupangxia.entity.User;
rule "test-result"
when
$u : User();
then
$u.setCode("success");
$u.setDesc("校验成功");
end
由于Drools工作内存中的Fact对象(上面的User)和业务调用时传递的User是同一个对象,双面都持有该对象的引用,那么在API调用出的User对象中便可直接获得Drools规则引擎中对User对象的修改。
业务根据User对象中的code和desc进行判断,然后进行后续业务逻辑的处理。

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接