Flow中调用javascript

发布时间 2023-09-15 06:12:08作者: 平静寄居者

Salesforce的Flow中的Formula功能较弱,稍微复杂一点的功能,以前一般都调用Invokable的apex方法,但觉得需要调用服务端,效率不高。有些功能不牵涉到后台数据,完全可以通过Javascript来做。

但是一般情况下,只有lwc里才有javascript。而Flow不能直接调用lwc,只能加个Screen组件,但如果javascript不需要界面,这个方法就有些笨拙了。

最终考虑用local action来实现。所谓local action,其实就是一个aura组件,只不过不调用服务端。

先建一个aura组件,关键有两点:

1. cmp文件里,要注明implements="lightning:availableForFlowActions"  属性。

2. controller里要有invoke方法。

至于输入输出参数,先在cmp文件里设定

<aura:attribute name="foo" type="String" />
<aura:attribute name="bar" type="Boolean" />

然后在design文件里也设定

<design:attribute name="foo" Label="Input" />
<design:attribute name="bar" Label="Output"/>

然后在invoke方法里写处理逻辑:

let input  = component.get("v.foo");

component.set("v.bar", foo == null ? true : false);

最后在Flow里加上这个Local action即可。在action的属性里可以找到foo和bar两个参数。

需要注意的是local action的副作用是会提交事务。所以如果不希望提交事务,则不能用local action。