首页 > 解决方案 > 使用 ExecuteOfflineCommand 更有效地执行同步

问题描述

我想知道有没有办法识别 OfflineComamd 正在执行或内部标志或表示此命令已通过或标记已成功执行的东西。我在识别命令是否通过不稳定的互联网时遇到问题。我不断从数据库中检索记录并每次比较以查看是否已通过。但是由于我的应用程序的流程,我发现很难避免重复。是否有任何自动过程来确保自动执行命令或其他什么?

第二个问题,我可以使用 UITimer 检查 isOffline() 以确保表单上已连接互联网。服务器页面上是否有类似的东西,或者在哪里写查询以查看互联网是否断开连接。当控件移动到查询并且互联网断开连接时,我看到从表单页面打开的对话框被无限期冻结并且不会结束。我必须关闭并重新打开应用程序才能继续同步过程。同时我无法为对话框设置超时,因为我不确定完成同步过程需要多长时间。请指教。

扩展同一主题,但我创建了一个新问题只是为了更清楚地说明我的问题。 executeOfflineCommand 在 Android 上从存储执行时跳过命令

标签: codenameone

解决方案


无法知道连接是否会保持稳定,因为它需要了解未来。您可以像事务服务一样工作,服务器端使用两阶段提交的方法将离线命令作为事务处理。

在这种方法中,您有一个类似于以下的算法:

  • 客户端向服务器发送命令
  • 服务器为命令返回一个特殊的唯一 ID
  • 客户端要求服务器执行唯一 ID
  • 服务器确认命令已执行

如果前两个阶段没有完成,你就再做一次。可能发生的最糟糕的事情是服务器上的一些孤立命令。

如果第三个选项没有完成,你就再做一次。服务器知道它是否处理了命令,如果它已经被处理过,它只会确认它。


推荐阅读