Lesson 2
Novell exteNd Composerは、アプリケーションへのWebサービスとXMLの実装を迅速に設計開発するための開発(およびランタイム)環境です。このようなアプリケーションは様々なバックエンド(レガシー)システムやデータソースとの接続が可能になります。exteNd Composerは、柔軟で直感的なポイントアンドクリック方式のグラフィカルユーザインタフェース(GUI)になっており、わずかな時間で堅牢なXML統合をできる強力なツールをビジネスアナリストやアプリケーションデベロッパーの方へ提供します。
このプロジェクトでは、LDAPディレクトリから情報を取得するexteNd Composerコンポーネントを使用します。 このコンポーネントでは、LDAP接続を使い、氏名、電話番号、および肩書きなどの基本情報を提供します。 このレッスンで、後にWebサービスとして展開するexteNd Composerサービスを完成させることにより、アプリケーションを完成します。 WebサービスはユーザIDの付いた要求を受け取り、コンポーネントによって供給された情報を提供します。
[スタート]>[プログラム]>[Novell exteNd 5.0]>[Composer] メニューの順に移動し、[Composer Designer]を選択してexteNd Composerを起動します。
時間を省くため、必要な生成物がすでにいくつか追加されているテンプレートプロジェクトを使用します。 ここでは生成物のいくつかを検討し、アプリケーションのこの部分を完成させるのに必要な手順を完了します。
[参照]ボタンをクリックして、プロジェクトフォルダまで移動します。 次がプロジェクトフォルダになります。 D:\GuidedTour\template\RequestUserInfoProject\UserInfoProject
この練習では、exteNd LDAPサーバから情報を取り出すコンポーネントについて学びます。 コンポーネントは次を使用して作成されています。exteNd Composer LDAP Connect
ナビゲーションペインの詳細ペインで、[RequestUserInfo]をダブルクリックします。 エディタペインでコンポーネントが開きます。
レガシーデータソースへアクセスする方法を構築およびテストできるexteNd Composerの機能について見ていきます。
前回のエクササイズのStep 2では、エディタペインでexteNd Composer Designer をLDAPコンポーネントと共に開きました。 エディタペインは次の3つのサブペインに分かれています。
XMLドキュメントペインまたはDOMペイン(DOMはDocument Object Modelの略語を意味します)では、コンポーネントによって操作されるXMLドキュメントを表示および編集できます。 exteNd Composer Designerで作業をしやすくするには、次のDOMを常時表示するよう調節します。
ネイティブ環境ペインはNovell exteNd Connect製品によって使用され、exteNd Connect製品が統合インタフェースを提供するデータソースの、ネイティブ環境を表示します。 そのため、exteNd LDAP Connectでは、ディレクトリツリーをグラフィカルな表示で見ることができます。
アクションモデルペインは、現在のコンポーネントと関連しているexteNd Composerアクションを扱います。
exteNd Composerアクションは、プログラミング言語でいう「ステートメント(文)」に相当します。 パラメータの形で入力値を受け取り、所定の処理を実行します。
exteNd Composerコンポーネントは、XMLドキュメントを処理したり、XML以外のデータソースと通信したりするための手順のセットです。 この手順のセットはアクションモデルと呼ばれます。 exteNd Composerのコンポーネントとサービスでは、アクションモデルがデータマッピング、データ変換、およびデータ転送のすべてを実行します。
「アクションモデルツールバー」 アクションモデルの上部にあるツールバーで、exteNd Composerの「アニメーションツール」を利用できます。 これらのツールで、サービスやコンポーネントと関連したアクションのテストおよびトラブルシューティングを行なうことができます。 サービスやコンポーネントのアクションモデルを段階的に実行し、各アクションの結果を見ることができます。 この操作を行なうことで、アクションのどんな不具合にも気が付くようになり、コンポーネントの出力結果が期待通りになるかどうかを確認することができます。
アニメーションツールではブレークポイントを設定できるため、アクションモデルの特定部分をテストできます。 ブレークポイントを使用すると、不具合が生じるアクションのちょうど手前で実行を止め、そのアクションとその後に続くアクションを段階的に進めることにより、アクションモデルのトラブルシューティングを容易に行なうことができます。
入力XMLドキュメントはXMLテンプレートで、ユーザ情報の要求に必要なサンプルデータを含んでいます。 このテンプレートをアクションモデルを作成および実行する際のガイドとして使用します。

出力XMLドキュメントもまたXMLテンプレートです。 これには、要求を満たすために提供されるサンプルデータが含まれています。

