サブフローの利用
フローの中で、別のフローを呼び出し、その処理が実行されるよう設定できます。呼び出されるフローを「サブフロー」、呼び出す側のフローを呼び出し元フロー(メインフロー)といいます。サブフローを呼び出すには、SubFlow コンポーネントを使用します。
SubFlow コンポーネントで別フローを呼び出す
1.対象のメインフローを表示し、フローを呼び出したい位置へ、「コントロール」タブの SubFlow コンポーネント(「サブフロー」)をドラッグして配置する
HINT
SubFlow コンポーネントをドラッグして配置する代わりに、ツリーペインのフロー一覧からサブフローをワークスペースへドラッグして配置することもできます(その場合、SubFlow コンポーネントアイコンに加えフロー名も説明として追加されます)。
サブフローは、フロー間の相対的な親子関係の中で「子」にあたるフローの呼び方であり、特別に「サブフロー」という種類のフローを指すわけではありません。
SubFlow コンポーネントの出力を呼び出し元フローで使いたい場合には、「入力をそのまま出力」プロパティの設定を「いいえ」に変更する必要があります。
2.コンポーネントを接続し、SubFlow コンポーネントアイコンを選択して、インスペクタの「実行するフロー」の値欄から、呼び出したいフロー(サブフロー)をダブルクリックする
挿入した SubFlow コンポーネントをダブルクリックすると、ワークスペースにサブフローのタブが表示され、フローの内容や設定を確認できます。
HINT
Timer コンポーネントを使って別のフローを呼び出す
Timerコンポーネントは、指定した秒数後に別のフローを実行するものですが、0 秒後とするとすぐに別フローの実行が可能です。Timerコンポーネントについては、第 8 章の「フローからスケジュールを設定するには」も参照してください。
サブフローでストリームを受け取る
1.サブフローとして扱いたいフローを表示し、Start コンポーネントアイコンを選択する
2.Startコンポーネントのストリーム型を、メインフローの出力ストリームに合わせて設定する
HINT
サブフローを作成する場合は、通常のフローを作成します。サブフローは、Start コンポーネントで開始します。終了は任意の終了コンポーネントを使用できますが、NextFlow コンポーネントは使用できません。
サブフローにストリームを渡す
呼び出し元フローで、サブフローコンポーネントの前に配置したコンポーネントの出力ストリームが、サブフローの入力ストリームになります。サブフローの中でそのストリームを処理するには、呼び出し元フローからの出力ストリームと同じストリーム型を、サブフローの Start コンポーネントの出力ストリーム型に指定する必要があります。また、ストリームペインで同じフィールド定義を行います。呼び出し元フローからの入力を処理しない場合は、Start コンポーネントの出力ストリーム型は Any を選択します。
3.フィールド定義を、メインフローの出力ストリームに合わせて設定する
サブフローのStartコンポーネントのストリーム型とフィールド定義を呼び出し元フローに合わせて設定することで、ストリームを受け取ることができるようになります。
HINT
サブフローからストリームを戻すには
サブフローの終了コンポーネントの出力ストリームが、呼び出し元フローのサブフローコンポーネントの出力ストリームになります。サブフローの出力を呼び出し元フローで処理する場合は、出力があるコンポーネントとして、EndResponse コンポーネントを使用します。パラレルやループ処理がある場合は Break コンポーネント、エラーを発生させる Exception コンポーネントを使用することもできます(サブフローの出力を呼び出し元フローで処理しない場合は、出力ストリームは無視することになります)。
CAUTION
Start コンポーネントの出力ストリーム型が Any 以外の場合、呼び出し元フローでサブフローコンポーネントの前に配置したコンポーネントの出力ストリーム型と、サブフローの Start コンポーネントの出力ストリーム型が同じでない場合、エラーになります。
サブフローの変数をパラメーターとしてメインフローに渡す
1.サブフローとして扱いたいフローを表示し、右下の「変数」タブをクリックして変数ペインを表示する
2.フロー変数の「公開」にチェックマークが付いていることを確認する
HINT
フローのパラメーターとは
起動するフローのフロー変数を公開しておくことにより、呼び出し元から設定する値を取得できる仕組みのことです。サブフローで定義したフロー変数を公開することで、呼び出し元フローから、そのフロー変数をパラメーターとして設定し、値を渡すことができるようになります。
3.次に呼び出し元フローのフローウィンドウを表示し、SubFlowコンポーネントアイコンを選択して、インスペクタの「パラメーター」タブをクリックする
4.サブフローの変数がパラメーターとして設定されていることを確認する
呼び出し元フロー内のサブフローコンポーネントを選択して表示されるインスペクタの「パラメーター」タブで、サブフローで定義したフロー変数がパラメーターとして設定されていることを確認できます。
HINT
サブフローでフロー変数が公開されていれば、呼び出し元フローでサブフローを配置・設定したときに、自動的にサブフローコンポーネントに、パラメーターの情報が設定されます。
サブフロー情報の更新
呼び出し元フローでサブフローを配置したあとにサブフローの情報を変更したときは、呼び出し元フローの SubFlowコンポーネントアイコンを右クリックし、メニューから「サブフロー情報の更新」を選択して、サブフローの変更を呼び出し元フローに反映させる必要があります。
サブフローに固定パラメーター値を渡す
1.呼び出し元フローを表示し、SubFlowコンポーネントアイコンを選択して、インスペクタの「パラメーター」タブをクリックする
2.「値」欄にパラメーターの値を設定する
サブフローで設定されているフロー変数に、パラメーターの値が設定されます。
HINT
パラメーターと変数
パラメーターは、サブフローではフロー変数として使われます。フロー変数には初期値を定義でき、パラメーターとして値が渡ってこない場合には、初期値が有効になります。サブフローでフロー変数の初期値を設定した状態から、呼び出し元フローでサブフローコンポーネントの「パラメーター」タブで値を設定すると上書きされます。また、フロー変数の初期値を設定した状態、または「パラメーター」タブで値を設定した状態からマッパーによる置き換え設定をすると、値が上書きされます。
CAUTION
呼び出し元フローでパラメーターの値を設定、変更すると、サブフローでフロー変数の値を設定、変更してもパラメーターには反映されません。
サブフローに動的パラメーター値を渡す
1.呼び出し元フロー内のサブフローコンポーネントの前に Mapper コンポーネントを配置する
2.Mapper コンポーネントをダブルクリックしてマッピングウィンドウを表示する
3.マッピングウィンドウ右側(出力側)のサブフローコンポーネントプロパティの「パラメーター」下のパラメーター名フィールドに値をマッピングする
マッパーにより、フローの中で生成された動的な値をサブフローに渡すことができます。マッパーによるパラメーターの置き換え設定をすると、値が上書きされます。