業務処理開始アプリケーションは、フローとして構築された一連のアプリケーション群の処理を開始させる役割をもったアプリケーションです。業務処理開始アプリケーションによるフローの処理開始をフローの起動と呼びます。
フローの起動には、以下の2種類のパターンがあります。
突き放し型フロー起動(非同期型)
待ち合わせ型フロー起動(同期型)
業務処理開始アプリケーションには、初期状態の業務データの作成と非同期アプリケーション連携実行基盤のAPIの組込みを行う必要があります。
■突き放し型フロー起動と待ち合わせ型フロー起動の使い分け
突き放し型と待ち合わせ型では、主に以下のような違いがあります。要件に応じて使い分けてください。
| 突き放し型 | 待ち合わせ型 |
---|---|---|
使用するAPI | sendMessageメソッド | sendMessageSyncメソッド |
復帰タイミング | 最初のキューにメッセージを格納した時点 | フロー定義に設定された終了点まで処理が完了した時点(注) |
結果受信キューの定義 | 処理結果のメッセージを受信する場合は必要 | 必要 |
処理結果の受信方法 | sendMessageメソッドの復帰後、receiveMessageメソッドを実行する必要がある | sendMessageSyncメソッドの復帰値が処理結果になる |
フローの起動と処理結果のメッセージの受信を別のアプリケーションで実行 | sendMessage実行時と同一のコリレーションIDを用いてreceiveMessageを実行することで可能 | 必ず同一のアプリケーションで受信する |
注)処理の遅延、業務処理実行アプリケーションが処理を返さない場合などの原因により、設定したAPIのタイムアウト値に達した場合、処理結果を取得できずにnullが返却されます。
その後、処理結果のメッセージが結果受信キューに格納された場合、その処理結果を再取得するためには、receiveMessageメソッドの再発行が必要です。
APIのタイムアウトによりnullが返却された場合に自動採番されたコリレーションIDを取得する方法については、“Interstage Business Application Server リファレンス”で、“アプリケーションインタフェース(Java)”の“sendMessageSync”を参照してください。
注意
フローの処理が終了する前に処理結果の取得APIを実行した場合、復帰値はnullになります。また、結果受信キューを定義しないフロー定義に対し、待ち合わせ型フロー起動APIまたは処理結果の取得APIを発行した場合、結果受信キューが定義されていないことを示すエラー情報が返却されAPIが異常処理します。
タイムアウトなどの理由により待ち合わせ型フロー起動APIでの処理結果の受信が失敗した場合、処理結果の取得APIを実行することで非同期に結果を受信することができます。
結果受信キューに処理結果のメッセージを多数ため込むと、処理結果の取得性能が劣化しますので、結果受信キューのメッセージは必ず取得してください。タイムアウトなどで処理結果の取得に失敗した場合は、処理結果の取得APIで再度、処理結果の取得を行ってください。また、フロー定義ツールの結果受信キュー定義において、結果受信キューに格納するメッセージの有効期間を設定することで、指定時間経過後にメッセージを自動的に削除することもできます。
結果受信キューに格納するメッセージの有効期間の設定方法については、“5.2.4.8 終了の設定”を参照してください。
待ち合わせ型において、フロー起動時と同一のコリレーションIDを用いて処理結果の受信を別アプリケーションで実行できますが、待ち合わせ型フロー起動APIでの受信と競合するため、どちらのアプリケーションで処理結果のメッセージが受信されるかは不定となります。
フローの開始から終了までの時間が徐々に遅くなる場合、“Interstage Business Application Server トラブルシューティング”の“フローの開始から終了までの時間が徐々に遅くなる”を参照して対処してください。