出力XMLのサンプルは、正常にコンポーネントがディレクトリへ接続し要求されたユーザ情報を見つけた場合に送信されます。 ユーザが存在しない場合、エラーメッセージが送信されます。 サンプルデータと出力XMLドキュメントのXML構造を表示します。
[サンプル]ドロップダウンリストをクリックし、[UserInfoResponse_message.xml]を選択します。
LDAPコンポーネントには、LDAPサーバへ接続するための接続リソースが必要です。 接続リソースは、exteNd LDAPディレクトリサーバへの接続を確立するのに必要な特定の情報を提供します。 このコンポーネントで使用されるリソースを表示します。
[Connection Info]タブは、読み込み専用モードで使用される接続リソースの情報を提供します。 [テスト]ボタンをクリックすると、exteNd LDAPサーバへの接続が確立することを確認できます。 いくつかのフィールド値の隣にあるアイコンに留意してください。 これは、必要な値を作成するのにECMAScript式が使われていることを示しています。 実際の値はプロジェクト内でプロジェクト変数として保存されており、これらの値は一つの場所で簡単に変更でき、またコンポーネントを実行する前に動的に変更できます。
アクションモデルは、入力値を処理し出力するために順に実行される命令の集まりです。 このエクササイズでは、Webサービスによって実行される、LDAPコンポーネントの重要なアクションのいくつかを学びます。

1番、3番、および5番目のアクションは「ログ」アクションで、デバッグレベル情報の報告に使用されます。 ログ機能はexteNd ComposerのDesignerまたはサーバログのしきい値を設定することで使用できるようにします。 アプリケーションへの展開後は、これらのログアクションが、展開したアプリケーションに伴う問題を特定するのに役立ちます。 率先してコードにログアクションを加えることは、良い開発習慣とされています。 このプロジェクトのデバッグログアクションの結果を確認する場合は、[初期設定]で[Log Threshold]を4またはそれ以下に設定する必要があります。

2番目のアクションは、「DSML検索要求の作成」アクションで、DSML XMLドキュメントとしてのLDAP要求を作成するために使用されます。 このアクションは、クエリの詳細部分(where節)を作成し、返される属性を判断します。

このアクションを選択すると、ネイティブ環境ペインで検索要求の詳細を確認および編集できます。 入力XMLドキュメントのユーザIDは、ディレクトリのuid属性を問い合わせるために使用します。

このアクションを実行した後の結果は、XMLドキュメントとなり、一時XML DOMに保存されます。
XMLドキュメントパネルでこのドキュメントを表示します。
XML ドキュメントパネル内でマウスを右クリックをし、[追加して表示]サブメニューを選択してから、[ldapRequest]を選択します。 これは、「DSMLの作成」アクションで作られたXMLを保存している一時XML DOMです。
ツールバーの[現在のアクションを実行]アイコン
をクリックします。 アクションが実行され、XMLドキュメントパネルに、要求によって作成されたXMLが表示されます。
ツールバーの[すべてを実行]アイコン
をクリックします。 コンポーネント全体が実行され、成功したクエリの結果が表示されます。
4番目のアクションは、「DSML要求の実行」アクションです。 このアクションは、DSML検索要求の作成アクションによって作成され、要求を実行するためにサーバへ接続します。 この結果は、別の一時XMLドキュメントである「ldapResponse」に保存されます。

このアクションを選択、実行した場合に、ネイティブ環境ペインがどのようになるかは次のとおりです。

次がldapResponse XMLドキュメントです。

6番目のアクションは、「決定」(IF)アクションです。 このアクションは、要求が成功したかどうかをチェックします。 要求が成功であれば、アクションのTRUEの部分が実行されます。 この一連のアクションは、先ほどの出力XMLドキュメントで見た、所要の出力結果を生成するのに使用されます。
最初、XMLドキュメントは、XMLドキュメントの構造がスキーマに合っているかを確認するため、データがない状態で作成されます。exteNd Composerは常に適格なXMLを作成しますが、XMLスキーマやDTDが特定された場合にXMLが有効かどうかを確認するのは、各自の責任において行なってください。

次の手順では、結果として返された各属性を扱い、データをXMLドキュメントへ配置します。 DSMLresponseには、ディレクトリ内で要求され、特定のエントリに利用できる属性の反復エレメントが含まれています。 アクションモデルはこれらの反復エレメントを巡回し、属性名をチェックし、出力XMLドキュメント内の適切なエレメントに値を入れます。

決定アクションのFALSE部分は、失敗の際に使われるメッセージ構造を作成する「マップ」 アクションを含んでおり、「ログ」アクションはLDAP要求の失敗を記録するために使用されます。

最後のアクションは、「ネームスペースの適用」アクションで、これはこのドキュメントの認証に使用するXMLスキーマネームスペースへの参照を追加します。

