闪电流(4)结合Process Builder和Cloud Flow Designer

学习目标

完成本单元后,您将能够:

  • 描述可以使用流程和流程自动化的业务流程。
  • 定义流量变量是什么。
  • 建立一个迭代一组记录的流程。
  • 建立一个启动流程的流程。

当进程生成器不够时

Process Builder没有设计用于解决所有可能的用例,因此您可能会发现它可以自动化部分业务流程,但不是全部。例如,Process Builder不能:

  • 发布到社区Feed
  • 提交相关记录以供审批
  • 删除记录
  • 创建一堆记录并将它们相互关联
  • 执行复杂的逻辑

商品新闻:您不必在另一个工具中重建整个事物。配置流程中更复杂的功能,然后将流程操作添加到流程中。如果一个流程也无法满足您的需求,您或开发人员可以编写Apex来完成。然后将Apex操作添加到您的流程中。

克隆子记录

您被要求在机会闭幕时自动创建续约机会。更新应该是原始机会的克隆。我们可以在Process Builder中克隆记录,但我们也需要克隆产品并将它们与续订机会相关联。

在Process Builder中,您无法获取创建的记录的ID并在别处使用它。幸运的是,你可以在流程中这样做。我们建立一个克隆机会及其产品的流程,并且我们建立一个流程,在机会关闭时调用流程。

超越基础

在最后一个单元中,我们讨论了通过屏幕引导用户完成业务流程的流程。我们称之为屏幕流。您也可以构建自动启动的流程,这些流程像流程一样在后台运行。主要区别在于自动启动的流程不能具有需要用户交互的屏幕。因为它们没有屏幕,所以可以从后端事件(如进程和Apex类)调用自动启动的流。

建立一个Process Builder

我们不要创建另一个流程,而要建立在我们之前创建的那个流程上。

The Closed Won Opportunities process from an earlier unit

在Closed Won Opportunities过程中,使用此过滤条件添加名为Closed Won的标准节点。

字段
Opportunity > Stage Closed Won

我们无法在Process Builder中配置操作,因此我们保存并切换到Cloud Flow Designer。

建立一个Flow

从设置中,在快速查找框中输入流量,然后选择Flows,然后单击New Flow.

我们正在建立一个流程:

  • 克隆一个机会
  • 克隆机会产品
  • 将克隆产品与克隆机会联系起来

为此,流程需要来自流程的一些数据:原始机会和机会产品。

流量变量有四种类型。

类型 可以存储…
变量 单一的价值 “Hello World”, true, 6
sObject 变量 单个记录的一组字段值 Rating, ID, and Name for an account
Collection 变量 相同数据类型的多个值 [1, 2, 3, 5, 8, 13]
sObject 集合变量 多个具有相同对象的记录的一组字段值 Rating, ID, and Name为多个帐户

为了存储商机和商机,我们创建了一个sObject变量和一个sObject集合变量。当我们稍后将流程作为流程添加为流程时,我们会将数据传递到这些变量中,因此它们必须允许输入访问。

  1. 在资源选项卡上,双击sObject Variable并设置这些值。
    Unique Name opportunity
    Input/Output Type Input Only
    Object Type Opportunity
  2. 双击sObject Collection Variable并设置这些值。
    Unique Name oppProductsOriginal
    Input/Output Type Input Only
    Object Type OpportunityLineItem

克隆机会

当流程被流程调用时,{!opportunity}变量将包含来自原始机会的字段。在我们克隆这个机会之前,让我们更新一些领域。这样,续约机会不会以闭合起点开始。
  1. 从Palette选项卡中,将Assignment元素拖到画布上。
  2. 将其命名为 Update Opportunity 字段。
  3. 将stage设置为Prospecting.
    1. 对于变量,选择 SOBJECT VARIABLES | opportunity | StageName.
    2. 对于运算符,请选择 equals.
    3. 对于Value,选择 PICKLIST VALUES | Prospecting.
  4. 从今天开始设置 CloseDate 从90天开始。
    1. 点击 Add Assignment.
    2. 对于变量,输入Close并选择 SOBJECT VARIABLES | opportunity | CloseDate.
    3. 对于 Operator, 符,请选择 equals.
    4. 对于 Value, 选择 CREATE NEW | Formula 设置这些值。
      Unique Name ninetyDays
      Value Data Type Date
      textbox TODAY() + 90
  5. 单击 OK 两次。
  6. 要创建机会,请将快速创建元素拖放到画布上并设置这些值。
    Name Clone Opportunity
    Variable SOBJECT VARIABLES > opportunity
  7. 单击“更新机会字段”底部的节点,并将其拖至“克隆机会”。

机会创建后,该变量({!opportunity.Id})中的ID字段将填充新记录的ID。我们稍后参考该价值将新产品与更新机会联系起来。

克隆机会产品

