随着Salesforce官方宣布2025年12月31日后将不再对Workflow Rule(工作流规则)和Process Builder(进程生成器)提供官方支持和Bug修复,Flow(流)势必成为Salesforce中低代码自动化工具的未来。
流的分类为:屏幕流,记录触发流,计划触发流,平台事件触发流,自动启动流(无触发器),记录触发的业务流程。种类不同,流启动方式也有所区别。
最近遇到的一个问题就是,Apex代码中应该如何调用Flow(流)呢?
自从Summer’14以后,便可以通过apex类来调用flow。使用Flow. Interview和start方法可以启动flow。
实现途径大致两种:
- UI上的action动作(如Visualforce Page画面上的按钮动作)
- flow:interview控件
这里我们选择通过VF page的按钮action或者定时方法来启动flow。
Flow情况如下:
Apex代码如下:
public class FlowController {
public void callFlow(){
// 调用flow所需数据
Account acc = new Account();
acc.FirstName = 'Sapna';
acc.LastName = 'Chandani';
......
insert acc;
Map<String,Account> accMap = new Map<String, Account>();
leadMap.put('newAccount', acc);
// 通过Flow.Interview及start方法启动flow
Flow.Interview.Calculate_Discounts flow = new Flow.Interview.Calculate_Discounts(accMap);
flow.start();
}
}
VF Page代码如下:
<apex:page controller="FlowController">
<apex:form >
<apex:commandButton action="{!callFlow}" value="Start" reRender="text"/>
</apex:form>
</apex:page>
Apex定时方法来调用上述Apex方法也可启动flow:
global class scheduledFlow implements Schedulable {
global void execute(SchedulableContext sc) {
FlowController fc = new FlowController();
fc.callFlow();
}
}
总结:
核心方法在于Flow.Interview方法的使用。
Copyright © 乔木船长
个人主页:乔木船长
欢迎转发点评和指正!