本篇参考:
https://help.salesforce.com/s/articleView?id=sf.customize_functions_begins.htm&type=5
https://help.salesforce.com/s/articleView?id=sf.flow_ref_operators_condition.htm&type=5
虽然做了salesforce开发也有一些年,但是因为salesforce的生态过于庞大,平时用的有一些局限性并且很多可能直接基于既有经验进行开发,然而既有经验有一些可能因为概念模糊或者其他原因导致错误,从而引发一些不必要的低级错误。本篇就是这样的一个场景。 在查看后续的内容以前,先问自己两个问题:
1. BEGINS / CONTAINS 函数是否区分大小写?
2. Starts With / Contains 操作符是否区分大小写?
接下来,我们以两个Flow的例子来进行展开。 这里创建两个Queue,我们看到他们一个大写,一个小写。
我们创建一个Flow,Flow中创建两个formula字段,通过BEGINS函数来判断。通过Decision组件根据Sales和Service区别来更新Description字段,内容为 Owner is Sales/Service Queue.
我们创建了两条数据,一个是Owner是 Sales Queue,一个是 service queue。
我们对Flow进行测试。我们发现Sales 的分支没有执行update, service的分支执行了update。
之所以出现这种事情,原因就是BEGINS函数区分大小写,因为Queue的Name是Sales,函数用的是 sales,所以导致这个Formula的值是false,导致了后续的逻辑没进去。
我们对这个进行一下优化,可以使用 LOWER或者UPPER函数,这样就可以避免了大小写的问题了。
重新Debug了一下,结果是正常的。
接下来我们看一下操作符。虽然BEGINS函数区分大小写,但是如果使用Flow提供的Starts With的情况下,是不区分大小写的。这里也是我之前基于经验的点。我将两者进行了混淆,认为 Starts With不区分大小写,BEGINS函数应该也不区分。我们在做一个Flow,如果Description以小写的owner开始,则将Description更新一个固定的值: Updated to fixed value.
我们将这两个Flow启用,然后看一下效果。我们看到当Lead Owner变成 Sales Queue以后,第一个Flow执行了逻辑,将Description变成了 Owner is Sales Queue,随后第二个Flow执行,因为第二个flow的Starts With函数不区分大小写,所以又将Description变成了Updated to fixed value。
总结:通过这个demo,我们可以看到BEGINS/CONTAINS函数是区分大小写的,但是如果我们使用了Salesforce内置的 Starts With/Contains 操作符,则是不区分大小写的。这两者容易混淆,写完以后一定要测试,切勿根据自己的经验盲目自信。篇中有错误的地方欢迎指出,不懂的欢迎留言。