|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IBM Lotus Domino 開発者のための IBM WebSphereポートレット開発 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
レベル:中級 原文の掲載:2007年3月13日
IBM WebSphere Portalには、外部接続、統合、およびインターネット/イントラネット・ツール用のさまざまな役に立つポートレットがバンドルされています。しかし、バンドルされているこれらのポートレットでは対応できないケースもしばしばあり、このような場合は独自のポートレットを作成しなければなりません。この記事でIBM Lotus DominoとIBM WebSphere Portalの設計手法を比較することにより、経験を積んだLotus Domino開発者が、IBM WebSphere Portalまたは他のJSR(Java Specification Request)168互換J2EE(Java 2 Platform, Enterprise Edition)ポータル用のポートレット開発を始める際の手助けになります。 この記事は、Lotus Dominoに精通し、IBM Rational Application Developer for WebSphere Softwareを使用してポートレットを作成したい熟練のIBM Lotus Domino開発者の方を対象としています。リレーショナル・データベースをともなうJavaプロジェクトは本質的に複雑であるため、クライアント開発を開始する前に、データベース、JSF(JavaServer Faces)、およびポートレットに関して学習することをお勧めします。Lotus Dominoテクノロジーに関する経験と知識があり、Java言語に習熟していることを前提として説明を進めます。また、Rational Application Developerのユーザー・インターフェースを理解しているものとします。それでは、Rational Application DeveloperでJSR 168 JSF対応ポートレット・プロジェクトを新規作成し、Webパースペクティブに切り替えたところから始めましょう。画面は図1のようになっているはずです。
IBM Lotus DominoとIBM WebSphereソフトウェアでのパフォーマンスの比較WebSphere Portalを対象としたRational Application Developerでの開発スピードは、Lotus Domino環境で慣れているスピードほど速くありません。たとえば、実稼働環境では、小さなスペル・ミスの修正、色の変更、あるいはLotus Dominoで可能なその他の簡単かつ迅速な修正を行うことができません。また、非常に時間がかかる作業もあります。たとえば、Lotus Dominoのビューの列で幅広く使用されている「値をアイコン表示」機能を用いると、ユーザーがアプリケーションを使用するときに優れた機能を素早く提供できますが、ポートレットで同様の機能を開発するには時間がかかります。
一方、IBM WebSphere PortalはJSFをサポートします。これには、優れた機能があります。たとえば、JSFのdatatableコンポーネントを使用すると、Lotus Dominoの埋め込みビューに似たものを、データ・ソースから直接またはJavaオブジェクトの任意のリストから作成できます。Lotus Dominoでは、サード・パーティーのデータ・ソースに接続し、データを取得するアプリケーションを開発するには時間がかかります。エージェント、フォーム、およびビューが関与するからです。また、Lotus Dominoの埋め込みビューではコンテンツをプレゼンテーションから切り離すのは困難ですが、JSFコンポーネントの特性により、プレゼンテーションとコンテンツを混在させることは不可能なので、より良いアーキテクチャーが得られます。 Java環境内のエージェントでのソートおよびフィルターの実行は高価であり、Lotus Domino開発者は他のビューまたはフォルダーを作成することを好む傾向があるので、サーバーはバックグラウンドでデータをソートできます。しかし、これが過度のサーバー・ロードを招く結果となり、indexerタスクが追いつかないときに予期せぬ動作が発生することがあります。一方、WebSphere PortalでJDBC(Java Database Connectivity)を使用したリレーショナル・データベースへの接続は高速であり、SQLの特性により、特にコストを増加させることなく異なるソートおよびフィルターを実行するSQL照会を書くことができます。言うまでもありませんが、Webサービスに対する組み込みサポートが十分であるため、WebSphere PortalはSOA(サービス指向アーキテクチャー)アプリケーションにたいへん適しています。
文書からリレーショナル・データベースの移行熟練したLotus Domino開発者が他のプラットフォームでの作業を開始するとき、最も困難なことはリレーショナル・データベースとLotus Notesデータベースがどのように対比するのかを理解することです。リレーショナル・データベースの詳細な動作を説明することはこの記事の目的ではありませんが、ここでは概要について簡単に触れておきましょう。 リレーショナル・データベースの構造 適切に構成されたリレーショナル・データベースには、必要なデータの検索に関連して使用するいくつかのテーブルがあります。例として、アカウント・マネージャーの登録簿を見ることにしましょう(表1および表2参照)。CONTACTSテーブルにはすべての個人情報が含まれ、COMPANIESテーブルには会社に関する情報が含まれています。CONTACTSテーブルのCOMPANY列はCOMPANIESテーブルのIDX列を指しているので、2つのテーブルは関係づけられて(結合されて)います。 表1. CONTACTSテーブル
表2. COMPANIESテーブル
次のSQL照会を使用すると、名、姓、および会社名が含まれるデータのリストを取得できます。 select firstname, lastname, company from contacts, companies この例をより複雑にするために、各マネージャー、つまりユーザーが複数のアカウントを担当できるようにします。この場合は、3番目のテーブル(Linkテーブル)が役に立ちます(表3、4、および5参照)。表5に示したCOMPANYMANAGERテーブルは、マネージャーと会社の関係を指定します。 表3. MANAGERテーブル
表4. COMPANYテーブル
表5. COMPANYMANAGERテーブル
たとえば、Adam Adamsonが担当しているアカウントを見つけてみましょう。この場合は、リスト1に示すようなSQL照会を使用します。 リスト1. アカウントを識別するSQL照会
Lotus Dominoアプリケーションでは、これらの関係が含まれていないため、この情報を見つけることはより難しくなります。おそらく、定期的または変更が発生するたびにマネージャー文書と会社文書の移し替えが必要となり、遅かれ早かれデータの整合性が失われる可能性があります。
Lotus DominoアプリケーションとWebSphereアプリケーションの設計要素の比較第1印象では、Domino WebアプリケーションとWebSphereアプリケーションはどちらもHTMLを配布するので似ているように見えますが、JSFを使用しないことを選択すると、この類似性はなくなります。一方、アプリケーションでJSFを使用することを選択した場合、設計要素の作成、構成、および生成の各方法にいくつかの類似点を見つけることができます。具体例として、Lotus Dominoのダイアログ・リストに似ているIBM WebSphereコンボ・ボックス要素を調べてみましょう。 動的データの取り扱い ドロップダウン・フィールドは、Lotus Dominoではダイアログ・リストと呼ばれ、WebSphereではコンボ・ボックスと呼ばれています。どちらのプラットフォームでも、リストの値をハードコーディングできます。Lotus Dominoで、ハードコーディングしたダイアログ・リストと動的な値を持つダイアログ・リストのプロパティー設定を図2に示します。 図2. Lotus Dominoに表示されたハードコーディングされた値および動的な値 JSR 168ポートレットを使用する場合は、JSFがコンボ・ボックスと呼ばれる同様のソリューションを提供します。動的な値を使用するときのコンボ・ボックスの構成方法を図3に示します。 図3. Rational Application Developerでのコンボ・ボックスの構成 JSFコンポーネントは、クライアントの右側のパレットにあります。図4に示すように、コンボ・ボックス・コンポーネントはFacesコンポーネント・カテゴリーにあります。 図4. 「パレット」パネルにあるコンボ・ボックス ![]() 動的データをJSFコンポーネントに渡すには、さまざまな方法があります。コンポーネントをJNDI(Java Naming and Directory Interface)データ・ソースに直接接続したり、管理対象Beanからフィードすることができます。Beanは、JSP(JavaServer Pages)ファイルがバックエンドと通信することを補助するJavaクラスです。値のリストを保持する簡単なBeanの例をリスト2に示します。 リスト2. Beanの例
上記のコードでは、Beanの初期化中に項目が追加されました。実際に使用されるコードでは、データベース、Webサービス、またはそれに類するものから、この情報がロードされます。 このBeanを使用するコンボ・ボックスを取得するには、このBeanを管理対象Beanにする必要があります。この作業は、左下にある「ページ・データ」パネルで行います。スクリプト記述変数のリストでsessionScopeオプションを右クリックし、「新規」->「JavaBean」を選択します。 管理対象Beanを構成した後は、使用するJSPファイルにこれを追加する必要があります。「ページ・データ」パネルから、エディター内のJSPページ上にBeanをドラッグします。コンボ・ボックスを選択し、項目Beanを右クリックすることにより、半自動的にBeanのデータをコンボ・ボックスにバインドできます(図5参照)。 図5. JSPファイルへの管理対象Beanの追加 ![]() 図5からわかるように、管理対象Beanから直接テーブルを生成することもできます。これを行うには、管理対象BeanをJSPページまでドラッグします。図6に示すようなウィザードが表示されます。 図6. ウィザードを使用したJSPページへのデータの追加 ![]() もし、Beanがより複雑な型であるとすれば(たとえば、リストが、多数のプロパティーを持つ複雑な型のクラスで生成された場合)、表示したい任意の列をこのウィザードで選択できるでしょう。これは、Lotus Dominoでビューをフォームに埋め込むことに似ていますが、ウィザードの方がより大きな柔軟性を持っています。
プレビューおよびテスト実行IBM Lotus Domino Designerを使用することの利点の1つとして、ほとんどすべての開発を1つのインストール済みクライアントで実行できる点が挙げられます。多くのアプリケーションは、実稼働環境に置かれる前に、ステージング・サーバーによってホストされる必要がありません。Lotus Domino Designerとそのプレビュー機能は、テストおよびデバッグの必要性を極めて適切に解決しています。Rational Application Developerは、最初にインストールされた時点では、この点が完璧ではありません。Rational Application Developer上に、テスト・サーバーをインストールする必要があります。これを行うと、ポータル・フレームワーク全体がローカルで実行され、実稼働状況に近い環境でアプリケーションをテストできます。(テスト環境のインストール方法を解説した記事については、「リソース」セクションを参照してください。) Lotus Domino Designerでページまたは他の設計要素を開発するときは、特定の設計要素をWebブラウザーまたはLotus Notesクライアントで開くことができます。 Rational Application Developerには、JSPファイルがどのように表示されるのを見るためのさまざまな方法が用意されています。実際の結果に近いWYSIWYG設計モードで作業したり、すべてのマークアップを表示し、100%のコントロールが可能なソース・モードで作業することができます。しかし、その中で最も優れているのがプレビュー・モードです。このモードはエディターに組み込まれていて、実稼働環境での表示と同様に、JSPを表示できます。Rational Application Developerによって提供される3つの設計モードを縮小して加工した概要を図7に示します。 図7. Rational Application Developer for WebSphere Softwareの3つの設計モード
ロジックの実行Lotus Domino Designerでは、デフォルトのブラウザーでの「プレビュー」を選択すると、アプリケーション全体が起動され、アプリケーションをクリックで操作できます。WebQueryOpenエージェントおよびWebQuerySaveエージェントなど、すべてのエージェントが実行されます。実際に適用されないのは、アクセス制御リスト(ACL)だけです。 Rational Application Developerで、Lotus Domino Designerと同様の完全なテストおよびデバッグ機能を実現するには、ご使用のマシン上にインストールされたテスト・サーバーにポートレット全体をデプロイする必要があります。これを行うには、「プロジェクト・エクスプローラー」パネルでプロジェクトを右クリックし、「実行」->「サーバーで実行」を選択します。 これにより、ダイアログ・ボックスが表示され、ポートレットをデプロイするサーバーを選択できます。ほとんどの場合、ローカルにインストールされたテスト・サーバーを選択します。詳細を図8に示します。 図8. サーバーの選択 ![]() 正しいサーバー・インスタンスを選択し、「完了」をクリックしてポートレットのテスト環境をスタートさせます。
デバッグRational Application Developer for WebSphere Softwareなどの熟成したPure Java開発クライアントは、デバッグ機能が優れています。「ウィンドウ」->「パースペクティブを開く」->「その他」を選択し、「デバッグ」を選択することにより、「デバッグ」パースペクティブを開きます。Rational Application Developerの環境は図9のようになります。 図9.「デバッグ」パースペクティブへの移動 ![]()
まとめIBM Lotus Dominoは、迅速なアプリケーション開発という観点ではいまだに比類なき存在ですが、IBM Rational Application Developerは自由度と柔軟性に優れています。このため、開発者は、Lotus Notesデータベースからリレーショナル・データベースを作成する代わりに、ユーザーおよびビジネス上の問題の解決に集中できます。この記事によって、Lotus Domino開発者の視点から、ポートレット開発のアプローチ方法とIBM WebSphere Portalでのポートレットの作成方法をご理解いただけることを望んでいます。
リソース学ぶ
製品およびテクノロジーの入手
議論する
筆者について(原文のまま)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||