首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用公共项更新不同列表的设计方案

用公共项更新不同列表的设计方案
EN

Software Engineering用户
提问于 2020-06-05 07:31:29
回答 1查看 60关注 0票数 -1

对于我们必须在系统中实现的复杂工作流,我需要一些设计建议:

在基本级别上,该应用程序允许用户处理她所关心的“项目”的“列表”。

要在任何列表上工作,用户可以“锁定”列表,并可以编辑/保存/解锁等等。在用户界面中,没有人可以在用户界面中打开相同的列表以进行编辑,而该列表是锁定的。

我需要设计的新场景是谎言

,但现在我们需要实现另一个用户可以通过更新

的列表间接更新由其他人用公共项锁定的列表的特性

此操作将允许任何已锁定列表的用户对该列表中的某个项进行某些更新,使其能够对包含该项的每个列表进行“鱼雷”更新(即使它们被另一个用户锁定)。该项目必须全面更新,如果用户正在编辑包含该项目的列表,则所有其他用户都应该在屏幕上看到该更新。

所以我的设计是:

  • 用户-锁列表-1,并决定“鱼雷”更改也影响列表-2,列表-3。
  • 假设list-2当前被用户-b锁定,但没有人正在处理列表-3。
  • 任务处理列表-1也试图锁定list-2和list-3。
  • 它成功地锁定了list-3并进行了更新(这部分很容易)。

问题是:它如何处理被用户-B锁定的列表-2?

  • 它可以发送带有列表id和任务处理的消息,它可以选择它并排队进行处理,但是当消息正在传递时,列表2处理可能已经完成,而该任务不再关心它了吗?

我真的很难在这里找到一个好的解决方案,而不是引入大量的种族条件。

EN

回答 1

Software Engineering用户

发布于 2020-06-05 08:04:53

什么是清单?它是关于一组项目如何相互组织的元数据。

什么是物品?相关属性的Nexus。

这个问题其实是两个问题:

  • 如何管理列表的更新。
  • 如何管理项目的更新。

更新列表

看来你已经控制住了。

更新项

看起来你的目标是一个乐观的锁,A.K.A.第一次穿最好的衣服。

每个人都可以在本地编辑该项目,当他们去保存它时,第一个通过它的人被接受了,其他人得到一个礼貌的“它已经更新了,再试一次”。

你可以用一些额外的信息来修饰最后一部分,比如改变了什么,也许是自动合并。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/411077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档