ヘッダーをスキップ
Oracle® Fusion Middleware Oracle SOAコア拡張機能開発者ガイド
12c (12.1.3)
E54313-02
  目次へ移動
目次

前
次
 

6 アプリケーション・ビジネス・コネクタ・サービスの設計

この章では、アプリケーション・ビジネス・コネクタ・サービス(ABCS)の概要を示し、ABCSコントラクトの定義方法とMEPの識別方法、アプリケーションとのアウトバウンド相互作用のテクノロジ・オプション、およびBPELを使用したABCSの作成方法について説明します。

この章の内容は次のとおりです。

6.1 ABCSの概要

ABCSの役割は、参加アプリケーションによって提供されるビジネス機能を、エンタープライズ・ビジネス・サービス(EBS)に合わせた表現で公開することです。また、参加アプリケーションからEBSを呼び出すことができるように、両者を結び付ける役割も果たします。図6-1に、E-Business SuiteアプリケーションがABCSを使用してEBSを呼び出すシナリオを示します。このシナリオでは、ABCSはリクエスタとして機能しています。また、同じ図では、EBSが3つのABCSの1つを呼び出して、特定のタスクを実行する方法も示されています。ここでは、3つのABCSはプロバイダとして機能しています。

図6-1 Oracle AIAアーキテクチャにおけるABCS

この図は周囲のテキストで説明しています。

ABCSを使用すると、参加アプリケーションはサービス・プロバイダやサービス・コンシューマになることができます。また、非標準接続を行うアプリケーションの機能をWebサービスとして公開できます。

ABCSの詳細は、Oracle Application Integration Architecture Foundation Packコンセプトおよびテクノロジ・ガイドのアプリケーション・ビジネス・コネクタ・サービスの理解に関する項を参照してください。

6.1.1 ABCSタイプ

ABCSには2つのタイプがあります。

6.1.1.1 リクエスタABCS

リクエスタABCSは要求側アプリケーションによって提供され、EBSとインタフェースして1つのタスクを実行します。サービスは、要求側/ソース・アプリケーションとEBS間をインタフェースします。リクエスタABCSの役割は、参加アプリケーションがEBSを呼び出して、データにアクセスしたり、トランザクション・タスクを実行できるようにすることです。

リクエスタABCSは、EBSを呼び出すために要求側アプリケーションによって提供されるサービスです。アプリケーション・ビジネス・メッセージ(ABM)をペイロードとして受け取り、オプションでABMをレスポンスとして返します。

ABMは、リクエスタ・アプリケーションとの追加の対話によってエンリッチできます。ABMは、XSLを使用してエンタープライズ・ビジネス・メッセージ(EBM)に変換されます。EBSから受信するレスポンス(EBM)はABMに変換されます。

非SOAPペイロードは、リクエスタ・アプリケーションとリクエスタABCSの間でトランスポート・アダプタを使用して処理されます。リクエスタ・アプリケーションは、ABCSに関するシステム情報を渡して後続の対話を行う必要があります。

6.1.1.2 プロバイダABCS

プロバイダABCSはプロバイダ・アプリケーションによって提供され、EBSとインタフェースして1つのタスクを実行します。サービスは、EBSとプロバイダまたはターゲット・アプリケーション間をインタフェースします。

プロバイダABCSとは:

  • プロバイダ・アプリケーションとインタフェースするために、プロバイダ・アプリケーションによって提供されるサービスです

  • EBMをペイロードとして受け取ります

  • (オプション) EBMをレスポンスとして返します

EBMは、XSLを使用してABMに変換されます。ABMは、プロバイダ・アプリケーションとの追加の対話によってエンリッチできます。アプリケーションから受信するレスポンス(ABM)はEBMに変換されます。

プロバイダ・アプリケーションとの非SOAP接続は、プロバイダABCSとプロバイダ・アプリケーションとの間でトランスポート・アダプタを使用して処理されます。

ABCSの詳細は、Oracle Application Integration Architecture Foundation Packコンセプトおよびテクノロジ・ガイドのアプリケーション・ビジネス・コネクタ・サービスの理解に関する項を参照してください。

6.1.2 ABCSの設計 - 主要タスク

ABCSのアーキテクトまたは開発者は、設計アクティビティの過程で次のタスクを実行する必要があります。

  • ABCSの役割の理解

  • ABCSの呼出しをトリガーするビジネス・イベントの識別

  • アプリケーションとABCS間の相互作用の識別

  • 相互作用を容易にするために使用する適切なテクノロジの識別

  • ABCSコントラクトの定義

次の各項では、これらのタスクについて説明します。

