通过Webservice保持2个系统同步的最佳方法

时间:2015-11-30 20:41:42

标签: web-services api synchronization

我们有一个允许用户向代理机构提交表单的系统。客户端登录,选择表单,填写表单,然后提交。简单。 表单包含添加到数据库的详细信息,例如地址和部件,以便用户可以维护(创建,更新,删除)地址簿或部件列表,并从表单中的下拉列表中选择它们。这样他们就不必在每次填写表格时重新输入所有内容(他们每天填写几张)。 接口方面已经运行了很多年,但现在我们有一个客户想要自动化一些东西,并能够通过Web服务创建表单。 实现添加/更新/删除很容易。我遇到的问题是如何使两个系统保持同步。

客户端已在自己的数据库中拥有其地址/部件列表。我当时认为他们最初必须向我们提供数据,以便我们可以验证地址/部件并将其添加到我们的数据库中。因此,当他们将地址或部分传递给我们时,我们需要根据一组密钥定义唯一性,例如公司,地址,邮政编码,地址国家和一组密钥(如零件代码,关税,零件国家。 使用此密钥,我们将知道这是否是新地址/部件,并在他们通过API向我们发送表单数据时将其添加到我们的数据库中。 更复杂的是,如果他们碰巧更新了他们的字段并通过“创建表单”API调用发送它,我们的结束会将其检测为新地址/部件并创建新记录,因为组合键中的字段本来会改变的。随着时间的推移,这可能会导致一些重复,但略有不同(请注意,每个新地址/部分都会被标记为工作人员验证)。创建表单后,他们就可以在我们的系统中查看它。但现在如果他们想要编辑地址或部分,因为有几个“重复”,他们不知道哪个是他们应该选择的“正确”地址/部分。

我的想法是,我们基本上希望他们向我们发送“正确的”数据并避免重复,因此当我们进行初始质量验证/插入我们的数据库时,我们可以返回ID(来自我们的数据库记录),以便他们可以添加额外的表格中的列,并将我们的ID与其各自的地址/部分相关联。任何新创建的部件都会对我们的系统进行API调用,以便在我们的数据库中创建相同的部件并返回ID,以便它可以关联。如果部件在其末尾更新,他们将使用存储在其数据库中的ID(我们的记录ID)并进行API调用以更新我们数据库上的相关记录。如果他们删除了一个部件,他们会进行API调用以在我们的最后删除它。为了保持一切清洁,当他们进行“创建表单”API调用并传入地址/部件详细信息时,他们必须传入相关的ID(来自我们在其末尾存储的数据库记录),因为我们的表单记录存储了相关的地址/部分ID因此在“编辑表单”视图中,该记录将在下拉列表中预先选择。

有更好的方法吗?在考虑如上所述的API方法之前,我考虑让他们通过API调用从我们的数据库中提取数据(地址/部件列表),但是可能会出现几个同步问题。如果他们在最终更新数据,它们将被他们提取的数据覆盖。另一个问题是如何定义唯一性。因为可能有几个部件具有相同的部件代码,相同的关税,但可能是不同的国家。或者不同的组合,例如相同的零件代码,相同的关税,相同的国家,但另一个领域是不同的。因此,如果他们通过“创建表单”API传递地址或部分,我们需要知道它是新的还是仅仅是一个更新,它变得复杂,有多个键和几个组合所以我认为ID会是最好的方法(如果我们可以让他们将我们的ID参考存储在他们的结尾......)。

非常感谢对此的任何见解以及最佳实施方法。

谢谢!

0 个答案:

没有答案