1

我试图找出处理业务规则的最佳通用方法,其中规则并不总是可执行的。
表单正在通过 stored_procedure 调用提交到数据库。目前,业务逻辑被写入stored_procedure,而不是单独的业务应用层。存储过程返回具有错误和错误级别(信息、建议、警告、错误和致命)的数据集

信息只是为了提供可能需要的更新。
建议允许用户中止更新/插入但默认操作是继续
警告允许用户中止更新/插入但默认操作是取消
错误违反强制性业务规则,通常与数据完整性有关,并将强制更新/插入被取消,但用户可以选择修改正在提交的数据并重试
致命是用户无法修复的问题(与数据库的连接丢失、用户权限被撤销、数据在填充表单后发生更改等)和将强制中止交易

这是我正在尝试做的一个例子。

设置季节代码的表格

  • 代码
  • 描述
  • 开始日期
  • 结束日期

需要两种类型的验证:

强制:例如代码和描述必须完整且必须是唯一的,开始日期必须早于结束日期

可选:开始和结束日期通常是连续的,即下一季的开始日期将是上一季结束日期的后一天,但情况并非总是如此。我想警告用户他们可能犯了一个错误,并让他们确认输入的数据是正确的。如果他们确实确认了,那么我需要在重新提交时忽略验证规则。

我正在考虑存储过程中的一个额外参数来忽略可选(信息和警告),如果用户确认问题正常,则仅在重新提交时设置。错误和致命仍然会导致更新失败。

任何人都可以提出更好的选择吗?

4

1 回答 1

0

您所需要的只是一个执行类型的业务规则,如果该规则评估为 True,则该规则会调用方法(规则操作)。该操作可以采用参数(例如,枚举 ErrorLevel)并相应地采取行动,记录错误、通知用户、保存用户的条目等)。就像是:

If UserRole is Admin and (StartDate is less than or equal to EndDate)
then Prosess(ErrorLevel.Info)
else Abort(ErrorLevel.Fatal)
于 2012-05-09T12:21:28.173 回答