是否有任何标准方法可以为CRUD Web应用程序实现撤消功能?
我有一个用户登录的基本cms,对各种复杂性的模型进行更改并在页面之间导航。
答案 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应用程序仍然是无状态的,但现在您将基于事件的历史记录视为他们自己谨慎的时间片。