tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Salesforceフローの勉強しました - Part 1 (画面フローについて)

また今度...また今度...と後まわしにし続けてきたSalesforceフローの使い方について勉強しました。自動更新系は基本Apexトリガに集約させたいと思っているので、後まわしにしていてもそこまで困ることはなかったのですが、さすがにそろそろちゃんと理解しないとということで時間作ってフローについて理解しようと思いました。


フローの勉強の仕方についてはSalesforce社がTrailheadにまとめてくれていますが、まずはテキストベースではなくて実際に動くものを見てそれを試してみたいな...と思ったので、YoutubeのSalesforce Developer Japanのチャンネルで公開されている動画を見て勉強しました。

Flow Builder を基礎からマスターしよう!〜フローのハンズオンと機能概要 - YouTube


動画の公開時期はSummer'22のころです。公開から9ヶ月ぐらい経っていますが、主要な部分は変わっていないと思いますので勉強用にはちょうどいいかと思いました。


動画の内容としては次のような感じになっています。(動画のAgendaより)

  • Flow Builder ハンズオン
  • Flow Builderの概要
  • フローの考慮店、その他の機能
  • フローのテスト・配布・監視
  • サービス(Service Cloud)のSalesforceフロー


フローを使うことで実現できる内容についてこの動画内で理解できるようになっていました。Trailheadのハンズオン組織で環境を作って動画の手順に倣って設定を試してみました。

ハンズオン: 画面フローの作成

今回作成する機能の概要

取引先ページに配置する取引先責任者登録を行える画面フローを作成する。
姓と誕生日を入力できる形で設定する。
必須エラーなどのエラー制御についても設定する。

フローの作成の基本

設定→プロセスの自動化→フローの手順でアクセスできる。


画面右上の新規フローボタンをクリックして作成開始。


今回作るのは画面フローなので種別の中から画面フローを選択した状態で進める。


自動レイアウトと手動レイアウトの二種類がある。最初は自動レイアウトから始めるのがわかりやすいとのこと。


+アイコンをクリックすると要素を追加していける。


要素のカテゴリは大きく3つ。

  • 相互関係 (英語表記だとインタラクション)
    • 画面、アクション、サブフローなど
    • アクションはメール送信やChatter投稿など。
  • ロジック
    • ループや分岐 (if処理)など
  • データ
    • 作成、更新、削除といった処理を宣言


変数の宣言は画面左側ツールボックスで設定。リソースという用語で管理されている。

フロー作成

要素を追加→画面を選択。新規画面の設定画面が表示されるので表示ラベルやAPI名など必要な設定を進めていく。


入力欄は左側のメニューの各種コンポーネントをドラッグ&ドロップで配置する。配置後にラベルやAPI参照名を指定。ここで指定したAPI参照名はフロー内の値の取得などの処理を作成する際に使われる。今回は姓と誕生日の入力コンポーネントを設定すればOK。サンプルでは表示ラベルとAPI名のみ入力しておけば他は設定不要。


コンポーネントの配置設定ができたら画面右下の完了ボタンをクリックすると画面の要素追加が完了。ここに制御を足していく感じでした。


次はレコードの作成要素を追加します。


まず表示ラベルとAPI参照名を設定するのはこれまでと同じ。次に「レコード項目の設定方法」で「個別のリソースおよびリテラル値を使用」を選択します。これを選択することでどのオブジェクトを作成するかの設定が追加されます。


その後は作成時の条件を指定します。まずは項目LastNameを選択。値の登録内容は入力コンポーネント配置時に設定した画面コンポーネントのAPI名で指定します。


姓と誕生日の登録設定を行い画面コンポーネントに入力された値で取引先責任者の作成ができるようになります。


これだけでは作成された取引先責任者が取引先と紐付きません。取引先との紐付けは次のように下準備が必要になります。


最初に新規リソースを作成を選択。


リソース種別はいろいろある。今回は変数を選択。


API参照名やデータ型を入力します。


フロー外部での可用性のころはLightningページやLightningコンポーネントから値を受けたり渡したりするのを許可するときに設定するもの。今回はLigthningページから取引先レコードIDの情報を受け取るので入力で使用可能にチェックをつけます。