exteNd Composer Designerでは、J2EEアプリケーションサーバへ展開せずにコンポーネントを実行してテストすることができます。 これからコンポーネントをテストします。まず有効なユーザIDを使い、次に無効なユーザIDを使います。
有効なユーザIDはデフォルトのXML入力サンプルで提供されています。 ツールバーの[すべてを実行]アイコン
をクリックします。
exteNd Composerでは、外界へのインタフェースとしての役割を果たすため、サービスが必要になります。 LDAPコンポーネントを使用するアプリケーションは、そのコンポーネントや場合によっては他のコンポーネントを実行するサービストリガ(詳細は後述) を通じてサービスを呼び出す必要があります。 サービスは、それ自身のアクションモデルを持っています。 このエクササイズでは、要求されたユーザIDを受け取り、RequestUserInfoコンポーネントから提供された情報を返すサービスを完成させます。
ナビゲーションペインのカテゴリペインで、[サービス]を選択した後、[Webサービス]を選択します。
選択したサービスがWebサービスとして分類されたとしても、必ずしもこれがWSDLやSOAPのバインドを持っているということにはなりません。 そういった意味での「Webサービス」とは、通常Webアプリケーションの一部として呼び出され、HTTPプロトコルと共に利用される、要求および応答モデルに応答するものを指します。
サービスを呼び出すためのサービストリガ(またはトリガ)は、Novell exteNd Application ServerのようなJ2EEアプリケーションサーバに展開される時に作成されます。 使用できる展開オプションの一つに、WSDLバインドやSOAPバインドと共にWebサービスを使用するというオプションがあります。
ナビゲーションペインの詳細ペインで、[ViewUserInfo]をダブルクリックします。 エディタペインで次のサービスが開きます。
このサービスで使われるXML出力サンプルは、メッセージ応答であることに留意してください。 サービスは通常LDAPコンポーネントによって生成された出力結果を受け取り、それ自身の出力結果とするため、メッセージ応答がデフォルトとして設定されています。 しかし、なんらかの理由でコンポーネントの実行が失敗した場合は、サービスはメッセージで応答します。
このサービスのアクションモデルは一部完成しています。 「障害時の試行」アクションは、コンポーネントの実行用のラッパーです。失敗するとFault部分が実行され、ログアクションがシステム出力にログメッセージを送ります。 RequestUserInfoコンポーネントを実行するアクション、およびエラーの際にXML出力を作成するマップアクションを追加します。
マウスを右クリックして、コンテキストメニューを表示します。 [新規アクション]>[マップ]の順に選択します。(または<Ctrl>+<M>キーを押してキーボードショートカットを使用します。)
"Error in component " + _SystemFault.XPath("FaultInfo/ComponentName") + " at " + _SystemFault.XPath("FaultInfo/DateTime") + " with MainCode " + _SystemFault.XPath("FaultInfo/MainCode") + ", SubCode " + _SystemFault.XPath("FaultInfo/SubCode") + ", and with a message of " + _SystemFault.XPath("FaultInfo/Message") + "."
_SystemFaultはComposer DOM変数で、システムエラーが発生した際にXMLドキュメントを保存します。 サービスの実行中に、exteNd LDAPサーバを停止するなどしてエラーを起こさせると、式エディタ内でこのドキュメントの構造を表示することができます。 ドキュメント構造の表示は、_SystemFaultの隣にあるアイコンをクリックして行ないます。
_SystemFaultなどのDOM変数にあるXMLエレメントをダブルクリックすると、たとえば次のように式エディタが適切なECMAScript式を書き込みます。_SystemFault.XPath("FaultInfo/DateTime")
[ターゲット]テキストボックスに、「UserInfoResponse/Message」と入力します。(またはアイコンをクリックして式エディタを使用します。
コメントアクションの後にマップアクションを追加するには、ドラッグアンドドロップで追加します。 [マップアクション]をクリックしたまま、[コメントアクション]へドラッグします。 マウスボタンを放します。
サービスを完成させテストを終えたので、次はサービス用のWSDLを作成します。 この作業は、Webサービスとしてこのサービスを展開するため必須であり、WSDLは生成されるサービストリガにとって必要になります。 WSDLはレッスン4でアプリケーションのユーザインタフェースを作成する際にも使用されます。
[URL]テキストボックスに「http://localhost:80/RequestUserInfo/viewOnly」と入力します。
これでexteNd Composer Webサービスの作成が終了しました。
次のレッスン 次のレッスンでは、サービス用のサービストリガを作成し、サービスを展開およびテストします。
Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved. more ...