tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:サブフローを使ったフローの作成を試してみました

Trailheadで紹介されているサブフローの仕組みを使ったフローの作成を試してみました。共通化できる処理は共通化しましょうという機能です。

フロー内のフローを実行する 単元 | Salesforce Trailhead

サブフローについて

サブフローで値を受け渡しするのに覚えておくべき設定は[入力で使用可能] と [出力で使用可能]の2つ。このチェックが必要となります。また、下記の考慮点があります。

  • サブフロー要素が参照できるのは、「自動起動フロー」と「画面フロー」のみです。
    • レコードトリガーフローでは使えない
  • 画面フローでは、別の画面フローのみを参照できます。
  • 無効なフローを参照する場合は、「フローの管理」権限があるユーザーに対してのみフローが実行されます。
  • 子フローに複数のバージョンがある場合、親フローは子フローの有効なバージョンを実行します。子フローに有効なバージョンがない場合、親フローは最新のバージョンを実行します。

サブフロー側のフローを作成

新規フローで自動起動フローを選択します。


テキスト型の変数を作成します。


変数をもう一つ作成。


さらにもう一つ作成。3つ作成して完了。


レコードを取得の要素を追加。(商品の取得)


レコードの取得の要素をもう一つ追加。(価格表エントリの取得)


レコードの作成の要素を追加。(商談商品の作成)


こうなります。


フローを保存して有効化します。このフローはひとまずこれで作業完了。このフローはサブフローとして別のフローから呼び出されます。

サブフローを別のフローから呼び出し

最初に記載したリンクのTrailheadモジュールの前のモジュールで作成されたフローを使用する形でした。細かい処理は重要ではないですが、次の画像のように商品と価格表を取得してレコードを作成するフローを使って作業します。


まずは、このフローを別名で保存→新規フローとして、別のフローとして保存します。
※新規フローは見間違えでした。正しくは新しいバージョンで作成する。


保存できたらレコードを取得からレコードを作成までの要素を削除します。参照されていると削除できないので下の要素から削除していくイメージです。


要素を追加でサブフローを選択します。


最初に作成したフローを選択します。


サブフローには値を渡せるので商談IDなどの情報をセットします。これで渡した値を条件にサブフロー側の処理を動かすことができます。


もう一つの分岐も同様に設定。


こうなりました。似たような処理がサブフローとして集約されました。これで処理を調整するときはサブフローを変更すれば呼び出し元に一括反映できます。


Trailheadでは条件を追加して1000のパスを増やす感じでした。

設定ミスの修正

サブフロー側のGet Productの設定の際に含むとすべきところをこの文字列で開始を選んでいたのでそこは修正。


あと「Create_1500_Opp_Product」が存在しているとエラーになりました。


間違っていたのは、別名保存するときに新規フローを選んでいたところ、新しいバージョンを選ぶのが正解。ちょっと見間違えて進めてました。API名が正しくなればいいのでフローをまた別名保存し直して正しいAPI名に修正。


あとこういうエラーも。


ここが間違い。


変数じゃなくて数値の直接指定でOK。


こんな感じでけっこうミスがありましたが、エラーメッセージ見ながら修正したらチャレンジOKとなりました。ということでサブフローを使ったフローの作成はこんな感じの設定手順となりました。