我在 Salesforce 中的记录触发流程遇到了一个奇怪的问题。
基本上,每当在 Salesforce 中创建或更新记录时,我们都希望向外部 API 发送一条消息。问题是只有创建的记录在流程中成功运行,更新的记录不会运行。我们看到一条消息说
触发记录不满足条件要求,所以流程没有运行
使用 HTTP Callout 会导致一系列问题,从而导致此问题。首先,它们不能位于“立即运行”路径下,否则我们会收到此错误。
记录触发的流程无法执行在立即运行的路径中进行外部标注的操作。
因此我们创建了另一个计划路径,时间源为“创建或更新记录时”,时间源设置为0,因此它将立即运行。
但这给我们带来了另一个问题,因为路径需要输入条件,如果我们尝试将条件要求设置为“无”,我们会收到此错误:
此流程有一个计划路径,其时间源基于记录的创建或更新时间。将流程配置为仅在更新记录以满足条件要求时运行。
因此,我们设置了一个始终为真的条件要求,例如“Id 不为空”,并将流程设置为“每次更新记录并满足条件要求时”运行。但是当我们尝试保存它时遇到此错误:
此流程有一个计划路径,其时间源基于记录的创建或更新时间。将流程配置为仅在更新记录以满足条件要求时运行。
最后,我们将流程设置为“仅当更新记录以满足条件要求时”运行。
但这给我们带来了问题,因为只有当进入条件从不满足要求变为满足要求时,流程才会运行。例如:仅当记录上的 Id 从 null 更改为非 null 时才会运行。
因此更新未运行,因为 Id 字段未更改。但由于 HTTP Callout 的限制,我看不到任何绕过这些限制的方法来使 Flow 每次都运行。有没有解决的办法?或者我可以设置一个进入条件来解决这个问题?
该流程设计为仅在记录更新且条件要求发生变化时触发。但是,您的要求是让流程在每次更新时执行,无论条件要求是否发生变化。
一种可能的解决方案是在记录上使用公式字段,该公式字段在每次更新记录时都会更改(请参阅“在公式中引用记录类型的提示”)。该字段可以是时间戳或每次更新时递增的计数器。这样,流的条件将始终得到满足,从而触发 HTTP Callout。
例如,您可以使用以下公式创建一个名为
LastModifiedDateFormula
的公式字段:
TEXT(LastModifiedDate)
然后,设置流的条件以检查
LastModifiedDateFormula
是否不为空(它始终为空)。这将确保您的流程在每次更新时运行。