6.2 ABCSコントラクトの定義

ABCSコントラクト(WSDL)は、コール元がビジネス・コネクタ・サービスと相互作用する方法を指定します。コール元は、参加アプリケーションまたは他のサービス(EBSなど)のいずれかです。

図6-2に、ABCSのコントラクト(WSDL)を定義するためのデシジョン・フローを示します。

図6-2 ABCSコントラクトを定義するためのデシジョン・フロー

この図は周囲のテキストで説明しています。

6.2.1 ABCSの役割の定義

この項では、ABCSがリクエスタまたはプロバイダの役割で参加するために必要な設計デシジョンについて説明します。

6.2.1.1 リクエスタの役割で参加するためのABCSの設計

ABCSがリクエスタの役割で参加できる方法を決定するには、次のことを検討します。

  1. ABCSが呼出しまたはトリガーされる方法を決定します。この分析によって、ABCSがアプリケーションによって呼び出される方法が示されます。次を決定します。

    1. アプリケーションがSOAPベースでABCSを呼び出せるかどうか。

    2. アプリケーション・サービスがJCAアダプタを使用してABCSを呼び出せるかどうか。

    3. ビジネス・イベントの発生によってアプリケーションが公開するメッセージを、ABCSがサブスクライブする必要があるかどうか。

  2. 必要な相互作用パターンを決定します。

    次の質問は、アーキテクトが最適なメッセージ交換パターンを識別するのに役立ちます。

    1. リクエスタABCSの呼出しを発生するビジネス・イベントは何か。

    2. アプリケーションはリクエスタABCSからのレスポンスが必要か。

    3. アプリケーションはレスポンスを受信するまで待機してから次のタスクを実行する必要があるか。

    4. アプリケーションはリクエストがプロバイダ・アプリケーションによって完全に処理されるまで待機する必要があるか。

    MEPの選択方法の詳細は、「適切なMEPの選択」を参照してください。

  3. 呼び出す必要があるエンタープライズ・ビジネス・サービスまたは操作を決定します。

  4. リクエスタ・アプリケーションによって送信されるメッセージに、リクエスタABCSがEBMを作成するのに必要な情報がすべて含まれているか。

    1. そうでない場合は、アプリケーションにアクセスして追加情報を取得する必要があるか。

    2. そうである場合、使用可能なテクノロジは何か。追加情報を取得するのに使用されるアプリケーション・インタフェースは何か。

    詳細は、「テクノロジ・オプション」を参照してください。

  5. アプリケーションは不完全な情報を含むメッセージを公開できるか。

    1. 完全な情報を含むメッセージが公開されるまでABCSは待機する必要があるか。

      この場合、関連メッセージの完全セットを受け取るまで、アグリゲータによって各メッセージを収集および格納する必要があります。

    2. そうである場合、アプリケーション・サービスは何か、通信はどのような方法か。

6.2.1.2 プロバイダの役割で参加するためのABCSの設計

ABCSがプロバイダの役割で参加できる方法を決定するには、次のことを検討します。

  1. EBSによって送信された情報をアプリケーションが直接使用できるかどうかを決定します。
  2. ABCSがプロバイダ・アプリケーションと相互作用する方法を決定します。

    「リソース接続の確立」を参照してください。

  3. このABCSで実行する必要があるタスクを定義します。
  4. アプリケーションと通信するのに使用するメッセージ交換パターン(MEP)を決定します。
  5. リクエストをプロバイダ・アプリケーションに送信する前に、EBSから送信されたEBMでデータ検証を実行する必要があるかどうかを決定します。
  6. メッセージの保証付き配信が必要かどうかを決定します。
  7. 複数インスタンスのデータを含む1つのメッセージかどうかを決定します。
  8. メッセージ全体を1つの作業単位として処理する必要があるかどうかを決定します。
  9. そのメッセージ内にあるインスタンスのサブセットに障害が発生した場合に実行する内容を決定します。

6.2.2 ABMスキーマの作成

ABMスキーマは、参加アプリケーションによって作成されます。ABMを定義するときは、次の点を考慮してください。

  • ABM定義を頻繁に変更するとABCS開発に負荷がかかるため、持続的で長期に使用できるメッセージを作成します。

  • 変換マップの再利用を促進するために、複数のABM間でビジネス・コンポーネントを再利用できるようにします。

  • 次のシステム・データを渡すようにABMを設計します。

    • システム・インスタンス - システム・レジストリに登録されたシステムIDの識別に役立つ接続情報

    • ロケール - リクエストが送信されるときの言語コード

    • 送信者情報 - メッセージの作成に関連するコンテキスト詳細

  • 拡張可能なABMを設計します。