现在来了有趣的部分:克隆机会产品。
当流程被流程调用时,{!oppProducts_Original}变量将包含来自原始商机产品的字段。在我们克隆这些产品之前,我们需要将它们与更新机会相关联,而不是原始产品,并将每种产品的总价格设置为空。 (机会产品不能同时拥有单价和总价。)

更新集合中项目的唯一方法是使用循环遍历集合。

循环一次只能引用一个项目。因为sObject集合变量存储多个项目,所以您需要一种方法来引用给定的项目。循环变量是循环遍历集合时使用的变量。当循环开始时,集合变量中的第一项被复制到循环变量中。循环内的任何元素将作用于循环变量。一旦迭代结束,循环变量将被下一个项目的值覆盖。等到收集中没有剩下物品时为止。

收集项目被复制到循环变量中。循环变量数据被更新,然后被复制以在另一个集合中创建一个新项目。循环变量然后由原始集合中的下一个项目的副本更新。

A collection item is copied into a loop variable. The loop variable data is updated and then copied to create a new item in another collection. The loop variable is then updated by a copy of the next item in the original collection.

提示

  • 要更新循环内的项目字段值,请更新循环变量。然后,在该项目的迭代完成之前,将循环变量作为另一个集合变量中的项目添加。否则,当下一个项目加载到循环变量中时,这些更改将被覆盖。
  • 避免在循环内添加动作,如创建或更新记录。这是达到极限的绝对方法。
    在循环中,我们更新每个项目的商机ID和总价格,然后将该项目添加到新的收集变量中。循环之后,我们使用新的收集变量来创建机会产品。
  1. 将Loop元素拖放到画布上,并设置这些值。
    1. 将其命名为 Iterate Over Products.
    2. 为了循环,选择 SOBJECT COLLECTION VARIABLES | oppProducts_original.
      此选项告诉循环将项目分配给循环变量时迭代哪个集合。
    3. 对于循环变量,使用这些值创建一个sObject变量,然后单击OK两次。 
      Unique Name oppProduct_loop
      Object Type OpportunityLineItem
  2. 将克隆机会连接到循环。
  3. 将循环变量的机会标识设置为新机会的标识及其总价格为空。
    1. 将Assignment元素拖到画布上。
    2. 将其命名为 Update Opportunity Product.
    3. 点击 Add Assignment, 然后配置这些分配。
      Variable Operator Value
      SOBJECT VARIABLES > oppProduct_loop > OpportunityId equals SOBJECT VARIABLES > opportunity > Id
      SOBJECT VARIABLES > oppProduct_loop > TotalPrice equals Leave blank
      Flow assignments that set the loop variable's Opportunity ID and Total Price fields.
    4. 点击 OK.
  4. 将循环连接到更新机会产品。验证集合中的每个值都设置为 for each value in the collection.
  5. 将更新后的循环变量添加到新的sObject集合变量中。
    1. 将另一个Assignment元素拖到画布上。
    2. 将其命名为 Add to New Collection.
    3. 对于变量,使用这些值创建一个sObject collection variable,然后单击OK
      Unique Name oppProducts_new
      Object Type OpportunityLineItem
    4. 对于 Operator, 选择 add.
    5. 对于 Value, 选择 SOBJECT VARIABLES | oppProduct_loop.
    6. 点击 OK.
  6. 连接更新机会产品以添加到新集合。然后将添加到新集合连接到循环。
  7. 要克隆商机产品,请将Fast Create元素拖放到画布上并设置这些值。
    Name Clone Products
    Variable SOBJECT COLLECTION VARIABLES > oppProducts_new
  8. 将环路连接到克隆产品。
The finished flow

完成流程

你快完成了!要完成流程,请指定启动元素并激活流程。
  1. 将鼠标悬停在“更新商机字段”的右上角,然后点击 Set a Start element设置开始元素.
  2. 保存流程,并将其命名为Renew Opportunity.

关闭Cloud Flow Designer,并激活流程,以便在Process Builder中引用它。

完成过程

现在我们已经完成了流程的构建,让我们确保当机会被关闭时流程开始流程。记住我们在流程开始时创建的变量吗?在此过程中,我们使用它们将机会记录及其子项中的值传递给流程。
  1. 打开 Closed Won Opportunities 流程.
  2. 在Closed Won 条件组中,添加类型为Flows且名称为Create Renewal的即时操作。
  3. 对于流,请选择续 Renew Opportunity.
  4. 在设置流量变量下,添加两行,设置这些值,然后单击Save.
    Variable Type Value
    opportunity Field Reference Select the Opportunity record that started the process
    oppProducts_original Field Reference Opportunity > OpportunityLineItems
  5. 确保始终评估两个标准节点。
    当赢得一个机会时,应该始终创建更新。 但是,如果机会也很高,我们需要确保签订合同草案和后续任务。
    1. 拖动Closed Won和High Value之上的Closed Won标准节点。
    2. 对于Closed Won条件组,请单击STOP。 选择 Evaluate the next criteria, 然后保存。

The final process

要开始使用该过程,请激活它。