複合アプリケーション - 設計と管理
コンポーネント間の通信は、プロパティ、アクション、関連付けによって行われます。ソースコンポーネントは、名前、データ型、値を持つ出力プロパティを発行します。ターゲットコンポーネントは、入力プロパティを持つアクションを提供します。
2 つのコンポーネントが通信を行うための関連付けを定義するには、出力プロパティのデータ型とアクションの入力プロパティのデータ型が一致しなければなりません。出力プロパティとアクションは、コンポーネントの一部として定義されます。
コンポーネント間の関連付けは、疎結合を行う複合アプリケーションのレベルでのみ定義されます。コンポーネントインターフェイスは WSDL (Web サービス記述言語) ファイルによって定義されますが、Web サービスとして呼び出されるわけではありません。
WSDL では、プロパティ、アクション、データ型の定義を行います。データ型については、組み込みのものを使用することも、特殊なデータ型を独自に定義することも可能です。組み込みデータ型は W3C http://www.w3.org/TR/xmlschema-2/#built-in-datatypes で定義されています。たとえば、文字列表現に使用する「xsd:string」(http://www.w3.org/TR/xmlschema-2/#string) のようなデータ型があります。
これらのデータ型は、別のプログラミング言語のデータ型/クラスとバインドされます。たとえば W3C データ型は、JAXB 2.0 によって Java(TM) データ型とバインドされます。つまり、xsd:string データ型は java.lang.String データ型とバインドされることになります。同様に、NSF コンポーネントタイプの場合も、LotusScript や JavaScript へのバインディングが定義されています。
また、WSDL では、ユーザー独自の特殊データ型を定義することもできます。次の例で、このポイントについて説明します。
<types>
<xsd:schema targetNamespace="http://com.ibm.propertybroker.standardtypes">
<xsd:simpleType name="mailTo">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
</xsd:schema>
</types>
上記の例の mailTo データ型は現在、Lotus Notes の Mail コンポーネントで使用されています。このデータ型を使用すると、新しいメールを表示して、複数のフィールドを事前に生成するアクションをトリガーできます。
メモ このデータ型は複雑であり、http://ftp.isi.edu/in-notes/rfc2368.txt で定義された独自のセマンティクスと構文を持ちます。
組み込みデータ型と特殊データ型には、それぞれ長所と短所があります。特殊データ型を使用すると、異なるコンポーネント間の連係がより複雑になり、場合によっては連携できなくなることもあります。たとえば、あるベンダー提供のコンポーネントが「mailTo」と呼んでいるデータ型を、別のベンダー提供のコンポーネントが「rfc2368Type」と呼ぶ場合、これらのコンポーネントが実際には同じセマンティクスと構文を使用するとしても、これらのコンポーネントを関連付けることはできません。別の例として、あるコンポーネントが特殊データ型「url」を発行するのに対し、別のコンポーネントが URL では「xsd:string」しか受け入れないという場合もあります。
この場合、コンポーネント間の連係をうまく保つには、データ型の使用の意味での「最小公倍数」を使用する必要があります。つまり、各コンポーネントが組み込みデータ型のみ(できるだけ「xsd:string」のみ)を使用するようにします。ただし、「xsd:string」のみを使用することの問題点もあります。それは、アクションが特定のプロパティを処理できない場合でも、すべての出力プロパティとアクション間の関連付けを定義できるという点です。
たとえば、特殊データ型「mailTo」を使用せずに、URL を発行するコンポーネントと Mail コンポーネントのアクション「新規メールの作成」を関連付けることは可能ですが、これを行っても意味がありません。「xsd:string」しか使用しない場合、アセンブリツール (Composite Application Editor と Portal Application Template Editor) はどの関連付けが実際に可能なのかを判断できず、各アクションは理解できないプロパティを使用した呼び出しまで処理しなければならなくなります。
組み込みデータ型と特殊データ型によるこれらの問題を回避するには、次のガイドラインに従ってください。