6.2.3 参加アプリケーションの統合機能の分析

参加アプリケーションの統合機能を分析する手順は、次のとおりです。

参加アプリケーションを識別した後に、各参加アプリケーションの統合機能およびデータの公開方法を分析する必要があります。

  1. アプリケーション・プロバイダ(開発者)と協力して、必要な機能を実現するためにアプリケーションと相互作用する最適な方法を決定します。

    相互作用はインバウンドまたはアウトバウンドになります。相互作用メカニズムには次のいずれかを使用できます。

    • SOAP/HTTPを使用するWebサービス

    • イベント/キュー

    • JCAアダプタ

    • データベース・アダプタ

    様々なリソースへの各種接続タイプの詳細は、「リソース接続の確立」を参照してください。

  2. 参加アプリケーションとABCS間の相互作用にメッセージ・キュー・アダプタ、データベース・アダプタまたはJCAアダプタを使用する場合は、アプリケーションから関連する詳細を取得します。

    これらの詳細は、アダプタの構成で使用されます。構成によってWSDLが作成されます。環境固有の詳細が、WSDLに直接ではなく、サーバー上の関連リソース・ファイルに構成されていることを確認してください。

  3. 参加アプリケーション内で使用可能な機能、およびEBMとアプリケーション・ビジネス・オブジェクト間のマッピング(マップ操作)を識別します。

    2つの間には、1対1、1対多または多対1のマッピングが存在します。

  4. エンタープライズ・ビジネス・オブジェクト(EBO)属性/要素とアプリケーション・オブジェクト属性/要素の間のマッピングをスプレッドシートで一覧表にします。

    変換マップを作成するときは、次の点に注意してください。

  5. ABMをEBMにマップする場合は、ABM内に存在するすべてのデータ要素をEBM内の対応する要素に入力するように試みてください。

    EBM内のすべてのデータ要素を満たすだけのデータがABM内に存在しない場合は、関連するリクエスタ・アプリケーション・チームと協力して、EBMの内容を入力できるアプリケーション・サービスを識別する必要があります。

    たとえば、CreateOrder ABCSを呼び出すSiebelアプリケーションは、ペイロードとして渡されるABMにSiebel顧客IDのみ提供できます。しかし、CreateOrder EBS操作にペイロードとして渡されるEBMには、顧客に関するすべての情報が必要です。そのため、CreateOrder ABCSは、Siebelサービスを呼び出し、Siebelアプリケーションから完全な顧客詳細を取得してEBMに入力する必要があります。このパターンは統合プラットフォームでもサポートされていますが、対話を最小限にするために、参加アプリケーションと協力して、ABCSに渡されるペイロードを可能なかぎりEBMの形式に近づけておくことをお薦めします。

6.3 MEPの識別

ABCSとそのクライアント間で可能な相互作用タイプは次のとおりです。

  • 同期リクエスト/レスポンス

  • 非同期リクエストのみ

  • 非同期リクエスト/遅延レスポンス

MEPの機能と使用方法は、ABCSの役割によって異なります。

MEPの詳細は、Oracle Application Integration Architecture Foundation Packコンセプトおよびテクノロジ・ガイドの相互作用パターンの理解に関する項を参照してください。

6.3.1 MEPの概要

同期リクエスト/レスポンス・パターン

  • リクエスタがリクエストをプロバイダに送信すると、プロバイダはそのリクエストを処理してレスポンスを返信します。

  • リクエスタは、プロバイダからレスポンスを受信するまで一時停止モードになります。

  • 結果は、リアルタイムレスポンスまたはエラー・フィードバックです。

非同期リクエストのみ

  • メッセージ交換は、リクエスタがリクエストをプロバイダに送信する一方向です。プロバイダからリクエスタへのレスポンスはありません。

  • リクエスタは、リクエストの送信後、通常の実行を再開できます。

非同期リクエスト/遅延レスポンス

  • これには、一方向の呼出しが2つ含まれます。

  • 最初に、リクエスタからプロバイダへの一方向メッセージが送信されます。その後に、別の一方向メッセージがプロバイダから元のリクエスタに返されます。

  • 2つの異なる一方向メッセージは相互に関連しています。

MEPの詳細は、Oracle Application Integration Architecture Foundation Packコンセプトおよびテクノロジ・ガイドの相互作用パターンの理解に関する項を参照してください。

