FlowInvoker - 別ユーザーのフローを実行

指定したフローを実行します。
実行するフローにはこのコンポーネントの入力ストリームとパラメーターを設定できます。

■ストリーム情報

入力フォーマットすべて
接続数1
説明 実行するフローの入力ストリーム型と同じである必要があります。
出力フォーマットすべて
説明入力をそのまま出力が「いいえ」の場合、出力は実行したフローが返すストリームになります。
実行したフローがEndコンポーネントで終了した場合(つまり出力ストリームがない場合)は、入力をそのまま出力の設定に関わらず、このコンポーネントの入力ストリームを出力します。

■コンポーネントプロパティ

名前プロパティ型マッピング説明
実行するフローのオーナーstring入力&出力 実行するフローを作成したユーザーの名前を指定します。
空の場合はこのフローのオーナーが所有するフローが実行対象となります。
実行するフローstring入力&出力 実行するフローを指定します。
フロー名は「<プロジェクト名>.<フロー名>」のように「.」区切りで指定します。
実行するフローのオーナー」が空の場合は「<フロー名>」のようにプロジェクト名を省略できます。その場合、このフローが含まれているプロジェクト内にあるフローが実行されます。
戻り値string   出力 実行したフローの終了コンポーネントで設定された戻り値を参照できます。
入力をそのまま出力streamPassThrough- 入力をそのまま出力とするかどうか選択します。
はい [true] - 入力ストリームがそのまま出力ストリームになります。
いいえ [false] - 出力ストリームは実行したフローの出力ストリームになります。
実行ユーザーgroup- 実行ユーザー情報です。
ユーザー名string入力&出力 実行するフローの実行ユーザーを指定します。
空の場合は実行ユーザーなしになります。
パスワードpassword入力&出力 実行ユーザーのパスワードを指定します。
パラメーターcategory   出力 実行するフローのパラメーターです。
実行するフローの公開変数を使用して値をやり取りすることができます。
パラメーター名と同じ名前の公開変数に値が受け渡されます。パラメーター名は大文字小文字を区別します。
データ型には実行するフローで指定した型と同じ型を指定します。
(可能な限り自動的に型変換がおこなわれますが、特にBinary型では注意が必要です。)

■エラー処理

タイプパラ
メータ
エラー処理フロー
へのストリーム
エラー
コード
説明
汎用 なし コンポーネントの入力ストリーム なし 実行するフローで定義された入出力ストリームの型が呼出し元フローと異なる場合
なし 実行するフローがエラーとなった場合

■別ユーザーのフローを実行するには

別ユーザーのフローを実行する場合、呼び出される側のフローがそのユーザーから実行可能なように設定されていなければなりません。
プロジェクトまたはフローのプロパティ「実行を許可するユーザー」にユーザー名を指定することで指定したユーザーからの実行が可能になります。

ユーザー名はカンマ区切りで複数指定することが可能です。 またワイルドカード「*」によってそのドメイン以下のユーザーすべてに対して実行を許可することもできます。

設定例
設定値実行を許可されるユーザー
/user1, /user2/user1と/user2のみ
/domain1/*/domain1に所属する全ユーザー
/*すべてのユーザー

プロジェクトのプロパティで「/*」を指定するとそのプロジェクトに含まれる全フローを全ユーザーに対して実行許可したことになります。
(フローのプロパティで指定した場合はそのフローだけが実行許可されます。)
ワイルドカードは「/*/user1」のようにドメインの中間で指定することや「/user*」のように名前の一部で使用することはできません。

■SubFlowとFlowInvokerの違い

SubFlowコンポーネントとFlowInvokerコンポーネントはいずれも別のフローをサブルーチン的に呼び出すことができますが、細かい部分ではそれぞれの動作は大きく異なります。
状況に応じて適切なコンポーネントを使い分けてください。

SubFlowFlowInvoker
トランザクションStartコンポーネントの設定に従ってサブフローも呼び出し元フローと一連トランザクションになります。 呼び出し毎に異なる別トランザクションになります。
呼び出し元のトランザクションも各呼び出しとは異なる別トランザクションです。
呼び出し元のフローは実行したフローの終了まで待機しますが、それによってトランザクションが中断されるわけではありません。
セッション実行中のセッションはすべて同一です。
もちろんセッション変数は共有されます。
実行するフローのオーナー毎にサブセッションが作成されます。
サブセッションのセッションIDは「<呼び出し元のセッションID>-<枝番>」です。
サブセッションのライフタイムは呼び出し元のセッションと同じです。
呼び出し元のセッションが同じであればそこから実行される同一ユーザーのセッションはすべて同じであり、その間セッション変数は共有されます。
異なるユーザー間でのセッション変数、StreamPutコンポーネントでメモリ上の保持したストリーム(保持スコープがセッションの場合)の共有はできません。
リクエスト実行中のリクエストはすべて同一です。
もちろんリクエスト変数は共有されます。
呼び出し毎に独立したひとつのリクエストとなります。
リクエスト変数は毎回初期化されます。
それぞれの呼び出しのリクエストIDは「<呼び出し元のリクエストID>-<枝番>」です。
フロー名の
マッピング
実行するフローは設計時に静的に設定され変更することはできません。実行するフローのユーザー、実行するフローともにマッピングによって動的に変更することができます。
NextフローサブフローではNextフローは実行されません。Nextフローがある場合はそれを実行してから呼び出し元にリターンします。
実行ユーザー実行ユーザーは呼び出し元のフローと同じです。ユーザー名とパスワードをマッピングによって動的に変更することができます。
UIサポートフローの設定にフロー選択ダイアログが使用でき、フロー設定時に出力ストリームやパラメーターが自動的に設定されます。 フロー名やパラメーターは手入力で設定しなければなりません。
(先にSubFlowコンポーネントとしてプロパティを設定しておきコンポーネントの右クリックメニューから「コンポーネントの置き換え」で FlowInvokerコンポーネントに変更することはできます。)
デバッグデバッガによってサブフローにステップインすることができます。デバッガではFlowInvokerコンポーネントはひとつのコンポーネントとして扱われ実行するフローのデバッグはできません。
プロファイルモードの場合、FlowProfile.logには実行したフローのログも出力されますがデザイナー上では呼び出し元のプロファイル のみが参照できます。

FlowInvokerによって実行されるフローは呼び出し側のフローと同一スレッドで実行されます。
そのためflow-ctrlやモニターツールなどではリクエストを開始したフローと現在実行中のフローのオーナーが異なることがありえます。