salesforce零基礎學習(一百一十六)workflow -> flow淺談

本篇參考:

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 TypeLaunched ByDescription

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.

 

上面表格是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,那就自己去評估吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章