【问题标题】:Data Driven Validation/Rule Engine in JAVAJAVA 中的数据驱动验证/规则引擎
【发布时间】:2015-07-22 21:01:27
【问题描述】:

我有数据和一系列验证(业务逻辑),然后才能进一步使用它。如下所示:-

{
    "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"     : ""
}

验证流程就像

  1. 域验证

    站点 = 我们 >> 域 = .com

    站点 = uk >> 域 = .uk

  2. 货币验证

    网站 = 我们 >> 货币 = 美元

    网站 = 英国 >> 货币 = 欧元

  3. 类型验证

    Site = us >> type = "only limited"

    Site = us >> type = "有限/无限"

    type = limited >> limit > 0

    类型 = 无限制 >> 限制 == 空

所以只有第二个 JSON 会通过验证。第一个货币有误,第三个限制为空。 更多字段将继续添加,验证将继续增加。我不想将验证放在 JAVA 代码中 就像我必须一次又一次地更改代码一样。有没有其他方法可以保存验证/规则以及数据库中的序列和 从数据库中获取验证/规则以验证数据。如果我需要更改或添加更多内容,我可以修改 DB。

【问题讨论】:

    标签: json drools drools-guvnor


    【解决方案1】:

    假设金融数据集作为 Java bean 可用(并且有一个拼写错误 US/UK),第三个验证可以写成:

    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
    

    此规则将“通过”检查。为了确定哪里出了问题,您需要更多规则,每个规则都指出了一些错误。

    【讨论】:

    • 那应该是什么语言?
    • @kratenko 这不是“应该是”,它是。查看 OP 的标签。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    相关资源
    最近更新 更多