0

有没有办法使用 Rally wsapi 实现原子事务。我知道事务意味着连续请求之间的状态,但 REST 显然是一个无状态协议。所以这可能是个问题。

portfolioitem/feature如果我有它的最新版本,需要能够拉一个然后立即写回它。我有一个自定义字段portfolioitem/feature,将由多人同时编辑,我需要确保每次更新都以正确的顺序发生。

因为我无权访问 Rally 的服务器,所以我必须做所有这些客户端,我不知道该怎么做。我也将在 Rally SDK 中这样做。

4

2 回答 2

1

我不认为 WS API 支持原子事务。不支持更新作为一个原子事务发生的场景,例如,如果其中一个更新失败,它们都会被回滚。在您提到的示例中,每个更新都将是一个不同的事务,如果在不同用户更新同一工件时发生空中冲突,其中一个用户将收到并发错误。

于 2014-07-21T20:13:43.980 回答
0

我和 OP 在同一条船上,唯一的区别是读取和后续写入之间可能会经过几个小时。有趣的是,当我尝试更新记录时,我似乎只会遇到并发错误,而我的另一笔交易正在进行中。当我使用旧版本更新记录时,我没有看到任何异常,即其他人从我下面更改的记录。

一旦它成为一个问题,我将尝试解决这个问题。选择的方法是在每次 POST 之前强制链接一个 GET,如果我 GET 的记录的 VersionID 与我存储在内存中的记录不匹配,则抛出异常。如果不匹配,它将刷新本地记录(因此,视图)并提示用户重新提交他们的更改。是的,这对用户来说会很不方便,但在我的应用中,大多数更改只需单击一下即可,所以这是合理的。

我也想知道是否有更好的方法来解决这个问题。有人会假设每条记录都有一个 VersionID,它将在服务器端处理,并得到客户端 WsapiProxy 的适当支持。也许我遗漏了一些明显的东西,比如显式获取 VersionID?

于 2014-07-30T05:27:39.837 回答