JAVA中的数据驱动验证/规则引擎

时间:2015-07-22 21:01:28

标签: json drools drools-guvnor

在我可以进一步使用它之前,我有数据和一系列验证(业务逻辑)。如下: -

{
    "site"      : "UK",
    "domain"    : "xyz.UK",
    "currency"  : "DOLLAR",
    "type"      : "unlimited",
    "limit"     : ""
}

{
    "site"      : "UK",
    "domain"    : "xyz.UK",
    "currency"  : "EURO",
    "type"      : "limited",
    "limit"     : "100"
}

{
    "site"      : "US",
    "domain"    : "xyz.COM",
    "currency"  : "DOLLAR",
    "type"      : "limited",
    "limit"     : ""
}

验证FLOW就像

  1. 域名验证

    网站= us>> domain = .com

    Site = uk>> domain = .uk

  2. 货币验证

    网站= us>> currency = DOLLAR

    Site = uk>>货币=欧元

  3. 类型验证

    网站= us>> type ="仅限于"

    网站= us>> type ="有限/无限制"

    type = limited>>限制> 0

    type = unlimited>> limit == null

  4. 因此只有第二个JSON才能通过验证。第一个有错误货币,3个一个限制为空。 更多字段将继续添加,验证将继续增加。我不想把验证放在JAVA代码中 因为我必须一次又一次地更改代码。有没有其他方法来保存验证/规则和DB和中的顺序 从DB获取验证/规则以验证数据。如果我需要更改或添加更多,我可以修改数据库。

1 个答案:

答案 0 :(得分:0)

假设财务数据集可用作Java bean(并且存在拼写错误的美国/英国),则第三次验证可写为:

rule "check type"
when
    Data( site == "US" && type == "limited ||
          site == "UK" && type == "limited || == "unlimited,
          type == "limited" && limit != null && limit > 0 ||
          type == "unlimited" && limit == null )
then
    // Data's type and limit is OK
end

这条规则将通过"传递"支票。为了确定什么是错误的,你需要更多的规则,每个规则都指出了一些错误。