別のフローを呼び出すには

サブフローの利用

フローの中で、別のフローを呼び出し、その処理が実行されるよう設定できます。呼び出されるフローを「サブフロー」、呼び出す側のフローを呼び出し元フロー(メインフロー)といいます。サブフローを呼び出すには、SubFlow コンポーネントを使用します。

SubFlow コンポーネントで別フローを呼び出す

1.対象のメインフローを表示し、フローを呼び出したい位置へ、「コントロール」タブの SubFlow コンポーネント(「サブフロー」)をドラッグして配置する

4-76-01.png

 

HINT

SubFlow コンポーネントをドラッグして配置する代わりに、ツリーペインのフロー一覧からサブフローをワークスペースへドラッグして配置することもできます(その場合、SubFlow コンポーネントアイコンに加えフロー名も説明として追加されます)。

サブフローは、フロー間の相対的な親子関係の中で「子」にあたるフローの呼び方であり、特別に「サブフロー」という種類のフローを指すわけではありません。

SubFlow コンポーネントの出力を呼び出し元フローで使いたい場合には、「入力をそのまま出力」プロパティの設定を「いいえ」に変更する必要があります。

 

2.コンポーネントを接続し、SubFlow コンポーネントアイコンを選択して、インスペクタの「実行するフロー」の値欄から、呼び出したいフロー(サブフロー)をダブルクリックする

4-76-02.png

挿入した SubFlow コンポーネントをダブルクリックすると、ワークスペースにサブフローのタブが表示され、フローの内容や設定を確認できます。

 

HINT

Timer コンポーネントを使って別のフローを呼び出す
Timerコンポーネントは、指定した秒数後に別のフローを実行するものですが、0 秒後とするとすぐに別フローの実行が可能です。Timerコンポーネントについては、第 8 章の「フローからスケジュールを設定するには」も参照してください。

 

サブフローでストリームを受け取る

1.サブフローとして扱いたいフローを表示し、Start コンポーネントアイコンを選択する

4-76-03.png

 

2.Startコンポーネントのストリーム型を、メインフローの出力ストリームに合わせて設定する

4-76-04.png

 

HINT

サブフローを作成する場合は、通常のフローを作成します。サブフローは、Start コンポーネントで開始します。終了は任意の終了コンポーネントを使用できますが、NextFlow コンポーネントは使用できません。

サブフローにストリームを渡す
呼び出し元フローで、サブフローコンポーネントの前に配置したコンポーネントの出力ストリームが、サブフローの入力ストリームになります。サブフローの中でそのストリームを処理するには、呼び出し元フローからの出力ストリームと同じストリーム型を、サブフローの Start コンポーネントの出力ストリーム型に指定する必要があります。また、ストリームペインで同じフィールド定義を行います。呼び出し元フローからの入力を処理しない場合は、Start コンポーネントの出力ストリーム型は Any を選択します。

 

3.フィールド定義を、メインフローの出力ストリームに合わせて設定する

4-76-05.png

サブフローのStartコンポーネントのストリーム型とフィールド定義を呼び出し元フローに合わせて設定することで、ストリームを受け取ることができるようになります。

 

HINT

サブフローからストリームを戻すには
サブフローの終了コンポーネントの出力ストリームが、呼び出し元フローのサブフローコンポーネントの出力ストリームになります。サブフローの出力を呼び出し元フローで処理する場合は、出力があるコンポーネントとして、EndResponse コンポーネントを使用します。パラレルやループ処理がある場合は Break コンポーネント、エラーを発生させる Exception コンポーネントを使用することもできます(サブフローの出力を呼び出し元フローで処理しない場合は、出力ストリームは無視することになります)。

4-76-06.png

 

CAUTION

Start コンポーネントの出力ストリーム型が Any 以外の場合、呼び出し元フローでサブフローコンポーネントの前に配置したコンポーネントの出力ストリーム型と、サブフローの Start コンポーネントの出力ストリーム型が同じでない場合、エラーになります。

 

サブフローの変数をパラメーターとしてメインフローに渡す

1.サブフローとして扱いたいフローを表示し、右下の「変数」タブをクリックして変数ペインを表示する

4-76-07.png

 

2.フロー変数の「公開」にチェックマークが付いていることを確認する

4-76-08.png

 

HINT

フローのパラメーターとは
起動するフローのフロー変数を公開しておくことにより、呼び出し元から設定する値を取得できる仕組みのことです。サブフローで定義したフロー変数を公開することで、呼び出し元フローから、そのフロー変数をパラメーターとして設定し、値を渡すことができるようになります。

 

3.次に呼び出し元フローのフローウィンドウを表示し、SubFlowコンポーネントアイコンを選択して、インスペクタの「パラメーター」タブをクリックする

4-76-09.png

 

4.サブフローの変数がパラメーターとして設定されていることを確認する

4-76-10.png

呼び出し元フロー内のサブフローコンポーネントを選択して表示されるインスペクタの「パラメーター」タブで、サブフローで定義したフロー変数がパラメーターとして設定されていることを確認できます。

 

HINT

サブフローでフロー変数が公開されていれば、呼び出し元フローでサブフローを配置・設定したときに、自動的にサブフローコンポーネントに、パラメーターの情報が設定されます。

サブフロー情報の更新
呼び出し元フローでサブフローを配置したあとにサブフローの情報を変更したときは、呼び出し元フローの SubFlowコンポーネントアイコンを右クリックし、メニューから「サブフロー情報の更新」を選択して、サブフローの変更を呼び出し元フローに反映させる必要があります。

 

サブフローに固定パラメーター値を渡す

1.呼び出し元フローを表示し、SubFlowコンポーネントアイコンを選択して、インスペクタの「パラメーター」タブをクリックする

4-76-11.png

 

2.「値」欄にパラメーターの値を設定する

4-76-12.png

サブフローで設定されているフロー変数に、パラメーターの値が設定されます。

 

HINT

パラメーターと変数
パラメーターは、サブフローではフロー変数として使われます。フロー変数には初期値を定義でき、パラメーターとして値が渡ってこない場合には、初期値が有効になります。サブフローでフロー変数の初期値を設定した状態から、呼び出し元フローでサブフローコンポーネントの「パラメーター」タブで値を設定すると上書きされます。また、フロー変数の初期値を設定した状態、または「パラメーター」タブで値を設定した状態からマッパーによる置き換え設定をすると、値が上書きされます。

 

CAUTION

呼び出し元フローでパラメーターの値を設定、変更すると、サブフローでフロー変数の値を設定、変更してもパラメーターには反映されません。

 

サブフローに動的パラメーター値を渡す

1.呼び出し元フロー内のサブフローコンポーネントの前に Mapper コンポーネントを配置する

4-76-13.png

 

2.Mapper コンポーネントをダブルクリックしてマッピングウィンドウを表示する

4-76-14.png

 

3.マッピングウィンドウ右側(出力側)のサブフローコンポーネントプロパティの「パラメーター」下のパラメーター名フィールドに値をマッピングする

4-76-15.png

マッパーにより、フローの中で生成された動的な値をサブフローに渡すことができます。マッパーによるパラメーターの置き換え設定をすると、値が上書きされます。

 

この記事は役に立ちましたか?
1人中1人がこの記事が役に立ったと言っています

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