この章の内容は次のとおりです。
この章では、サービス指向アーキテクチャおよび標準の概要、Oracle SOA Suiteの機能、サービス・コンポーネントのアーキテクチャ、実行時の動作および設計時のアプローチについて説明します。
市場の変化、競争の激化、顧客ニーズの推移によって、ITにはこれまで以上の柔軟性とスピードが求められています。現在、すべての企業はグローバルなビジネス環境における変化を予測し、競合他社にすばやく対応し、成長のために自社の資産を最大限に活用する必要性に迫られています。このような課題に対し、先進企業では、アプリケーションやIT環境の複雑さを克服し、これらの要求に応える手段としてサービス指向アーキテクチャ(SOA)を採用しています。
SOAは、ビジネス上の問題に対するソリューションを提供するために、エンタープライズ・アプリケーション統合の構築をサポートするエンタープライズ・アーキテクチャを提供します。SOAは、統合と再利用が容易で、柔軟かつ順応性のあるITインフラストラクチャを作成するモジュール型ビジネスのWebサービスとして、エンタープライズ・アプリケーションの開発を促進します。
SOAでは、ビジネス機能を個別の単位、つまりサービスに分割します。SOAアプリケーションでは、サービスを再利用してビジネス・プロセスを自動化します。
サービスは標準インタフェースとメッセージ構造によって定義されます。最も広く使用されているメカニズムはWebサービス用の標準です。この標準には、サービス・インタフェース定義用のWeb Services Description Language (WSDL)ファイル、およびメッセージ構造定義用のXMLスキーマ・ドキュメント(XSD)が含まれます。これらのXML標準は、標準プロトコルを使用して容易に変換されます。Webサービス用の標準は標準ドキュメント構造を使用しているため、サービス実装で使用するオペレーティング・システムやコンピュータ言語に関係なく、既存のシステム間の相互運用が可能になります。
SOAアプローチを設計するときは、サービス・ポートフォリオ・プランを作成して、ビジネス・プロセスでサービスとして使用する共通機能を識別します。プランを作成して管理することにより、可能な場合は常に、既存のサービスやアプリケーションを再利用したり別の目的用に再定義できます。また、このプランにより、アプリケーションに必要な機能を作成する時間を削減できます。
Oracle SOA Suiteには、コンポジット・アプリケーションを設計、デプロイおよび管理するためのサービス・インフラストラクチャ・コンポーネントの完全なセットが用意されています。Oracle SOA Suiteにより、サービスの作成と管理を行って、複合アプリケーションとビジネス・プロセスに編成できます。コンポジットを使用すれば、複数のテクノロジ・コンポーネントを組み合せて1つのSOAコンポジット・アプリケーションを簡単に作成できます。Oracle SOA Suiteは異種ITインフラストラクチャに組み込まれ、企業によるSOAの段階的な採用を可能にします。
Oracle SOA Suiteの各コンポーネントは、単一のデプロイメント、管理、ツール・モデル、エンドツーエンドのセキュリティ、統一メタデータ管理などの共通機能を利用しています。Oracle SOA Suiteの優れている点は、次のような統合された機能セットが備わっていることです。
メッセージング
サービスの検出
編成
Webサービスの管理とセキュリティ
ビジネス・ルール
人との対話
イベント・フレームワーク
ビジネス・アクティビティ・モニタリング
Oracle SOA Suiteでは、標準および相互運用性を特に重要視しています。次の標準が使用されています。
サービス・コンポーネント・アーキテクチャ(SCA)アセンブリ・モデル
サービス詳細と相互運用性を提供し、コンポジット・アプリケーションを形成します。SCAにより、ビジネス・ロジックを、すべてのSCA準拠アプリケーションに容易に統合できる再利用可能なサービス・コンポーネントとして表現できます。その結果、アプリケーションはSOAコンポジット・アプリケーションになります。SCA標準の仕様は、オープン複合サービス・アーキテクチャ(CSA)会員セクションを介して、Organization for the Advancement of Structured Information Standards (OASIS)によって管理されています。
サービス・データ・オブジェクト(SDO)
標準データ・メソッドを指定することで、物理的にどのようにアクセスされているかに関係なくビジネス・データを修正できます。SOAコンポジット・アプリケーションでSDOを使用する場合、特定のバックエンド・データ・ソースへのアクセス方法についての知識は不要です。つまり、静的または動的なプログラミング・スタイルを使用して、接続および切断されたアクセスを取得できます。
Business Process Execution Language(BPEL)
ビジネス・プロセス・オーケストレーションと実行に関する業界標準を企業に提供します。BPELを使用すると、独立した一連のサービスをエンドツーエンドのプロセス・フローに統合するビジネス・プロセスを設計できます。この統合により、プロセスのコストと複雑さが低減されます。BPELバージョン1.1および2.0がサポートされています。
XSLトランスフォーメーション(XSLT)
XML文書を処理し、文書データを、あるXMLスキーマから他のスキーマに変換します。
XQueryトランスフォーメーション(XQuery)
構造化と非構造化のデータにおける問合せと変換のコレクションで、一般的にXMLの形式です。
Java Connector Architecture(JCA)
エンタープライズ情報システム(EIS)での多数のアプリケーション・サーバー間にある接続性の問題に対して、Javaテクノロジ・ソリューションを提供します。
Java Message Service
Java 2 Platform Enterprise Edition (Java EE)に基づいたアプリケーション・コンポーネントによって、異種システム間で分散されているビジネス・ロジックにアクセスできるメッセージング標準を提供します。
Web Service Definition Language (WSDL)ファイル
SOAコンポジット・アプリケーションへのエントリ・ポイントを提供します。WSDLファイルは標準規約言語を提供するもので、サービスの機能を理解する場合に必須です。
Simple Object Access Protocol
メッセージ配信に対するデフォルトのネットワーク・プロトコルを提供します。
Representational State Transfer (REST)
ネットワーク・アプリケーションを設計するためのアーキテクチャが用意されています。RESTfulアプリケーションでは、HTTPリクエストを使用してデータのポスト(作成および更新)、データの取得(問合せの作成など)およびデータの削除を行います。RESTは、Webサービスを使用するかわりの方法となります。
JavaScript Object Notation(JSON)
オブジェクトと呼ばれる連想配列と単純なデータ構造を表現するための言語が用意されています。JSONは、人間が判読可能なデータの交換を行うために設計された標準です。JSONはJavaScriptスクリプト言語から派生しています。
Webアプリケーション記述言語(WADL)
HTTPベースWebアプリケーション(一般的にREST Webサービス)の可読なXML説明が用意されています。WADLにより、Webの既存HTTPアーキテクチャに基づいて、Webサービスの再利用が単純になります。
Oracle SOA Suiteでは、SCA標準を使用して複数のサービス・コンポーネントを1つのSOAコンポジット・アプリケーションに組み立てます。SCAは、次のプログラミング・モデルを提供します。
Java、C++などのプログラミング言語やXSLTなどの宣言的な言語を含む各種のテクノロジを使用して記述されたサービス・コンポーネントを作成します。SCAでは、特定のプログラミング言語やテクノロジ(Webサービスを含む)を使用する必要はありません。
複数のサービス・コンポーネントを1つのSOAコンポジット・アプリケーションに組み立てます。SCA環境では、サービス・コンポーネントはアプリケーションのビルディング・ブロックです。
SCAでは、サービス・コンポーネントの分散グループをアプリケーションにまとめるためのモデルを提供することにより、サービスの詳細、サービスとサービス・コンポーネントの相互作用方法を記述できます。コンポジットはサービス・コンポーネントをグループ化するのに使用され、ワイヤはサービス・コンポーネントを接続するのに使用されます。SCAの目的は、セキュリティおよびトランザクションを含むコンポジットにインフラストラクチャを宣言的に適用することにより、ミドルウェアの問題をプログラミング・コードから除去することです。
SCAには、主に次の利点があります。
疎結合
サービス・コンポーネントは、他のサービス・コンポーネントがどのように構築されているかを考慮することなく、他のサービス・コンポーネントと統合できます。
柔軟性
サービス・コンポーネントは、他のサービス・コンポーネントと簡単に交換できます。
サービス起動
サービスは、同期的または非同期的に起動できます。
生産性
サービス・コンポーネントを簡単に統合し、SOAコンポジット・アプリケーションを作成します。
簡単なメンテナンスとデバッグ
サービス・コンポーネントは、問題が発生しても簡単に保守やデバッグを実行できます。
SOAコンポジットは複数のサービス、サービス・コンポーネントおよび参照の集合で、単一のアプリケーション内で設計されデプロイされます。サービス、サービス・コンポーネントおよび参照間でのワイヤリングにより、メッセージ通信が可能になります。コンポジットの詳細は、composite.xml
ファイルに格納されています。
図1-1 はコンポジットの例を示しています。このコンポジットには、インバウンド・サービス・バインディング・コンポーネント、BPELプロセス・サービス・コンポーネント(Account
)、ビジネス・ルール・サービス・コンポーネント(AccountRule
)および2つのアウトバウンド参照バインディング・コンポーネントが含まれています。
サービス・コンポーネントは、SOAコンポジット・アプリケーションの構築に使用するビルディング・ブロックです。
次のサービス・コンポーネントを使用できます。各サービス・コンポーネントに対して同じ名前の対応するサービス・エンジンがあります。すべてのサービス・エンジンは、単一のコンポジットでの相互作用が可能です。
BPELプロセスにより、プロセス・オーケストレーションおよび同期または非同期プロセスの保存ができます。一連のビジネス・アクティビティとサービスをエンドツーエンドのプロセス・フローに統合するビジネス・プロセスを設計します。
ビジネス・ルールにより、ルールに基づいたビジネス上の意思決定を設計できます。
ヒューマン・タスクにより、ユーザーまたはグループが、エンドツーエンドのビジネス・プロセス・フローの一環として実行するタスクを記述するワークフローのモデリングが提供されます。
メディエータは、異なるコンポーネント間でイベント(メッセージ)をルーティングするために使用します。
Springにより、JavaインタフェースをSOAコンポジット・アプリケーションに統合できます。
サービス・コンポーネントの詳細は、「サービス・コンポーネントの追加」を参照してください。
バインディング・コンポーネントは、SOAコンポジットと外部との接続を確立します。バインディング・コンポーネントには、次の2種類があります。
サービス
サービスは、外部の世界に対して、SOAコンポジット・アプリケーションへのエントリ・ポイントを提供します。サービスのWSDLファイルによって、そのサービスの機能が外部のアプリケーションに通知されます。これらの機能は、SOAコンポジット・アプリケーション・コンポーネントとの接続に使用されます。サービスのバインディング接続性には、サービス(SOAP/HTTPやJCAアダプタなど)と通信できるプロトコルが記述されています。
参照
参照は、SOAコンポジット・アプリケーションから外部にある外部サービスに送信するメッセージを有効にします。
表1-1 では、Oracle SOA Suiteで提供されるバインディング・コンポーネントをリストして説明します。
表1-1 Oracle SOA Suiteで提供されるバインディング・コンポーネント
バインディング・コンポーネント | 説明 |
---|---|
Webサービス(SOAP over HTTP) |
SOAP over HTTPを使用した標準ベース・サービスへの接続に使用します。 |
JCAアダプタ |
テクノロジ(データベース、ファイル・システム、FTPサーバー、メッセージング、JMS、IBM WebSphere MQ、Oracle User Messaging Service、LDAPサーバー、Oracle Coherenceキャッシュなど)およびアプリケーション(Oracle E-Business Suite、PeopleSoftなど)への、サービスと参照の統合に使用します。 これには、AQアダプタ、データベース・アダプタ、ファイル・アダプタ、FTPアダプタ、JMSアダプタ、MQアダプタ、ソケット・アダプタ、Oracle User Messaging Serviceアダプタ、LDAPアダプタ、Oracle Coherenceアダプタおよびサード・パーティ・アダプタが含まれます。 |
Oracle B2B |
Oracle Metadata Servicesリポジトリ(MDSリポジトリ)でのB2Bメタデータの参照とドキュメント定義の選択に使用します。 |
Oracle Healthcare |
ヘルスケア・システムとの間でメッセージを送受信するために使用します。 |
ADF-BCサービス |
SOAプラットフォームがあるSDOを使用したOracle Application Development Framework (ADF)アプリケーションへの接続に使用します。 |
Oracle E-Business Suite |
OracleアプリケーションへのOracle E-Business Suiteアダプタの統合に使用します。 |
BAM 11gアダプタ |
Java EEアプリケーションをOracle BAMgサーバーに統合してデータを送るために使用し、また、SOAコンポジット・アプリケーションにおいて参照バインディング・コンポーネントとしても使用します。 注意: このアダプタはOracle BAM 11gサーバーにのみ接続できます。 |
EJBサービス |
Enterprise JavaBeansへのSDOパラメータまたはJavaインタフェースの統合に使用します。 |
直接バインディング・サービス |
インバウンド方向では、SOAコンポジット・アプリケーションの起動、およびRemote Method Invocation (RMI)を介したメッセージの交換に使用します。アウトバウンド方向では、Oracle Service Bus (OSB)フローまたは別のSOAコンポジット・アプリケーションの起動に使用します。 |
HTTPバインディング |
HTTPバインディングへのSOAコンポジット・アプリケーションの統合に使用します。 |
RESTサービス |
SOAコンポジット・アプリケーションのRESTサービスとREST対応SOAコンポジット・アプリケーションの統合に使用します。 |
Oracle Managed File Transfer (MFT) |
多くのエンドポイント・タイプ(リモートや組込みのFTPサーバーやsFTPサーバー、ディレクトリ、SOAP Webサービス、Oracle SOA Suite、Oracle Service Bus、Oracle B2B、Oracle Healthcare、Oracle Data Integratorエンドポイントなど)におけるファイル転送に使用します。 |
クラウド・アダプタ |
クラウド・アダプタにより、クラウド・サーバーとメッセージの送受信ができます。 |
バインディング・コンポーネントの詳細は、「サービス・バインディング・コンポーネントの追加」および「参照バインディング・コンポーネントの追加」を参照してください。
ワイヤを使用すると、メッセージ通信のために、次のコンポーネントを単一のSOAコンポジット・アプリケーションでグラフィカルに接続できます。
サービス・コンポーネントに対するサービス
他のサービス・コンポーネントに対するサービス・コンポーネント
参照に対するサービス・コンポーネント
ワイヤの詳細は、「ワイヤの追加」を参照してください。
図1-2 は、SCAテクノロジを使用したSOAコンポジット・アプリケーションの操作性を示しています。この例では、外部アプリケーション(..NET支払計算)がSOAコンポジット・アプリケーションとの接続を開始しています。
サービス、参照、サービス・コンポーネントおよびワイヤがアプリケーション内で実行するタスクの詳細は、「SOAコンポジット・アプリケーション内のサービス・コンポーネント・アーキテクチャ」を参照してください。
.NET支払計算は外部アプリケーションで、SOAPメッセージをSOAアプリケーションに送信して接続を開始します。サービス・インフラストラクチャは、バインディング・コンポーネントからSOAPメッセージを受信し、対象のコンポーネント・ターゲットを判断します。BPELプロセス・サービス・エンジンは、BPEL融資プロセス・アプリケーションが処理するメッセージをサービス・インフラストラクチャから受信し、処理が完了すると、そのサービス・インフラストラクチャに転送します。
表1-2 は、図1-2 に示すSOAコンポジット・アプリケーションの操作性を説明しています。
表1-2 SCAテクノロジを使用したSOAコンポジット・アプリケーションの概要
部分 | 説明 | 図%s 2での使用例 | 関連項目 |
---|---|---|---|
バインディング・コンポーネント |
SOAコンポジットと外部との接続を確立します。このロールには2つのタイプがあります。
|
SOAPバインディング・コンポーネント・サービスは、次のことを行います。
図1-2 の参照バインディング・コンポーネントの例は、融資プロセス・アプリケーションです。 |
|
サービス・インフラストラクチャ |
内部メッセージ・トランスポートを提供します。 |
サービス・インフラストラクチャ:
|
|
サービス・エンジン(サービス・コンポーネントをホストするコンテナ) |
サービス・コンポーネントのビジネス・ロジックまたは処理ルールをホストします。各サービス・コンポーネントには固有のサービス・エンジンがあります。 |
BPELプロセス・サービス・エンジン:
|
|
Universal Description, Discovery, and Integration (UDDI)およびMDS |
MDSリポジトリには、使用可能なサービスの説明が保存されます。UDDIでは、これらのサービスが通知され、実行時における検出と動的バインディングを可能にします。 |
このコンポジット・アプリケーションで使用されるSOAPサービスは、MDSリポジトリに保存され、またUDDIに対して公開できます。 |
olink:SOAGSデザインタイムMDSリポジトリとの共有データの管理 |
SOAアーカイブ・コンポジット (デプロイメント・ユニット) |
コンポジット・アプリケーションを記述するデプロイメント・ユニット。 |
コンポジット・アプリケーションのSOAアーカイブ(SAR)はサービス・インフラストラクチャにデプロイされます。 |
サービス・インフラストラクチャは、次の内部メッセージ・ルーティング・インフラストラクチャ機能を提供して、コンポーネントを接続し、データ・フローを有効にします。
SOAPサービスやアダプタを介して、サービス・プロバイダや外部パートナからメッセージを受信します。
メッセージを適切なサービス・エンジンに送信します。
サービス・エンジンから受信したメッセージを、ワイヤリングに基づいて、コンポジットの追加サービス・エンジンまたは参照バインディング・コンポーネントに送信します。
サービス・エンジンは、サービス・コンポーネントのビジネス・ロジックや処理ルールをホストするコンテナです。サービス・エンジンはサービス・インフラストラクチャから受信したメッセージ情報を処理します。
各サービス・コンポーネントに対して同じ名前の対応するサービス・エンジンがあります。すべてのサービス・エンジンは、単一のコンポジットでの相互作用が可能です。
詳細は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』を参照してください。
SARは、SOAアーカイブ・デプロイメント・ユニットです。SARファイルは、接頭辞sca_
が必要な特別なJARファイルです (例: sca_OrderBookingComposite_rev1.0.jar
)。SARファイルは、サービス・インフラストラクチャにデプロイされます。SARは、BPELプロセス、ビジネス・ルール、ヒューマン・タスクおよびOracle Mediatorルーティング・サービスなどのサービス・コンポーネントを単一のアプリケーションにパッケージ化します。SARファイルは、以前のリリースのBPELスーツケース・アーカイブと類似していますが、上位のコンポジット・レベルで対応し、アプリケーションに含まれる追加サービス・コンポーネント(ヒューマン・タスク、ビジネス・ルールおよびOracle Mediatorルーティング・サービスなど)があります。
詳細は、「SOAコンポジット・アプリケーションのデプロイ」を参照してください。
SOAコンポジット・アプリケーションを作成する際は、次のいずれかのアプローチを選択できます。
トップダウン: ビジネス・プロセスを分析し、プロセスをサポートするアクティビティを識別します。コンポジットを作成するときに、を使用してすべてのSOAコンポーネントを定義します。すべてのサービスを最初に作成し、次に、作成したサービスを参照するBPELプロセスを作成します。
ボトムアップ: 既存のアプリケーションとアセットを分析し、サービスとして使用可能かどうかを識別します。BPELプロセスを作成するときに、必要に応じてサービスを作成します。この方法は、ITが変更に応じる必要がある場合に有効です。
この開発者ガイドは、表1-3 で説明する各項で構成されています。この表の各項を使用して、SOAコンポジット・アプリケーションの開発を開始できます。
表1-3 Oracle SOA Suiteの開始
開始する作業 | 参照先 |
---|---|
コンポジット、サービスおよび参照バインディング・コンポーネントの基本的な手順と、Oracle JDeveloperでのサービス・コンポーネントの作成 |
|
SOAデザインタイムOracle Metadata Servicesリポジトリ(MDSリポジトリ)との共有データの使用 |
|
コンポジットでのBPELプロセス・サービス・コンポーネントの設計 |
|
コンポジットでのOracle Mediatorサービス・コンポーネントの設計 |
|
コンポジットでのビジネス・ルール・サービス・コンポーネントの設計 |
|
コンポジットでのヒューマン・ワークフロー・サービス・コンポーネントの設計 |
|
コンポジットでのサービス・バインディング・コンポーネントおよび参照バインディング・コンポーネントの設計 |
|
テンプレート、XSLT変換およびXQuery変換、ビジネス・イベント、相互参照、ドメイン値マップなどのコンポーネント間で共有可能な機能 |
|
セキュリティ・ポリシー・アタッチメント、デプロイメント、デバッグ、コンポジットのテストの自動化などのコンポジット・タスクの完成 |
|
大量のドキュメントや大量のインスタンス、コンポジットのカスタマイズ、コンポジット・センサー、Spring Frameworkの管理などの高度なトピック |
この開発者ガイドに加え、次のような追加のリソースが用意されています。
Oracle SOA Suiteサンプルでは、Oracle SOA Suiteとそのコンポーネントについて、様々なユースケースのサンプルへのアクセスを提供しています。
『Oracle SOA Suiteの理解』では、企業が直面するビジネスにおける課題や、Oracle SOA Suiteによる設計時から実行時に至るまでのこれらの課題への対処方法について説明しています。
Oracle SOA Suiteでは、アプリケーションの開発にOracle JDeveloperとOracle SOAコンポーザの両方を使用します。この項では、両方の環境でのアクセシビリティ・オプションについて説明します。
Oracle JDeveloperでは、スクリーン・リーダー、拡大表示、キーボード・ナビゲーションのための標準的なショートカット・キーのサポートなどのアクセシビリティ・オプションが提供されています。フォントのサイズや色、オブジェクトの色や形など、さらに読みやすくするためにOracle JDeveloperをカスタマイズすることもできます。Oracle JDeveloperのアクセシビリティの構成の詳細は、Oracle JDeveloperによるアプリケーションの開発のOracle JDeveloperのアクセシビリティ情報に関する項を参照してください。
アクセシビリティ設定は、アプリケーションのすべてのコンポーネントを読むのに役立ちます。Oracle SOAコンポーザまたはOracle BPM Worklistの現在のインスタンスまたはすべてのインスタンスに対してアクセシビリティ・オプションを設定できます。
Oracle SOAコンポーザまたはOracle BPM Worklistには、ログイン・ページに「アクセシビリティ」メニューがあるので、ログインの前にアクセシビリティを構成できます。これらの設定は、現在のセッションのみ、またはすべてのセッションに対して保持できます。
ログイン前にアクセシビリティ・オプションを設定するには、次の手順を実行します。