SCA は、さまざまな方法で実装できる抽象化です。 特定のテクノロジー、プログラミング言語、呼び出しプロトコル、あるいはトランスポート・メカニズムを必要とはしません。 SCA コンポーネントを記述するために使用する Service Component Definition Language (SCDL) は、XML ベースの言語です。
SCA コンポーネントには、以下の特性があります。
WebSphere ESB | WebSphere Process Server |
---|---|
メディエーション・フロー | メディエーション・フロー |
プレーン Java™ オブジェクト | プレーン Java オブジェクト |
ビジネス・プロセス | |
ビジネス・ステート・マシン | |
ビジネス・ルール | |
ヒューマン・タスク |
SCA はビジネス・ロジックをインフラストラクチャーから分離し、アプリケーション・プログラマーがビジネス問題の解決に集中できるようにします。IBM の WebSphere Process Server も、同じ前提に基づきます。 図 1 に、WebSphere Process Server のアーキテクチャー・モデルを示します。
WebSphere 環境では、SCA フレームワークは WebSphere Application Server の Java 2 Platform, Enterprise Edition (J2EE) ランタイム環境をベースとします。 全体的な WebSphere Process Server フレームワークは、SOA コア、サポート・サービス、およびサービス・コンポーネントで構成されます。 WebSphere Enterprise Service Bus では、これと同じフレームワークで、特にビジネス・インテグレーションの接続およびアプリケーション統合のニーズをターゲットとした全体的機能のサブセットを使用できます。
SCA プログラミング・モデルの基本となるのは、ソフトウェア・コンポーネント の概念です。 前述したように、コンポーネントとは、あるロジックを実装し、そのロジックをインターフェースを介して他のコンポーネントに使用可能にする単位のことです。 コンポーネントには、他のコンポーネントによって使用可能にされたサービスが必要な場合もあります。 その場合、コンポーネントは該当するサービスへの参照 を公開します。
SCA では、すべてのコンポーネントが 1 つ以上のインターフェースを公開する必要があります。図 2 に示すアセンブリー・ダイアグラムには、C1、C2、C3 の 3 つのコンポーネントがあります。 それぞれのコンポーネントのインターフェースは、丸で囲んだ文字 I で表されています。 コンポーネントは他のコンポーネントを参照することもできます。 参照は、四角で囲んだ文字 R で表されています。 参照とインターフェースは、アセンブリー・ダイアグラムでリンクされます。 基本的に、統合開発者は、必要なロジックを実装するコンポーネントのインターフェースに参照を接続することによって参照を「解決」します。
呼び出すサービスへのアクセスを提供するために、SCA プログラミング・モデルには ServiceManager クラスが組み込まれます。このクラスは、開発者が名前を基準に使用可能なサービスを検索することを可能にします。 以下は、サービス検索を説明する典型的な Java コード・フラグメントです。 ServiceManager を使用して、BOFactory サービスへの参照を取得します。これはシステム提供のサービスです。
//サービス・マネージャー singleton を取得 ServiceManager smgr = new ServiceManager(); //BOFactory サービスにアクセス BOFactory bof =(BOFactory) smgr.locateService("com/ibm/websphere/bo/BOFactory");
開発者は同様のメカニズムを使用して、locateService メソッド内で参照されるサービスの名前を指定することにより、独自のサービスへの参照を取得します。 ServiceManager クラスを使用してサービスへの参照を取得した後は、呼び出しプロトコルや実装のタイプに依存しない方法で、そのサービスで使用可能な任意の操作を呼び出せます。
場合によっては、レガシー・アプリケーションなどの外部システムやその他の外部実装で使用可能なコンポーネントまたは関数によって、ビジネス・ロジックが提供されることがあります。 このような場合、統合開発者は、実装が含まれるコンポーネントに参照を接続するという方法で参照を解決することができません。参照は、該当する外部実装を「指す」コンポーネントに接続する必要があります。 これらのコンポーネントはインポート と呼ばれます。 インポートを定義するときには、外部サービスにアクセスする方法を、ロケーションおよび呼び出しプロトコルという点で指定する必要があります。
同様に、コンポーネントに外部アプリケーションからのアクセスが必要なこともよくあります。その場合には、コンポーネントをアクセス可能にしなければなりません。それには、ロジックを「外部世界」に公開する特殊なコンポーネントを使用します。 これらのコンポーネントはエクスポート と呼ばれます。 これらのコンポーネントは、同期的または非同期的に呼び出すことができます。
WebSphere ESB では、SCA サービス・モジュールは J2EE EAR ファイルとしてパッケージされます。このファイルには、他の J2EE サブモジュールもいくつか含まれます。 WAR ファイルなどの J2EE エレメントは、SCA モジュールと併せてパッケージできます。 JSP などの非 SCA 成果物も SCA サービス・モジュールと併せてパッケージできます。 このようにすると、これらのエレメントが、スタンドアロン参照と呼ばれる特殊なコンポーネント・タイプを使用した SCA クライアント・プログラミング・モデルによって SCA を呼び出せるようになります。
SCA プログラミング・モデルは厳格な宣言型です。 統合開発者は、呼び出しのトランザクション振る舞い、セキュリティー資格認定の伝搬、宣言による同期呼び出しまたは非同期呼び出しの指定などの側面をアセンブリー・ダイアグラムに直接構成できます。 これらの修飾子で指定された振る舞いを実装する責任は、開発者ではなく、SCA ランタイムにあります。 SCA の宣言に関する柔軟性は、このプログラミング・モデルの最も強力な機能の 1 つです。 開発者は、非同期呼び出しメカニズムに対応できるようにするなどの技術的側面に重点を置く代わりに、ビジネス・ロジックの実装に専念できます。 これらの側面すべては、SCA ランタイムによって自動的に対処されます。
修飾子は、サービス・クライアントとターゲット・サービスとの間の相互作用を管理します。 修飾子はサービス・コンポーネント参照、インターフェース、および実装に指定することが可能で、通常は実装外部にあります。
修飾子には以下の各種カテゴリーがあります。
SCA では、これらのサービスの品質 (QoS) 修飾子を宣言によってコンポーネントに適用することができます (プログラミングの必要も、サービス実装コードを変更する必要もありません)。 これは、WebSphere Integration Developer 内で行われます。 通常、QoS 修飾子を適用するのは、ソリューション・デプロイメントを検討する準備が整った時点です。 詳しくは、「サービスの品質修飾子のリファレンス」を参照してください。