コネクター・アーキテクチャー

コネクターは、2 つのコンポーネントで構成されています。コネクター・フレームワークおよびアプリケーション固有のコンポーネントです。コネクター・フレームワークは統合ブローカーとアプリケーション固有のコンポーネントの間の仲介役として機能し、そのコードはどのコネクターにも共通です。アプリケーション固有のコンポーネントには、特定のテクノロジー (この場合は JD Edwards OneWorld) またはアプリケーションに合わせて作成されたコードが含まれます。コネクター・フレームワークは、統合ブローカーとアプリケーション固有のコンポーネントの間で、以下のサービスを提供します。

本書では、コネクター・フレームワークとアプリケーション固有のコンポーネントの両方について説明します。ここでは、これらの両方のコンポーネントを「コネクター」と呼んでいます。

Connector for JD Edwards OneWorld は、統合ブローカー InterChange Server Express とともに作動します。詳細については、「システム・インプリメンテーション・ガイド」を参照してください。

図 1. コネクター・アーキテクチャー

ビジネス関数

OneWorld ビジネス関数は、ジャーナル記入トランザクション、減価償却費の計算、および販売注文トランザクションなどの、特定のタスクを実行します。2 種類のビジネス関数があります。レギュラー・ビジネス関数は、税額計算やアカウント番号検証などの単純なタスクを実行します。マスター・ビジネス関数は、さらに複雑なタスクを実行するもので、レギュラー・ビジネス関数をいくつか呼び出して、それらのタスクを実行することができます。

インターオペラビリティー・フレームワークには、大小のビジネス関数にアクセスする単一のポイントを提供するビジネス関数ラッパーが含まれています。マスター・ビジネス関数ラッパーも含まれています。

特定のビジネス・オブジェクトの呼び出しに使用できるビジネス関数がない場合は、XML リストを使用できます。以下のダイアグラムは、XML 呼び出しのフローを示しています。

図 2. XML リスト呼び出しのフロー

I

XML 呼び出しが発生すると、以下のステップが発生します。

  1. インターオペラビリティー・クライアントが、OneWorld に XML 文書を送信します。
  2. クライアントが、C++ または Java ThinNet に定義されている API を使用して JDENET に XML 文書を送信します。
  3. ThinNet が、マルチスレッド・アーキテクチャーを使用して、ロード・バランシングを行い、複数の XML 文書を同時に管理します。
  4. インターオペラビリティー・クライアントが呼び出しオブジェクト (サービス呼び出しの処理などの同期要求でのみ使用される) を送信した場合、アダプターは XML トランザクション API を使用しません。Adapter for OneWorld から受信した XML 文書が、JDENET を使用して要求を処理します。以下のステップは、このプロセスを説明しています。
    1. XML 文書がソケット接続を作成する。
    2. JDENET メッセージを生成する。
    3. JDENET メッセージを送信する。
    4. JDENET メッセージを受信する。
    5. 応答データをアンパックする。
    6. ソケット接続をクローズする。
    7. XML 応答ファイルに応答データを渡す。
    8. 生成された応答ファイルを Adapter for OneWorld に戻す。
  5. インターオペラビリティー・クライアントが呼び出しオブジェクトを送信しない場合、このクライアントは XML トランザクション API (通常は非同期要求に使用) を送信します。

以下のダイアグラムは、XMLCallObject で使用される ThinNet のプロセス・フローを示しています。

図 3. プロセス・フロー

以下の図は、アダプター・アーキテクチャーを示したものです。

図 4. アーキテクチャーの図

OneWorld は、Java、COM、XML、および Table Conversion などのサード・パーティーのアプリケーションと通信するための API をいくつかサポートしています。

アダプターは Java API を使用して OneWorld 内のビジネス関数を起動します。ビジネス・オブジェクトは、ビジネス関数クラスまたはオブジェクトにマップされます。

実装の作業についてまとめると、以下のようになります。

  1. GenJava プロセスの実行用に iJDEScript ファイルを作成します。
  2. GenJava ユーティリティーを実行して、OneWorld オブジェクトの JAR ファイルを生成します。
  3. ODA ツールを実行し、ビジネス関数および XML リスト用のビジネス・オブジェクトを生成します。Business Object Designer Express の実行を参照してください。
  4. 2 つのビジネス・オブジェクト間でメタデータをマップする必要がある場合は、キー・フィールドおよび外部キー・フィールドを設定します。
  5. アダプター構成ファイルにビジネス・オブジェクトを追加します。付録B. Connector Configurator Expressを参照してください。
  6. アダプターを始動します。コネクターの始動を参照してください。

要求処理

コネクター・フレームワークは、ブローカーから要求を受け取ると、要求ビジネス・オブジェクトのビジネス・オブジェクト定義と関連したビジネス・オブジェクト・ハンドラー・クラスの doVerbFor() メソッドを呼び出します。doVerbFor() メソッドの役割は、要求ビジネス・オブジェクトのアクティブな動詞に基づいて、実行する動詞の処理を決定することにあります。要求ビジネス・オブジェクトから情報を取得して、オペレーションの要求を作成し、アプリケーションへ送信します。

