salesforce零基础学习(一百一十六)workflow -> flow浅谈

2022-09-16 19:21:24 浏览数 (1)

本篇参考:

https://help.salesforce.com/s/articleView?id=sf.migrate_to_flow_tool_considerations_workflow.htm&type=5

https://help.salesforce.com/s/articleView?id=sf.flow.htm&type=5

https://trailhead.salesforce.com/en/content/learn/superbadges/superbadge_process_automation

写在开篇:Flow应该是18年开始使用,当时的Flow也并没有现在这么强大,而且当时稳定性也间歇性存疑,所以项目中能使用trigger的坚决不使用SF的automation 工具,workflow / process builder / flow在一个全新的SI项目基本不太考虑。但是随着现在的项目成本考虑以及既有系统设计,很多就已经包含了 process automation tool以及客户可能更推崇作为公司资产,所以想法归想法,实践归实践。随着SF的release传出 workflow / process builder后续都要被flow所代替,所以了解和学习flow以及了解如何去迁移至flow还是有必要的,因为flow所涵盖内容太多,本篇就很浅入浅出以  record-triggered flow来讲一下。

Flow Type

Launched By

Description

Screen Flow

Quick action Lightning page Experience Cloud site, and more

Screen Flows provide a UI that guides users through a business process.

Autolaunched Flow

Another flow Apex code REST API

Autolaunched Flows automate business processes that have no UI. They have no trigger and they run in the background.

Triggered Flow

Time Data change Platform event

Triggered Flows are autolaunched by a trigger you specify. They run in the background.

  • Quick action
  • Lightning page
  • Experience Cloud site, and more

Screen Flows provide a UI that guides users through a business process. Autolaunched Flow

  • Another flow
  • Apex code
  • REST API

Autolaunched Flows automate business processes that have no UI. They have no trigger and they run in the background. Triggered Flow

  • Time
  • Data change
  • Platform event

Triggered Flows are autolaunched by a trigger you specify. They run in the background.

上面表格是Flow的类型,我们本篇只讲 Triggered Flow.

 一. Flow Builder & Flow组成部分

1. Flow Builder作为flow的创建和构造工具,组成可以分成三部分

 Button Bar: 在你构建流程时管理你的流程。包含以下的一些功能

  • 在自动布局中,点击选择元素,然后在你想选择的每个元素上点击选择元素节点。然后你可以点击复制元素按钮,将所有选定的元素复制到剪贴板上 。
  • 要访问流程版本的属性,如上下文和API版本,点击滚轮形状设置按钮。
  • 选择 "自动布局 "或 "自由格式"。自动布局是所有新流程的默认值。
  • 如果该流程有警告或错误,会出现显示警告图标(The Show Warnings icon)或显示错误图标(The Show Errors icon)。要查看细节,点击图标。
  • 要运行正在打开的流程版本的最近一次保存,请点击运行。如果该流程版本包含子流程元素,其引用的流程的活动版本将被执行。如果被引用的流程没有活动版本,那么子流程元素将运行其引用的流程的最新版本。
  • 在 "运行 "按钮的左边,你可以看到该版本的活动或非活动状态,以及它最后一次被保存的时间。
  • 要测试已打开的流程,点击View Test,然后点击Create。设置测试参数和断言。
  • 点击Debug按钮来调试正在打开的最近一次保存的Flow。定义输入变量的值以及设置 rollback change以便调试不影响数据,查看有关流程运行的调试细节,并使用这些细节来排除错误。
  • 要使你的用户可以使用当前的流程版本,点击 Active按钮。每个流程在同一时间只能有一个版本被激活。
  • 要保存你的流程,请点击保存,或将其保存为新的版本或新的流程,请点击另存为。

 Canvas: 在画布上建立一个流程。当你在画布上添加元素并连接它们时,你可以看到你的流程图。在自动布局中,点击连接器上的添加节点来添加一个元素,或者点击一个元素来查看该元的选项,如复制元素或删除元素。

Toolbox:

  • 在自由格式中,使用元素选项卡来添加新的元素,如屏幕和创建记录。
  • 在自由格式和自动布局中,使用管理器选项卡来创建变量、阶段、选择和其他资源以用于你的流程。或者查看你添加的所有元素和资源的列表。

除了以上,还需要记住一下快捷键  ctrl /,这个快捷键可以显示出所有的 Flow中的快捷键操作。

2. 我们拆分一下Flow,将每个Flow可以分成三部分了解

  • Element:代表 Flow可以执行的一个操作,比如读写数据,展示信息,根据当前 flow user来收集数据,执行逻辑或者处理数据
  • Connector:代表 Flow在运行时定义的一个有效的路径
  • Resource:代表在整个 Flow流程中可以引用的值

二. Flow Trigger Explorer 以及 Flow Running User

