如何撤消webapp中的操作?

时间:2014-10-06 01:15:39

标签: web-applications crud undo

是否有任何标准方法可以为CRUD Web应用程序实现撤消功能?

我有一个用户登录的基本cms,对各种复杂性的模型进行更改并在页面之间导航。

2 个答案:

答案 0 :(得分:1)

不,它必须是自定义实现。 Web应用程序是无状态的,并且默认情况下不管理"默认"所需的任何形式的状态。撤消。 你必须以对你的域有意义的方式对它进行编程。

答案 1 :(得分:0)

没有标准的方法。正如TGH所提到的,Web应用程序通常是无状态的。

但是,解决这个问题的一种方法是保持两个并行的数据模型:一个是实时版本,一个是历史记录。因此,例如,如果您的“帖子”关系看起来像:

post
  attributes
    author
    title     Text
    body      Text
    timestamp TimestampTZ
  conditions
    pk (author, title)
    fk author

你可以添加另一个像:

post_history
  attributes
    revision  Serial (per post)
    author
    title
    body      Text
    timestamp TimestampTZ
  conditions
    pk (revision, author, title)
    fk post

这将跟踪帖子的历史记录,除非用户想要撤消版本,否则不会显示。

此模型几乎可以应用于任何数据(个人姓名,翻译字符串,帐户记录等),但在维护关系定义修订时可能会变得复杂(例如,当您跟踪链接中的更改时)其他关系,例如工人驾驶哪辆车的历史,或改变组织中的名册任务等等。

您必须更加谨慎地设计数据以实现此类型的回滚或撤消系统,但它肯定是可行的。首先问问自己,将此功能作为功能实现的努力是否值得花时间 - 通常答案是“是的,但仅限于A或B情况,但不适用于整个系统”。

请注意,Web应用程序仍然是无状态的,但现在您将基于事件的历史记录视为他们自己谨慎的时间片。