フロー内のフローを実行する
学習の目的
この単元を完了すると、次のことができるようになります。
- サブフロー要素を使用して、作業を最小限にする。
- 別のフロー内で実行されるフローを作成する。
- データを親フローに戻す変数を参照先フローに設定する。
怠惰の功名
信じられないかもしれませんが、システム管理者にとって特に重要な資質の 1 つが面倒くさがり屋であることです。
読み間違いではありません。Salesforce 組織で 4 種類のフローに影響する変更を行わなければならない場合、4 つのフローを更新するのと、1 つだけ更新するのとどちらがよいですか? 手品か何かのように聞こえるかもしれませんが、面倒くさいと思えばこそ、不要な作業のような厄介事を簡単に片付けられないかと思案します。
たとえば、Flo の組織には、Chatter に同じメッセージを投稿するフローが 4 つあります。その Chatter 投稿の内容が変更されるたびに、Flo は 4 つのすべてのフローの重複する要素を更新しています。Flo は重複作業の多さにうんざりしています。ここで、私たちがまだ使っていない要素が役に立ちそうです。サブフロー要素です。
フロー (親フロー) でサブフロー要素を使用すると、別のフロー (子フロー) を参照して、現在の (親) フロー内でその (子) フローを実行できます。4 つのすべてのフローではなく、たった 1 つを変更すればよいことを知り、Flo の期待が膨らみます。さらに、変更するフローが少なければ、見落としや設定ミスが生じる可能性も減少します。
Flo があなたに Chatter 投稿専用のフローを作成するよう依頼しました。新しい子フローを配置して、4 種類のフローの重複要素をまとめて置換できるようにします。さらに、Chatter 投稿に何らかの変更があった場合に、4 つのすべてのフローではなく、子フローを 1 つ更新すれば済むようにします。
入力変数と出力変数
子フローの変数は特別です。変数の作成時に、[Available for input (入力で使用可能)] と [出力で使用可能] という設定があることに気が付きましたか? 変数はこれらの設定を使用して、入力を親フローから子フローに送り、出力を子フローから親フローに送り返すことができます。
ところで、なぜデータを子フローとやり取りするのでしょうか? Flo の例では、子フローが親フローのトリガーレコードの Chatter に投稿するため、子フローにそのトリガーレコードの ID が必要です。子フローが親フローのトリガーレコードにアクセスすることはできないため、親フローがその情報を子フローに送る必要があります。さらに、子フローが作成した Chatter 投稿の ID を親フローが知る必要がある場合は、子フローがその ID を親フローに送り返す必要があります。
変数を子フローの入力または出力で使用可能と定義します。
- 親フローからデータを受け取るためには、子フローに入力で使用可能な変数が必要です。
- 子フローの終了時に親フローにデータを送り返すためには、子フローに出力で使用可能な変数が必要です。
- いずれの方向にもデータを送る必要がない場合は、入力変数も出力変数も必要ありません。
サブフロー要素を作成する
フローを別のフロー内で実行する場合、まず親フローと子フローを作成します。次に、親フローにサブフロー要素を追加します。
子フローを作成する
- フローを作成し、[自動起動フロー] 種別を選択します。
- テキスト変数を作成します。
- API 参照名:
userMentionID
- 入力で使用可能: オン
- 別のテキスト変数を作成します。
- API 参照名:
postTargetID
- 入力で使用可能: オン
- テキスト変数をもう 1 つ作成します。
- API 参照名:
chatterPostID
- 出力で使用可能: オン
- テキストテンプレートを作成します。
- API 参照名:
chatterBody
- 本文:
@[{!userMentionID}], please review this record.
(@[{!userMentionID}] 様、このレコードを確認してください。) - 本文のエディターで、[View as Rich Text (リッチテキストとして表示)] を [View as Plain Text (プレーンテキストとして表示)] に変更します。
- アクション要素を追加します。
- アクション: Chatter に投稿
- Label (表示ラベル):
Chatter Mention Post
(Chatter メンション投稿) - API 参照名:
Chatter_Mention_Post
- Message (メッセージ): chatterBody
- 対象名または ID: postTargetID
- [Show advanced options (詳細オプションを表示)] で [Manually assign variables (手動で変数を割り当て)] を選択します。
- フィード項目 ID: chatterPostID
- フローを保存します。[Flow Label (フローの表示ラベル)] に
Post to Chatter
(Chatter に投稿) と入力します。
- フローを有効にします。
サブフロー要素がある親フローを作成する
- レコードトリガーフローを作成します。
- Object (オブジェクト): Case (ケース)
- フローをトリガーする条件: レコードが作成または更新された
- Condition Requirements (条件の要件): [All Conditions Are Met (AND) (すべての条件に一致 (AND))]
- 条件: [優先度] [Equals (次の文字列と一致する)] [高]
- 更新されたレコードでフローを実行するタイミング: 条件の要件に一致するようにレコードを更新したときのみ
- フローを最適化: アクションと関連レコード
- サブフロー要素を追加します。
-
[Post to Chatter (Chatter に投稿)] フローを選択します。
- Label (表示ラベル):
Post to Chatter
(Chatter に投稿) - API 参照名:
Post_to_Chatter
- [postTargetID] 項目を有効にして、[Triggering Case (トリガーケース)] > [Case ID (ケース ID)] を選択します。
- [userMentionID] 項目を有効にして、[Triggering Case (トリガーケース)] > [Owner ID (所有者 ID)] を選択します。
必ず下にスクロールして [Owner ID (所有者)] を選択し、[Owner ID (Group) (所有者 ID (グループ))] や [Owner ID (User) (所有者 ID (ユーザー))] を選択しないように注意してください。
- フローを保存します。[Flow Label (フローの表示ラベル)] に、
Case Priority is High
(ケース優先度が高) と入力します。
今後、レコード作成のニーズが変化したときに、Flo は子フローを 1 つ更新するだけで済みます。面倒くさいと感じたために、作業が楽になりました!
考慮事項
サブフローを操作するときは、次の点に留意します。
- サブフロー要素が参照できるのは、自動起動フローと画面フローのみです。
- 画面フローでは、別の画面フローのみを参照できます。
- 無効なフローを参照する場合は、「フローの管理」権限があるユーザーに対してのみフローが実行されます。
- 子フローに複数のバージョンがある場合、親フローは子フローの有効なバージョンを実行します。子フローに有効なバージョンがない場合、親フローは最新のバージョンを実行します。
リソース