我有一个应用程序,每天收到大量需要两次员工评审的项目。收到一个项目并输入数据库后,它就会进入审核过程。
审核过程就是这样的。
我目前在我的数据库中有一个名为Statuses
的表,其中包含以下列。
Id
Name
此表格中的数据(Id
,Name
格式)。
0, First Checker
1, Second Checker
2, Pending State A
3, Pending State B
我遇到的问题是代码无法知道或者知道一旦第一个检查器完成检查并且没有将项目置于挂起状态,该项目应该获得的下一个标签是{{1} }。我能想出解决这个问题的唯一方法是在这个表中添加一系列列。例如,我目前有1, Second Checker
,IsFirstChecker
和IsSecondChecker
列。
因此,对于所有这些额外的列,我能够检查项目审核的保存时间,如果做出最终决定,则在数据库中查询要更改IsPendingStatus
IsSecondChecker
的状态检索标签(或状态,如果你愿意)true
(Id
表的FK)。
它似乎不是一个非常理想的解决方案,但它有效。有没有更好的方法来解决这个问题?
我想补充一点,这个解决方案适用于非常少的代码逻辑。我开始考虑更多,并认为可能有另一种方法来解决这个问题。
答案 0 :(得分:2)
听起来你需要一台有限状态机!
http://en.wikipedia.org/wiki/Finite-state_machine
对于当前的要求可能有点过分 - 但它是一种优雅,可扩展的方式来模拟“接下来会发生什么”的问题。