【Salesforce】フロー種別・リソース・フロー要素

フローについて紹介していく企画第二弾。

今回はフローを構築するにあたって欠かせない3つのポイント「フロー種別」「リソース」「フロー要素」についてご紹介していきます。

第一回目「フローの概要とできることできないこと」はこちら

 

■フロー種別

フロー種別は「フローをどこから(いつ)呼び出すか」に関わる設定で、新規作成時に一番初めに選択するものとなります。

 

・画面フロー:画面上から手動で呼び出す。
例)ホーム画面にレコード作成画面を配置する

 

・レコードトリガフロー:レコードの作成、更新時に呼び出す
例)取引先レコードの更新時

 

・スケジュールトリガフロー:指定した時間で呼び出す
例)〇/〇から毎日/毎週〇時

 

・プラットフォームイベントトリガフロー:プラットフォームイベントを受信したときに起動する
例)外部システムからのイベント(処理)など通知を受信したときに起動する

(参照)
・プラットフォームイベントの定義と管理
https://help.salesforce.com/s/articleView?id=sf.platform_events.htm&type=5

 

・自動起動フロー(トリガなし):別のプロセスから呼び出す

例)Apexから呼び出す

 

 

■リソース

リソースは「(変数や定数など)処理に参照できる値」を指します。
ツールボックスやフロー要素の設定内でリソースを作成できます。

 

リソース 説明
変数 フロー内で変更できる値を保存。

複数の値を一つの変数に保存することも可能(コレクション変数)

ユーザのメールアドレスを取得して変数に格納
定数 固定値を保存 固定値0を格納
数式 数式を使用した変数を定義 日付から曜日(テキスト)を格納
テキスト

テンプレート

リッチテキストまたはプレーンテキストを選択可能。他のリソースを差し込み可能。 メール通知をするための文面を格納
選択肢 ラジオボタンや複数選択リストなどの選択肢をひとつずつ定義 次の画面に遷移する際の分岐のために選択肢を格納する
コレクション選択肢セット 取得した既存レコードやApex定義のコレクションから選択肢のセットを生成 商談レコードを取得しておき、選択肢を格納する
レコード

選択肢セット

レコードを選択する 商談レコードを検索し、格納する
選択リスト

選択肢セット

選択リスト項目をそのまま利用 商談オブジェクトの選択リスト型カスタム項目を選択肢として表示し格納する
フェーズ フェーズ(ステージ)を定義できる 画面フロー内で入力の進行状況を表示させる

 

ーrecord Id

画面のボタンなどからフローがスタートしたとき、表示しているレコードIDを取得するにはrecordId変数を作成する

・変数のAPI参照名は必ずrecordId

 

・データ型は「テキスト」の場合はレコードIDのみ、「レコード」を選ぶと全ての項目値を取得可能

 

・フロー外部での可用性:入力で使用可能

 

(参照)
・recordId の作成

 

ーグローバル変数

リソースを作成しなくても参照できるシステム指定の変数

【主なグローバル変数】

・$Record:レコード作成時のトリガフローやバッジ処理において対象となっているレコードの情報を参照できる
例){!$Record.Name}でレコードの件名を取得

・$Record__Prior:フロー開始前のトリガレコード(保存前のレコード)を参照できる
※フローではPRIORVALUE()、ISCHANGED()、ISNEW()などの関数をサポートしていないので、$Record__Priorで代替する
例) ステータスが承認待ち→承認済みに変わったかどうか確認するために{!$Record_Prior.Status__c}でステータス変更前の値を取得する

・$User:実行ユーザの情報を参照できる
例){!$User.Id}でフローを実行しているユーザIDを参照

・$Flow:実行中のフロー処理の情報を参照できる
例){!$Flow.CurrentDate}でフロー実行時の日付を取得

 

(参照)
・フローのリソース: グローバル変数

 

ーグローバル定数

システム指定の定数

 

【主なグローバル定数】

 

・{!$GlobalConstant.True}:Trueを指す

・{!$GlobalConstant.False}:Falseを指す

・{!$GlobalConstant.EmptyString}:空の文字列(Blank)を指す
※テキスト項目やリソースの値などを空白のままにするとnullとみなされるため、空の文字列として処理する場合はこの定数を設定する

 

 空白の条件⇒変数名 次の文字列と一致する {!$GlobalConstant.EmptyString}
 nullの条件⇒変数名 null  {!$GlobalConstant.True}

 

(参照)
・フローのリソース: グローバル定数

 

■フロー要素

フロー要素は処理内容を指します。
キャンバス上で+ボタンをクリックすると追加することができます。

 

 

ー画面要素/データ要素

 

要素 説明
画面 画面表示やユーザからの入力を受け付ける場合に使用
レコードを作成 新規レコードを作成
レコードを更新 レコードを更新
レコードを取得 検索条件に合致するレコードを取得し変数に格納
レコードを削除 レコードを削除

 

ーロジック要素

要素 説明
割り当て 変数に値を格納
決定 条件分岐をさせる(if文)
一時停止 フローを途中で停止させる。

※指定された時刻やプラットフォームイベント時に再開させる

ループ コレクション変数内の値に対して反復処理を繰り返すためのロジック(for文)

反復の度にループ変数内の項目を一時的に保存する。

コレクション並べ替え コレクションの並べ替え。

※コレクション件数の最大値を設定可能

※画面表示や、ガバナ制限回避などで使用

コレクション検索条件 コレクション変数内で値を検索し、格納する

ーアクション要素

要素 説明
コアアクション アクションを呼び出して実行する。

例)[Chatterに投稿]や[メールを送信]、[承認申請]など

Apexアクション Apexクラスを呼び出す。

※いずれかのメソッドに@InvocableMethodアノテーションが付加されているクラスのみ。

※Apexクラスがレコードの作成・更新・削除をする場合は、フローのトランザクションが完了するまで実行されず、フロー終了時や画面、一時停止などを実行したときに完了する。

メールアラート 既存のメールアラートを呼び出して実行する
サブフロー 他のフローを呼び出して実行する。

※呼び出せるサブフローは画面フローと自動起動フロー

 

■まとめ

今回はフローを構築するにあたって欠かせない3つのポイントを整理しました。
実際の画面上は非常に視認性が高く、設定しやすい印象です!
ただそれぞれ制限事項や考慮事項があるので一つ一つ注意しながら設定していきたいですね。