コネクターの処理
このセクションでは、コネクターがクライアントとして実行される場合に、コネクターのさまざまな部分がビジネス・オブジェクトを処理する方法を説明します。
-
コネクターの始動時、コネクターのエージェント・クラスは以下の初期化 (Init) 処理を実行します。
- 構成プロパティーを検索します。
- コネクター構成ファイルから Username、Password、および Environment を取り出します。
- OneWorld コネクター・オブジェクトを作成します。
- Login メソッドと、取り出した Username および Password を用いたパラメーターを使用して、OneWorld サーバーにログインします。このメソッドは、SessionID を戻します。
- OneWorld インターフェース・オブジェクトのインスタンスを作成します。
- コネクター、OneWorldInterface、および SessionID を接続プールに追加します。
- OneWorld ビジネス・オブジェクト・ハンドラーは、動詞 ASI を読み取り、一連の呼び出し可能な関数または子オブジェクトに変換します。
- ビジネス・オブジェクトにタイプ ACCESS_LEVEL の子ビジネス・オブジェクトがあり、この子ビジネス・オブジェクト内の Username 属性にデータが取り込まれていて、アダプターが使用する値と異なる値になっている場合、ビジネス・オブジェクト・ハンドラーは、ACCESS_LEVEL ビジネス・オブジェクトに指定された Username 属性および Password 属性の値を使用して新規の接続を開きます。すべてのこのようなビジネス・オブジェクトで、Username 属性および Password 属性の両方にデータが取り込まれている必要があります。
- アプリケーションがダウンしているために接続の作成が失敗した場合、ビジネス・オブジェクト・ハンドラーは APPRESPONSETIMEOUT を戻します。
- Username/Password が不正なために接続の作成が失敗した場合、ビジネス・オブジェクト・ハンドラーはエラーをログに記録し、FAIL の状況を戻します。
- ビジネス・オブジェクトがタイプ ACCESS_LEVEL の子ビジネス・オブジェクトを持たないか、またはこのビジネス・オブジェクト内の Username 属性が null であるかアダプターの Username に指定された値と同じである場合には、使用可能な接続プールから接続を取り出します。ビジネス・オブジェクト・ハンドラーが使用可能な接続を要求したときに、接続プールで行われる処理を以下に示します。
- ビジネス・オブジェクト・ハンドラーは、プール内に使用可能な接続があるかどうかを検査します。
- 使用可能な接続がある場合には、接続の有効性をチェックします。接続が無効な場合、ハンドラーは接続の再作成を試行します。
- 接続の作成が失敗した場合は、APPRESPONSETIMEOUT 状況を戻します。
- ビジネス・オブジェクト・ハンドラーは、その接続を使用可能リストから除去し、使用中リストに追加します。
- 接続が使用不可であり、接続の最大数がプール・サイズよりも小さい場合には、新規の接続を開き、接続プールの使用中リストに追加します。新規接続のオープンが失敗した場合、アダプターは APPRESPONSETIMEOUT を戻します。
- 使用可能な接続が存在せず、プール・サイズの最大限度に達している場合には、doVerbFor スレッドは
接続が使用可能になるまで待機します。
- ビジネス・オブジェクトのタイプが BFN の場合、アダプターは以下のアクションを実行します。
- アダプターは、OneWorld クラス OneWorldInterface の BeginTransaction メソッドを使用してトランザクションを開始します。
- ビジネス・オブジェクトがインターフェース・クラスにマップされ、動詞 ASI がブランクである場合、アダプターは、ビジネス・オブジェクト内に取り込まれている最初のメソッド属性または最初の子オブジェクトを検出し、実行します。
- 動詞 ASI にデータが取り込まれている場合、アダプターは InvokeMethods を呼び出します。これにより、動詞 ASI で指定されたすべてのメソッドをループ処理します。
- ビジネス・オブジェクトがビジネス関数にマップされる場合、呼び出し側はビジネス・オブジェクトにマップされるビジネス関数を実行します。タイプが ACCESS_LEVEL ではない子オブジェクトが存在する場合、ビジネス・オブジェクト・ハンドラーはそれらをループ処理し、トップレベル・ビジネス・オブジェクト内で定義された順序で、それらに対応するビジネス関数を実行します。
- 呼び出し側は、ビジネス・オブジェクト内で定義された属性に基づいて引数を構成してから、リフレクション API を使用して OneWorld Java オブジェクト上でメソッドを起動します。
- ビジネス・オブジェクト全体の実行が正常に終了すると、ビジネス・オブジェクト・ハンドラーはオブジェクト OneWOrldInterface 上で
Commit メソッドを使用してトランザクションをコミットし、VALCHANGED 状況を戻します。
- ビジネス・オブジェクトのタイプが XMLList の場合、アダプターは以下のアクションを実行します。
- アダプターは、ビジネス・オブジェクトに指定されている値およびフォーマットを持つ XML 文書を作成します。
- アダプターは、XML リスト API を使用して、この文書を OneWorld に送信します。
- 障害が発生した場合、アダプターは応答文書にエラー・コードおよび理由を記録します。応答文書に問題があった場合、アダプターはログ・ファイルにも戻り状況 FAIL でエラーを記録します。
- アダプターが OneWorld に XML 文書を正常に送信できた場合、応答文書の値がビジネス・オブジェクトで更新されます。
- ビジネス・オブジェクトがタイプ ACCESS_LEVEL でない子ビジネス・オブジェクトを持っている場合、ハンドラーはそれぞれの子ビジネス・オブジェクトごとに前述のステップを繰り返します。
- アダプターがビジネス・オブジェクト全体を正常に処理すると、状況が VALCHANGED に設定されます。
- 接続を接続プールに解放します。
- ビジネス関数が正常に実行されたときは VALCHANGED を戻します。
- ビジネス・オブジェクトのタイプが BFN で、Interface クラスにマップされているとき、動詞 ASI がブランクになっており、データを取り込んだ属性が無い場合は、FAIL を戻します。
- 処理が失敗した場合は FAIL を戻します。
- ConnectionEventStore クラスは、サブスクリプション・デリバリーで以下の処理を実行します。
- コネクターがイベントを受信すると、ConnectionEventStore クラスは以下の処理を行います。
- イベントが指定するタイプのビジネス・オブジェクトを作成します。
- イベント表が指定するオブジェクト・キーを使用して、そのビジネス・オブジェクトのキーの値とキー以外の値を設定します。
- ビジネス・オブジェクトのタイプがビジネス関数の場合、動詞に Execute を設定します。
- ビジネス・オブジェクトのタイプがインターフェースの場合、動詞に Retrieve を設定します。
- ビジネス・オブジェクトの取得後、コネクターは、イベントが指定する動詞を設定してビジネス・オブジェクトを統合ブローカーに送信します。
- 接続プールから取得したすべての接続をクローズして終了します (Terminate)。
