salesforce学习笔记(2-1)- salesforce apex如何调用flow(流)

发布时间 2023-04-06 11:08:48作者: 乔木船长

随着Workflow Rule(工作流规则)和Process Builder(进程生成器)逐渐淡出Salesforce,Flow(流)势必成为Salesforce中低代码自动化的未来。

流的分类为:屏幕流,记录触发流,计划触发流,平台事件触发流,自动启动流(无触发器),记录触发的业务流程。种类不同,流启动方式也有所区别。
最近遇到的一个问题就是,Apex代码中应该如何调用Flow(流)呢?

自从Summer’14以后,便可以通过apex类来调用flow。使用Flow. Interview和start方法可以启动flow。
实现途径大致两种:

  • UI上的action动作(如Visualforce Page画面上的按钮动作)
  • flow:interview控件

这里我们选择通过VF page的按钮action或者定时方法来启动flow。

Flow情况如下:

 

 

 

Apex代码如下:

 1 public class FlowController {
 2     public void callFlow(){
 3         // 调用flow所需数据
 4         Account acc = new Account();
 5         acc.FirstName = 'Sapna';
 6         acc.LastName = 'Chandani';
 7         ......
 8         insert acc;
 9         
10         Map<String,Account> accMap = new Map<String, Account>();
11         leadMap.put('newAccount', acc);
12         // 通过Flow.Interview及start方法启动flow
13         Flow.Interview.Calculate_Discounts flow = new Flow.Interview.Email_Flow(accMap);
14         flow1.start();
15     }
16 }

VF Page代码如下:

1 <apex:page controller="FlowController">
2     <apex:form >
3         <apex:commandButton action="{!callFlow}" value="Start" reRender="text"/>
4     </apex:form>
5 </apex:page>

Apex定时方法来调用上述Apex方法也可启动flow:

1 global class scheduledFlow implements Schedulable {
2     global void execute(SchedulableContext sc) {
3         FlowController fc = new  FlowController();
4         fc.callFlow();
5     }
6 }

写在最后:

核心方法在于Flow.Interview方法的使用。

 

欢迎评论转发,如文中有问题欢迎指正!

Copyright © 乔木船长

博客主页:https://www.cnblogs.com/captainqiaomu/