JAVA 中的数据驱动 Validation/Rule 引擎
Data Driven Validation/Rule Engine in JAVA
在我进一步使用它之前,我有数据和一系列验证(业务逻辑)。喜欢以下:-
{
"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" : ""
}
验证流程类似于
域验证
站点 = 我们 >> 域 = .com
站点 = 英国 >> 域名 = .uk
货币验证
站点 = 我们 >> 货币 = 美元
站点 = 英国 >> 货币 = 欧元
类型验证
站点 = 我们 >> 类型 = "only limited"
站点 = 我们 >> 类型 = "limited/unlimited"
type = limited >> limit > 0
type = unlimited >> limit == null
所以只有第二个 JSON 会通过验证。第一个有错误的货币和 3 个限制为空。
更多字段将继续添加,验证将继续增加。我不想将验证放在 JAVA 代码中
因为我必须一次又一次地更改代码。有没有其他方法可以保存 validations/rules 和数据库中的序列
从数据库中获取 validation/rules 以验证数据。如果我需要更改或添加更多内容,我可以修改数据库。
假设财务数据集作为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
此规则将"pass" 检查。要确定问题所在,您需要更多规则,每条规则都指出了一些错误。
在我进一步使用它之前,我有数据和一系列验证(业务逻辑)。喜欢以下:-
{
"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" : ""
}
验证流程类似于
域验证
站点 = 我们 >> 域 = .com
站点 = 英国 >> 域名 = .uk
货币验证
站点 = 我们 >> 货币 = 美元
站点 = 英国 >> 货币 = 欧元
类型验证
站点 = 我们 >> 类型 = "only limited"
站点 = 我们 >> 类型 = "limited/unlimited"
type = limited >> limit > 0
type = unlimited >> limit == null
所以只有第二个 JSON 会通过验证。第一个有错误的货币和 3 个限制为空。 更多字段将继续添加,验证将继续增加。我不想将验证放在 JAVA 代码中 因为我必须一次又一次地更改代码。有没有其他方法可以保存 validations/rules 和数据库中的序列 从数据库中获取 validation/rules 以验证数据。如果我需要更改或添加更多内容,我可以修改数据库。
假设财务数据集作为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
此规则将"pass" 检查。要确定问题所在,您需要更多规则,每条规则都指出了一些错误。