コネクター・フレームワークが要求ビジネス・オブジェクトを doVerbFor() に渡すと、このビジネス・オブジェクトがインターフェース・オブジェクトにマップされている場合、ビジネス・オブジェクト・ハンドラーが動詞 ASI を読み込み、それを一連の呼び出し可能な関数に変換します。これらの関数には、Business Object Designer Express で稼働している Object Discovery Agent (ODA) から、特定のセマンティックを与えることができます。ODA を使用してメソッド呼び出しシーケンスを動詞に割り当てる方法の詳細については、ビジネス・オブジェクトの作成および変更を参照してください。オブジェクトの処理を正常に行う ためには、呼び出す順序が非常に重要になります。

動詞 ASI がブランクのインターフェース・ビジネス・オブジェクトの場合、ビジネス・オブジェクト・ハンドラーは、取り込んだパラメーターでビジネス関数属性を検索し、そのビジネス関数を呼び出します。1 つのメソッドのみにデータを取り込むことができます。そうではなく、複数のメソッドにデータが取り込まれているが、動詞 ASI はブランクであるという場合には、コネクターはエラーをログに記録して FAIL コードを戻します。エラー処理の詳細については、エラー処理を参照してください。

ビジネス・オブジェクトがビジネス関数オブジェクトにマップされている場合、ビジネス・オブジェクト・ハンドラーは、そのビジネス・オブジェクトで指定されたデータを持つ特定のビジネス関数を呼び出します。

特定のビジネス・オブジェクトに使用できる検索ビジネス関数がない場合は、検索機能のために XML リスト API を使用できます。

コネクターは、インターフェース・ビジネス・オブジェクトの特定の動詞はサポートしませんが、ビジネス・オブジェクトの動詞は、ODA を使用して構成できます。WebSphere Business Integration Server Express で使用される標準の動詞は、CreateRetrieveUpdate、および Delete です。

ビジネス関数ビジネス・オブジェクトには、ODA がデフォルトの動詞 Execute を生成します。これらのビジネス・オブジェクトには、動詞 ASI は必要ありません。

ビジネス・オブジェクトの特殊なアクセス権をサポートするため、ACCESS_LEVEL という名前のメタ・ビジネス・オブジェクトが定義されています。ACCESS_LEVEL ビジネス・オブジェクトには、Username および Password という 2 つの属性があり、どちらもタイプはストリングです。特殊なアクセス規則を持ち、コネクター構成ファイルで指定された Username によってアクセスできない OneWorld ビジネス・オブジェクトは、このビジネス・オブジェクト (ACCESS_LEVEL) を単一カーディナリティーの子ビジネス・オブジェクトとします。この子ビジネス・オブジェクトは、doVerbFor 呼び出し内でトップレベル・ビジネス・オブジェクトのみに追加する必要があります。このトップレベル・ビジネス・オブジェクトのすべての子ビジネス・オブジェクトは、ACCESS_LEVEL 子ビジネス・オブジェクト内で指定された Username を通じてアクセス可能でなければなりません。

ビジネス・オブジェクト・ハンドラーは、トップレベル・ビジネス・オブジェクトにタイプ ACCESS_LEVEL の子ビジネス・オブジェクトがあるかどうかを検査します。そのような子ビジネス・オブジェクトがあり、そのビジネス・オブジェクト内の Username 属性の値がアダプターの使用している値と異なる場合は、新規の接続を開いて、子ビジネス・オブジェクトの属性 Username および Password の値を使用してビジネス・オブジェクトを処理します。ビジネス・オブジェクトの処理が完了してから、接続を閉じます。

トップレベル・ビジネス・オブジェクトがタイプ ACCESS_LEVEL の子オブジェクトを持たない場合、または UserName 属性がアダプター・プロパティーで指定されている UserName と同じ場合は、ビジネス・オブジェクト・ハンドラーはプールから接続オブジェクトを取り出します。

使用可能な接続オブジェクトが存在しない場合、プール・サイズが最大値に達していなければ、ビジネス・オブジェクト・ハンドラーは新規の接続オブジェクトをプール内に作成します。使用可能な接続オブジェクトが存在せず、プール・サイズが最大値に達している場合は、ハンドラーは使用可能になるまで待機します。

