サブフローって、どんな時に作るんですか?

サブフローって、どんな時に作るんですか?
59
サブフローって、どんな時に作るんですか?
kazunii
2024/01/26 11:26:31

はじめに


「サブフローって、どんな時に作るんですか?」と、聞かれることが、たまにあります。
私も、「なんとなく便利だから。。。」と、言う理由で作っているので、答えに困ってしまいます。
今後、同じ質問をされた時に、この記事を紹介できるように、まとめてみようと思いました。


サブフローとは


私のサブフローのイメージは、「salesforceのフローから、呼び出しができるフロー」だと思っています。
一般的なプログラム言語の、”サブルーチン”や、”クラス”、”メソッド”などに、あたるのかなとも思っています。基本的な、動作のイメージは、「サブフローに値を渡して、計算結果を返してもらう」です。例えば、数字を10倍にしてくれるサブフローに、10を渡す(引数)と、サブフローで計算した結果の1000(戻り値)が帰ってきます。

サブフローの呼び出し方

他のフロー要素と同じ様に、メインのフローから、サブフローの要素を選択するだけです。



サブフローは必要なのか?


「どうして、サブフローを使っているんですか?」と、聞かれることも、たまにあります。
まず、「サブフローを利用しないと正しく処理されない!!」と、言うことは無いと私は思っています。
ですので、フローを組むにあたっては、サブフローを利用しても、しなくても、その処理の結果は同じになります。

どんな時に作成するの?

「他のフローでも同じ処理が必要」(必要な気がする)な時に、サブフローを作るのかなと、思っています。
ちなみに、私は、同じ処理を毎回最初から設定するのは、めんどくさいなとも感じるので、サブフローを作っています。
余談ですが、上に書いた「数値を10倍にする」サブフローは、例に上げておいてなんですが、メインのフローで数式などで計算してしまえば良いとも思います。。。


サブフローの作り方


本来なら、フローの設計段階で、「この処理はサブフローにしよう」や、「この処理はメインのフローで組もう」と、決めてから設定作業に入るのが良いとは思います。
私の場合は、調査段階で、まず動くフローを作ってから、もしくは設定の途中で、サブフローにした方が良いなと思った部分を、サブフロー化しています。(後からの変更は、結構な手間はかかりますが。。。)

フローの種類

サブフローは、基本的に「自動起動フロー(トリガーなし)」で作成します。
(画面フローから、サブフローとして画面フローも呼び出せるようです。)
また、サブフローだからと言って、特別に設定できない・設定できる要素は無いので、メインのフローと同じ様に設定することができます。

変数の設定

サブフロー側の変数に、「入力」や「出力」の設定が必要になります。
メインのフローとサブフローとの間で、値のやり取りを行いますが、サブフロー側で値のやり取りを行うための「変数」を作成して、その役割(入力・出力)を決めます。
ちなみに、設定自体は簡単で、チェックボックスをオン・オフにするだけですし、作成後でもすぐに切り替えることができます。
入力で使用可能:
  • サブフローが、メインのフローから値を受け取るための設定
  • メインのフローから、サブフローを呼び出す時の、設定画面の入力値の項目として表示されます。
出力で使用可能:
  • サブフローが、メインのフローへ値を渡すための設定
  • メインのフローで、呼び出したサブフローの実行後の値として、メインのフローで利用できます。


やり取りできる変数の個数

サブフローで、入力・出力に設定できる変数は、複数個を設定できます。
例えば、サブフローへ、「メールテンプレート名」と「送信先メールアドレス」の2つの入力値を渡すための設定ができます。


サブフローと値のやり取りできる変数の「データ型」の種類

入力や出力に設定できる変数の「データ型」は、「数値」や「テキスト」だけではないです。
例えば、レコードや、レコードのコレクションなども、メインのフローとサブフローの間で値のやり取りを行うことが可能です。
フローの変数で、指定できるすべてのデータ型を、入力・出力に設定可能です。

サブフローの作成例


  • chatterグループ名で検索して、そのidを返す
  • メールテンプレート名で検索して、そのレコードリストを返す
salesforceに限った事ではないのですが、プログラムでのハードコーディングは基本的にNGだと思った方が良いと思います。
salesforceでは、sandboxと本番環境ではレコードidが違うので、フローにレコードidをハードコーディングしてしまうと、sandboxから本番環境へリリース後に、その部分を修正し忘れた時の事を想像すると、不安で夜も寝れません。。。
上のサブフローの作成例にあるように、”名称”や”必ず同じである番号”などで、検索したレコードidを取得する部分を、サブフロー化しておくと、他のフローからも利用できますし、安心して寝れるようになりますね♪


おわりに


今回は、サブフローのイメージや、私がどんな時にサブフローを作っているのかを、まとめてみました。
サブフローを利用することで、次からの新しいフローの作成が楽になったり、メインのフローが見やすく分かりやすくなるので、メンテナンスがしやすくなったりするのかなと、思っています。

ご活用ください。
gilde tech(for Salesforce)」に入会しませんか?
登録すると、「gilde tech」に掲載されているSalesforceのノウハウを全部閲覧できるだけでなく、自分が知っている知識を発信し、他の会員と交流することもできます。
またSalesforceの知識習得に役立つイベント情報も得ることができます。
是非ここで得た知識を業務に活かしてください!
59
コメント