前回の記事の続き。YoutubeのSalesforce Developers Japanのチャンネルでフローの動画を見ながら用語や概要について勉強しました。今回の記事は動画で紹介された用語などのメモをまとめた記事です。
基本の3つ概念
基本となるフローの構成はリソース、フロー要素、フロー種別の3つ。
リソース
- Flow Builder全体で参照できる値
フロー要素
- 画面 / ロジック / アクションの記述
- 相互関係
- ロジック
- データ
フロー種別
- フローをどこから呼び出すか?
- 画面フロー
- 自動起動フロー
主なリソース
- 変数
- コレクション(リスト・配列構造)も可能
- 定数
- 固定の値
- 数式
- 数式項目と同じような処理が可能。
- 関数も使用できるがすべての関数が使えるわけではない。
- テキストテンプレート
- メールの本文などで利用。
- 選択リスト系
- 以下のようないくつかの設定方法あり
- 項目の選択リスト値の設定をそのまま利用
- レコードから選択リスト値を生成
- 独自に選択リスト値を設定。
- 以下のようないくつかの設定方法あり
主な要素
相互関係
- 画面
- 画面を設定
- アクション
- メール送信やChatterへの投稿、Apexの呼び出しなどを行える。
- サブフロー
- 他のフローを呼び出せる。
ロジック
- 割り当て
- 変数へ値をセットする。
- 決定
- if文のような条件分岐処理。
- ループ
- コレクション変数を繰り返し処理
- データ
- レコードを作成、etc…:Salesforceのレコードの取得、作成、更新、削除
- 要素のAPI参照名がレコードの取得の場合、レコードの変数になる
- 要素のAPI参照名レコードの作成の場合、レコードのIDになる。
- レコードを作成、etc…:Salesforceのレコードの取得、作成、更新、削除
主なフロー種別
画面フロー
- 画面フロー
- 画面のあるフロー
- 自動起動フロー
- レコードトリガフロー
- レコードの作成、更新、削除時に実行
- スケジュールトリガフロー
- フローをスケジュールして実行。特定の日時、定期的な実行が可能。
- レコードトリガフロー
フローの基本、その他
主なグローバル変数
$Flow
- $Flow.CurrentDateTime:現在日時
- $Flow.FaultMessage:エラーメッセージ
$Record
- $Record.項目名:トリガやスケジュール処理での対象レコードの値
- $Record__Prior
- $Record__Prior.項目名:更新トリガでの変更前のレコードの値。
$User
- $User.Email:フローを起動したユーザのメールアドレス
- $User.Id:フローを起動したユーザのId
フロー実行時のレコードへのアクセス権
フローをどの権限で実行するかを指定
- ユーザまたはシステムコンテキスト
- 起動方法によってい実行権限が変わる。
- システムコンテキスト共有なし
- システム管理者権限で実行され、すべてのレコードにアクセスできる。
エラー発生時の処理の設定
- レコード処理やアクションでエラーが発生する可能性のある要素に障害パスを追加する。
- エラーメッセージは$Flowグローバル変数のFaultMessageで取得可能 ($Flow.FaultMessage)
- エラー発生後に”前へ”ボタンで戻り、入力し直すことも可能
- 障害パスを設定しなかった場合にはエラーが発生したことだけユーザに表示される。
用語の確認
- フローインタビュー
- 1回1回実行されたフローのこと
画面に設定できる主なコンポーネント
画面フロー
入力用
- 各種データ型:テキスト、数値、通貨、日付など
- ファイルのアップロード:添付ファイルなどをアップロード
- 表示画像:画像の表示
- その他:選択リスト、ラジオボタンの他、複雑な機能を持ったコンポーネントもある。
表示用
- セクション:レイアウトをセクションに分割して項目を適切に配置できる。
- 表示テキスト:表示専用のテキスト項目。入力はできない。
画面で可能な主な設定
画面フロー
画面
- 次へ前へなどのボタンの表示・非表示
- ボタンのラベルの変更
- 画面内のコンポーネント
- 入力必須にする
- 入力規則を設定しエラーを表示する(期待する値を条件に指定)
- 条件に応じて項目の表示非表示を切り替える
- 入力必須にする
変数を他の機能と受け渡し可能にする
- フロー外部での可用性の設定のこと。
- LightningページやApex、その他のフローから値を受け取ったり、渡すことを許可する設定
※この機能は他のフローsyツオ別でも利用可能です。
表示されているページのレコードのIDを取得する
- 変数名(API参照名)をrecordIdにする
- ※Iだけ大文字
- ※クイックアクションに対応するため
- データ型はテキストかレコード
- テキストではレコードIDのみ、データ型をレコードにするとID以外の項目の値も渡せる。
- 入力で使用可能にチェックする
フローを最適化オプション
高速項目更新
- アクションと関連レコードオプションより10倍高速
- トリガしたレコード以外のレコードへの作成、更新、削除はできない。
- フローを起動するレコードの更新以外のアクションを実行することはできない。
- 新規レコードのIDなどレコードの保存後に設定される項目にはアクセスできない。
- アクションと関連レコード
- 上記の制限はなく、ほかのレコードの作成・更新・削除、アクションの実行などが行える。
レコードトリガフローその他の機能
変更前の値の取得
- $Record__Priorグローバル変数 (例. $Record__Prior.Amount : 変更前の商談金額)
トリガの実行順序の指定
- 1-2000 (小さいほうが先に実行される)
- 1,2,3とつけるよりは10,20,30や100,200,300とつけることであとから差込しやすい。
スケジュールの指定方法
スケジュールの設定
- 開始日・開始時間
- 頻度
- 1回のみ
- 毎日
- 毎週(開始日と同じ曜日に実行)
- 頻度
メモ
・毎月1日に実行したい場合など上記だけでは設定することができません。
・ただし、頻度を毎日に設定し、数式でその日が月の何日目かを算出し、決定要素を使って実行したい日の場合には処理をすすめるようにすることで、対応できることがあります。
スケジュールトリガフローの考慮点
- 対象レコード1県ごとにフローインタビューが起動
- 例えば100件の対象レコードがあれば100回起動
- $Recordグローバル変数で処理しているレコードにアクセス
考慮すべき制限
- 24時間あたりのスケジュールトリガフローインタビューの最大数は以下のうち大きい方:
- 250,000
- 組織内のユーザライセンス数 × 200の大きい方の値
- スケジュール実行で処理する対象のレコードの条件を指定できる
- 例). 処理対象フラグがONの取引先など。
プロセスビルダーのスケジュール実行
- 日付項目の前後X日(時間)でプロセスが実行される日時を指定
- または現在日時からX日(時間)後に実行日時を指定
フローのスケジュール実行
- スケジュール済みパスを追加でプロセスビルダーのようなスケジュール実行が可能
- スケジュール済みパスを設定できるのはトリガの条件によって異なる。
- ※スケジュールトリガフローとは別の機能
Salesforceフローのユースケース
自動化ツールの選択
画面を使った視覚的な処理 → Flow Builderを使う。
- 画面を使ってユーザがデータを入力しながら進める処理
バックグランドプロセスの自動化→Flow Builder (推奨) / プロセスビルダー(既存制御の変更) / Apex
- レコード更新時などに自動的にシステムが実行
承認の自動化→承認
- 休暇申請など承認を行うプロセス。
- 承認プロセスには承認、却下、コメントの入力、ロックなどの機能あり。
- Salesforceフローから承認プロセスを呼び出すこともできます。
- 起動条件はフローで設定。以降は承認プロセス側ということができる。
ログインフロー
- フローでユーザログイン時の処理を制御
使用例
- 電話番号、住所などのデータを収集して更新する。
- 利用規約の同意、アンケートの回答
- ハードウェア、整体認証などの標準以外の多要素認証の実装
- 業務時間外のログインでの通知
ログインフローの動作
- ログインフローを呼び出す前にまずユーザが認証されている必要がある。既存の認証プロセスに変わるものではない。
ログインフローの設定
- 設定→ログインフロー
フローをつかった外部システム連携
- プロットフォームイベント:非同期
- 外部オブジェクト:同期
- カスタムLightningコンポーネント:同期&非同期
- 拡張外部サービス:同期
- Apex:同期&非同期
フローインタビューの一時停止
- 画面フローの機能。一時停止ボタンを画面に表示してそこから利用。
- フローを一時停止し、後で再開する機能
- お客様と電話で応対中に途中で切れてしまった場合などに利用
- 停止理由をコメントできる。
- ホーム画面のコンポーネントなどから再開
- [フローの一時停止をユーザに許可]にチェックが必要
- 設定→プロセスの自動化設定で設定できる。
制限、ベストプラクティス
いくつかある制限の例。
一般的なフローの制限
- フローあたりのバージョン:50
トランザクション単位のフローの制限
- 発行されるSOQLクエリの合計数:100
- 発行されるDMLステートメントの合計数:150
メモ
同じトランザクション内ではApexのガバナとフローの実行数は両方をあわせたものになります。
→Apexでクエリ実行とフローでクエリ実行の合計値が制限でチェックされる。
フローのベストプラクティス
- 構築を始める前にフローを計画する。
- Sandboxなどのテスト環境でフローを構築する。
- Salesforce IDをハードコードしない。
- フローの最後までタイ式してデータベースを変更する。
- 実行中のユーザが逆報告に進むタイミングを制御する。
- エラーハンドラを提供する。
- 早めに頻繁に保存する。
- フローの順列を可能な限り多くテストする。
- トランザクションのDML操作のあとに外部オブジェクトにアクセスしない。
- ループ内でレコードの更新、削除を行わずループの外でまとめて処理する。
フローのテスト
- Apexの単体テストのようなことができる。
- アサーションを設定して処理が正常終了するか確認
フローのでバッグ
- 別のユーザとしてフローを実行するオプション(プロセスの自動化設定で有効化が必要。)
- 入力変数を指定して実行できる。
- 他の機能から渡される値をテストで渡せる。
フローデバッグ
- フローでどのような処理がおこなわれたか詳細を確認
- これにより想定どおりに動作しない場合には、どこに問題があるか把握できる。
- デバッグといってももロールバッグモードでない場合、レコードは処理されていくので注意。
- ロールバックモードは自動起動フローのみ設定う可能
- レコードトリガフローは常にロールバックモード
画面フローを使用できる主な場所
- Lightnignページ
- オブジェクト固有の悪書
- アクション&おすすめコンポーネント
- ユーティリティバー
- Experience Cloud
エラーメール受信者の設定
- フローでエラーが発生した場合、エラーの詳細が記載されたメールが送信される
- デフォルトの受信者はフローを最後に変更したシステム管理者
- プロセスの自動化設定[プロセスまたはフローのエラーメールの送信先]で受信者を指定することが可能
サービスのSalesforceフローとは (Salesforce Flow for Service_
- オペレーターの誰もが標準化された正しいステップで対応を行えるようにする。
- 生産性の向上
- サービス品質の向上
- サービスのSalesforceフローで利用できる機能
- アクション&おすすめ
- Next Best Action
- ※どちらもLightningコンポーネントがあります。
アクション&おすすめ
- レコードの種類によって必要な画面フローを表示する機能
- チャネル(チャット、電話)によってデフォルトの表示を変更可能
- デフォルト以外のどの画面フローを表示するかはRecordActionで制御
- 購入商品などの情報も条件に使える。
RecordAction
- レコードをフローやクイックアクションに関連づけるオブジェクト
- RecordActionはフローなどで作成する
- 問い合わせ種別が階層状況だったら、それ用のフローと関連づけるRecordActionをフローで作成
- 例えば配送状況を確認するケースに、配送確認のフローを関連づける。
Next Best Action
オペレーターが次に何をすべきか画面に表示
①おすすめオブジェクト
- 表示する情報を登録医
- 表示する画像や実行するフローなどを設定
②Strategy Builder
- ルール定義の専用UI
- フローのような画面で外部システム連携も含め、ルールベースで表示するおすすめを設定
③表示用コンポーネント
- おすすめを表示する画面パーツ
- おすすめをクリックすると画面フローが起動
動画で紹介のあった用語や考え方はこんな感じ。Service Cloud向けのフローの使い方のところもいい内容でした。