IBM Lotus Expeditorが提供するサービス
Expeditorには Eclipse上にEclipseプラグインの形式で非常に多くのサービスが提供されており、それらのサービスよって、最初に説明した5つの特徴を実現することが可能になっています。Eclipseはクライアント・アプリケーションを開発するために非常に強力なグラフィカル・ユーザー・インターフェースのフレームワーク、高い拡張性と柔軟性を備えたプラグイン・モデルの双方を提供しており、最適であるようにみえます。しかし、企業で使用するクライアント・アプリケーションを実現するために十分な機能を提供されているとはいえません。企業で使用するクライアント・アプリケーションに必須になるであろう機能として以下のようなものがあげられます。
- セキュアなクライアント環境を実現するための認証フレームワーク
- データストアのためのリレーショナル・データベース機能
- Web アプリケーションを実現するためのWebブラウザー用のコンポーネント
- JavaEE などのエンタープライズ・アプリケーションをクライアントで実行するためのコンテナー
- アプリケーションをサーバーから配信するためのサービス
Expeditorではこれらの企業用クライアントで必要となるであろう機能をサービスとしてEclipse上に提供することで、企業用のクライアント環境として最適なものを提供しています(図4)。
Expeditorで提供されている多くのサービスの1つに、コンポジット・アプリケーションを実現するためのサービスとしてProperty Brokerが提供されています。Expeditor上のProperty Brokerはクライアント内のService BUSのようなイメージであり、Expeditor上のすべてのプラグインはProperty Brokerにアクセスすることが可能で、プラグイン間の連携はこのProperty Brokerを介して行うことになります。Property Brokerによるプラグイン間の連携を説明するにあたり、Property Brokerで使用される用語を紹介します。
- Property
コンポーネント間で受け渡されるデータ。TypeやNamespaceが厳密に定義されている。
- Action
Propertyを受け取ったときに、それをトリガーとして実行されるロジック。
- Source
Property(Output Property)をパブリッシュ(送信)するコンポーネント。
- Target
Property(Input Property)を受け取り、Action を実行するコンポーネント。
- Wire
Source側のPropertyとTarget側のActionの接続。Output PropertyとInput PropertyのTypeと Namespaceが一致しないとWireすることはできない。
- Component Interfaces
各コンポーネントが使用するPropertyとActionの定義をWSDL形式で記述したもの。PropertyBrokerへの登録の際にこのWSDLが使用される。
これらの用語を用いて、Property Brokerを介してのプラグイン間の通信の仕組みを説明します(図5参照)。
はじめに、Sourceであるプラグインは、何らかの操作やイベントをトリガーにして、Targetに渡したいProperty(Output Property)を生成しパブリッシュします。Property Brokerはどのプラグイン同士がWireされているのかを知っており、このSourceとWireされているTargetに対してPropertyを転送します。Property(Input Property)を受け取ったTargetはそれに対応するActionを実行します。以上のような流れにより、あるプラグイン上で操作を行うと、それに応じて他のプラグインの状態が変化するといったプラグイン間通信を行うことができます。このようにしてProperty Brokerの仕組みを使うことにより、プラグイン間を疎結合で連携させることが可能になります。
また、プラグインは様々なテクノロジーで開発することができるため、たとえばWebアプリケーションとWindowsネイティブアプリケーションのように、テクノロジーが異なっていたとしてもProperty Brokerを使用することで連携が可能となります。つまり、既存の様々なテクノロジー、ユーザー・インターフェースで開発されたクライアント・アプリケーションであっても以下の3ステップで様々な問題を解決するコンポジット・アプリケーションをExpeditor上で実現することができます。
- Eclipse プラグイン形式でパッケージしなおす
- Property Brokerでの連携のためのインターフェースの定義をWSDLで記述する
- 連携のためのインターフェースを実装する
さらに、プラグイン間の連携が非常に疎結合であるため、ビジネス・プロセスの変化に柔軟に対応することができる、多くのプラグインを再利用することができる、というような、開発生産性に関しても大きなメリットがあります。また、サーバー・サイドにおける同様の考え方であるSOA(Service Oriented Architechture)のフロントエンドとしても最適です。