我正在修改网站以允许用户输入内容。但是,一旦他们创建了该内容,就需要在发布之前获得批准。通过在该内容的记录中设置“中等”位并且只需要一个表,这很容易实现。
现在我还想让用户像在StackOverflow上一样编辑内容。但是,每个编辑都需要经过批准和存储,以便可以查看编辑历史记录。
在编辑处于待审批状态时,可以阻止编辑“实时”记录,因此待处理修改的冲突不是问题。
我的目的是将每个项目的先前版本的集合保存在一个单独的表中,并将待处理的编辑保留在此表中,直到批准/拒绝,然后如果批准与主表中的记录交换。
任何人都可以看到这种模式中的任何缺陷吗?你能想到一个更好的方法吗?
虽然我认为它不相关我使用C#与ASP.NET MVC和SQL Server作为数据存储。
答案 0 :(得分:1)
关于我脑海中浮现的唯一事情就是时机。
如果编辑对时间至关重要,例如促销或优惠,那么批准过程也需要非常活泼。
您可能需要考虑构建电子邮件功能或优先级标记,以便及时批准修改。
另一个考虑因素,我不知道时间是否允许,可能是Windows Workflow Foundation。您可以将编辑记录ID附加到工作流程项目,然后处理批准的及时性。
这也意味着如果批准者不在,那么其他人可以拿起它,因为它是一个有队列的工作流项目,如果你是队列的成员,你会看到它。
我知道这是一项很多工作,但我认为这是一个更好的解决方案,而不仅仅是依靠某人来批准改变。
答案 1 :(得分:1)
这样的事情:
在编辑处于待审批状态时,可以阻止编辑“实时”记录,因此待处理修改的冲突不是问题。
我知道这样做的网站。我个人觉得很烦人。我希望他们这样做:
答案 2 :(得分:1)
我曾与一些主要的商业CMS合作,我不记得他们的任何工作流程在批准时创建内容的物理副本。但我可以看出这是一个诱人的想法。您希望防止未经批准的内容泄漏到开放状态等,但我认为没有一个很好的技术原因可以做到这一点(除非您期望将这些内容分成已发布和未发布的集合具有性能优势)
我认为你的做法没有什么特别的错误。但是你没有充分理由重复数据。