处理规则验证的最佳方法是啥

Posted

技术标签:

【中文标题】处理规则验证的最佳方法是啥【英文标题】:Whats the best way to approach rule validation处理规则验证的最佳方法是什么 【发布时间】:2013-08-18 23:49:24 【问题描述】:

所以我目前在一家公司实习,负责为分析引擎创建 UI 规则编辑器的中间层。作为此任务的一部分,我确保创建的所有规则都是有效规则。这些规则可能非常复杂,由大约 10 个字段组成,每个字段都有多种可能性。

我在这里不知所措,我一直在努力寻找一些材料来指导我完成这项任务,但我似乎找不到太多。我可以采取任何模式或设计方法将其分解为更易于管理的任务吗?要读的书吗?任何想法或指导将不胜感激。

【问题讨论】:

有效性如何定义?有几种选择,例如1) 可以执行规则(语法上有效),2) 可以执行规则并且执行返回有意义的结果(例如具有某些属性的某些数据),3) 规则符合预定义的规则模式。 1 由解析器解决,2 应该易于检查,3 需要对允许的模式进行一些头脑风暴。 您能否举例说明您需要实施的规则类型? 【参考方案1】:

您可以考虑花时间学习词法分析器/解析器,例如Anltr4。您可以使用 Antlrwork2 ide 辅助可视化和调试。

Antlrworks2:http://tunnelvisionlabs.com/products/demo/antlrworks

您可以通过搜索示例语法开始着手,然后根据您的特定需求对其进行调整。

语法:https://github.com/antlr/grammars-v4

Antlr 提供多种不同语言的输出绑定 - 因此您可能会拥有一种适合您需求的语言。

在任何情况下,这都不是一项微不足道的任务 - 而是一项有趣且有益的任务。

【讨论】:

【参考方案2】:

您需要为此构建算法。

注意事项

1.) 根据数据类型支持和兼容性验证参数。 2.) 哪个运算符后跟特定数据类型的操作数。 3.) 某个表达式的返回结果应该再次与下一个操作数或运算符兼容。

提供模拟规则的功能,用户可以在其中选择要触发规则的数据集。

例如

a + b > c

可能的组合。

1.) A、b 可以是字符串、数字或整数。 2.) 但是a+b if String then operator ">" 的组合结果不能来。

【讨论】:

以上是关于处理规则验证的最佳方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

spring Boot 和 Angular JS:处理身份验证的最佳方法是啥?

现在 SSLSocketFactory 在 Android 上已被弃用,处理客户端证书身份验证的最佳方法是啥?

在 Rails 中验证多封电子邮件和处理错误的最佳方法是啥?

在 ASP.NET MVC 中使用 Universe 数据库处理身份验证的最佳方法是啥?

React - 处理登录和身份验证的最佳方式是啥?

MVC 验证 - 使用服务层保持 DRY - 最佳实践是啥?