6.3.2 適切なMEPの選択

  • 参加アプリケーションがABCSとの間でインバウンドとアウトバウンドの相互作用を行う方法を識別します。

  • リクエスタ・アプリケーションは、プロバイダ・アプリケーションからレスポンスを受信するまで、呼出しを待機する必要があるかどうかを識別します。

    プロバイダ・アプリケーションからレスポンスを受信するまで待機する場合、リクエスタ・アプリケーションはABCSを同期で呼び出すように強制されます。たとえば、リクエストを送信して請求アプリケーションからアカウント詳細を取得するCRMアプリケーションがこれに該当します。この場合、リクエスタはレスポンスを受信するまで他のタスクを実行できません。

    ただし、請求アプリケーションで顧客を作成する場合、CRMアプリケーションからのリクエストの送信は非同期で行うことができます。CRMアプリケーションはアウトバウンド・リクエストを公開した後に次のアクティビティに移行でき、プロバイダ・アプリケーションが顧客を正常に作成するまで待機する必要はありません。この場合、CRMアプリケーションはこのアウトバウンド・リクエストを非同期で呼び出します。

アプリケーションは、様々な種類の統合テクノロジを利用して、同期または非同期の呼出しを行うことができます。状況に応じて、最適なテクノロジを選択する必要があります。

AIAサービスがアプリケーションと相互作用する方法の詳細は、「リソース接続の確立」を参照してください。

1つのフロー内で、リクエスタABCSのMEPは、呼び出されるEBS操作のMEPの影響を受けますが、リクエスタ・アプリケーションの相互作用機能もリクエスタABCSのMEPに影響を与えます。プロバイダABCSの場合、MEPはEBS操作のMEPの影響を多く受けます。

6.3.2.1 同期リクエスト/レスポンスMEPを使用する場合

リクエストを開始した参加アプリケーションはレスポンスを待機しているため、問合せと検証を含むほとんどのケースでこのパターンが必要です。その他のケースでこのパターンが適しているかどうかは、実行される処理量に基づき、求められるレスポンス時間や要件が満たされる可能性によって決まります。

リクエスタABCSとEBS間のMEPは同期です。プロバイダABCSとリクエストを開始する参加アプリケーションとの間のMEPは、同期または非同期が可能です。

問合せの詳細は、「問合せ」を参照してください。

検証の詳細は、「検証」を参照してください。

ユースケース

請求システムから顧客に関するアカウント詳細をリクエストするCRMアプリケーション

図6-3に、AIAサービス、リクエスタABCSおよびCustomerPartyEBS間の双方向通信を示します。

図6-3 GetAccountBalanceSummary統合シナリオ

この図は周囲のテキストで説明しています。

6.3.2.2 非同期リクエストのみ(ファイア・アンド・フォーゲット) MEPを使用する場合

このパターンは次の場合に使用します。

  • リクエスタABCSが参加アプリケーションからリクエスト・メッセージを受信し、EBSを呼び出して終了します。この場合、EBSからリクエスタABCSへのレスポンスはなく、リクエストを開始した参加アプリケーションへのレスポンスもありません。

  • プロバイダABCSがEBSからリクエスト・メッセージを受信し、プロバイダ参加アプリケーションAPIを呼び出して終了します。リクエストを開始したEBSへのレスポンスはありません。

ユースケース

CustomerPartyを作成するためにBRMアプリケーションにリクエストを送信するCRMアプリケーション

参加アプリケーションであるSiebelの観点から見ると、CustomerPartyを作成するためのBRMアプリケーションへのリクエスト・メッセージは、後で処理するためにエンキューされます。Siebelアプリケーションは即時に処理を再開できます。リクエスト・メッセージはキューからデキューされ、非同期で処理されます。

図6-4に、AIAサービス、リクエスタABCSおよびCustomerPartyEBS間の一方向呼出しを示します。

図6-4 一方向呼出しの例

この図は周囲のテキストで説明しています。

6.3.2.3 非同期リクエスト/遅延レスポンスMEPを使用する場合

このパターンは次の場合に使用します。

  • リクエスタABCSは、リクエスト・メッセージを受信し、そのメッセージを処理して、最後に、参加アプリケーションによって公開されたAPIを呼び出して、リクエストを開始した参加アプリケーションを更新します。参加アプリケーションはレスポンスを待機しません。

  • プロバイダABCSは、EBSリクエスト・メディエータ・サービスからリクエスト・メッセージを受信し、そのメッセージを処理して、最後に、EBSリクエスト・メディエータ・サービスのレスポンス操作を呼び出して、要求側サービス(リクエスタABCSまたはエンタープライズ・ビジネス・フロー(EBF))に応答します。EBSメディエータ・サービスはレスポンスを待機しません。

MEPは、リクエスタABCSとEBS間で同期または非同期が可能で、プロバイダABCSとプロバイダ参加アプリケーション間でも同期または非同期が可能です。

