プログラミングの概要とユーザーインターフェース


Web サービスコンシューマの作成
バージョン 7.0 で Web サービス設計要素が導入されました。これにより、Web サービスを作成して Lotus Domino Server にホストし、他のコンピュータから呼び出せるようになりました。

バージョン 8.0 では、「Web サービスコンシューマ」が導入され、他の場所でホストされている Web サービスを呼び出せるようになりました。Web サービスコンシューマは Web サービス設計要素を使用しません (Web サービス設計要素は Web サービスをホストするためにのみ、このバージョンでも使用されます)。その代わり、Web サービスコンシューマは特殊なスクリプトライブラリ (LotusScript または Java のいずれか) を使用します。Web サービスを呼び出すには、エージェントまたはその他のコードでそのスクリプトライブラリを「使用」する必要があります。詳細は以下で説明します。

メモ バージョン 7.0 以前では、Java を使用して独自の Web サービスコンシューマを作成できましたが、Lotus Domino Designer には作成に関する支援機能はありませんでした。

Web サービス対応スクリプトライブラリを作成するには作成される各 Web サービス対応スクリプトライブラリまたは Web サービスコンシューマには、単一の WSDL 文書により定義される単一の Web サービスが含まれます。
1 使用する Web サービスとそのサービスに関連付けられている WSDL 文書を確認します。

2 [作成] - [設計] - [スクリプトライブラリ] を選択します。

3 次のいずれかを選択します。


4 ライブラリに名前を付けるには、[編集] - [プロパティ] を選択します。
5 [WSDL...] ボタンをクリックします。
6 [WSDL のインポート] を選択します。

7 [OK] をクリックして、スクリプトライブラリを上書きします。

8 呼び出す WSDL 文書を選択します。

9 [OK] をクリックします。

10 [ファイル] - [保存] を選択し、次に [ファイル] - [閉じる] を選択してライブラリを保存し、閉じます。

WSDL を呼び出す操作により、WSDL 文書内で記述されるサービスを表す LotusScript コードまたは Java コードのどちらかが作成されます。生成されるコードは、クラス名、フィールド、それらの種類、および関数またはサブルーチンを含み、すべて WSDL 文書から取り出されます。WSDL を呼び出す操作により、1 つ以上の PortType クラスが生成されます。加えて、任意の数の値型クラスが生成される場合があります。

PortType クラスで Web サービスの一連の操作を定義します。

LotusScript の PortType クラスは、「PortTypeBase」と呼ばれるクラスを継承し、LSXSD.LSS 内に定義されるため、特定できます。

Java の PortType クラスは、lotus.domino.types.PortTypeBase クラスを継承しているため、特定できます。また、各 PortType クラスには Service および ServiceLocator と呼ばれる 2 つの追加の関連するクラスがあり、2 つとも Java の PortType クラスのインスタンスの作成に使用されます。

値型クラスはすべて WSDL の呼び出し操作で生成されるその他の型で、アプリケーションのデータを収納します。PortType クラスで宣言される操作で使用されます。WSDL 文書で値型をまったく宣言しないことも可能です。

複数のスクリプトライブラリ間で値型 (PortType クラスではなく) を共有できます。PortType クラスは、最初に生成されたときのスクリプトライブラリの設計要素とともに存在する必要があります。値型をスクリプトライブラリ間で移動すると、以下のようなことが分かります。


Web サービス対応スクリプトライブラリをエージェントで使用するにはWeb サービス対応スクリプトライブラリを介して Web サービスを呼び出すためには、通常どおりに、コードの先頭にそのライブラリを含める必要があります (LotusScript の場合は「USE」ステートメント、Java の場合は [プロジェクトの編集] ダイアログを使用します)。次に、PortTypeBase (Java の場合は、完全な名前は lotus.domino.types.PortTypeBase) のサブクラスである、作成したスクリプトライブラリクラスのインスタンスを作成するだけです。このクラスのメソッドは対象とする Web サービスの操作に直接対応し、コードから呼び出すことができます。
Web サービス対応スクリプトライブラリをエージェントで使用するには、次のいずれかを選択します。

LotusScript を LotusScript エージェントで使用する

Web サービスを有効にした Java スクリプトライブラリを Java エージェントで使用する

スクリプトライブラリを結合して効率を向上させるさらに、ユーザーの Notes データディレクトリ内で管理されるテキストファイルの形で、複数の Web サービス対応 LotusScript スクリプトライブラリを使用することを促進する機能があります。WSDL 文書を LotusScript スクリプトライブラリに呼び出すと、「WSNamespace.mappings」と呼ばれるファイルが Lotus Domino Designer により作成され、WSDL のネームスペースと関連する LotusScript の定数が記録されます。利用者の WSDL を呼び出すと、呼び出した Web サービス PortType クラスを含む、生成されるクラスを関連付けるための方式のような定数が、WSDL 文書に指定されているとおりに、対応するネームスペースに生成されます。この方法により、LotusScript 識別子の最大長に違反したことが原因で呼び出しが失敗する可能性を最小限にしながら、クラスをその定義ネームスペースに関連付けることができます。
たとえば、次の WSDL 複合型、

<schema targetNamespace="urn:myCompanyNamespace">

<complexType name="MyCompanyPersonRecord">
<element name="Name" type="xsd:string"/>
<element name="Address" type="xsd:string"/>
</complexType>

</schema>

...は、LotusScript の Web サービス対応のスクリプトライブラリ内に次のように呼び出すことができます。

Const n0 = "urn:myCompanyNamespace" 'generated namespace constant

class MyCompanyPersonRecord_n0 'namespace-qualified class,
'associated via its "_n0" suffix
public Name_ As String
public Address As String
end class

...さらに、テキストファイル WSNamespaces.mappings に次のエントリが生成されます。

n0=urn:myCompanyNamespace

その後、この同じ Lotus Domino Designer のインストール済み環境を使用して LotusScript Web サービス対応スクリプトライブラリに WSDL 文書を呼び出す後続の呼び出しでは、「urn:myCompanyNamespace」ネームスペースを表すのに「n0」ネームスペースの定数が再使用され、複数の Web サービスコンシューマライブラリ間でのネームスペースの定義とクラスの関連付けの一貫性が維持されます。また、ファイルをテキストエディタで編集して、後続の WSDL の呼び出し時に適用するように前もって決められている、定数とネームスペースのマッピングを含めることができます。上述の例では、「urn:myCompanyNamespace」ネームスペース内の MyCompanyPersonRecord complexType を含む、または参照する任意の WSDL 文書は常に、「MyCompanyPersonRecord_n0」として呼び出され、当該クラスをいくつかの共通の共有スクリプトライブラリに移動できます。

関連項目