Sna*_*ake 9 terminology business-logic
验证规则和业务规则之间有什么区别?
根据我的理解,'如果业务对象/对象的状态不符合预期,则抛出错误消息'是验证规则,'当业务对象/对象的状态等于或不等于某事时,然后更改某些业务对象/对象的状态[或采取一些操作/事件但不仅仅是抛出错误]'是业务规则.
验证可以是UI验证 - 验证UI字段或应用程序验证的值 - 验证业务对象状态.
我不确定我的理解是否正确.在我的项目中,我们有一个验证框架,其中一个简单的验证调用使业务对象对某些东西进行验证,一个错误收集器收集所有错误.错误显示在屏幕上.
除此之外,我们还有如上所述属于第二类的规则,即检查业务对象/对象状态并采取一些操作,例如更改另一个业务对象的状态.我试图找出使用一些框架[不是验证框架]或规则引擎来实现这些规则的策略.
能否帮助我理解上述两种规则之间的区别,如果有任何实施策略/建议,它会有所帮助.
小智 7
验证是检查输入的值对于其字段的上下文是否合法(从技术角度来看),例如:5是年龄(vs -5)?可接受的数值,而-5是可接受的温度例.
业务规则更多的是业务角度.检查业务的策略和过程是否可接受值(通过验证).例如,被允许注册的人必须是居民,并且18岁或以上.等等.业务规则可以检查一个(或多个)字段值,并且可以查询存储在数据库中的数据和/或进行一些计算以确保值传递业务规则.
因此,对于hanna上面发布的示例,值15应该通过字段验证(因为它是Age的有效值),但它不会通过业务规则检查已婚人员的年龄必须> 15.
简而言之; 验证规则确定基本有效性; "这是一个有效的电子邮件地址吗?" 业务规则确定如何处理有效数据; "我可以将用户的确认电子邮件设置为提交的值吗?" 业务规则可以迁移到验证逻辑; 但通常情况下,业务规则引擎不会进行验证.