与salesforce的双向同步(java)

时间:2013-05-05 19:18:15

标签: java web-services salesforce messaging

我们希望开始使用salesforce来管理销售联系人,但我们还希望在当前系统中保留一些与联系人相关的业务功能。

据我所知,这意味着我们需要双向同步?即,当salesforce发生任何变化时,我们需要在我们的系统上更新它,反之亦然。

我建议某种消息产品可以放在中间并重试失败的消息,因为我觉得没有它,事情会变得非常混乱?例如,当一个或其他服务停止时。

项目经理希望保持简单,并认为使用消息而不是实时点对点呼叫是过度的,但我觉得没有它我们将会陷入一个痛苦的世界。

有没有人有尝试双向同步的经验(实际上甚至单向遭受同样的风险?)

非常感谢您的见解..

2 个答案:

答案 0 :(得分:2)

我无法代表您的系统,但在Salesforce API一侧,请查看专为getUpdated()设计的getDeleted()data replication来电。 SOAP API doc有一个section,详细介绍了如何有效地使用它们。

答案 1 :(得分:1)

我们使用Jitterbit在Salesforce和计费系统之间实现双向同步。 Salesforce具有最后修改的字段,我们的文件系统也是如此(如果没有,系统应该具有此字段,在其SQL存储中向表中添加时间戳字段)。唯一重要的是选择其中一个密钥作为主密钥(SF_ID或其他系统的密钥),并在另一个系统中创建该密钥字段,因为它将用于冲突解决。该过程简单且多步,将所有已修改的SF数据加载到平面文件中,将所有已修改的辅助系统数据加载到另一个平面文件中,通过在公共密钥字段上比较两个文件来查找冲突,通知管理员有关冲突(如果有),并传播对另一个系统的所有非冲突更改。我们每10分钟运行一次这个过程,我们在循环运行之间存储两个系统上的最后一个时间戳,这样我们只记录在两个循环之间修改的记录。

如果两个用户同时进行编辑,您将遇到一个混乱并手动解决它,否则您将获得“最后保存的胜利”结果。

您还必须满足新规定,在SF方面使用upsert而不是更新(使用外部或SF键,具体取决于您在上面选择的内容),另一方面它取决于系统。