第9章
リソースとは、コンポーネントがタスクを実行するために必要となる可能性のある、再使用可能なxObjectです。 たとえば、ほとんどのXML統合アプリケーションは何らかの「バックエンド」システムと通信し、このためには、通常、IPアドレスまたはJNDIアドレス、ポートの仕様、ドライバの場所、ユーザIDおよびパスワードなどに関わる「接続」を確立することが必要となります。この種の情報は、再使用可能なオブジェクトに保存でき、ランタイム時にコンポーネントによってアクセスされます。これは、リソースxObjectによって実現されます。
ここでいう「リソース」とは、狭義のリソース(JPEGイメージ、JSP、XSLスタイルシートなど)と、これに関するXMLメタデータを併せた概念です。Composer Enterprise Serverその他のランタイムプロセスは、XMLメタデータを参照してリソースの特性を認識します。 展開の際は、プロジェクトのリソース全体を展開アーカイブ(通常はEAR内のJAR)にパッケージ化し、アプリケーションのクラスパス上に置いて参照できるようにします。
Composerで使用可能なコアリソースのタイプは、次のとおりです (アスタリスクの付いたものは、Professional Editionに入っているComposerでは使えません)。
これらのコアタイプに加え、各種のComposer接続製品では、コネクタに固有となる、追加のリソースタイプを使用しています。 たとえば、EDI接続を使用すると、EDIドキュメントメタデータおよびEDI交換メタデータのリソースを指定できます。
注記: コネクタに固有のリソースタイプを作成する方法については、コネクタのドキュメントで説明しています。次の節では、Composerコアリソースのタイプのみについて説明します。
リソースタイプには、それぞれ独自のアイコンがあり、Composerのメインナビゲーションフレームのカテゴリペインに表示されています。リソースのカテゴリおよび関連アイコンは、次のとおりです。
あるタイプでカスタム作成されたリソースは、カテゴリペインで特定のリソースカテゴリ(コードテーブル、接続など)を選択(ハイライト)するとインスタンスペインに表示されます。各リソースインスタンスは、現在のプロジェクトでさまざまなコンポーネントまたはサービス、あるいはその両方で再使用でき、他のプロジェクトにもインポートできます。
コンポーネントの作成時には、コンポーネントのウィザードにより、コンポーネントで使用するリソースの名前を入力するよう求めるプロンプトが表示されます。つまり、「最初に」そのリソースを作成して、コンポーネントでそのリソースが使用できるようにする必要があります。
すべてのリソースは、同じ基本的な手順を使用して作成されます(次を参照)。
[ファイル]メニューから、[新規作成]>[xObject]の順に選択します。 [リソース]タブから、リソースのタイプを選択します。次の図を参照してください。
ウィザードが開き、カスタムリソースの名前、および作成しているリソースのタイプに関する他の情報を求めるプロンプトが表示されます。ウィザードが要求した情報を入力します。
ウィザードの最後の画面で、[OK]をクリックします。該当するリソースカテゴリに新しいリソースが追加され、インスタンスペインにリソースの名前が表示されます。
Composerには、ファイル名を手掛かりとして、実行時に適切な言語のXMLリソースを選択する機構が組み込まれています。 これは次のように動作します。 XMLリソースとして、MyInvoice_en.xmlおよびMyInvoice_jp.xmlの2種類を用意したとしましょう。 「_en」が付いたファイルはラテン文字、「_jp」が付いたファイルは日本語文字で記述してあるとします (言語指定子はISO-639の2文字コードです)。 実行にあたり、リソースのロードアクションは、設計時に指定された言語設定に従い、適切な言語のXMLリソースを選択します。
この機能を活用するためには、次の規則に従わなければなりません。
ファイル名は上述のような規則に従う必要があります (すなわち、 ファイル名の末尾に、アンダースコアと、言語を表すISO-639の2文字コードを付加します)。
各ファイルには1種類のリソースのみを格納します。 適用できるリソースタイプは、XSL、XML、およびフォーム(すなわちXForm)です。
言語オプションの指定は、Composerリソースアクションの作成時、または展開オブジェクトにスタイルシートリソースを指定するときに行います。
Composerリソースアクションなどの設定ダイアローグには、リソースを選択するドロップダウンリストがありますが、そこに[言語]ボタンも付いています。 これを押すと次のようなダイアログが現れます。
いずれかのラジオボタンを選択します。
この選択に応じ、ドロップダウンリストに列挙されるリソースの選択肢がダイナミックに変わります。 [なし]を選択すると、(言語にかかわらず)すべてのリソースが列挙されます。 [環境]または[セッション]を選択した場合、該当するタイプのリソースのファイル名から、言語およびロケールの部分を取り除いたものが列挙されます。. すなわち、実行環境に合わせて選択されることを前提として、言語に関する部分を除去したリソース名が表示されるのです。
証明書リソースは、デジタル署名情報を保持するために使います。 保存できるデータとしては、x509証明書、これに対応するプライベートキー、およびプライベートキーパスワードがあります。
証明書リソースは次のような場合に使います。
注記: 証明書リソースはComposerリソースでもあるので、プロジェクト内のコンポーネントやサービスで共有できます。
Composerのナビゲータペインで、([リソース]カテゴリの)[証明書]を右クリックし、コンテキストメニューから[新規]を選択します。ダイアログボックスが表示されます。
注記: リソース名の指定は必須です。ただし次の文字は使えません。 / : ? " < > . | 大文字と小文字の区別はありません(したがって、「MyObjectName」と「myobjectname」は同じ名前とみなします)。
[参照]ボタンを押し、ローカルドライブ内またはネットワーク上にある、適切な[クライアント証明書](x509)を指定します。
[参照]ボタンを押し、ローカルドライブ内またはネットワーク上から、対応する[プライベートキー]ファイルを指定します。 このキーは、外向きに送信するダイジェストおよびペイロードの暗号化に使います。 Composerプロジェクトが動作しているプロセス以外に送信または公開することはありません。
(必要に応じて)[プライベートキーパスワード]を入力します。ローカルキーストアからプライベートキーを検索する場合に必要です。
Composerアプリケーションを作成する際には、受け取ったデータを繰り返し変換するための要件に直面することが多々あります。この変換タイプの代表的な例には、分類目的で、州コード(例: アラバマ、イリノイ)を地域に変更したり、これらがシステム間で移動するごとにコードを説明することが含まれます。Composerでは、このタイプの変換を実行できるようにする機能が提供されています。 たとえば、書店では「コード1」で小説のカテゴリを表したり、デパートでは「コードM」を使用して、男性用衣類を表す場合があります。
他の説明は含まずに、出力XMLに「コード1」または「コードM」のみが含まれるようなアプリケーションを設計する場合、あいまいで紛らわしい結果になる可能性があります。このような場合に、コードテーブルが役立ちます。コードテーブルには、一般的に使用されるビジネスコードテーブルが保存され、コードテーブルマップと同時に動作し、出力を受け取る担当者やビジネスプロセスにとってより意味のある出力XMLドキュメントが生成されます。書店の場合、「コード1」を含む入力XMLは、コードテーブルを使用してマップされ、カテゴリが「小説」である出力XMLが生成される場合があります。
コードテーブルエディタには、メニューオプションとツールバーの両方があります。メニューオプションに加え、コードテーブルエディタには、次のボタンから構成されたツールバーが含まれます。
[ファイル]メニューから、[新規作成]>[xObject]の順に選択します。 [リソース]タブに切り替え、[コードテーブル]を選択します。新規コードテーブルxObjectの作成ウィザードが開きます。
コードテーブルエディタを閉じると、新しいコードテーブルの名前が、Composerウィンドウのリソースのカテゴリで、[コードテーブル]の下に表示されます(次の図を参照)。
[OK]をクリックします。コードテーブルエディタで選択したコードテーブルが開きます。
注記: オプションとして、Composerウィンドウのカテゴリペインでコードテーブルを選択して、詳細ペインからコードテーブルをダブルクリックすることもできます。
注記: データをより迅速に入力する別の方法は、スプレッドシートからデータをコピーして、コードテーブルに貼り付けることです。その場合、3カラムが選択されているか確認してください。最初のカラムには、データが含まれていなければならず、2番目および3番目の例はオプションです。スプレッドシートを開き、この3カラムと必要な数の行をコピーします。コードテーブルを開き、ただちに[貼り付け]ボタンを押します。同じ方法で、Microsoft Word&Reg; ドキュメントの表からデータをコピーすることもできます。
「コードテーブルマップ」とは、あるコードのセットを別のコードのセットに自動的に変換するために使用するリソースです。これらのマップは、コンポーネント内のXMLサンプル間でデータを変換および交換する際に便利です(ある企業では数値コードを使用してステータスフィールドを保存しており、別の企業ではアルファベットコードを使用してステータスフィールドを保存している場合など)。
注記: コードテーブルは、同じコードテーブルにマップできないため、コードテーブルマップを作成する前には、2つの個別のコードテーブルを作成する必要があります(コードテーブルについてを参照)。
[ファイル]メニューから、[新規]>[xObject]の順に選択します。 [リソース]タブに切り替え、[コードテーブルマップ]を選択します。 新規コードテーブルマップxObjectの作成ウィザードが開きます。
[処理]で、処理方法を選択します。この機能では、マップしている出力コードテーブルに対応する値を持たない入力コードテーブルからの値を処理する方法をComposerに命令できます。たとえば、コードテーブル1には値が6つあり、コードテーブル2には値が5つしかない場合、追加の値を処理する方法を、Composerに命令する必要があります。次の2つの選択肢があります。
コードテーブルマップエディタを閉じると、新規に作成したコードテーブルマップが、インスタンスペインのリソースのカテゴリで、[コードテーブルマップ]の下に表示されます(上の図を参照)。
入力コードテーブルおよび出力コードテーブルを選択したら、値をマップする必要があります。コードテーブルマップには、最初に[Out値]フィールドでデフォルト設定にマップされた[In値]が表示されます。In値は編集できないため、グレー表示になっています。デフォルトのフィールドをクリックしたら、ドロップダウンリストを使用して、In値を[Out値]フィールドのいずれかの値にマップできます。これにより、1つ以上のIn値を同じOut値にマップできます。
コードテーブルマップを作成したら、コンポーネントの作成時にこれを使用します。たとえば、XMLマップコンポーネントエディタでは、入力DOMからの要素を、コードテーブルマップを使用して出力DOMにマップするアクションを作成できます。アクションは、次のようになります。
マップアクションでコードテーブルマップを使用すると、入力データを転送するだけでなく、出力に配置する前に変換することができます。
接続リソースは、接続に関する情報をラップした、再利用可能なオブジェクトです。 具体的には、IPアドレス、ポート番号、および(ごく簡単な)認証資格情報などをラップします。 接続リソースには、ドライバ名またはJNDI名、あるいはその両方、LDAP識別名、タイムアウトや再試行に関する設定、コードページ、または特定のデータストリームタイプと接続を設定するために必要となる可能性のあるエンドポイント仕様、あるいはこれらすべてに関する重要な情報も格納できます。
接続リソースは、さまざまなデータソース(データベース接続など)だけではなく、Composerのコアアクションである「URL/ファイルの読み込み」、「URL/ファイルの書き込み」、およびXML交換アクションに対しても必要です。 このようなデータ交換アクションを使えば、XMLドキュメントや非XMLドキュメントを、HTTP、HTTPS、またはFTPを使って転送できます。 FTP認証リソースを使えば、FTPログインを行い、接続のタイムアウトを指定することができます。HTTP接続リソースには、HTTPSセッションの設定に必要なユーザ認証およびセキュリティの情報が格納されます。
ユーザにより提供された接続リソースの情報の一部は、ECMAScript式を使用してランタイム時にダイナミックにバインドできます (後述)。接続リソースのすべてのユーザ情報が、静的である必要はありません。
接続リソースでは、該当するデータストリームまたはエンドポイントに対する詳細なアクセス情報が指定されるため、一般的に、コンポーネントまたはサービスで使用するすべてのタイプのデータソースに対して、1つの接続リソースを作成する必要があります。 たとえば、データベースおよびディレクトリと情報をやり取りするアプリケーションの場合、JDBC接続リソースおよびLDAP接続リソースが、少なくとも1つずつ必要になります (データストアまたはシステムごとに1つずつリソースが必要なわけではありません。接続パラメータはECMAScriptでダイナミックに変更できるからです。次の節も参照)。
同じ接続リソースを、複数のコンポーネントで繰り返し利用できることに注意してください。 これは「リソース」本来の性質です。
接続パラメータ値の指定方法には2とおりあります。 すなわち、定数で指定する方法と、式で指定する方法です。
「定数」で指定する場合は、接続ごとにリテラル値で指定します。 式ベースのパラメータでは、ランタイム時に接続が使用されるたびに異なる値となりえる、ECMAScriptの式を使用して値を設定できます。 この方法では、ビジネスロジックを使う、あるいはバッキングストア(LDAPディレクトリなど)を参照するなどして、柔軟に接続パラメータを決めることができます。
HTTP接続における式駆動型のパラメータの非常に単純な使用の1つは、ユーザIDとパスワードをPROJECT変数(例: PROJECT.XPATH("USERCONFIG/MyDeployUser"))として定義することです。このようにすると、プロジェクトを展開する際に、展開ウィザードでPROJECT変数を最終展開環境に適切な値に更新できます。正反対に、アプリケーションサーバでJavaビジネスオブジェクトをクエリするカスタムスクリプトを利用して、使用するユーザIDとパスワードを決定することもできます。
もっと高度な使い方として、LDAPクエリを発行してディレクトリを検索し、ユーザの資格情報を取得する方法もあります。 この方式について詳しくはLDAPによる接続パラメータの取得を参照してください。
接続リソースのパラメータ(ユーザーIDやパスワードばかりでなく、IPアドレスやポート番号も含む)は、式で指定することができます。 その手順を以下に概説します。
コンテキストメニューから[式]を選択します。 フィールドの右側にフライアウトメニューが現れます。 そこには[ECMA式]ボタンと[LDAP式]ボタンがあります。 接続パラメータをディレクトリから検索する場合は、[LDAP式]ボタンを選択します。 そうでない場合は、[ECMA式]が選択されたままにしておきます。
注記: [LDAP式]ボタンの使い方について詳しくはLDAPによる接続パラメータの取得を参照してください。
式エディタを使って、実行時にパラメータ値を求めるためのECMAScript式を作成します (ほとんどのノードは、ダブルクリックするだけでECMAScriptのコードが自動生成されるようになっています)。 上の例では、プロジェクト変数「adminID」を参照し、UserIDの値として接続に使うように設定しています。
ユーザ名やパスワードを、Novell eDirectoryなどのディレクトリで管理してることも珍しくありません。 アクセス制御が必要なアプリケーションでは特に、ユーザ情報を実行時に取得する機能が重要です。 そのためにComposerに用意されているのが、LDAPとの連携機能です。 どのようなバックエンドシステムに接続しているかにかかわらず、ディレクトリから実行時に接続パラメータの一部または全部を検索し、接続リソースを設定できます(接続の性質に合わせて、特別なビジネスロジックが必要になるかも知れません)。
LDAPクエリを発行して接続パラメータを取得するためには、まずLDAP接続リソースを作成しなければなりません(プロジェクトに作成済みである場合を除く)。 このリソースには、どのディレクトリを使うか、どのポートでやり取りし、どのベース識別名を使うか、などといった情報が格納されています。Composerでは、これを使って、検索先ディレクトリとの接続(安全な接続かそうでないかにかかわらず)を確立します (LDAP接続リソースについて詳しくは『LDAP Connect User\xd5 s Guide』を参照してください)。
LDAP接続リソースがあれば、どのような接続リソースでも、LDAPにより接続パラメータを取得、設定できます。その手順を以下に示します。
[新規接続リソースの作成]ダイアログで、検索方法に関するパラメータを指定するフィールド内を右クリックします。 コンテキストメニューが表示されます。
フライアウトメニューをクリックし、[LDAP式]を選択します。 メニューの隣にあるボタンが、[LDAP式エディタ]ボタンに変わります。
[LDAP式エディタ]ボタンをクリックします。 [LDAP式エディタ]ウィンドウが表示されます。
注記: この時点でLDAP接続リソースをプロジェクトにひとつも作成していなければ、エラーダイアログが表示されます。
ダイアログの一番上のフィールドで、[LDAP接続]を選択します (ドロップダウンメニューには、プロジェクトに作成済みのLDAP接続リソース名が列挙されています)。
[識別名]に、データを検索しようとするユーザまたはエンティティのLDAP識別名を入力します。 LDAPの正しい構文がわからない場合は、DNエディタ(あるいはLDAPブラウザ)で入力してください。
[オブジェクトクラス]にまだ値が入っていなければ、検索に適したオブジェクトのタイプを選択します。
注記: 通常は、先に識別名を入力した時点で、該当するオブジェクト名が入っているはずです。 その場合は何もする必要がありません。
[属性]プルダウンメニューから、検索したいデータが記述されている属性名を選択します (選択肢として、前の手順で選択したオブジェクトクラスに定義されている属性が、すべて列挙されています)。
[OK]をクリックして、[接続リソース]設定ダイアログに戻ります。 接続パラメータとして使う、正しい書式のECMAScript式が生成されています。 この式には、Composerの拡張メソッドであるgetLDAPAttr( )
が使われています。 接続パラメータは、実行時に、LDAPを検索してダイナミックに決められます。 設計時に動作を確認したい場合は、接続設定用のダイアログで[テスト]ボタンをクリックするか、実際に接続を行うコンポーネントをアニメーションモードで実行してみてください。
Composerはさまざまな接続リソースに対応しています。Composerコア製品はLDAP、JDBC、FTP認証、HTTP(認証の種類に応じて3とおり)、およびSMTPにそれぞれ対応しています。さらに、別途接続製品を用意すれば、3270、5250、Telnet、HP3000、CICS RPC、JMS、SAP、Tandem、Data General、およびUnisys端末接続にも対応できます。 接続リソースを作成する基本的な手順はどのようなタイプでもほとんど同じなので、典型的な例として、HTTP基本認証リソースの作成手順を以下に示します。
注記: 個々のバックエンドシステム、デバイス、またはプロトコルの接続リソースを作成する詳しい手順については、該当する接続製品のユーザガイドを参照してください。 また、メールサーバ用の接続リソースを作成する手順については、SMTP簡易認証によるメール送信も参照してください。
[ファイル]メニューから、[新規作成]>[xObject]の順に選択します。 [リソース]タブに切り替え、[接続]を選択します。新規接続xObjectの作成ウィザードが表示されます。
ドロップダウンリストから「HTTP基本認証」を選択します。この認証は、HTTP接続を使用するXML交換と同時に使用されます。
「ユーザID」と「パスワード」を入力します。これらは、接続の確立中に実際には送信されず、単にここで定義されます(パスワードは暗号化されます)。ユーザは、ECMAScript式からユーザIDおよびパスワード変数にアクセスして、画面内の値として、ユーザIDとパスワードをマップできるようになります。このため、パスワードが誰かに表示されることはありません。
[参照]ボタンをクリックし、セキュリティ用のクライアントキーファイルを選択して、「クライアントプライベートキー」を選択します。
「プライベートキー」の「パスワード」を入力します。プライベートキーは、クライアントプライベートキーの所有者のための異なるレベルのセキュリティです。
適切なコンポーネントウィザードにこの接続をデフォルト接続として表示する場合は、[デフォルト]チェックボックスをオンにします。
注記: 接続リソースの詳細については、各Connectガイドの「はじめに」の節を参照してください。
電子メールのアカウント情報は、Mail Simple認証接続リソースに格納できます。 メールの送信アクション(詳しくはSMTP簡易認証によるメール送信を参照)を使うサービスやコンポーネントでは、Mail Simple認証接続リソースを使ってアカウント情報を取得するようにすれば便利です。
ナビゲーション(エクスプローラ)フレームで、[リソース]カテゴリの[接続]を右クリックし、次のように、コンテキストメニューから[新規]を選択します。
COBOL CICSメインフレームにアクセスする、あるいはJMSシステムを使う場合、データレイアウトを定義するために、Copybookソースファイルが必要になることがあります。 同様に、FTP、EDIデータ交換などのファイル操作を行うComposerプロジェクトでも、COBOL Copybookが必要になることがあります。exteNd Composerに用意されているCopybookリソースを使えば、XMLデータを ByteArray に変換し、CICS RPCまたはJMSコンポーネントへの入力とすることができます。 逆に、変換アクションを使って、このようなコンポーネントから出力されたByteArrayをXML形式に変換することもできます。196ページの「CopybookからXMLへの変換アクション」を参照してください。
[ファイル]メニューから、[新規]>[xObject]の順に選択します。 リソースタブに切り替え、[Copybook]を選択します。 新規Copybookの作成ウィザードが表示されます。
注記: あるいは、ナビゲータペインの[リソース]ツリーにある[Copybook]を選択し、[新規]をクリックしても構いません。
[コードページ]フィールドは、ドロップダウンメニューからコードページを選択します。コードページは、オペレーティングシステムの文字データ標準に依存します(たとえば、CP037はEBCDIC用、8859_1はASCII用)。
[マシンタイプ]フィールドは、ドロップダウンメニューから、ユーザのCICS Region/Server (MVS、OS2、NT、AIX)のプラットフォームを選択します。
[浮動小数点形式]フィールドは、ドロップダウンメニューから、選択したシステムタイプに対応する名前、 IBMまたはIEEEを選択します。
[エンディアン]フィールドは、ドロップダウンメニューから整数の最大/最小重みバイトの順序を選択します(メモリ内で最大重みバイトが最小重みバイトの前にくる場合はBIG、それ以外の場合はLITTLEを選択します)。
[完了]ボタンをクリックすると、リソースのリストにCopybookが追加され、コンポーネントエディタが開きます。 次の図は、Copybookリソースを開いた様子を示します。
注記: Copybookリソースは、XMLからCopybookへの変換アクションやCopybookからXMLへの変換アクションを使う場合、あらかじめ作成しておかなければなりません。
カスタムスクリプトリソースとは、ECMAScriptプログラミング言語で作成されたユーザ開発関数のライブラリです。関数をコンポーネント全体や他の関数内で使用できるようにすることができます。カスタムスクリプトを使用すると、次の操作を実行する関数を開発できます。
注記: カスタム関数を作成するには、ECMAScript言語を十分に理解しておく必要があります。次の節では、スクリプト作成のチュートリアルではなく、一般的なガイドラインのみを示します。Composerでのスクリプト作成の詳細については、次の章を参照してください。
関数を異なるライブラリに整理したい場合があります。 たとえば、アプリケーションに必要なmath関数、string関数、またはdatabase関数が複数あるとします。類似した関数を分類する(つまり、同じライブラリにすべてのstring関数を作成する)と、カスタムスクリプトエディタを使用して、同じライブラリ内ですべての関数によって使用可能なグローバル変数を宣言することもできます。
関数を作成、検証する際に、Composerでは、コンポーネントアクション内のすべての式エディタでこれらの関数が使用できるようにします。
たとえば、10個の関数を含み、「String」と呼ばれるカスタム関数ライブラリを作成した場合、他の標準的な関数とともに、カスタムスクリプトというラベルで式エディタに表示されます。
[ファイル]メニューから、[新規]>[xObject]の順に選択します。 [リソース]タブに切り替え、[カスタムスクリプト]を選択します。 [新規カスタムスクリプトxObjectの作成]ダイアログが表示されます。
[次へ]をクリックします。カスタムスクリプトエディタが開き、新しく作成されたカスタムスクリプト名がタイトルバーに表示されます。
カスタムスクリプトエディタウィンドウは、複数のペインに分かれています。ペインのビューを切り替えて、必要なコンテンツを含めることができます。
複数の関数を追加した後のエディタは、次の図のとおりです。
関数を入力して最初から作成します。関数を作成する際にはExpression Builderを使用することもできます。 詳細については、式エディタを使用した関数の作成を参照してください。
関数は、次の例のようになります。
関数が有効である場合、Composerにより、検証された関数リストに関数名が追加されます。関数にエラーが含まれる場合は、Composerにより、詳細なエラーメッセージが表示されます。
関数をテストする前には、前の節で説明した構文の検証が渡される必要があります。
関数を検証して、検証済み関数のリストに追加したら、関数の説明を記述できます。説明は、Composer全体でExpression Builderに関数が表示されている場合に、マウスを関数名に合わせると「ツールヒント」として表示されます。
希望する場合は、[関数はパブリックです]チェックボックスをオンにします。このチェックボックスがオンの場合、次の2つの処理が実行できます。
作成したカスタムスクリプト関数の多くで、XMLドキュメント内で特定のXPathの場所にあるデータを参照したり、データと直接動作させなければならない場合があります。 この操作を簡単に行えるよう、カスタムスクリプトエディタでは、エディタ内で(ツリービュー、テキストビュー、またはスタイル形式のビューの3つの使用可能なビューのうちいずれかで)XMLドキュメントを 表示できます。これにより、関数定義の本文にXML要素をドラッグアンドドロップできるため、XPathの参照をさらに簡単に指定できます。
Composerのメインメニューで、[ファイル]>[XMLサンプルのロード]の順に選択します(次の図を参照)。
[パート]というラベルの付いたプルダウンメニューで、ファイルに関連付けるDOM(入力DOMまたは出力DOM)を選択します。
[参照]ボタンを使用して、ファイルのナビゲーションダイアログボックスを表示します。ロードするXMLファイルに移動して、ナビゲータを閉じます。 URLを指定してファイルを読み込むこともできます。「http://」、「https://」、あるいは「ftp://」という文字列を、ファイル名の前に置いて明示してください。
[OK]をクリックして、[XMLサンプルのロード]ダイアログボックスを閉じます。選択したファイルが専用のペインに表示されます。
ファイルを使用、選択するXMLドキュメントのディレクトリに移動します。入力マップペインと出力マップペインが表示されます。
注記: XMLテンプレートからXMLドキュメントを使用する場合、プロジェクトの「XMLCategories」ディレクトリで該当する「Imports」ディレクトリ (例: /Tutorial/XMLCategories/OfficeSupply/Imports)に移動します。
Javaメソッドを起動する、またはカスタムJavaクラスのインスタンスを生成する必要があるカスタムスクリプトを作成している場合、カスタムスクリプトエディタウィンドウのビューを展開して、クラスナビゲータに必要な情報を表示できます。 Javaクラスブラウザは、CLASSPATHで示されるパス内(およびプロジェクトに追加されているJARリソース)を走査し、クラス、メソッド、プロパティを一覧表示します。 これにより、Javaコンストラクタ、メソッド、およびプロパティを関数定義の本文、または関数をテストするテスト(コンソール)領域にドラッグアンドドロップできるため、これらの項目をさらに簡単に指定、使用できます。
カスタムスクリプトエディタのメニューバーから[表示]>[Javaクラスコンテキストの表示]の順に選択します。
コンテキストツリーから、使用するクラスを検索します (コンテキストノードの左側にある小さなプラス記号(+)をクリックすると、ノードが展開されます)。
使用するクラスを選択して、[OK]をクリックすると、ダイアログボックスが閉じます。エディタのクラスリスト領域に、クラスが表示されます。
(クラスをダブルクリックするか、横にあるプラス記号をクリックして)クラスを展開し、コンストラクタ、メソッド、およびプロパティを表示します。次の図を参照してください。
(オプション)個々のメソッドまたはプロパティを、エディタペインまたはコンソールにドラッグアンドドロップして、該当するプロパティを使用します。
希望する場合は、Composer CLASSPATHに独自のクラスを追加するか、ComposerのCLASSPATHを拡張して独自のクラスを含めることで、[クラスブラウザ]に独自のクラスを追加できます。
注記: カスタムJavaクラスを使用している場合は、アプリケーションの展開時にアプリケーションサーバにクラスをインストールする(またはEAR/WARファイルに含める)ようにしてください。 その場合には、exteNd Directorを使用できます。 詳しくは、Directorのマニュアルを参照してください。
JavaのDecimalFormat
クラスを使用する、RoundToDecimalPos()
と呼ばれるスクリプト関数を作成する方法は、次の例のとおりです。この例では、関数で、切り上げ/切り捨てする数値、および切り上げ/切り捨てする箇所の数という2つのパラメータを受け入れます。
関数を最初から作成する代わりに、式エディタを使用して関数を作成することができます。 この機能を使用する場合の利点は、式エディタでは、マウス操作だけで使用できる選択リストを使用することで、DOMメソッド、Composer拡張、組み込みECMAScriptメソッド、およびDOMノードターゲットがほとんどすべて明らかになります。 選択リストを使用して式を作成すると、操作が簡単で便利なだけではなく、入力ミスをする恐れが少なくなります。 また、すべての使用可能なメソッドに対する構文の呼び出しは、選択ツリーで各リーフノードのロールオーバツールヒントに表示されるため、役に立つ参照にもなります。
カスタムスクリプトエディタには、選択したビューに基づき、[式エディタ]内で2つの異なるビューが表示されます。基本的なビューには、独自の関数を作成するために使用できるECMAScriptオブジェクトと演算子のリストが表示されます(次を参照)。
カスタムスクリプトエディタで、[表示]>[XMLドキュメントの表示]の順に選択すると、[式エディタ]が開き、DOMで要素を選択するための追加の選択リストが表示されます(次を参照)。
[変数]ペイン、[関数/メソッド]ペイン、または[演算子]ペインでツリーを展開し、要素をダブルクリックして関数を作成します。 要素をダブルクリックすると、一番下の[式]ペインに表示されます。
または、マウスの右ボタンを使用して、関数の編集ペインまたはテスト領域のいずれかにExpression Builderを表示することもできます。
注記: ECMAScriptの詳細については、このガイドの次の章exteNd Composerでのカスタム スクリプト作成およびXPathロジックを参照してください。
Composerのフォームリソースを使えば、プロジェクトにXMLベースのフォーム(XForm)を作成できます。
注記: Novell exteNd Professional Editionに含まれるComposerでは、フォームリソースは扱えません。 以下の説明はEnterprise Editionの場合にのみ成り立ちます。
フォームウィザードを使えば、表示される手順どおりに操作するだけで、初期インスタンスデータを作成できます。
Composerの[ファイル]メニューから、[新規作成]>[xObject]の順に選択し、次いで[リソース]タブから[XForm]を選択します (あるいはカテゴリペインでXMLスキーマリソースを右クリックし、[新規作成]を選択します)。 フォームリソースウィザードの最初のペインが表示されます。
XFormを参照するための[名前]を指定し、必要ならば説明も追加した後、[次へ]ボタンをクリックして次の画面に進みます。
[XMLサンプル]を選択した場合は、[プロジェクトリソース]ドロップダウンリストから、プロジェクトに作成済みのテンプレートに対応する、XMLソースの場所を選択します。 1つ目のボックスにはテンプレートカテゴリ、2つ目にはテンプレート名、3つ目にはサンプル名を指定します。
[参照]ボタンを押してローカルファイルを選択する、あるいは、XForm用のXMLソースがある場所の完全修飾URLを入力する方法もあります。
[WSDL]を選択した場合は、インスタンスデータと関連付ける[サービス]および[操作]も指定します。
次いで、[プロジェクトリソース]ラジオボタンの下にあるドロップダウンメニューから、WSDLリソースを選択します。 [参照]ボタンを押してローカルファイルを選択する、あるいは、XForm用のWSDLソースがある場所の完全修飾URLを入力する方法もあります。
イメージファイルをComposerプロジェクトにパッケージ化できれば便利な場合があります。 たとえばプロジェクト中に、GIF、JPEG、あるいはPNGファイルを参照するJSPがある場合、JSPと同じJARファイルまたはWARファイルに、このイメージファイルも含めてパッケージ化した方が便利です。 そうしておけば、JSPでは検索URL(後述)を使ってイメージを参照できます。
注記: Novell exteNd Professional Editionに含まれるComposerでは、イメージリソースは扱えません。 以下の説明はEnterprise Editionの場合にのみ成り立ちます。
イメージリソースを最初に作成した時点で、プロジェクトフォルダに\image
というサブディレクトリが作成され、さらにその下に「src」フォルダができます。 イメージリソースは次の2つのファイルから成ります。
このうちXMLファイルは、\image
サブディレクトリ以下に作成されます。 一方イメージファイルは、\src
サブディレクトリ以下にコピーされます。
したがって、たとえばMyProject
というプロジェクトに、Sample.jpg
というイメージファイルを元にしてイメージリソースを作成した場合、ディレクトリ構造は次のようになります。
\image
フォルダ以下には、Sample.jpg.xml
というファイルもあります。これはSample.jpg
リソースに対応するxObjectラッパ(メタデータ)を表します。
イメージリソースを作成した時点では、元になったイメージファイル名と同じリソース名になっています。 ただし、必要ならば後で改名しても構いません(手順は他のリソースの場合と同様です)。 すなわち、Composerメインビューのオブジェクトペインで、当該リソースを右クリックし、コンテキストメニューから[名前変更]を選択します。 次いで、新しい名前を入力します (リソース名を変更すると、xObjectばかりでなくイメージファイル自身の名前も変わります)。
注記: 他のリソースを名称変更する場合と同様、当該リソースが開かれた状態である場合、あらかじめ閉じておく必要があります。
展開に当たって、イメージリソースはJARファイルに(プロジェクト内の他のxObjectとともに)パッケージ化され、展開EAR内に置かれます。 各物理イメージには、次のようなデフォルトの展開コンテキストが設定されます。
[プロジェクトコンテキスト]/image/src
したがって、JARのルートレベルに置かれたJSPでは、/image/src/
imagenameという相対URLでイメージを参照できます。 たとえば、次のとおりです。
<img src=”MyProject/image/src/Sample.jpg”/>
イメージリソースの作成手順は他のリソースxObjectとほとんど同じですが、オブジェクト名が自動的に設定される点が異なります。
Composerのナビゲーションフレームで、「リソース」以下にある「イメージ」という部分を右クリックし、コンテキストメニュー(下の図を参照)から[新規]を選択します。あるいは、[ファイル]メニューから[新規]>[xObject]の順に選択しても同様です。 [リソース]タブから[イメージ]を選択し、[OK]ボタンを押します。
ファイルの場所がわかっている場合は、テキストフィールドに直接入力しても構いません。ファイルシステムアドレス、あるいは、「http://」または「ftp://」で始まる完全修飾URLで指定します。 わかっていない場合は[参照]ボタンをクリックし、イメージファイルを検索します。
注記: イメージ形式として、GIF、JPEG、およびPNGに対応しています。
ヒント: [参照]ボタンで呼び出したファイル選択ダイアログでは、<Control>キーや <Shift>キーを押しながら操作することにより、複数のイメージをまとめて選択し、 Composerに取り込むことができます。 各イメージファイルの名前がそのままリソース名 になります。
[完了]ボタンをクリックします。 ダイアログが消え、新しいイメージリソースがComposerナビゲータフレームのインスタンスペインに表示されます。
他のプロジェクトで作成した、既存のイメージリソースをインポートして使うことができます。 その手順を以下に示します。
[リソース]カテゴリ(図は前節を参照)の[イメージ]を右クリックし、コンテキストメニューから[インポート]を選択します。 次のダイアログボックスが表示されます。
[参照]ボタンを押すと、ファイル選択ダイアログが表示されます。 ネットワーク上あるいはローカルファイルシステム上を検索し、インポートしたいイメージリソースを選択します。[開く]ボタンをクリックすると、元のダイアログに戻ります。 URLを指定してファイルを読み込むこともできます。「http://」、「https://」、あるいは「ftp」という文字列を、ファイル名の前に置いて明示してください。
注記: イメージリソースはXMLファイルでもあります。 常にComposerプロジェクトの「\image」フォルダにあります。
リソース名がダイアログの[名前]フィールドに表示されています。 必要ならばここで名前を変更してください (後で変更することもできます)。
プロジェクトに作成またはインポートしたイメージリソースは、インスタンスペインで当該リソースをダブルクリックすれば表示できます。選択して右クリックし、[開く]を選択しても同様です。 イメージは、Composerデスクトップ内の、独立したタブ付きウィンドウに表示されます。
表示の大きさ(拡大率)はいろいろな方法で変更できます。 イメージ上を右クリックするとコンテキストメニューが現れます。
ここに各種のズームコマンドが揃っているほか、マウスまたはキーボード、あるいはその両方を使っても拡大率を調整できます。
拡大:数字キーボードの<+>キーを押すか、イメージ上を左クリックします。
縮小:数字キーボードの<->キーを押すか、<Control>キーを押しながら、イメージ上を左クリックします。
等倍表示: <=>キーを押すか、<Shift>キーを押しながら、イメージ上を左クリックします。
注記: Novell exteNd Professional Editionに含まれるComposerでは、JARリソースは扱えません。 以下の説明はEnterprise Editionの場合にのみ成り立ちます。
JARリソースを使えば、Composerプロジェクトに、カスタムユーティリティクラスやビジネスオブジェクトを追加できます。 カスタムスクリプトやカスタムコンポーネントをプロジェクトに作成すれば、必要なところで対応するクラスを使えるようになります。 カスタムスクリプトエディタのクラスブラウザには、JARリソースにアクセスし、ドラッグ&ドロップ操作で、Javaオブジェクトをカスタムスクリプトに取り込む機能があります。 また、コンポーネント内で関数コールを使う形でも、インポートされたクラスタイプのオブジェクトをインスタンス生成し、クラスメソッドを起動することができます。
注記: 他のComposerプロジェクトをサブプロジェクトとして追加したい場合は、JARリソースのしくみを使わないでください。 代わりに、[ツール]>[プロジェクト設定]>[サブプロジェクト]の順に選択し、他のコンポーネントプロジェクトをインポートします。
JARリソースを最初に作成する時点で、プロジェクトフォルダに\JAR
というサブディレクトリが作成され、JAR
ディレクトリの下にimportフォルダができます。 JARリソースは次の2つのファイルから成ります。
このうちXMLファイルは、\JAR
サブディレクトリ以下に作成されます。 一方JARファイルは、\import
サブディレクトリ以下にコピーされます。
したがって、たとえばTutorialStudent
というプロジェクトに、mycontacts.jar
というJARファイルを元にしてJARリソースを作成した場合、ディレクトリ構造は次のようになります。
\jar
フォルダ以下には、mycontacts.xml
というファイルもあります。これはmycontacts.jar
リソースに対応するxObjectラッパ(メタデータ)を表します。
JARリソースを作成した時点では、元になったJARファイル名と同じリソース名になっています。 ただし、必要ならば後で改名しても構いません。 オブジェクトペインで当該リソースを右クリックし、 コンテキストメニューから[名前変更]を選択します。 次いで、新しい名前を入力します。 リソース名を変更すると、xObjectばかりでなくJARファイル自身の名前も変わります。
注記: JARファイルリソースはあらかじめ閉じておく必要があります。
JARリソース内のクラスは、クラスパッケージのコンテキストで参照する必要があります。 クラスがJARのルートであれば、コンテキストの指定は不要です。 次の例には、JARオブジェクトクラスが2つあります。1つ目のmyFirstStringProcessorObjは、JARのルートでクラスを参照しています。 2つめのmySecondStringProcessorObjは、「com.Novell」というコンテキストで参照されています。いずれの場合も、コンテキストの前に「Packages」というキーワードを付けている点に注意してください。 2つのクラスに同じ名前のメソッドが定義されている場合、衝突を避けるため、コンテキストを与えてクラスをパッケージ化する必要があります。
次の例には、com.Novellというコンテキストで、myStringProcessorクラスに属するオブジェクトをインスタンス生成するための関数式が記述されています。
展開に当たって、JARリソースはWARファイルに(プロジェクト内のJARとともに)パッケージ化され、展開EAR内に置かれます。 各物理JARには、次のようなデフォルトの展開コンテキストが設定されます。
/JAR/import
Composerのナビゲーションフレームで、[リソース]カテゴリの[JAR]を右クリックし、コンテキストメニュー(下の図を参照)から[新規]を選択します。あるいは、[ファイル]メニューから[新規作成]>[xObject]の順に選択しても同様です。 [新規xObject]ダイアログ(下の図を参照)で[リソース]タブに切り替え、[JAR]を選択します。
次に現れるダイアログでは、[既存の外部ファイルから作成する]ラジオボタンがあらかじめ選択されています。 次の図を参照してください。
ファイルの場所がわかっている場合は、テキストフィールドに直接入力しても構いません。ファイルシステムアドレス、あるいは、「http://」または「ftp://」で始まる完全修飾URLで指定します。 わかっていない場合は[参照]ボタンをクリックし、JARファイルを検索します。
ヒント: [参照]ボタンで呼び出したファイル選択ダイアログでは、<Control>キーや <Shift>キーを押しながら操作することにより、複数のJARファイルをまとめて選択し、 Composerに取り込むことができます。 各JARファイルの名前がそのままリソース名にな ります。
[完了]ボタンをクリックします。 ダイアログが消え、新しいJARリソースがComposerナビゲータフレームのインスタンスペインに表示されます。
JARリソースカテゴリ上で右クリックし、コンテキストメニューから[インポート]を選択します。あるいは[ファイル]>[xObjectのインポート]の順に選択しても同様です。 [インポート]ダイアログが表示されます。
[参照]ボタンを押すと、ファイル選択ダイアログが表示されます。 ネットワーク上あるいはローカルファイルシステム上を検索し、インポートしたいJARリソースを選択します。[開く]ボタンをクリックすると、元のダイアログに戻ります。 URLを指定してファイルを読み込むこともできます。「http://」、「https://」、あるいは「ftp」という文字列を、ファイル名の前に置いて明示してください。
リソース名がダイアログの[名前]フィールドに表示されています。 必要ならばここで名前を変更してください (後で変更することもできます)。
[OK]をクリックします。 Composerナビゲーションフレームのインスタンスペインに、リソースが追加されます。
注記: Novell exteNd Professional Editionに含まれるComposerでは、JSPリソースは扱えません (ただし、Composerで扱えるJSPを、Directorで作成することは可能です。 詳しくは展開に関する章のDirector JSPウィザードを参照してください)。 以下の説明はEnterprise Editionの場合にのみ成り立ちます。
JSP (Java Server Page)は、Composerで直接作成(し、JSPリソースとしてプロジェクトに保存)するほか、ローカルドライブあるいはURIからインポートする、あるいは他のComposerプロジェクトから作成済みのJSPリソースをインポートすることも可能です。 JSPリソースができてしまえば、プロジェクトの展開JARにパッケージ化し、展開できます。
Composerの組み込みJSPエディタには、JSPの編集や作成ばかりでなく、JSPベースのトリガを生成し、(Composerのカスタムタグライブラリを使って、) Composerサービスで利用できるという、有用な機能があります。 これについては後述します。
Composerのナビゲーションフレームで、[リソース]カテゴリの[JSP]を右クリックし、コンテキストメニュー(下の図を参照)から[新規]を選択します。あるいは、[ファイル]メニューから[新規]>[xObject]の順に選択しても同様です。 [リソース]タブから[イメージ]を選択し、[OK]ボタンを押します。
このリソースに使いたいJSPファイルの場所がわかっている場合は、[インポートするファイル/URL]に直接入力します。 そうでない場合は[参照]ボタンを押し、ファイル選択ダイアログで指定します。
[完了]をクリックします。 インスタンスペインに新しいリソースが追加され、次のように、ComposerのJSPエディタに当該JSPが開かれます。
Composerを使って、プロジェクト内の既存のサービスにトリガをかけるJSPコードを、自動生成することができます。 以下、その手順を示します。
Composerのナビゲーションフレームで、[リソース]カテゴリの[JSP]を右クリックし、コンテキストメニュー(前節の図を参照)から[新規]を選択します。あるいは、[ファイル]メニューから[新規]>[xObject]の順に選択しても同様です。[リソース]タブから[JSP]を選択し、[OK]ボタンを押します。
すると現れるダイアログで、[Composerサービスを実行するためのJSPの作成]ラジオボタンを選択します。 ラジオボタンをクリックした時点で、ダイアログは次の図のように変わります。
[Composerサービスを実行する]チェックボックスをオンにすると、あるサービスにトリガをかけるカスタムタグコードが自動生成されます (オフのままであれば、JSPは空のままです。 JSPを自分で記述する場合は、この時点で[完了]をクリックします)。 チェックボックスをオンにすると、その下のドロップダウンメニューが、選択できる状態になります。
[サービス]ドロップダウンメニューから、サービスを選択します。 このリストには、プロジェクト内のサービス名が列挙されています。
[完了]をクリックします。 サービスを起動するコードを含む新しいJSPが、次の図のように、エディタペインに表示されます。
WSDL (Web Services Description Language)とは、Webサービスを記述するためのXMLボキャブラリです。WSDLを使用すると、ビジネスがオンラインでやりとりするために十分詳細なレベルで、インタフェース、プロトコルのバインド、およびWebベースのサービスに関するさまざまなタイプの情報を、(標準の方法で)記述することができます。完全な標準については、http://www.w3.org/TR/wsdl
を参照してください。
WSDLリソースを作成または取得するには3つの方法があります。
Composerの機能を使ってWSDLを自動生成する方法 (プロジェクトに追加されたWebサービスについては、WSDLファイルを自動生成できます)。 この手順を以下に解説します。
WSDLをプロジェクトに直接ダウンロードすることで、レジストリ(UDDIパブリックレジストリなど)からWSDLを取得する方法。この方法は、次に詳しく説明します。
既存のサービスからWSDLリソースを生成する、またはXMLエディタでWSDLリソースを作成する
[ファイル]メニューから、[新規]>[xObject]の順に選択します。 [リソース]タブに切り替え、[WSDL]を選択します。
カテゴリペインで「WSDLリソース」アイコンを右クリックし、[新規]を選択します (これにより、WSDLリソースが既存のサービスと関連付けられます)。
ナビゲータのインスタンスペインでWSDLリソースを右クリックし、[WSDLの作成]を選択します (やはりWSDLリソースが既存のサービスと関連付けられます)。
既存のファイルからWSDLを作成するか、あるいは新しくComposerサービスを記述するかを、ラジオボタンで選択します。
プロジェクトでの既存のWebサービスに基づきWSDLを作成する場合は、[Webサービスの関連付け]チェックボックスをオンにします。
注記: 自動作成ではなく、XMLエディタ環境で独自にWSDLを記述する場合は、[Webサービスの関連付け]チェックボックスはオフのままで[完了]ボタンをクリックします。 するとダイアログは消えます。Composerのコンテンツペインを右クリックし、コンテキストメニューから[表示]>[テキスト形式]の順に選択した後、WSDLを入力してください。
Composerで、WSDLでのSOAPバインド情報を自動的に作成する場合は、[ SOAPバインドの生成]チェックボックスをオンにします。[ドキュメント]および[RPC]というラベルの付いたラジオボタンから、使用するバインドスタイルを選択します。
[完了]をクリックします。新しく作成したWSDLが、ComposerのコンテンツウィンドウでDOMツリーとして表示されます。 DOMを右クリックして、[表示]>[テキスト形式]の順に選択して、WSDLドキュメントのテキストビューを表示します。このWSDLドキュメントは、必要に応じて後で手動で編集できます。次の図を参照してください。
レジストリブラウザを使用して外部サービスからWSDLを取得する
416レジストリ参照で説明されているとおり、([組織]または[サービス]のいずれかを)検索します。
426レジストリからのWSDLの取得で説明されているとおり、そのサービスのWSDLを取得します。 取得したWSDLのツリービューが、コンポーネントエディタのコンテンツペインに自動的に表示されます (ほかの形式で表示したい場合は、コンテンツペイン内で右クリックし、コンテキストメニューの[表示]で切り替えてください)。
Composerの[ファイル]メニューから、[名前を付けて保存]を選択します。リソースの名前を入力し、[OK]をクリックします。
検索されたWSDLをベースとした新しいWSDLリソースが、Composerナビゲーションフレームのインスタンスペインに表示されます (WSDLはこの時点でディスクにも保存されます)。
デフォルトでは、WSDLリソースをはじめて開くと、ドキュメントは構文に色が付けられたテキスト編集ビューで表示されます。ドキュメントにXSLスタイルシートを適用して作成した、WSDLドキュメントのスタイル形式のビューを表示することもできます。
WSDLエディタペインで右クリックして、コンテキストメニューから[表示]>[スタイル形式]の順に選択します。しばらくすると、スタイル形式のビューに切り替わります。
ここでは、要約スタイルシートがドキュメントに適用されています。希望する場合は、代わりにカスタムスタイルシートを適用できます(次の手順を参照)。
スタイル形式のフォームにWSDLドキュメントがすでに表示された状態で、ペイン内を右クリックします。コンテキストメニューが表示されます。 [スタイルシートの選択]をクリックします。
スタイル形式のビューの基礎として、既存の標準スタイルシート([詳細]または[概要])のいずれかを選択する場合は、[システム]ラジオボタンをオンにします。
それ以外の場合は、[カスタム]ラジオボタンをオンにして、選択したスタイルシートへのパスを入力します(または、[参照]ボタンを使用して、標準のファイルのナビゲーションダイアログボックスを表示します)。 パスがURL形式であれば、「http://」、「https://」、あるいは「ftp://」という文字列を明示してください。
スタイル形式のビューで選択したスタイルシートをデフォルトとして適用する場合は、[デフォルトに設定]チェックボックスをオンにします。この設定は、Composerセッション全体で適用されます。
ComposerにはWSDLの自動生成機能がありますが、WSDL要素を手で編集(または作成)しなければならない場合もあります。 ComposerのWSDLエディタ(XMLエディタのWSDL対応版)を使えば、一般的なテキストエディタ同じように、テキストの挿入や切り取り、貼り付けの操作ができます。標準のWSDLドキュメント要素を簡単にすばやく作成できるよう設計された特別なコンテキスト機能を利用することもできます。
WSDLドキュメントには少なくとも次の4つの標準要素タイプがあります(直接保持する場合とインポートする場合があります)。 すなわち、「message」、「portType」、「binding」、および「service」です。 これらの要素は、カスケーディング参照を使用して相互に構成されているため、ダイアログボックスを使用しないでWSDLファイルを作成する際には、「message」セクションを最初に作成してから、「portType」セクション、「binding」セクションの順に作成し、最後に「service」セクションを作成することをお勧めします。WSDLエディタでは、ダイアログボックスベースでこれら4つのタイプを個々に作成できます。
WSDLでは、メッセージとは交換されるデータの抽象的な、型定義です。ランタイム時には、実際のメッセージはDOMとして表されます。
WSDLドキュメントがテキストビューモードになっていることを確認してください。 (ドキュメント内を右クリックし、[表示]>[テキスト形式]の順に選択します)。
エントリを削除するには、最初にエントリをクリックして該当する行を選択してから、[削除]ボタンをクリックしてそのエントリを削除します。
[OK]をクリックします。ダイアログボックスが閉じ、ドキュメントに新しいセクションが追加されます。
<message name="GetLastTradePriceOutput"> <part name="body" element="xsd1:TradePriceResult"/> </message>
WSDLポートタイプは、サービスおよびサービスで使用される通信モード(一方向、要求-応答など)によってサポートされた操作の抽象的な定義です。
[タイプ]カラムで、プルダウンメニューから[一方向]、[Request-Response]、[送信請求-応答]、または[通知]を適宜選択します。
[フォーマット]で、入力メッセージおよび出力メッセージを入力するか、操作の編集ダイアログボックスを使用して適切なメッセージを作成します。 操作の編集ダイアログボックスを開くには、行の最後で[設定...]ボタンをクリックします。 . .新しいダイアログボックスが開きます。 新しいダイアログボックスが表示されます。
操作の編集ダイアログボックスには、複数のコントロールグループがあります。該当する操作(要求-応答、依頼-応答など)に適切なコントロールのみが、有効になります。たとえば、前の手順6で[タイプ]カラムから[通知]を選択した場合、出力コントロールグループのみが有効になります。有効になった各グループでは、操作に適切な[名前]および[メッセージ]が、[入力]および[出力]に対して必要となります。ただし、[障害]グループは、必須ではなくオプションです。
[OK]をクリックして、新しいポートタイプの挿入ダイアログボックスを閉じます。WSDLドキュメントに新しいセクションが追加されます。
<portType name="StockQuotePortType"> <operation name="GetTradePrice"> <input name="input" message="tns:GetLastTradePriceInput"/> <output name="output" message="tns:GetLastTradePriceOutput"/> </operation> </portType>
バインドでは、特定のポートタイプによって定義された操作とメッセージに対する具体的なプロトコルおよびデータ形式の仕様が指定されます。
[ポートタイプ]の横にあるプルダウンメニューを使用して、このバインドに対する適切なポートタイプを選択します。プルダウンメニューには、このドキュメントに対してこれまでに作成した(該当する場合)ポートタイプの名前が含まれます(前のポートタイプ要素の追加を参照)。
WSDLドキュメントでSOAPバインドを指定する場合、[SOAPバインド]チェックボックスをオンにしてから、[スタイル]のプルダウンメニューで[RPC]または[ドキュメント]を選択して、[トランスポート]に値を入力します(または、デフォルト値を受け入れます)。
HTTPバインドを使用する場合は、[HTTPバインド]チェックボックスをオンにして、[バーブ]に適切な動詞([GET]または[POST])を入力します。
[OK]をクリックして、ダイアログボックスを閉じます。WSDLドキュメントに新しいバインドセクションが追加されます。
<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetLastTradePrice"> <soap:operation soapAction="http://example.com/GetLastTradePrice"/> <input> <soap:body use="literal" namespace="http://example.com/stockquote.xsd encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> <output> <soap:body use="literal" namespace="http://example.com/stockquote.xsd" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation> </binding>
サービス要素では、該当するサービスのエントリポイントアドレス(複数可)を命名します。これらのアドレスは、URIの形式で、「ポート」を構成します。
[バインド]カラムで、プルダウンメニューから既存のバインドを選択します。[バインド]セクションには、このドキュメントに対してすでに作成されている(該当する場合)使用可能なバインドが反映されます。
[OK]をクリックして、ダイアログボックスを閉じます。WSDLドキュメントに新しいサービスエントリが追加されます。
<service name="StockQuoteService"> <port name="StockQuotePort" binding="tns:StockQuoteBinding"> <soap:address location="http://example.com/stockquote"/> </port> </service>
WSDLエディタには、<記号(つまり要素タグの開始)を入力すると有効になる「スマート先読み入力」機能が組み込まれています。コンテキストメニューが自動的に表示され、ファイルで指定したスキーマ、およびドキュメントの場所に基づき、使用できるタグ名の選択肢が表示されます。
たとえば、手動でWSDLドキュメントを作成しており、ドキュメントの上部に近づいた場合、「<」を入力するとカーソルの場所にメニューが開き、次の選択肢が表示されます。
このメニューの要素名は、WSDLでの有効なタグ名に対応していることにご注意ください。 メニュー項目を選択するには、単純にダブルクリックします。
メニューの選択肢は、状況依存型です。つまり、要素ツリー内の深い階層で、<記号を入力した場合、先読み入力メニューに表示される選択肢は、入力しているXPathコンテキストで有効となる値に制限されます。 たとえば、WSDLファイルの任意の場所にある<documentation>
ノード内で、「<」を入力した場合、この時点で作成できる唯一有効なタグは、終了タグとなるため、</documentation>
という選択肢が1つだけ表示された先読み入力メニューが開きます (WSDLスキーマでは、documentation要素内に子要素を置くことはできません)。
もちろん、常に先読み入力メニューは無視して、状況に応じて任意の項目を入力することはできます。たとえば、コメントは入力できます。
注記: 先読み入力のヒントは、ドキュメントに適用されるスキーマに基づきます。 明らかに、ドキュメントでネームスペースまたはスキーマが指定されない場合、エディタで有効なタグの選択肢を「認識」する方法はなく、先読み入力メニューは表示されません。
WSDLドキュメントが開いており、コンテンツがエディタに表示されている場合、テキスト形式表示に切り替え、WSDLドキュメントウィンドウの左上隅にある小さな緑色のチェックマークのアイコンをクリックして、WSDLドキュメントを検証できます。ドキュメントが正常に検証されると、ダイアログボックスが表示されます(次を参照)。
それ以外の場合は、エラーが表示され、ドキュメントの不正なステートメントを特定する情報が示されます。
注記: ドキュメントの検証が正常に行われた場合でも、慎重にWSDLを確認する必要があります。W3C WSDL仕様では、WSDLドキュメントのすべてのレベルで拡張要素が許可されています。 そのため、ダイアログボックスを使用せずにドキュメントを作成したり、他のソースから大幅に切り取り、貼り付けを行った場合、ドキュメントは有効としてテストされますが、必ずしも希望に添わない場合があります。
WSIL (Web Services Inspection Language)とは、Webサービスの検出支援機能、および検出に関連する情報の公開に関する仕様です。 以前の標準規格であるUDDI (Universal Description, Discovery and Integration)よりも軽量で、可搬性の高い仕様を目指して設計されました。守備範囲もUDDIより広くなっています。 標準化団体のひとつ(W3CおよびOASIS)に提出されたばかりの段階ですが、徐々に普及が進んでいます。 WSILの仕様についてはhttp://www-106.ibm.com/developerworks/webservices/library/ws-wsilspec.htmlを参照してください。
WSILもWSDLと同じように、XMLで記述されます。 ただしその目的は、サービスの記述ではなく情報の公開です。 すなわち、Webサービスを容易に検出できるよう支援するしくみということです。
WSILリソースを生成するには2つの方法があります。 1つ目は既存の外部ファイルからWSILを取得する方法です。 2つ目は、ComposerのWSILウィザードおよびXMLエディタを使ってWSILドキュメントを作成する方法です。 ウィザードで生成されるのは、空の<service>
要素および<description>
要素から成るスタブファイルです。これを元に、値を埋めてWSILドキュメントを作成することになります。
[ファイル]メニューから、[新規]>[xObject]の順に選択します。 [リソース]タブに切り替え、[WSIL]を選択します。
カテゴリペインで「WSILリソース」アイコンを右クリックし、[新規]を選択します
既存の外部ファイルを元にWSILリソースを作成する場合は、その完全修飾URLを入力するか、[参照]ボタンをクリックし、ローカルハードディスク上またはネットワーク上のファイルを指定します。
次の図は、XMLコンテンツエディタペインにWSILリソースが開かれている様子を示します。
WSDLドキュメントと同様、コンテンツエディタ内を右クリックして[表示]> [テキスト形式]の順に選択すると、WSILドキュメントがテキスト形式で表示されます。ノード名を含め、この画面で自由に編集できます。 同様に、[表示]> [スタイル形式]の順に選択すると、WSILをスタイル形式のビューで表示できます。 補完機能や検証機能(既述)は、WSILドキュメントの編集でも使えます。
Composerでは、個々のXMLファイルを「リソース」(xObject)として扱うことができます。 あるファイルをXMLリソースとして指定すると、プロジェクト階層の\xml_resource
というフォルダに、そのファイルがコピーされます。 このファイルは展開JARに(上記のコンテキストで)パッケージ化されます。したがって、たとえばJSPの中から、href
属性に相対URLを指定することにより参照できます。 XMLリソースドキュメントを、コンポーネントのアクションモデルからアクセスすることも少なくありません。リソースアクション(先の章で既述、詳しくは後述)を使って、ドキュメントをInput
またはTemp
メッセージパート(DOM)に取り込みます。
XMLリソースは、XMLテンプレートドキュメントは違うものです。 XMLテンプレートは、単なる設計の補助(ヒント)に過ぎません。あるタイプのドキュメントの「スクラッチコピー」として使います。また、これをベースとしてスキーマを記述することもあります。 テンプレートドキュメント内のインスタンスデータは、設計時にのみ使います。実稼動時には不可視になります。 テンプレートドキュメントが実稼動時に、データソースとして使われることはありません。
一方XMLリソースは、静的な(実行時に変化しない)各種のインスタンスデータを記述するデータストアとして、実稼動時にも使います。 具体的には、法定事項(著作権、免責、保証など)の記述、コンポーネントの実行中に通知を送る相手先のユーザ名やアドレス、階層構造になった検索テーブル(あるいは、コードテーブルリソースでは複雑すぎて扱えないが、RDBMSで管理するほどではなく、かえってオーバーヘッドがかかってしまうようなデータ)、あるいは複数のサービスで必要な共通データなどがあります。
データセットがそれほど大きなものでなければ、関係データベースよりもXMLリソースとして管理した方が、性能の点で優っていることもあります。
この意味でXMLリソースは、軽量の構造化データストア、すなわち、静的(読み込み専用)データを階層構造にして管理する、使いやすい「入れ物」と考えるとよいでしょう。
Composerのナビゲーションフレームで、[リソース]カテゴリの[XML]を右クリックし、コンテキストメニュー(下の図を参照)から[新規]を選択します。あるいは、[ファイル]メニューから[新規]>[xObject]の順に選択しても同様です。[リソース]タブから[XML]を選択し、[OK]ボタンを押します。
[完了]をクリックしてダイアログボックスを終了します。 新しいXMLリソースがComposerナビゲーションフレームのインスタンスペインに追加され、ファイル自身はエディタペインにツリー構造で表示されます。
他のタイプのリソース(イメージ、JSP、およびJARなど)と違い、XMLリソースのxObjectメタデータは、独立したファイルにはなっていません。 したがって、「インポート」できるXMLリソースは、他のComposerプロジェクトのxObjectに限りません。 XMLファイルを直接インポートすることも可能です(プロジェクトフォルダ階層の、\xml_resourceというフォルダにインポートされます)。 言い替えると、リソースおよび対応するデータファイルは、同じものです。 そのため、以下に示す手順は前節までの説明と多少異なりますが、最終的には同じ結果になります。
(他のリソースの場合と同様に、ナビゲータペインで、)[リソース]カテゴリの[XML]を右クリックし、コンテキストメニューから[インポート]を選択します。
[インポート]ダイアログが表示されます (ダイアログの説明および画面例は、この章の他のプロジェクトからイメージリソースをインポートするを参照)。 インポートするXMLファイルのファイル名またはURIを入力するか、または[参照]ボタンを押し、ファイルを検索します。
[完了]をクリックします。 インポートされたXMLファイルが、ナビゲーションフレームのインスタンスペインに追加されます。ただし、自動的にエディタペインに開かれることはありません (編集したい場合は、XMLリソースインスタンスペインで該当するファイル名の箇所をダブルクリックするか、または右クリックし、コンテキストメニューから[開く]を選択します)。
XMLリソースをパート(DOM)に、実行時にロードするには、Composerリソースアクションタイプを使います。 ドキュメントおよびそのデータは、他のドキュメントと同様、XPathまたはECMAScriptでアクセスします。 ノードを他のパートにマップする、ある要素から選択的にデータを取得する、あるいはドキュメント全体を出力にマップする、といった操作が可能です。 もちろん、XMLリソースドキュメントは、(読み込み専用の)静的リソースであることを忘れないでください。 XPathまたはECMAScriptを指定してXMLリソースを修正または上書きすれば、実際に変更されたように見えますが、当該コンポーネントインスタンスの処理が終了すると元に戻ってしまいます。 つまり、変更は一時的なものに過ぎず、次にコンポーネントやサービスを起動する時まで保存しておくことはできないのです。
アクションモデル上、XMLリソースをロードしたい箇所を右クリックします。 コンテキストメニューから、[新規アクション]>[データ交換]>[Composerリソース]の順に選択します。次の図を参照してください。
[リソース名]プルダウンメニューから、コンポーネントにインポートしようとする(既存の) XMLリソースを選択します (現行プロジェクトに存在するXMLリソース名がすべて列挙されています)。
[ターゲット]グループで、[XPath]または[式]のいずれかのラジオボタンを選択します。 インポート先XMLリソースDOMを指定します。
注記: XMLリソースドキュメントは、既存のDOMの、どのノードにでも割り当てることができます。 一時パートに割り当てたい場合は、あらかじめ一時パートを作成しておく必要があります。まだならば、[ファイル]メニューから[プロパティ]>[メッセージ]の順に選択し、コンポーネントに一時パートを追加します。
(必要な場合) アクションの動作をすぐに確認したい場合は、[適用]ボタンをクリックします。 XMLリソースが、指定したターゲットDOMの、所定の箇所に追加されるはずです。
[OK]をクリックして、ダイアログボックスを閉じます。 新しいComposerリソースアクションが、アクションモデルに追加されます。この時点以降、XMLリソースドキュメントのノードから(あるいはノードに)マップできるようになります。
XMLスキーマ定義ファイル(XSD)は、さまざまなコンポーネント、サービス、およびComposerプロジェクトによって再使用でき、またXMLスキーマ定義ファイルを使用するすべてのプロジェクトやコンポーネントに一度に再度インポートせずに編集、変更できるよう、専用のリソースタイプで指定されます。
XSDリソースを作成し、プロジェクトで使う手順は2とおりあります。
両方の場合について順番に説明します。
既存のXMLサンプルドキュメントを元に、スキーマ(XSDリソースおよび対応する.xsdファイル)を自動生成することができます。 その手順を以下に示します。
既存のXMLドキュメントを元にスキーマ(XSD)リソースを生成する
XMLドキュメントを既存のXMLテンプレートに追加するか、またはXMLサンプルドキュメントを元に、新しくXMLテンプレートを作成します。
サンプルドキュメントを含むXMLテンプレートを開きます (Composerのエクスプローラフレームで、テンプレートインスタンス名の箇所を右クリックし、コンテキストメニューから[開く...]を選択します)。
サンプルドキュメントが、ドキュメントウィンドウにツリー形式で表示されているはずです (テキスト形式であれば、エディタペインを右クリックし、コンテキストメニューから[表示]>[ツリー形式]の順に選択します)。
注記: このスキーマを基準にサンプルを検証する際は、適切なネームスペースプリフィクスを追加するなど、サンプルドキュメントを編集する必要があるかも知れません。
既存の.xsdファイルを元にXSDリソースを生成する手順を以下に示します。
既存の.xsdファイルを元に、リソースウィザードを使ってスキーマ(XSD)リソースを追加する
Composerの[ファイル]メニューから、[新規]>[xObject]の順に選択し、次いで[リソース]タブから[XMLスキーマ]を選択します (あるいはカテゴリペインでXMLスキーマリソースを右クリックし、[新規]を選択します)。XMLスキーマリソースウィザードの最初のペインが表示されます。
外部ファイルを元にスキーマを作成する場合は、[既存の外部ファイルから作成する]チェックボックスをオンにし、インポートするファイル名またはURLを入力します。 [参照]ボタンを押し、ディスク上またはネットワーク上のファイルを検索しても構いません。
Composerエディタでスキーマを作成する場合は、[Composerエディタを使用して作成する]チェックボックスをオンにします。
[完了]をクリックします。 既存ファイルをインポートした場合は、Composerのコンポーネントエディタが開きます。 スキーマ定義を手で入力する場合は、Composerのコンテンツウィンドウで作成します。
XSLリソースを使えば、XSLスタイルシートをプロジェクトの展開JARにパッケージ化することができます。 XSLスタイルシートを他のドキュメントから相対URLで参照する、あるいはXSLリソースをダイナミックにDOMにロードすることができます。詳しくはコンポーネントでXMLリソースにアクセスする手順を参照してください。
Composerのナビゲーションフレームで、[リソース]カテゴリの[XSL]を右クリックし、コンテキストメニュー(下の図を参照)から[新規]を選択します。あるいは、[ファイル]メニューから[新規]>[xObject]の順に選択しても同様です。[リソース]タブから[XML]を選択し、[OK]ボタンを押します。
[完了]をクリックしてダイアログボックスを終了します。 新しいXSLリソースがComposerナビゲーションフレームのインスタンスペインに追加され、ファイル自身はエディタペインにテキスト表示されます。
他のタイプのリソース(イメージ、JSP、およびJARなど)と違い、XSLリソースのxObjectメタデータは、独立したファイルにはなっていません。 したがって、「インポート」できるXSLリソースは、他のComposerプロジェクトのxObjectに限りません。 XSLファイルを直接インポートすることも可能です(プロジェクトフォルダ階層の、\xslというフォルダにインポートされます)。 言い替えると、リソースおよび対応するデータファイルは、実は同じものなのです。 そのため、以下に示す手順は前節までの説明と多少異なりますが、最終的には同じ結果になります。
(他のリソースの場合と同様に、ナビゲータペインで、)[リソース]カテゴリの[XSL]を右クリックし、コンテキストメニューから[インポート]を選択します。
[インポート]ダイアログが表示されます。 (ダイアログの説明および画面例は、この章の他のプロジェクトからイメージリソースをインポートするを参照)。 インポートするXSLファイルのファイル名またはURIを入力するか、または[参照]ボタンを押し、ファイルを検索します。
[完了]をクリックします。 インポートされたXSLファイルが、ナビゲーションフレームのインスタンスペインに追加されます。ただし、自動的にエディタペインに開かれることはありません。 (編集したい場合は、XSLリソースインスタンスペインで該当するファイル名の箇所をダブルクリックするか、または右クリックし、コンテキストメニューから[開く]を選択します)。
Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved. more ...