我可以将Drools用于以下定义
> pay_type in(NB,CC) and (brand in (VISA,MASTER) or bank in(HDFC,CITI))
operations - and , or
keyword - in
tags - pay_type , brand , bank
我需要提供一个带有3个输入的java api
validateAgainstRule('NB', 'VISA', 'AXIS')
应该归还true;
和。{
validateAgainstRule('NB', 'AMEX', 'AXIS')
应该返回false;
我可以使用drools实现这一目标吗?
答案 0 :(得分:0)
如果你想使用Drools,首先需要的是一个类模型。您的场景的简化类模型可以是:
public class Payment {
private String payType;
private String brand;
private String bank;
private boolean valid = false; //the initial state of a payment is invalid
//getters an setters, of course
//...
}
然后,对于您的用例,您只需要一条规则:
rule "validate payment"
when
$p: Payment(
payType in ("NB", "CC") &&
(brand in ("VISA", "MASTER") || bank in ("HDFC", "CITI"))
)
then
$p.setValid(true);
end
鉴于此,在您的方案中,付款有效与否,您不需要创建其他规则来将付款对象标记为无效。
希望它有所帮助,