これで値セット処理も設定完了です。



現時点で必要最低限の機能ですが、入力画面と作成処理の設定ができた状態となります。


一度画面右上にある保存ボタンをクリックしてここまでの設定を保存します。


実行ボタンをクリックするとこのフローの画面フローを表示できます。


ただし、この方法では取引先IDを渡すことができません。動作チェックしたい場合はデバッグボタンをクリックします。


用意した変数「recordId」への値指定ができるので、取引先のレコードIDをコピーして貼り付けます。


これで実際の取引先を対象に動作チェックを行うことができます。


必要な情報を入力して次へボタンをクリックすると・・


処理が実行されて完了のメッセージが表示されます。画面右側ではデバッグメッセージが確認できます。※画面フローのときはデバッグモードでも、実行した処理はロールバックされないので意識しておくこと。


想定どおりに動作することが確認できたら実際に取引先に配置して使ってみます。そのためにまずはフローを有効化する必要があります。画面右上に有効ボタンがあるのでクリックするだけで有効化できます。


フローコンポーネントを配置するとどのフローが対象か選択できるので、今回作成した画面フローを指定。その他にも必要な設定を行います。


Ligthingページを正しく保存できればフローコンポーネントが画面に表示されていることを確認できます。


あとは実際に動かして見るだけ。


ちゃんと取引先責任者が作成されることを確認できました。


ここまでが必要最低限のデータ作成を行える画面フロー作成のサンプルです。ここからエラーチェックや分岐処理も動画内で紹介されていました。

条件分岐の設定

サンプルとして誕生日が入力されていない場合に説明項目にコメントを登録する分岐処理を設定します。条件の分岐には決定の要素を追加して対応できます。


新規決定の画面で表示ラベルとAPI名を入力。それから実行条件を指定します。今回はinputBirthdateがnullの場合に実行条件となるように設定。


True/Falseはグローバル変数で用意されています。選択すると画面上はTrue/Falseの表示になります。


複数の分岐の場合は+アイコンで増やすことができます。(今回のサンプルでは不要)


完了ボタンをクリックして新規決定の登録完了です。フローの流れが次のようになります。


今回のサンプルの目的は以下の制御を実現する。
・変数を用意。誕生日が未入力の場合にその変数に「誕生日の確認が必要」とセット。
・レコード作成時にその変数を説明項目にセット。
※この内容は本来は数式の制御でも実現可能とのこと。あくまでどのような設定ができるかを覚えるためのサンプル。


変数の作成は新規リソースから。次のような感じで用意する。


作成したリソースは画面左側で確認、編集が可能。


用意した変数に値をセットするには割り当ての要素追加で対応します。


これで誕生日が未入力の場合に変数「inputDescription」に指定の文字列を値として保持できるようになりました。


※分岐のデフォルトの結果は通常通るルート。今回は誕生日が入力されていたら通るという制御。


ここまで設定できたらレコードを作成の要素のカスタマイズを行います。取引先責任者の登録条件に説明項目を追加するだけ。


フローの設定結果を保存します。すでに有効化しているフローなのでそのまま保存はできず、別名で保存→新規バージョンという感じで保存します。

障害発生時のパス設定

レコードを作成の要素をクリックすると障害パスを追加の設定が用意されています。


これで作成処理時にエラー発生したときの制御が可能となります。


エラーメッセージを出したいときは画面の要素を追加します。


表示テキストコンポーネントを配置してメッセージを出せる。


エラーメッセージの詳細はグローバル変数から取得できる。


これで障害発生時の制御も完成。保存→有効化でこのバージョンを適用させます。

動作チェック1

誕生日未入力で作成→作成されるが説明項目にメッセージが登録される。


想定どおりに動作することを確認できました。

動作チェック2

姓が未入力で進める。(システムとしての必須項目エラー)


固定のエラーメッセージとグローバル変数経由で取得したシステムエラーメッセージが画面に表示されることを確認。


障害発生時の制御もサンプルどおりに設定することができました。画面フローの基本的な設定方法について概ね理解できたかなと思います。次のハンズオンとして、ワークフローやプロセスビルダーのように自動処理系のレコードトリガフローがありますが、長くなったので続きは次の記事にまとめます。