[10分で試す]画面フローの「画面アクション」(summer’25)

technologies

ヤマノウチです。画面フローに「画面アクションを設定」というプロパティが追加されていたので試してみました。

簡単に言うと、画面フローにおいて「次へ」ボタンなどで進めなくても、画面内で別フローを呼び出すことができる機能、とでもいうべきでしょうか。

今までであれば、画面に入力した内容をもとに結果を得て画面表示をしたい場合は前述のように「次へ」進めて、新しい画面で表示する、と言う形がスタンダードでした。あるいは、LWC等で開発を行うか、ですね。

分かりやすい例としては、検索キーワードを入力して、一覧に表示する、といった以下のような流れです。

1:画面1→検索キーワードを入力する
2:レコードを取得→入力した検索キーワードでオブジェクトを検索する
3:画面2→データテーブルで表示をする

以前のままだと、検索結果に思った結果出なかった場合は画面1と2を往復する必要があったのですが、「画面アクション設定」を使えばその必要もなくなる、というわけです。

対象の設定箇所をみると、フローの設定する入力内容が表示されます。なるほど、画面フローとは別の自動起動フローが必要ということですね。

ささっと上記の例のイメージのものを取引先で作ってみました。

作成イメージとしては、「テキストボックスに検索キーワードを入れて、データテーブルを入力のたびに更新する」です。

※このサンプルについて、データを探す、と言う観点だと、ルックアップコンポーネントがあったりしますし、データテーブルだと検索バーがあったりするので似たようなことができなくはないので、あくまでオブジェクトにアクセスしてデータを取り直したいようなユースケースをイメージしていただけると幸いです。

1:自動起動フローで検索機能をつくる

サブフローとして画面フローから呼び出すフローです。中身はこんな感じです。今回は取引先を検索してみます。

1-1:「入力で使用可能」なテキスト型変数を用意します。変数名は「strWord」とします。

1-2:1-1で作成した検索ワードで「レコードを取得」します。今回は取引先名を検索対象項目とします。

表示ラベル:取引先を取得
API参照名:getAccount
オブジェクト:取引先
取引先レコードを絞り込み
 項目:取引先名
 演算子:次の文字列を含む
 値:strWord

1-3:レコード変数(コレクション)を作成します。レコード型で、「複数の値を許可(コレクション)」、出力で使用可能にチェックします。

API参照名は「records」にしました。

1-4:「割り当て」を追加して、「レコードを取得」の内容を1-3で作成した「records」にセットします。

1-5:フローが完成です。「取引先検索」「AccountSearch_Sub」という名前をつけて保存しました。

2:画面フローを作る

フローの中身はこんな感じです。

検索画面の仕上がりイメージ。コンポーネントは下記手順の中で順次置いてください。

2-1:画面コンポーネントを配置します。

表示ラベル:検索画面
API参照名:frmSearch 

2-2:検索ワードを入力するテキストコンポーネントを配置します。

表示ラベル:検索ワード
API参照名:txtWord

2-3:画面コンポーネントの「画面アクションを設定」を設定する

画面アクションを設定:取引先検索(SearchAccount_Sub)
表示ラベル:取引先検索
API参照名:CallAccountSearchSub
アクション実行設定を定義
strWord:含むにトグルを変更して「txtWord」を設定

2-4:最後にデータテーブルコンポーネントを配置します。

API参照名:dtAccounts
表示ラベル:取引先リスト
データソースの設定→ソースコレクション:CallAccountSearchSub.Results.records
列の設定:ID、取引先名
詳細→再アクセス画面の値:「入力を更新してフローの他の場所での変更を組み込む」 ←ここ忘れないように。

3:動かしてみる

デバッグで動かしてみましょう。
サンプルデータに現場の生々しさが出てますが気にしないでください。

結果の中で絞り込むにあたって検索に「カスタム通知」と入れてみましょう。

ちゃんと動いてますね。

所感

まず前提として、この検索機能を作るだけであれば代替手段はいろいろあるので、あまりフォーカスしないようにしておきましょう。重要なのは、画面の中でサブフローを呼び出して、画面内にサブフローの結果を反映することができる、と言う点です。

これを基準に応用していくのがよさそうですね。

ちなみに、画面アクションは複数設定できそうなので、近々試してみようと思います。

サブフローはApexやagentforceを呼び出すようなパターンもありかも?入力の検証(エラーチェック)をコンポーネントの数式頼りにせず、サブフローやApexで複雑な処理にする、ということもできそうな気がします。

アイデア次第で今までできなくてあたりまえだったことができそうな機能なので、有効に活用してみてください。

最後までお読みくださり、ありがとうございました。

Related posts