6.4 テクノロジ・オプション

この項では、次のテクノロジ・オプションについて説明します。

リソース接続の詳細は、「リソース接続の確立」を参照してください。

6.4.1 アプリケーションとのアウトバウンド相互作用

ABCSとアプリケーション間の通信は、アプリケーション機能によって管理されます。

通信テクノロジは次のとおりです。

  • JCAアダプタ

  • 標準Webサービス・インタフェース

  • アダプタ

  • JMSキュー

6.4.1.1 アウトバウンド相互作用でJCAアダプタを使用する場合

JCAアダプタが使用可能で使用が認可されている場合は、開発者がアプリケーションに接続する方法として最初に選択する必要があります。

JCAアダプタとは:

  • 同一の場所に配置する方法でネイティブに参加アプリケーションを呼び出します。

  • プログラミング・インタフェースを標準化します。

  • サービス品質(QoS)の実装を標準化します。

  • ランタイム環境と組み合せて、接続管理、トランザクション管理およびスケーラビリティに関連するタスクをサポートします。

アウトバウンド接続の確立の詳細は、「リソース接続の確立」を参照してください。

6.4.1.2 アウトバウンド相互作用に標準Webサービス・インタフェース(SOAP/HTTP、XML/HTTP)を使用する場合

これは、参加アプリケーションと通信する最も一般的な方法です。

ほとんどのアプリケーションは、Webサービスの形式で機能を公開しています。最も一般的に使用されるトランスポートはSOAP over HTTPですが、アプリケーションによっては直接XML over HTTPを公開しています。

6.4.1.3 アウトバウンド相互作用でJCAアダプタ(データベース、ファイル、JMSまたはAQJMS)を使用する場合

メッセージの送信がメッセージ処理から分離している場合は、キューの使用をお薦めします。JMSキューを使用すると、JMSアダプタを使用してJMSキューにアクセスする必要があります。ABCSによってメッセージがJMSキューにエンキューされ、アプリケーションによってそのメッセージがデキューされます。

ヒント:

非同期モードのアウトバウンド相互作用を行う参加アプリケーションの場合は、メッセージ・キューを使用してリクエストを公開することをお薦めします。この方法を推奨するのは、高いスケーラビリティが実現し、エンドユーザーの操作性も向上するためです。同様に、アプリケーションへのアウトバウンド相互作用を行うABCSでは、アプリケーションによって実行されるタスクを評価する必要があります。アプリケーションでタスクを実行するのに長時間かかる場合は、メッセージ・キューを使用してアプリケーションと通信してください。

同期モードのみでアウトバウンド相互作用を行う参加アプリケーションは、SOAP/HTTPを使用してリクエストを送信する必要があります。

JMSアダプタの詳細は、『Oracle WebLogic Server JMSリソースの管理』を参照してください。

6.4.2 BPELを使用したABCSの作成

BPELコンポーネントを使用してABCSコンポジットを作成することをお薦めします。

次の場合にBPELを使用すると最も効率的です。

  • 長時間実行プロセスが存在する場合。

    数時間または数日を要する長時間実行プロセスが存在する場合は、BPELテクノロジの使用をお薦めします。この場合、BPELは特定のフック・ポイントでプロセスを保持(デハイドレーション)し、必要になった時点でプロセスを再開します。

  • 複雑な編成機能が必要な場合。

    複雑な編成、並列処理、参加アプリケーションまたは統合サービス(BPA、BAM、ワークフロー、ルール・エンジンなど)との複数の対話を必要とするシナリオの場合は、BPELを使用すると最も効率的です。

  • XSLTを使用して実行できないコンテンツを拡充および検証する場合。

    意思決定や検証が複雑でXSLTを使用して実行できない場合は、標準的なBPEL手続き型コンストラクトやルール・エンジンの呼出しなどの方法が必要になります。BPELを使用すると、非常に複雑な意思決定ツリーの実行や、複数パートナへの結果のルーティングが容易になります。

  • 集約または分割が必要な場合。

    メッセージ処理またはデータ収集を行うために、ABCSがアプリケーション呼出しを複数回実行し、結果を1つのメッセージにまとめる必要がある場合は、BPELテクノロジの使用をお薦めします。BPELコンストラクトを使用すると、ペイロードの分割または統合、あるいは呼出しの集約または分割が可能になります。BPELプロセスは、呼出し間の状態保持やトランザクション処理も行います。

  • 参加アプリケーション機能の補完が必要な場合。

詳細は、『Oracle SOAスイートでのSOAアプリケーションの開発』を参照してください。