我正在为高流量应用开发Salesforce集成,我们希望能够自动化将记录从Salesforce导入到我们的应用程序。要明确我不是在Salesforce方面(即Apex)工作,而是在另一个应用程序中使用Salesforce Rest API。
第一个想法是使用创建记录时的截止时间,我们会根据申请人在上次民意调查中的创建时间来增加每次轮询的时间。很快意识到这对此无效。查询中可能还有其他过滤器,可能包括Salesforce中的状态字段,例如,只有在设置了某个状态后才能导入记录。这会使检查创建时间或类似的东西变得不可靠,因为较旧的记录以后可能与我们的自动导入相关。
我的下一个想法是每隔几个小时轮询Salesforce API以查找记录。为了避免两次导入相同的记录,我能想到的唯一方法是跟踪我们已经尝试导入的ID并使用这些ID来执行NOT IN条件:
SELECT #{columns} FROM #{sobject_name}
WHERE Id NOT IN #{ids_we_already_imported} AND #{other_filters}
我现在最担心的是Salesforce是否对WHERE子句的长度有限制。通过一些研究,我发现实际上存在一些局限性:
我考虑的下一件事是查询以查找Salesforce中满足其他过滤条件的所有ID,而不检查ID本身。然后我们可以获取ID列表并删除我们已经跟踪的ID列表,找到一个较小的IN条件,我们可以设置它来查找我们实际需要的记录上的所有数据。
但这似乎仍然不完全可靠。我看到一个查询只能返回2000行,并且只有一个偏移量高达2000.如果我们已经导入了2000条记录,那么第一个查询可能没有我们想要导入的任何必要行,但是我们无法将其偏移以获得由于这些限制,相关的行。
由于这些限制,我无法找到一种可靠的方法来查找要导入的相关记录,因为我们已经导入的记录数量增加了。我觉得这将是Salesforce集成的常见用法,但我找不到任何相关内容。如果我们达到高音量而不必担心问题,我怎么能这样做呢?
答案 0 :(得分:0)
不确定您的所有要求是什么,或者解决方案是否需要通用,但您可以做一些事情。