via pixabay.com
はじめに
今回はWinter'24のリリースによって追加されたフローの新要素である「変換」要素をご紹介します。
フローで複数のレコードを扱う際は、コレクションとしてレコードを取得し、ループでコレクション内のレコードを1件ずつ処理することが多いかと思います。
しかし、「変換」要素によって、場合によってはループ処理を使わなくても簡単にコレクションが処理できるようになりましたので、実際に使用してみた内容を共有させていただきます。
フローで複数のレコードを扱う際は、コレクションとしてレコードを取得し、ループでコレクション内のレコードを1件ずつ処理することが多いかと思います。
しかし、「変換」要素によって、場合によってはループ処理を使わなくても簡単にコレクションが処理できるようになりましたので、実際に使用してみた内容を共有させていただきます。
フローの「変換」要素とは
フローで取得したデータをレコード型、テキスト、数値、通貨、ブール型、日付、日付/時間などのデータ型、 Apex 定義型にマッピングして変換する要素となります。
例えば、以下のような処理を「変換」要素で実行することができます。
・レコードコレクションを同じまたは別のオブジェクトのレコードコレクション変数に割り当てる
(例)見積品目レコードコレクションを注文品目レコードコレクションに割り当てる
・レコードコレクションの件数または項目の値の合計値を数値または通貨型変数に割り当てる
(例)ケースレコードコレクションの合計件数を数値型変数に割り当てる
・レコードコレクション内のレコードの項目の値をテキスト型のコレクション変数に割り当てる
(例)取引先コレクション内の取引先名の値をテキスト型コレクションに割り当てる
・Apexで取得したデータをレコード型変数に割り当てる
(例)Apexで外部から取得した注文データを注文レコードコレクション変数に割り当てる
例えば、以下のような処理を「変換」要素で実行することができます。
・レコードコレクションを同じまたは別のオブジェクトのレコードコレクション変数に割り当てる
(例)見積品目レコードコレクションを注文品目レコードコレクションに割り当てる
・レコードコレクションの件数または項目の値の合計値を数値または通貨型変数に割り当てる
(例)ケースレコードコレクションの合計件数を数値型変数に割り当てる
・レコードコレクション内のレコードの項目の値をテキスト型のコレクション変数に割り当てる
(例)取引先コレクション内の取引先名の値をテキスト型コレクションに割り当てる
・Apexで取得したデータをレコード型変数に割り当てる
(例)Apexで外部から取得した注文データを注文レコードコレクション変数に割り当てる
フローの実装
文字だけでは具体的にどんな要素で何が便利なのかイメージしづらいと思います。
そこで以下のシナリオに沿って「変換」要素を使った場合と使わなかった場合のフローをそれぞれ作成し、「変換」要素の使い方と便利さを確認していきましょう。
そこで以下のシナリオに沿って「変換」要素を使った場合と使わなかった場合のフローをそれぞれ作成し、「変換」要素の使い方と便利さを確認していきましょう。
シナリオ
カスタムオブジェクトの予実管理オブジェクトで年月単位で予算と実績を管理しています。
予実管理オブジェクトには、予算と実績を判定する「区分」、「年月」、「金額」の項目があり、以下のように予算と実績を登録します。
予算:年度初めに月単位でデータローダ等で一括登録
実績:毎月1日に成立した前月分の商談オブジェクトレコードの合計金額を集計して登録
今回はスケジュールフローを使って、実績レコードを作成します。
予実管理オブジェクトには、予算と実績を判定する「区分」、「年月」、「金額」の項目があり、以下のように予算と実績を登録します。
予算:年度初めに月単位でデータローダ等で一括登録
実績:毎月1日に成立した前月分の商談オブジェクトレコードの合計金額を集計して登録
今回はスケジュールフローを使って、実績レコードを作成します。
予実管理オブジェクトイメージ
「変換」要素を使用した場合のフロー
「変換」要素を使用した場合、スケジュールフロー全体の処理の流れは以下のようになります。
①毎日0時にフローが起動
②フロー起動日が1日かどうか「決定」要素で判定
③「レコードを取得」要素で前月分の成立した商談レコードを取得
④「変換」要素で③で取得した商談レコードの合計金額を集計
⑤④で集計した合計金額をもとに「レコードを作成」要素で予実管理の実績レコードを作成
①毎日0時にフローが起動
②フロー起動日が1日かどうか「決定」要素で判定
③「レコードを取得」要素で前月分の成立した商談レコードを取得
④「変換」要素で③で取得した商談レコードの合計金額を集計
⑤④で集計した合計金額をもとに「レコードを作成」要素で予実管理の実績レコードを作成
「変換」要素を使用したフローの全体像
それではそれぞれの処理内容について詳しく説明していきます。
まず、以下の2つの処理についてですが、スケジュールフローが起動できる頻度は「1回のみ」「毎日」「毎週」となっており、毎月毎に起動することができません。
そのため、毎日フローを起動させ、フロー起動日の日付が1日かどうかを「決定」要素で判定し、1日の場合のみ実績レコードを作成するようにします。
①毎日0時にフローが起動
②フロー起動日が1日かどうか「決定」要素で判定
まず、以下の2つの処理についてですが、スケジュールフローが起動できる頻度は「1回のみ」「毎日」「毎週」となっており、毎月毎に起動することができません。
そのため、毎日フローを起動させ、フロー起動日の日付が1日かどうかを「決定」要素で判定し、1日の場合のみ実績レコードを作成するようにします。
①毎日0時にフローが起動
②フロー起動日が1日かどうか「決定」要素で判定
続いて実績レコードのもとになる前月分の商談レコードをコレクションとして取得します。
前月分の商談レコードをコレクションとして取得したら、「変換」要素を作成してコレクションの合計金額を集計します。
「変換」要素を作成すると、「ソースデータ」と「対象データ」を選択する画面が表示されます。
「変換」要素では、「ソースデータ」で選択したデータを「対象データ」で選択したデータ型に変換するため、今回はそれぞれ以下のように設定します。
ソースデータ:③で取得した商談レコードのコレクション
対象データ:通貨
「変換」要素を作成すると、「ソースデータ」と「対象データ」を選択する画面が表示されます。
「変換」要素では、「ソースデータ」で選択したデータを「対象データ」で選択したデータ型に変換するため、今回はそれぞれ以下のように設定します。
ソースデータ:③で取得した商談レコードのコレクション
対象データ:通貨
「ソースデータ」と「対象データ」を選択したら、「ソースデータ」と「対象データ」の対応付けを設定します。
取得した商談レコードコレクション内にあるレコード全件の「金額」項目の合計を集計するためには、以下のように一番上の「商談取得」と記載されたコレクション名をクリックします。
そして、対象データの通貨項目をクリックします。
取得した商談レコードコレクション内にあるレコード全件の「金額」項目の合計を集計するためには、以下のように一番上の「商談取得」と記載されたコレクション名をクリックします。
そして、対象データの通貨項目をクリックします。
すると、「変換を追加」画面が表示されます。
この画面ではコレクション内のレコードの集計方法を選択することができます。
現時点では集計の種別として、以下の2つを選ぶことができます。
①合計:コレクション内のレコードの指定した項目の値の合計
②計数:コレクション内のレコードの件数の合計
今回は商談の「金額」項目の合計を集計したいため、「集計の種別」では「合計」を選択し、変換する項目では「Amount(金額)」を選択します。
この画面ではコレクション内のレコードの集計方法を選択することができます。
現時点では集計の種別として、以下の2つを選ぶことができます。
①合計:コレクション内のレコードの指定した項目の値の合計
②計数:コレクション内のレコードの件数の合計
今回は商談の「金額」項目の合計を集計したいため、「集計の種別」では「合計」を選択し、変換する項目では「Amount(金額)」を選択します。
結果、商談コレクションと通貨型の項目の対応付けが設定され、最終的に以下のような画面となります。
以上で「変換」要素の設定は完了です。
以上で「変換」要素の設定は完了です。
最後に「レコードを作成」要素を使用して、予実管理オブジェクトの実績レコードを作成します。
予実管理オブジェクトの「金額」項目に対して、リソースとして「変換」要素が表示されるため、今回作成した「商談の合計金額集計」を選択します。
予実管理オブジェクトの「金額」項目に対して、リソースとして「変換」要素が表示されるため、今回作成した「商談の合計金額集計」を選択します。
以上で、「変換」要素を使用したフローが完成したため、実際に動作確認を行ってみます。
現在、予実管理オブジェクトには2024年9月の実績までしか登録されていないため、フローをデバッグして10月の商談レコードを集計し、実績レコードを登録します。
現在、予実管理オブジェクトには2024年9月の実績までしか登録されていないため、フローをデバッグして10月の商談レコードを集計し、実績レコードを登録します。
現在の予実管理レコード一覧
10月に成立した商談
フローを以下のようにデバッグします。
問題なくフローのデバッグが完了しました。
予実管理オブジェクトを確認すると、商談レコードが集計され、10月の実績レコードが作成されています!
予実管理オブジェクトを確認すると、商談レコードが集計され、10月の実績レコードが作成されています!
作成された10月の実績レコード
ループ処理を使用した場合のフロー
続いて、「変換」要素を使用しない場合にどのようなフローとなるかを確認していきます。
「変換」要素を使用しない場合、ループ処理を使用する必要があり、全体の処理の流れは以下のようになります。
①毎日0時にフローが起動
②フロー起動日が1日かどうか「決定」要素で判定
③「レコードを取得」要素で前月分の成立した商談レコードを取得
④「ループ」要素で③で取得したレコードを1件ずつループ
⑤「割り当て」要素で通貨型の変数に1件ずつ商談の金額を追加
⑥⑤で集計した合計金額をもとに「レコードを作成」要素で予実管理の実績レコードを作成
「変換」要素を使用しない場合、ループ処理を使用する必要があり、全体の処理の流れは以下のようになります。
①毎日0時にフローが起動
②フロー起動日が1日かどうか「決定」要素で判定
③「レコードを取得」要素で前月分の成立した商談レコードを取得
④「ループ」要素で③で取得したレコードを1件ずつループ
⑤「割り当て」要素で通貨型の変数に1件ずつ商談の金額を追加
⑥⑤で集計した合計金額をもとに「レコードを作成」要素で予実管理の実績レコードを作成
ループ処理を使用した場合のフロー全体像
「変換」要素を使用していた箇所は以下の「ループ」要素と「割り当て」要素に置き換え、金額を集計するために変数を一つ作成し、「割り当て」要素で割り当てるようにしています。
上記の内容を踏まえ、「変換」要素を使用した場合とループ処理を使用した場合とで必要となる要素数と変数の数を比較すると、以下となります。
・「変換」要素を使用した場合
要素数:4 変数の数:0
・ループ処理を使用した場合
要素数:5 変数の数:1
「変換」要素を使用した方が、ループ処理を使用するよりも少ない設定で処理を作成できていることが分かるかと思います。
今回は単純なフローですが、コレクションを複数処理しなければならないフローの場合、毎回ループ処理を設定するのは時間がかかり、またフローが複雑になってしまいがちです。
そのため、「変換」要素で置き換えられる内容であれば、「変換」要素を使用した方が簡単かつ簡潔なフローが作成できると言えるでしょう。
・「変換」要素を使用した場合
要素数:4 変数の数:0
・ループ処理を使用した場合
要素数:5 変数の数:1
「変換」要素を使用した方が、ループ処理を使用するよりも少ない設定で処理を作成できていることが分かるかと思います。
今回は単純なフローですが、コレクションを複数処理しなければならないフローの場合、毎回ループ処理を設定するのは時間がかかり、またフローが複雑になってしまいがちです。
そのため、「変換」要素で置き換えられる内容であれば、「変換」要素を使用した方が簡単かつ簡潔なフローが作成できると言えるでしょう。
まとめ
フローの「変換」要素についてご紹介させていただきましたが、いかがだったでしょうか。
コレクションを扱うフローを作成する時の参考になれば幸いです。
TerraSkyBaseでは他にもフローに関する記事を公開していますので、そちらもご一読ください!
コレクションを扱うフローを作成する時の参考になれば幸いです。
TerraSkyBaseでは他にもフローに関する記事を公開していますので、そちらもご一読ください!