アダプターは、OneWorld インターフェース・クラスまたは XML リスト・ビジネス・オブジェクトにマップされるオブジェクトとして、トップレベル・ビジネス・オブジェクトをサポートします。アダプターは、トップレベル・ビジネス・オブジェクトとしてビジネス関数にマップされるビジネス・オブジェクトもサポートします。アダプターは、ビジネス・オブジェクトのタイプおよび構造に基づいて、ビジネス・オブジェクトを処理します。ODA により生成されるビジネス・オブジェクトに完全に依存する代わりに、論理表現を提供するためにビジネス関数にマップされるビジネス・オブジェクトを使用して、独自の階層を作成できます。例えば、Order の作成と Order Item の作成を行うビジネス関数を階層としてモデル化できます。OrderItems を作成するビジネス関数にマップされるビジネス・オブジェクトは、Order ビジネス・オブジェクトを作成するためにマップされるビジネス・オブジェクトの子ビジネス・オブジェクトとなります。

アダプターは、ビジネス関数にマップされるトップレベル・ビジネス・オブジェクトを実行します。ビジネス・オブジェクトが子ビジネス・オブジェクトを持っていない場合、アダプターはビジネス・オブジェクトに対応するビジネス関数を実行します。このようなビジネス・オブジェクトの階層がビジネス・オブジェクト・ハンドラーへの入力である場合、アダプターは、1 つのトランザクションですべてのビジネス関数を実行します。この場合、動詞 ASI はブランクであり、ビジネス関数のフローはトップレベル・ビジネス・オブジェクトの属性の順序によって決定されます。例えば、トップレベル・ビジネス・オブジェクトが B110031 にマップされており、子 B110032 および B110033 を持っている場合、実行の順序は B110031、 B110032、B110033 です。

ビジネス・オブジェクトの type 属性が XMLList の場合、ビジネス・オブジェクト・ハンドラーはビジネス・オブジェクトで定義された値とフォーマットを持つ XML 文書を作成します。アダプターは、XMLRequest オブジェクトを使用して、OneWorld に XML 文書を送信します。アダプターは応答を XML 応答文書として受信し、ハンドラーは XML 応答文書の応答データを使用してビジネス・オブジェクトにデータを取り込みます。

場合によっては、1 つの呼び出しシーケンスで、単一の単純属性またはオブジェクトを複数回使用しなければならないことがあります。属性 ASI を使用すると、2 つの属性をリンクすることができます。属性が外部キーとしてマークされている場合、この属性は 1 つの属性 ASI である use_attribute_value= タグを持っている必要があり、この値は BusinessObject.AttributeName に対応している必要があります。このリンクは、ソース・ビジネス・オブジェクトが単一カーディナリティーである場合にのみ使用してください。複数カーディナリティーを持つソース・ビジネス・オブジェクトを使用して構成されている場合、アダプターはリストの最初のビジネス・オブジェクトを選択し、そのビジネス・オブジェクトの値をマップします。

アプリケーション・イベントの処理

イベント通知には、アダプターとともに出荷されるイベント・パッケージ BIA_EVENT のインストールと、JDE データベースへのイベント表およびアーカイブ表の作成が必要です。

注:
iSeries OS/400 V5R2 または i5/OS V5R3 プラットフォームで JD Edwards アプリケーション・サーバーを実行している場合は、必要なイベント・パッケージの使用可能性について IBM ソフトウェア・サポートに問い合わせてください。

イベント・パッケージ BIA_EVENT のインストールおよび構成の方法の情報については、IBM イベント・ストアのインストールおよび構成を参照してください。

JD Edwards OneWorld アプリケーションにおけるレコードの作成、更新、または削除の操作は、イベントとして処理できます。イベント表の取り込みには、OneWorld でサポートされるテーブル・トリガーを使用できます。イベント表にイベントを生成するには、JD Edwards が推奨するその他のメソッドを使用することもできます。これらのレコードは、pollForEvents の呼び出し時に取得され、処理されます。イベントに関連するイベント・テーブル・ストアの情報は、表 5 で説明しています。

注:
Event ID は、イベント表内で一意である必要があります。

注:
イベントがサブスクライブされている間に、コネクターは、表 5 の情報を使用して対応するビジネス・オブジェクトをビルドし、後続処理のためにそれらのオブジェクトをコネクター・フレームワークに送信します。

イベント処理用ビジネス・オブジェクトの検索

イベント処理のためのオブジェクトの検索は、キー属性と非キー属性の両方に基づいて行います。ビジネス・オブジェクトが JD Edwards のビジネス関数を表す場合には動詞 Execute が、ビジネス・オブジェクトがインターフェースを表す場合には動詞 Retrieve がサポートされることが必須です。

イベント管理

コネクターは IBM イベント表 (F5501005) を一定間隔でポーリングしてイベントを検索し、最初は優先順位順に、次に順次にイベントを処理します。コネクターがイベントを処理すると、イベントの状況がそれに応じて更新されます。

ArchiveProcessed プロパティーを設定すると、イベントの状況を更新後、コネクターが IBM アーカイブ表 (F5501006) にイベントをアーカイブするかどうかが決定します。ArchiveProcessed プロパティーの詳細については、コネクター固有のプロパティーを参照してください。表 2 は、ArchiveProcessed プロパティーの設定に基づいたアーカイブの振る舞いを示しています。

Copyright IBM Corp. 2004, 2005