1.通过Flow Trigger Explorer 更好的管理 Flow的顺利。一个 Object可能有多个 Flow操作,不同的设置顺序可能影响不同的结果。举个例子,都是针对before的场景,如果一个针对某个字段A的值会设置字段B,有一个针对某个字段C会影响字段A的值。这种的肯定需要 flow先执行后者在执行前者,否则就会导致结果的不正确。通过 Flow Trigger Explorer就可以更好的管理一个表的所有的 Flow的执行顺序。

2. Flow Running User:流程的运行用户是启动该流程的用户。运行用户决定了在用户上下文中运行的流可以对Salesforce数据做什么。

对于在用户上下文中运行的流程,运行用户的Profile和Permission Set决定了该流程的对象权限和字段级访问。当一个流程试图创建、读取、编辑或删除Salesforce数据时,它将执行运行用户的权限和字段级访问。例如,如果运行用户没有账户对象的编辑权限,而流程试图更新账户记录,就会发生错误。如果运行的用户没有编辑账户对象上的Rating字段的权限,而流程试图更新该字段,会发生错误。

需要注意的一点: running user和 running mode不是一个概念。flow的running mode分成 system mode和 user mode,只有在满足 user mode情况下,才会基于 running user来走运行的上下文权限。system mode会忽略这些权限相关。

FLOW LAUNCH METHOD

DEFAULT CONTEXT

Apex

Depends on code

Experience Cloud site

User

Embedded as a visual component inside a custom Aura component

User

Embedded as a visual component inside a Visualforce page

User

Custom button

User

Custom link

User

Direct link

User

Flow action

User

Lightning page

User

Process built in Process Builder

System context without sharing

Record-triggered

System context without sharing

Rest API

User

Run from an Apex method of a custom Aura component controller

Depends on code

Run from an Apex method of a Visualforce controller

Depends on code

Schedule-triggered

System context without sharing

Web tab

User

三. 基于workflow角度迁移到 Flow的demo举例

workflow主要的action有四个,但是 outbound message在项目中用的很少,所以我们更关注前三个。salesforce针对 workflow -> migrate to flow其实已经有一个工具做自助的转化,即 Migrate to Flow功能。

 针对大部分的workflow都可以一件转化,从而减少了自己配置的成本,当然,他配置的也不一定是100%的正确,比如包含 RecordType相关的配置,转换就可能有问题,包含task,并且task设置的时间是明天等,就会提示转换不了,所以下面主要举例几个特殊的case转换场景或者实施的方式。

1. 使用 CONTAINS 以及创建 Task

这种 migrate to flow 工具是没法直接转换的,自己实施Flow的话,需要有几点注意或者以下几个步骤。

Start -> meet specific industry -> generate task -> end

其中,start没啥特殊需要处理的,只需要action设置

针对 contains / includes等函数,只需要使用 Flow的Decision即可很好的实现。

 针对创建Task的步骤,只需要使用 Create Record 组件即可。这里有两个点, tomorrow使用了一个formula的变量,Constant_Follow_Up是一个常量

这里只举例tomorrow的实现,点击左侧的New Resource,资源类型选择formula,数据类型选择Date即可。

这样便实现了一个生成 Task的Flow。

2. 使用record type作为判断条件

这样migrate to flow的情况下,尽管不会报错,但是没法直接使用,我们需要对他进行一下修改。操作顺序为:

start -> record type correct and annual revenue correct -> update field -> end

这里还是会用到 Decision的组件,我们看一下实现。

通过这个条件就可以来实现 record type的使用。

3. 使用父的字段的值作为判断条件

我们看一下Flow的实现

这里主要看一下 Decision的部分。

4. 使用日期相关的变量作为条件

针对Flow来实现,除了需要使用Decision组件以外,还需要使用一下 Email Alert.

这里针对日期进行一下描述如何实现。我们可以先实现一个变量,实现一下today

再创建一个变量实现一下 NEXT_WEEK,使用 FORMULA类型

然后使用变量设置一下 Decision

5. 使用 Global Variable,比如 Custom Setting。

如果我们使用 Migrate to Flow来转换,可以正常转换,但是check的情况下会报错。

这显然是不太友好的,所以我们使用resource去跟踪这个custom setting的值。

 这里我们看一下变量的写法,使用formula类型,data type选择boolean。

Decision我们只需要用这个变量判断即可。

总结:篇中主要讲了一下workflow常用场景中没法通过 Migrate to Flow 工具来转换的几个demo,篇中如果有错误地方欢迎指出,有不懂欢迎留言。需要强调的是,Record Triggered Flow相对来说已经是很容易的入门的了,process automation响应了SF的 low / no code的宗旨,后续在项目中所占比例可能还会不断提升,所以感兴趣的小伙伴可以借此学习一下 Screen Flow,还是很有趣的~~~至于项目中是否要用到 Flow,那就自己去评估吧。

0 人点赞