Invoke WorkFlowFileを使うにあたって、変数と引数の関係を一度整理しようと思い、記事にまとめました。
サブフローから値を受け取る方法
今回は、サブフローから値を受け取って、メインフローでその値を利用する方法を説明します。
フローチャートイメージ
メインフローからサブフロー(処理対象年月指定~)をInvoke WorkFlowFileアクティビティを使い、呼び出します。
ここがポイント
ここで重要なのは、サブフローの引数名とメインフローで設定する引数名を揃えることです。
今回の場合、サブフローでout_yyyy, out_mmという引数名を使用しているため、それをメインフローで受け取るためには同名の引数名で引数を定義する必要があります。
また、「サブフローから受け取った値を格納している」ということを明示するために、引数名をわざとout_yyyy, out_mmとしています。
そのため、この引数をそのままメインフローで使うのはあまりキレイではないので、メインフローで定義された変数に一度代入してから使うと良いでしょう。
今回はout_yyyy ⇒ YEAR, out_mm ⇒ MONTHに引数値を詰めなおしています。
(おまけ)デバッグ時の変数と引数について
サブフローにおいて、変数も引数もアクティビティで普通に使うことができます。
ただ、デバッグ時に
変数はローカルパネルで値を確認できるが、引数はローカルパネルで値を確認できない
という違いがあります。
なので、引数をそのまま使って、サブフロー内の諸々のアクティビティで処理をしていると、
デバッグで値を確認したい場合に、メッセージログのアクティビティに引数を出力するような作業が必要になり、ちょっと面倒です。
したがって、サブフローでは引数ではなくローカル変数を使いまわし、
最終的にメインフローに返したい値を引数に代入して、メインフローに返す
といった作りにしたほうが実装はしやすいでしょう。