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