创建,批准,编辑,批准网站内容的模式

时间:2009-12-09 02:26:41

标签: c# sql-server asp.net-mvc design-patterns repository-pattern

我正在修改网站以允许用户输入内容。但是,一旦他们创建了该内容,就需要在发布之前获得批准。通过在该内容的记录中设置“中等”位并且只需要一个表,这很容易实现。

现在我还想让用户像在StackOverflow上一样编辑内容。但是,每个编辑都需要经过批准和存储,以便可以查看编辑历史记录。

在编辑处于待审批状态时,可以阻止编辑“实时”记录,因此待处理修改的冲突不是问题。

我的目的是将每个项目的先前版本的集合保存在一个单独的表中,并将待处理的编辑保留在此表中,直到批准/拒绝,然后如果批准与主表中的记录交换。

任何人都可以看到这种模式中的任何缺陷吗?你能想到一个更好的方法吗?

虽然我认为它不相关我使用C#与ASP.NET MVC和SQL Server作为数据存储。

3 个答案:

答案 0 :(得分:1)

关于我脑海中浮现的唯一事情就是时机。

如果编辑对时间至关重要,例如促销或优惠,那么批准过程也需要非常活泼。

您可能需要考虑构建电子邮件功能或优先级标记,以便及时批准修改。

另一个考虑因素,我不知道时间是否允许,可能是Windows Workflow Foundation。您可以将编辑记录ID附加到工作流程项目,然后处理批准的及时性。

这也意味着如果批准者不在,那么其他人可以拿起它,因为它是一个有队列的工作流项目,如果你是队列的成员,你会看到它。

我知道这是一项很多工作,但我认为这是一个更好的解决方案,而不仅仅是依靠某人来批准改变。

答案 1 :(得分:1)

这样的事情:

  • 一个表用于项目,一个表用于所有修订。修订版有一个批准的标志。
  • 查看
    • 用户获得最新批准的修订版。
    • 主持人获取最新修订版本以及批准该版本的选项。
  • 编辑
    • 如果版本比最新批准的版本更新,则对用户禁用。
    • 始终为版主启用。
  • 历史
    • 仅显示已批准的用户修订。
    • 显示对版主的所有修订。

  

在编辑处于待审批状态时,可以阻止编辑“实时”记录,因此待处理修改的冲突不是问题。

我知道这样做的网站。我个人觉得很烦人。我希望他们这样做:

  • 一个表用于项目,一个表用于所有修订。修订版有一个批准的标志。
  • 查看
    • 客人将获得最新的批准版本。
    • 注册用户可以选择最新和最新批准的版本。
    • 主持人获取最新修订版本以及批准该版本的选项。
  • 编辑
    • 为客人禁用。
    • 用户可以修改最新版本(已批准或未批准)。
    • 始终为版主启用。
  • 历史
    • 仅显示对客人的批准修订。
    • 显示对版主和注册用户的所有修订。

答案 2 :(得分:1)

我曾与一些主要的商业CMS合作,我不记得他们的任何工作流程在批准时创建内容的物理副本。但我可以看出这是一个诱人的想法。您希望防止未经批准的内容泄漏到开放状态等,但我认为没有一个很好的技术原因可以做到这一点(除非您期望将这些内容分成已发布和未发布的集合具有性能优势)

我认为你的做法没有什么特别的错误。但是你没有充分理由重复数据。