Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web applications 如何撤消webapp中的操作?_Web Applications_Crud_Undo - Fatal编程技术网

Web applications 如何撤消webapp中的操作?

Web applications 如何撤消webapp中的操作?,web-applications,crud,undo,Web Applications,Crud,Undo,有没有标准的方法来实现CRUD webapps的撤销功能 我有一个基本的cms,用户可以登录,更改各种复杂的模型,并在页面之间导航。不,它必须是一个自定义实现。Web应用程序是无状态的,默认情况下不会管理“默认”撤消所需的任何形式的状态。 你必须以一种对你的领域有意义的方式围绕它进行编程。没有标准的方式。正如TGH提到的,web应用程序通常是无状态的 不过,解决这个问题的一种方法是保持数据的两个并行模型处于活动状态:一个是实时版本,一个是历史记录。例如,如果您有一个“post”关系,它看起来像:

有没有标准的方法来实现CRUD webapps的撤销功能


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

不,它必须是一个自定义实现。Web应用程序是无状态的,默认情况下不会管理“默认”撤消所需的任何形式的状态。
你必须以一种对你的领域有意义的方式围绕它进行编程。

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

不过,解决这个问题的一种方法是保持数据的两个并行模型处于活动状态:一个是实时版本,一个是历史记录。例如,如果您有一个“post”关系,它看起来像:

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应用程序仍然是无状态的,但现在您有了一个基于事件的历史记录,作为它们自己的离散时间片。

实际上没有标准。您必须保留一个包含足够信息的操作记录,以便能够“撤销”这些操作。