ループ内で実行されるサブフローでフロー変数の初期値が使用されないことがあります

フローがサブフローとして実行される場合、そのサブフローコンポーネントごとにフロー変数の領域が確保されます。この領域はループ内で呼び出された場合は初回呼出し時にのみ初期化されますので、このタイミングでフロー変数の初期値が設定されます。
2回目以降の実行では初期化されないので、フロー変数の初期値は設定されません。初回のサブフロー内の処理でフロー変数を初期値から変更した場合、2回目のサブフロー実行時には変更した値が引き継がれます。
ループの各実行時にフロー変数を初期化したい場合は、呼び出されるフローの中でマッピングを使うなどして値を初期化する必要があります。

以下にMainFlowというフローからFlow1というサブフローを呼び出す場合について説明します。

例1)
MainFlow : Start → LoopStart → SubFlow1(Flow1を呼び出し) → End

SubFlow1の初回実行時(*1)はFlow1のフロー変数には初期値が設定されます。
SubFlow1の2回目以降の実行時(*2)はFlow1のフロー変数には初期値が設定されません。
*1でFlow1のフロー変数を変更した場合、*2ではその値が引き継がれます。

なお、同じフローを別々のサブフローコンポーネントから呼び出す場合は、それぞれのサブフローコンポーネント単位にフロー変数の領域を持ちますので、それぞれの初回実行時にフロー変数に初期値が設定されます。

例2)
MainFlow : Start → LoopStart → SubFlow1(Flow1を呼び出し) → SubFlow2(Flow1を呼び出し) → End

SubFlow1の初回実行時(*1)はFlow1のフロー変数には初期値が設定されます。
SubFlow2の初回実行時(*2)はFlow1のフロー変数には初期値が設定されます。
*1でFlow1のフロー変数を変更した場合でも*2ではその値が引き継がれません。
SubFlow1の2回目以降の実行時(*3)はFlow1のフロー変数には初期値が設定されません。
*1でFlow1のフロー変数を変更した場合、*3ではその値が引き継がれます。
*2でFlow1のフロー変数を変更した場合でも*3ではその値が引き継がれません。
つまり、*1と*2でフロー変数を変更した場合、*3では*1で設定した値が引き継がれます。
SubFlow2の2回目以降の実行時(*4)はFlow1のフロー変数には初期値が設定されません。
*2でFlow1のフロー変数を変更した場合、*4ではその値が引き継がれます。
*3でFlow1のフロー変数を変更した場合でも*4ではその値が引き継がれません。
つまり、*2と*3でフロー変数を変更した場合、*4では*2で設定した値が引き継がれます。
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
    キーワード:
  • フローサービス
  • コンポーネント
  • フローデザイナー
  • サブフロー
  • 初期値
  • ループ
他にご質問がございましたら、リクエストを送信してください

このセクションの記事

他のキーワードで検索する