複合アプリケーション - 設計と管理
多くの場合、WSDL は、Web サービスで実装されるインターフェースを定義するために、Web サービスのコンテキストで使用されます。通常、SOAP バインディングを使用して、SOAP プロトコルをサポートする Web サービスで実現するインターフェースを指定します。Lotus Domino Designer の Property Broker Editor で作成するファイルで使用する WSDL の構文は、WebSphere Portal でサポートされる構文と似ています。
メモ Portal での WSDL ファイルの使用について詳しくは、WebSphere Portal のマニュアルを参照してください。
WSDL ファイルのコピーを NSF ベース複合アプリケーションに格納するには、IBM(R) Lotus Domino Designer(R) でアプリケーションを開き、設計ペインの [複合アプリケーション] - [ワイヤリングプロパティ] に移動します。[WSDL のインポート] ボタンを使用してディスクから WSDL ファイルを選択し、「ワイヤリングプロパティ」設計要素を作成します。この設計要素はテンプレートに格納され、引き継がれます。または、Lotus Notes の他の設計要素と同じようにテンプレートを更新しないようにも設定できます。
Property Broker Editor を使用して独自の WSDL ファイルを最初から作成することもできます。詳しくは、「Lotus Domino Designer で Property Broker Editor を使用する」を参照してください。
次のセクションでは、Lotus Domino Designer および WebSphere Portal で使用する WSDL ファイルの構文の詳細を説明します。特に、この例ではポートレット間の Click-to-Action が WSDL 文書内のいくつかの要素をどのように使用しているかを示します。<binding> 要素の拡張について説明し、WSDL 拡張 の完全なスキーマを示します。
WSDL の構文ここでは、Lotus Domino Designer および WebSphere Portal で使用する WSDL ファイルの構文について説明します。 <types>複合アプリケーションのコンポーネントの場合、この要素は転送されるデータのデータ型を宣言します。データ型は、XML Schema Datatypes (XSD、XSD の仕様を参照) を使用して宣言します。WSDL 文書に複数の型が定義されていることがあります。次の例は、TrackingIDType という名前のデータ型を宣言するサンプルです。 <types>
<xsd:simpleType name="TrackingIDType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
</types>
<message>入力メッセージは、パーツを 1 つだけ含むことができます。 <operation>Click-to-Action 操作の抽象定義を指定します。上記の入力メッセージに関する制限に注意してください。 <portType>操作の抽象コレクションを定義します。操作は、文書内で定義する必要があります。1 つの操作は、Click-to-Action が有効化されたポートレット上の各アクションに対応します。Click-to-Action に対して有効化するアクションのみを宣言してください。 <binding>バインディング要素は、ポートレットアクションを操作に関連付けるために拡張されます。操作ごとにポートレットアクション名を付ける必要があります。ポートレットアクション名を指定するには、WSDL ファイルの binding セクションにある action タグの name 属性を使用します。アクション名が省略されていると、operation タグの name 属性がポートレットアクション名として使用されます。operation パラメータごとに action パラメータ名を付ける必要があります。portlet パラメータ名を指定するには、WSDL ファイルの binding セクションにある param タグの name 属性を使用します。パラメータ名が省略されていると、param タグに関連付けられている part タグの name 属性がポートレットのパラメータ名として使用されます。 また、boundTo 属性を使用してパラメータのバインド先を指定することもできます。選択肢は、request-parameter、request-attribute、session-attribute、または action-attribute です。
<binding> 要素には、連携するポートレットの拡張が含まれています。この拡張については、WSDL 例の「<binding> 要素の拡張」で説明します。
WSDL に慣れている場合、例の宣言ファイルでは WSDL で <service> 要素で囲む service セクションを使用していないことに気付くでしょう。これは、外部の方法、つまりポートレットに関連付けられた portlet.xml ファイルのエントリを使用して、ファイルに定義された操作を実装する特定のポートレットにファイルが関連付けられているためです。
<binding> 要素の拡張<binding> 要素は、コンポーネントとポートレットの連携をサポートするために拡張されています。次の例は、ポートレットとの併用を示しています。 各拡張要素の先頭には「portlet:」接頭辞が付きます。これは、C2A (Click-to-Action) ネームスペースを参照します (http://www.ibm.com/wps/c2a)。「portlet:」接頭辞は、このセクションの拡張要素を識別するために使用されますが、C2A ネームスペースを参照する限り接頭辞に異なる名前が使用されることがあります。要素についての説明は次のとおりです。この項目の WSDL 拡張スキーマの情報も参照してください。
<portlet:binding>この要素は、WSDL <binding> 要素の最初の子要素である必要があります。この要素が存在することで、セクションがポートレットアクション呼び出しの C2A バインディング拡張として識別されます。この要素には次の属性があります。
非推奨。style="struts" を指定することは、Struts アクションを宣言することを示します。このためには、代わりに <portlet:action> 要素の type=struts を使用してください。
ポートレットアクション名です。これが省略されていると、関連付けられた operation 要素の名前がポートレットアクション名として使用されます。
ポートレットのユーザーインターフェースに表示するために適した、アクションに関する簡単な説明文です。変換された表題は、表題取得元のリソースバンドル内のキー名を点付きの書式で示します。詳しくは、国際化対応を参照してください。
次の値のいずれかを指定します。
アクションに関するテキストの説明です。変換された説明は、説明取得元のリソースバンドル内のキー名を点付きの書式で示します。
true か false のいずれかを指定します。false の場合、アクションはプログラムによって各セッションで起動する必要があります。true の場合 (デフォルト)、アクションはポートレットが初期化されると直ちに起動されます。
ポートレットのデータ型に基づいて複数のアクションが一致する場合、この属性を使用するとトリガするアクションを指定できます。ユーザーがソースに対するアクションをブロードキャスト送信すると、複数の一致するアクションが発生することがあります。指定されていない場合のデフォルトは false です。true に設定されているアクションが 1 つでない場合、データはターゲットに配信されません。次の例では、trackingDetails と routingDetails の 2 つのアクションを宣言します。selectOnMultipleMatch を使用して、複数のアクションが一致する場合に trackingDetails を使用することを指定します。
<portlet:binding/>
<operation name="trackingDetails">
<portlet:action caption="Tracking Details"
description="Get tracking details for
specifiedtracking id"
selectOnMultipleMatch="true"/>
<input>
<portlet:param name="trackingId" partname="trackingId"/>
</input>
<output>
<portlet:param name="customerName" partname="custName" boundTo="session"/>
</output>
</operation>
<operation name="routingDetails">
<portlet:action caption="Routing Details"
description="Get routing details for specified tracking id"/>
</binding>
<portlet:param>この要素は、binding の <operation> 要素の <input> サブ要素または <output> サブ要素の子要素として表示される必要があります。<input> 要素で囲まれている場合はポートレットアクションで使用するパラメータ、<output> 要素で囲まれている場合は作成するパラメータを指定します。現時点では、使用するパラメータの数を最大 1 つに制限しています。作成できるパラメータの数は任意です。この要素には、次の属性があります。
パラメータの名前です。省略されている場合、part 要素の name 属性値がパラメータ名として使用されます。
操作の入力または出力の part 要素を参照します。入力または出力が単一のパーツである場合は省略できます。
パラメータ値のバインド先を指定します。現在、この属性では次の値のいずれかのみを指定できます。
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:xsd="http://www.w3.org/2001/XMLSchema
targetNamespace="http://www.ibm.com/wps/c2a"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.xmlsoap.org/wsdl/
http://schemas.xmlsoap.org/wsdl/
http://www.w3.org/2001/XMLSchema
http://www.w3.org/2001/XMLSchema.xsd"
xmlns:portlet="http://www.ibm.com/wps/c2a">
<!-- ポートレットアクションへのマッピング操作を記述するカスタム拡張を含む binding セクションを指定する binding 要素です。これは、WSDL binding 要素内に配置する必要があります。 -->
<element name="binding" type="portlet:bindingType"/>
<complexType name="bindingType">
<!-- 非推奨。バージョン 4 との互換性のために保持されています。代わりに type 属性と action 要素を使用してください。struts フレームワークを使用したポートレット実装には、値を「struts」に設定します。 -->
<attribute name="style" type="string" use="optional"/>
</complexType>
<!-- action 要素を使用して、ポートレットブローカーがポートレットアクションを呼び出すために必要なすべての情報を指定します。これは、wsdl:binding セクションの wsdl:operation 要素内に配置する必要があります。 -->
<complexType name="actionType">
<sequence>
<!-- param 要素を使用して、アクションに関連付けられた入力または出力プロパティに関する情報、およびアクションとパラメータをやり取りするメカニズムを指定します。 wsdl:input 要素または wsdl:output 要素内に配置する必要があります。 -->
<element name="param" type="portlet:paramType" minOccurs="0"maxOccurs="unbounded"/>
</sequence>
<!-- アクションの名前です。ポートレットアクション名として設定されます。省略されている場合、対応する operation 要素の名前がアクション名として使用されます。 -->
<attribute name="name" type="string" use="optional"/>
<!-- default、simple、および struts が現在認識されている名前です。デフォルト値は default です。DefaultPortletAction、シンプルポートレットアクション、または struts アクションのメカニズムのどれを使用してポートレットアクションを呼び出すかを指定するために使用します。DefaultPortletAction の使用は非推奨です。下位互換性のため、この値がデフォルト値です。これを simple に設定して将来的な移行の問題を回避することをお勧めします。 -->
<attribute name="type" type="string" use="optional" default="default"/>
<!-- アクションの短縮名です。この名前がエンドユーザーに表示されます。 メッセージリソースファイルがポートレット用に提供されている場合、値は変換された文字列を取得するためのキーとして使用されます。 -->
<attribute name="caption" type="string" use="optional"/>
<!-- アクションの説明です。これはエンドユーザーに表示されます。メッセージリソースファイルがポートレット用に提供されている場合、値は変換された文字列を取得するためのキーとして使用されます。 -->
<attribute name="description" type="string" use="optional"/>
<!-- 複数のポートレットアクションがプロパティ値を同時に処理できる場合、invokeOnMultipleMatch 属性を true に設定したもののみが呼び出されます。 -->
<attribute name="selectOnMultipleMatch" type="boolean" use="optional" default="false"/>
<!-- activeOnStartup 属性が true である場合、アクションがセッションごとにプログラムによって無効化されていない限りいつでも呼び出すアクションを選択できます。activeOnStartup 属性が false である場合、アクションがセッションごとにプログラムによって有効化されていない限り呼び出すアクションを選択できません。 -->
<attribute name="activeOnStartup" type="boolean" use="optional" default="true"/>
<!-- param 要素はパラメータをポートレットアクションに配信する方法またはアクション実行後にアクションから取得する方法を指定します。 -->
<complexType name="paramType">
<!-- アクションの呼び出しで使用されるパラメータの名前です。省略されている場合、partname が使用されます。 この名前は、対応するプロパティの名前としても設定されます。プログラミングモデル文書のプロパティの説明を参照してください。 -->
<!-- 対応するパーツの名前です。アクションにパラメータが 1 つ存在する場合のみ省略できます。この場合、関連付けられた操作の定義から推論されます。 -->
<attribute name="partname" type="string" use="optional"/>
<!-- パラメータ内の場合はアクションを呼び出す前にパラメータを配置する場所、パラメータ外の場合はアクションを呼び出した後にパラメータを検索する場所です。許可されている値は request-attribute、request-parameter、session、および action です。 -->
<attribute name="boundTo" type="string" default="request-parameter"/>
<!-- パラメータの java クラスです。デフォルトは java.lang.String です。現在この値は使用されていませんが、将来的には確認用に使用できるようになります。 -->
<attribute name="class" type="string" default="java.lang.String"/>
<!-- パラメータの短縮名です。この名前がエンドユーザーに表示されます。メッセージリソースファイルがポートレット用に提供されている場合、値は変換された文字列を取得するためのキーとして使用されます。 -->
<!-- パラメータの説明です。これはエンドユーザーに表示されます。メッセージリソースファイルがポートレット用に提供されている場合、値は変換された文字列を取得するためのキーとして使用されます。 -->
</xsd:schema>
NSF コンポーネントと Eclipse コンポーネントを構築する場合、既存の WSDL ファイルを出発点として使用できます。ただし、WSDL ファイルの操作時に Property Broker Editor を使用することをお勧めします。
Lotus Domino Designer の複合アプリケーションの WSDL サンプルLotus Notes 8 を使用して独自のサンプル複合アプリケーションを作成する場合、このサンプルの構文と注釈 (太字) を参考にしてください。 <?xml version="1.0" encoding="UTF-8"?>
<definitions name="Property Broker WSDL"
targetNamespace="http://www.ibm.com/wps/c2a/testwsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:portlet="http://www.ibm.com/wps/c2a"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.ibm.com/wps/c2a/testwsdl"
xmlns:cus="com.ibm.compositeapps.samples" - このようにして独自のサンプルネームスペースを追加できます。 (1)
xmlns:cut="com.ibm.compositeapps.samples.2" - これは別のサンプルネームスペースです。 (2)
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<types>
<xsd:schema targetNamespace="com.ibm.compositeapps.samples"> - これはカスタムネームスペースです。 (1)
<xsd:simpleType name="SubjectType"> - これは型の名前です。
<xsd:restriction base="xsd:string"/>
<xsd:schema targetNamespace="com.ibm.compositeapps.samples.2"> これは別のネームスペースを示しています。 (2)
<xsd:simpleType name="AccountType">
<xsd:simpleType name="IDType">
<xsd:simpleType name="CustomerType">
<message name="New_Response_Action_Operation_Input">
<part name="SubjectPart" type="cus:SubjectType"/> - "cus" は作成したネームスペース (1) を指し示します。 -- これはプロパティから型にマップされます。
</message>
<message name="New_Response_Action_Operation_Output">
<part name="AccountPart" type="cut:AccountType"/> - "cut " は作成したネームスペース (1) を指し示します。
<part name="IDPart" type="cut:IDType"/>
<message name="OnViewEntrySelectionChange_Property_Operation_Output">
<part name="CustomerPart" type="cut:CustomerType"/>
<portType name="NotesDB_Operations"> - このセクションは、WSDL 標準の一部として必要です。
<operation name="New_Response_Action_Operation">
<input message="tns:New_Response_Action_Operation_Input"/>
<output message="tns:New_Response_Action_Operation_Output"/>
<operation name="OnViewEntrySelectionChange_Property_Operation">
<output message="tns:OnViewEntrySelectionChange_Property_Operation_Output"/>
</portType>
<binding name="Notes_Binding" type="tns:NotesDB_Operations">
<operation name="New_Response_Action_Operation"> - これは、1 つの入力プロパティと 2 つの出力プロパティを持つアクションです。下記のメモを参照してください。
<portlet:action name="New Response Action" caption="NewResponseCaption" - これは、Lotus Domino Designer ユーザーインターフェースのアクションインフォボックスに表示される名前です。 description="NewResponseDesc.id"/>
<portlet:param name="Subject" - これはプロパティ名であり、1 つの WSDL ファイル内では一意である必要があります。 partname="SubjectPart" -partname is used to map to the "part name=" under <message> caption="subjectCaption" description="subjectDesc.id"/>
<output> - 1 つのアクション内に 0 から N 個までの出力プロパティを指定できます。
<portlet:param name="Account" partname="AccountPart" caption="accountCaption" description="accountDesc.id"/>
<portlet:param name="ID" partname="IDPart" caption="id" description="idDesc.id"/>
<operation name="OnViewEntrySelectionChange_Property_Operation"> -これは出力プロパティです。
<portlet:action name="OnDocSelectionChange" - この名前は重要ではありませんが、1 つの WSDL ファイル内では一意である必要があります。 caption="DocSelectionCaption" description="DocSelectionDesc.id"/>
<portlet:param name="Customer" partname="CustomerPart" caption="customer" description="customer.id"/>
</definitions>
WSDL ファイルのガイドラインWSDL ファイルを作成する場合は次のガイドラインを使用します。