使用drools定制规则定义

时间:2015-03-19 06:12:19

标签: java drools rule-engine business-rules

我可以将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实现这一目标吗?

1 个答案:

答案 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 

鉴于此,在您的方案中,付款有效与否,您不需要创建其他规则来将付款对象标记为无效。

希望它有所帮助,