スケジュールされたフローと子フローについて
リストを使用する場合など、場合によっては、別のフローを呼び出すフローが必要です。このようなフローのペアは、「親フロー(呼び出し元)」と「子フロー(呼び出されるフロー)」と呼ばれます。子フローが親フローにより呼び出されたら、子フローが有効になり、実行されます。これ以外の場合、子フローは無効のままとなります。
スケジュールされたフローイベントについて
スケジュールされたフローイベントは、スケジュールに従った実行、たとえば1時間に1回、金曜日の午後5時、毎月の最初の日の午前9時などに実行できます。
スケジュールされたフローイベントを追加すると、スケジュールの詳細を指定するよう求められます。スケジュールを変更するには、カードの下端にある時計のアイコンをクリックします。なお、ほとんどのアプリケーションイベントのスケジュールも同様に調整できます。たとえば、Salesforce - New Recordイベントで、新しいレコードのチェックを5分ごとではなく、毎週金曜日の午後5時に行うように設定できます)。
スケジュールは、フローがオンになった後でのみ有効になります。
それぞれのスケジュールされたフローカードには、次の出力があります。
-
Current Time - フローの現在のインスタンスが開始された日時(ISO UTC形式)。この値は、任意のテキストまたは日時の入力に渡すことができます。
-
Execution ID - フロー インスタンスの固有のID。
子フローのユースケース
子フローは、以下のシナリオで役立ちます。
-
単一のフロー内で何回も使用される、または複数のフローで使用される一連のステップが存在する。この一連のステップをそれ自体の「子フロー」に移行することにより、一度だけこのステップを作成して、繰り返しこれを利用できます。Call Flow関数またはCall Flow Asyn関数を使用することにより、他のフローからこのステップを実行します。
-
リストのアイテムを1つずつ処理する。たとえば、For Each関数を使用して各リストアイテムに対し一連のステップを実行したり、Map関数を使用してあるリストを新しいリストに変換したりできます。
-
単に非常に大きなフローを小さい単位に分割し、管理しやすくすることもできます。
子フローの出力
それぞれの子フローカードには、次の出力があります。
-
Inputs to this Flow(このフローへの入力):クリックすると、カスタムフィールドが1つずつ作成されます。それぞれの名前とデータ型(テキストや数値など)を指定します。作成する各カスタムフィールドは、子フローを呼び出すフローから予測される入力に対応します。
-
Context(コンテキスト) - このセクションの出力には、フローが実行されるごとに値が自動的に割り当てられます。
-
Index(インデックス) - この数値出力には、リストの各アイテムについてループ実行される関数(For Each関数や Map関数など)からフローが呼び出されるときに値が割り当てられます。Indexの値は、フローのこのインスタンスで処理されるアイテムの、リスト内での位置に対応します(0から開始)。
-
Caller - Callerオブジェクトのキーは、子フローを呼び出したのがどのフローか(idおよびname)、フローのどの実行で呼び出しが行われたか(execution_id)、フローのどのステップで呼び出しが行われたか(固有IDであるmethod)を示します。子フローが手動で実行された場合、idとexecution_idはnullです。これは、デバッグのため特に便利です。
-
Error(エラー) - このオブジェクト出力には、フローがエラー処理用に呼び出されるとき値が割り当てられます。「フローにおけるカードのエラー処理の設定」を参照してください。Errorの値は、エラーを引き起こしたアプリケーションまたはアクションから返された、元のエラーオブジェクトに対応します。たとえば、オブジェクトには多くの場合「message」、「statusCode」、「execution」を含むキーが存在します(エラーを引き起こしたフロー実行の固有の識別子で、実行履歴のURLを構築し、エラーを引き起こしたフローの詳細を参照するため使用できます)。
-
Execution ID - フロー インスタンスの固有のID。
-

注
他のフローから呼び出す前に、子フローをオンにする必要があります。
子フローは、他のフローに直接依存するため、アクティブフローには計上されません。
リスト関数と子フローの併用について
子フローを使用すると、リストの各アイテムを確認できるため、リスト関数に役立ちます。これらの子フローには、リスト内のアイテムの種類に対応する入力、各アイテムに対しタスクを実行する関数、結果(制御カテゴリー内に存在)を持たせることができます。
たとえば、オブジェクトをオブジェクトのリストに変換することで、キーと値の各ペアを、propertyname
キーとpropertyvalue
キーを持つオブジェクトに変換できます。これは、クラウドAPIで一般的なパターンです。propertyname
には、 custom:
というプレフィックスを付ける必要もあります。これは、子フローを使用して行えます。子フローは、キー、値、不変のプレフィックス(すべてのステップで同じもので、親フローがこれを渡します)を受け付け、2つのキーを持つ1個のオブジェクトを返します。
このフローは、object.mapと併用すると、以下のオブジェクト
{"this":"that","up":"down","left":"right"}
を以下に変換します。
[
{
"propertyname":"custom:this",
"propertyvalue":"that"
},
{
"propertyname":"custom:up",
"propertyvalue":"down"
},
{
"propertyname":"custom:left",
"propertyvalue":"right"
}
]