フローがサブフローとして実行される場合、そのサブフローコンポーネントごとにフロー変数の領域が確保されます。この領域はループ内で呼び出された場合は初回呼出し時にのみ初期化されますので、このタイミングでフロー変数の初期値が設定されます。
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で設定した値が引き継がれます。
ループ内で実行されるサブフローでフロー変数の初期値が使用されないことがあります
公開日
更新日