指定したフローをサブフローとして呼び出します。
呼び出すサブフローにはこのコンポーネントの入力ストリームを渡します。
入力 | フォーマット | すべて |
---|---|---|
接続数 | 1 | |
説明 | 呼び出すサブフローの入力ストリーム型と同じである必要があります。 | |
出力 | フォーマット | すべて |
説明 | 入力をそのまま出力 が「いいえ」の場合、出力はサブフローが返すストリームになります。サブフローが大容量ストリームを返した場合、呼び出し元のフローの設定に関わらず、必ず大容量ストリームが出力されます。 サブフローがEndコンポーネントで終了した場合(つまり出力ストリームがない場合)は、入力をそのまま出力 の設定に関わらず、このコンポーネントの入力ストリームを出力します。 |
名前 | プロパティ型 | マッピング | 説明 | ||||||
---|---|---|---|---|---|---|---|---|---|
実行するフロー | subflow | - |
実行するサブフローを指定します。 プロパティ値フィールドをクリックして表示されるフローの一覧から指定します。サブフローとして実行できるのはプロジェクトオーナー(サーバーに接続しているユーザー)が同じフローのみです。 |
||||||
戻り値 | string | 出力 | サブフローの終了コンポーネントで設定された戻り値を参照できます。 | ||||||
入力をそのまま出力 | streamPassThrough | - |
入力をそのまま出力とするかどうか選択します。
|
||||||
パラメーター | category | 入力&出力 |
指定したサブフローのパラメーターです。 実行するフロー でフローを指定すると、自動的にサブフローで公開されているフロー変数が設定されます。本コンポーネントの前にマッパーを連結して、ここに値をマッピングすることによりサブフローに値を渡すことができます。また、このプロパティは自動的にストリーム変数になります。本コンポーネントの後に連結したマッパーで、ストリーム変数として見えるようになっています。 ストリーム変数については、「はじめに」-「詳細なトピック」-「フローの構成要素」-「変数」-「ストリーム変数」を参照してください。 サブフローのフロー変数については、「はじめに」-「詳細なトピック」-「フロー内の処理の流れ」-「サブフロー」の「フロー変数」を参照してください。 |
コミット | サブフローをコミットします。 |
---|---|
ロールバック | サブフローをロールバックします。 |
タイプ | パラメーター | エラー処理フロー へのストリーム | エラー コード | 説明 |
---|---|---|---|---|
汎用 | なし | コンポーネントの入力ストリーム | なし | サブフローで定義された入出力ストリームの型が呼出し元フローと異なる場合 |
なし | サブフローがエラーにより終了した場合 |
サブフローのトランザクション制御は、その呼出し元フローの開始コンポーネントのトランザクション化プロパティの指定に依存します。
サブフローのトランザクションは呼出し元フローのトランザクションに組み込まれます。サブフローの終了コンポーネントのトランザクションプロパティでの設定は無視され、呼出し元フローのトランザクションがコミットされれば、サブフローもコミットされ、ロールバックされれば、サブフローもロールバックされます。
トランザクション化していない、かつサブフローのみがトランザクション化している(サブフローの開始コンポーネントのトランザクション化プロパティが「はい」)場合、サブフローだけが独立したトランザクションになります。トランザクションがコミットされるかロールバックされるかはサブフローの終了コンポーネントのトランザクションプロパティの値によって決定します。実際にその処理が行われるのは、呼出し元フローのサブフローコンポーネントがコミットされるタイミングです。
サブフローには、同一プロジェクト内のフロー、別プロジェクトのフローを設定することができます。
サブフローのフロー名の変更やフロー変数の変更は自動的に検知され、呼出し元フローのサブフローコンポーネントの設定値は自動的に更新されます。
サブフローのフロー名を変更すると実行するフロー の指定が無効になるため、再度実行するフロー の設定を行う必要があります。サブフローのフロー変数や出力ストリームを変更した場合は、呼出し元フローに変更内容を反映させます。変更内容を反映するには、呼出し元フローのSubFlowコンポーネントを右クリックして表示されるメニューから「サブフロー情報の更新」をクリックします。
SubFlowコンポーネントとFlowInvokerコンポーネントはいずれも別のフローをサブルーチン的に呼び出すことができますが、細かい部分ではそれぞれの動作は大きく異なります。
状況に応じて適切なコンポーネントを使い分けてください。
SubFlow | FlowInvoker | |
---|---|---|
トランザクション | Startコンポーネントの設定に従ってサブフローも呼び出し元フローと一連トランザクションになります。 |
呼び出し毎に異なる別トランザクションになります。 呼び出し元のトランザクションも各呼び出しとは異なる別トランザクションです。 呼び出し元のフローは実行したフローの終了まで待機しますが、それによってトランザクションが中断されるわけではありません。 |
セッション | 実行中のセッションはすべて同一です。 もちろんセッション変数は共有されます。 |
実行するフローのオーナー毎にサブセッションが作成されます。 サブセッションのセッションIDは「<呼び出し元のセッションID>-<枝番>」です。 サブセッションのライフタイムは呼び出し元のセッションと同じです。 呼び出し元のセッションが同じであればそこから実行される同一ユーザーのセッションはすべて同じであり、その間セッション変数は共有されます。 異なるユーザー間でのセッション変数、StreamPutコンポーネントでメモリ上の保持したストリーム(保持スコープがセッションの場合)の共有はできません。 |
リクエスト | 実行中のリクエストはすべて同一です。 もちろんリクエスト変数は共有されます。 |
呼び出し毎に独立したひとつのリクエストとなります。 リクエスト変数は毎回初期化されます。 それぞれの呼び出しのリクエストIDは「<呼び出し元のリクエストID>-<枝番>」です。 |
フロー名の マッピング | 実行するフローは設計時に静的に設定され変更することはできません。 | 実行するフローのユーザー、実行するフローともにマッピングによって動的に変更することができます。 |
Nextフロー | サブフローではNextフローは実行されません。 | Nextフローがある場合はそれを実行してから呼び出し元にリターンします。 |
実行ユーザー | 実行ユーザーは呼び出し元のフローと同じです。 | ユーザー名とパスワードをマッピングによって動的に変更することができます。 |
UIサポート | フローの設定にフロー選択ダイアログが使用でき、フロー設定時に出力ストリームやパラメーターが自動的に設定されます。 |
フロー名やパラメーターは手入力で設定しなければなりません。 (先にSubFlowコンポーネントとしてプロパティを設定しておきコンポーネントの右クリックメニューから「コンポーネントの置き換え」で FlowInvokerコンポーネントに変更することはできます。) |
デバッグ | デバッガーによってサブフローにステップインすることができます。 | デバッガーではFlowInvokerコンポーネントはひとつのコンポーネントとして扱われ実行するフローのデバッグはできません。 プロファイルモードの場合、FlowProfile.logには実行したフローのログも出力されますがデザイナー上では呼び出し元のプロファイル のみが参照できます。 |
FlowInvokerによって実行されるフローは呼び出し側のフローと同一スレッドで実行されます。
そのためflow-ctrlやモニターツールなどではリクエストを開始したフローと現在実行中のフローのオーナーが異なることがありえます。