1

我正在对网站进行修改以允许用户输入内容。但是,一旦他们创建了这些内容,它就需要获得批准才能发布。通过在该内容的记录中设置“适度”位并且只需要一个表来实现这一点相当容易。创建,批准,编辑,批准网站内容模式

现在我还想让用户在StackOverflow上很像这里编辑内容。但是,每个编辑需要被批准以及被存储,以便可以查看编辑的历史。

这是可以接受的,以防止编辑的“活”的记录,而编辑正在等待批准,从而挂起的编辑的冲突不是一个问题。

我的目的是让每个项目的以前版本的集合在一个单独的表,并有挂起的编辑坐在这个表,直到如果批准了与主表中的记录交换批准/拒绝,然后。

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

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

回答

1

关于我唯一想到的事情是时间。

如果编辑时间紧迫,比如促销或优惠,那么审批流程也需要相当快速。

你可能要考虑建筑中的电子邮件功能,或优先级标志,以便编辑能及时批准。

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

这也意味着,如果一个审批人不在,其他人可以把它捡起来,因为它是具有队列的工作流项目,如果你是队列中的一员,你会看到它。

我知道这是一个很多工作赫克,但我认为不是仅仅依靠有人来陪伴并批准变更更好的解决方案。

1

什么是这样的:

  • 一个表中的项目和一个表的所有版本。修订版有批准的标志。
  • 查看
    • 用户获得最新批准的修订版。
    • 版主获得最新的版本和批准它的选项。
  • 编辑
    • 禁用的用户时,有比最新批准的修订版一个新的版本。
    • 始终为版主启用。
  • 历史
    • 仅显示批准修订的用户。
    • 显示版主的所有修订。

这是可以接受的,以防止编辑的“活”的记录,而编辑正在等待批准,从而挂起的编辑的冲突不是一个问题。

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

  • 一个表的项目和一个表的所有修订。修订版有批准的标志。
  • 查看
    • 客人获得最新批准的修订。
    • 注册用户可以选择最新和最新批准的修订版本。
    • 版主获得最新的版本和批准它的选项。
  • 编辑
    • 残疾人的客人。
    • 用户可以修改最新版本(已批准与否)。
    • 始终为版主启用。
  • 历史
    • 仅显示批准修订的客人。
    • 显示版主和注册用户的所有版本。
+0

Stackoverflow采取“最后更新获胜”的方法。如果两个人编辑同一个问题,那么第一个保存人员的更改将会丢失。我认为这就是你所推荐的内容,但这可能并不适用于短暂且比此处“慢”的内容。锁定内容是一种更明智的方法,但在网页设置中,您必须质疑,您不知道锁何时被放弃。 Joomla有这个问题。当我关闭我的浏览器时,文章将保持锁定状态,直到管理员发布它。 – cdonner 2009-12-09 03:32:37

+0

编辑它时锁定一个项目并在它被更改之前将其锁定,直到它获得主持人的批准。我赞成前者的“最后更新获胜”方法,但对于后者,如果在批准修订之前可以编辑该项目,我更喜欢。 – dtb 2009-12-09 04:02:07

1

我已经与几个主要的商业CMS的工作,而当它被批准,我不记得他们的任何工作流创建内容的物理副本。不过,我可以看出这是一个诱人的想法。您希望阻止未经批准的内容泄漏到公开内容等中,但我认为这样做不存在很好的技术上的理由(除非您期望将它分成已发布和未发布集合的内容有很多内容具有性能优势) 。

我不认为你的方法有什么特别的错误。但是你没有很好的理由复制数据。

+0

该模式不包含内容重复。一旦获得批准,新内容将被移至活动表格,并且活动表格中的前一个记录将被移至编辑表格。他们将被交换。 – Guy 2009-12-09 18:55:32