Salesforce 如何使用来自外部服务的数据更新新联系人?

Salesforce 如何使用来自外部服务的数据更新新联系人?,salesforce,salesforce-lightning,Salesforce,Salesforce Lightning,我正在使用Salesforce Lightning模式,并希望使用配置非代码方法。我定义了一个外部服务 我试图实现的情景如下: 用户在Salesforce中创建联系人 使用来自新联系人的一些数据自动调用外部web服务 从外部服务检索相关数据 使用数据更新联系人 我的第一次尝试是创建一个记录触发流,该流在创建新联系人实体时被激活。然后,流能够在触发调用我的外部服务的操作之前分配相关变量。我遇到的问题是出现了错误“'You have uncommitted work pending.Please c

我正在使用Salesforce Lightning模式,并希望使用配置非代码方法。我定义了一个外部服务

我试图实现的情景如下:

  • 用户在Salesforce中创建联系人
  • 使用来自新联系人的一些数据自动调用外部web服务
  • 从外部服务检索相关数据
  • 使用数据更新联系人
  • 我的第一次尝试是创建一个记录触发流,该流在创建新联系人实体时被激活。然后,流能够在触发调用我的外部服务的操作之前分配相关变量。我遇到的问题是出现了错误“'You have uncommitted work pending.Please commit or or rollback before calling'error”,这导致了本文:

    因此,据我所知,问题是我无法在由联系人创建触发的流中调用外部服务

    然后我考虑创建一个调用流的流程。该流程在“记录更改时”启动,并将该记录设置为创建的联系人记录。然后,流程应该调用我的流,该流将执行实际的外部服务调用

  • 我的方法正确吗
  • 如何将变量信息从流程传递到流

  • 感谢您提供的任何见解

    限制存在,因为您正在创建一条新记录=您正在临时锁定数据库表(或者可能不是整个表,可能只有一行)。但您不能将数据库作为人质,让操作最多等待120秒,直到它成功/失败/超时。外部系统调用必须是独立的异步操作


    在process builder中,有即时和基于时间的操作。尝试将您的流量设置为基于时间的,即使在创建联系人后将其设置为0分钟。或者在流中也有类似的方法,我已经有一段时间没有用它们来处理严肃的事情了。

    谢谢您的回复。在流生成器中,我可以创建一个在保存记录后运行的流。因此,我希望在调用我的流时DB锁已经被释放。但显然不是,因此我现在考虑使用流程来触发流,而不是直接触发流的联系人创建。我还将研究基于时间的选项。它被插入=生成主键,一些自动编号(如oracle中的序列)增加,可能审计表(字段历史记录跟踪)填充。。。但整个交易尚未提交。如果调用出错,您会期望回滚,对吗?不希望发送电子邮件etcI现在已经尝试使用流程(由联系人创建触发)来激活流量,并在您的建议中添加了0小时延迟。联系人创建得很好,没有任何问题,但流仍然存在错误,我收到了电子邮件:错误发生:调用失败:调用失败,因为与流程、流或Apex操作相关的未提交更改挂起。提交或回滚工作,然后重试。有关更多信息,请联系您的Salesforce管理员。在这一点上,我的流非常简单,除了调用一个外部服务外,什么也不做。我还应该说,当我通过单击流设计器中的“运行”按钮隔离运行流时,它会完美地执行。:/out of ideas,抱歉。考虑交叉张贴到SalaSuff.StkExchange Engcom,如果你不需要任何编码,你可能会有更多的运气。