我想开发一个JSON规则架构和一个规则评估器,我可以在其中定义和/或/或不对单个条件进行条件比较以进行属性比较。例如,如果customerType为PRIMARY且语言环境为en-US,则以下规则将评估为true。我打算用Java编写我的自定义规则评估器,该评估器将规则JSON与请求参数一起作为输入,并根据匹配与否将评估结果为true或false。我保持我的架构通用,并开放扩展。例如,如果您将来希望支持“ OR”条件,或者将来希望支持诸如“> =”之类的运算符,则可以通过扩展规则评估程序来实现。有更好的方法吗?
"rule": {
"type": "CompositeRule",
"allOf": [ #In future, we can also support "anyOf" if required
{
"type": "SimpleRule",
"attribute": "customerType",
"operator": "==", #In future, we can also support other operators like ">=" or "<=" etc.
"value": "PRIMARY" #Value can be a number, string or boolean
},
{
"type": "SimpleRule",
"attribute": "locale",
"operator": "==",
"value": "en-US"
}
]
}
jamesso提出了一个不错的JsonLogic实现,用于建立JSON解析器规则并在没有Nashorn JS Engine的Java中执行它们。您可以在GitHub https://github.com/jamsesso/json-logic-java上签出代码库。