変更された WSDL の更新

WSDL を使用するプロジェクトを作成した後で、その WSDL が変更された場合は、新規 WSDL を用いて既存 WSDL の更新を試みることができます。

このタスクについて

WSDL を更新すると、WSDL と連動するいずれかのエンティティーが変更の影響を受ける可能性があります。 例えば、WSDL が操作の入出力パラメーターを定義し、これらのパラメーターを定義するスキーマが新しい WSDL で変更された場合、Web サービス・アクティビティーの「入力のマップ」および「出力のマップ」タスクでこれらのパラメーターを表すノードは存在しなくなっている可能性があり、これらのノードへのリンクはいずれも無効になっている可能性があります。 オーケストレーションを再び有効にするには、リンクを作成し直す必要があります。 WSDL の更新により、プロジェクトに対してリンクの再作成以外の変更も行うことが必要になる場合があります。 詳しくは、表 1 を参照してください。 場合によっては、下の表の最初の 3 行に示されているように、新規 WSDL がロードされないことがあります。
注: 既存の WSDL を更新することは、 ファイルを「プロジェクト」タブにドラッグしたり 「プロジェクト」タブで「WSDL」フォルダーを右クリックして「文書の追加」を 選択したりしてプロジェクトに複数の WSDL をロードすることとは異なります。 WSDL を更新すると、プロジェクト内の既存 WSDL が置き換えられます。 一方、同じファイルを「プロジェクト」タブにアップロードすると、プロジェクトに WSDL のインスタンスが 2 つ作成されます。
表 1.
WSDL での変更 新規 WSDL が初期 WSDL を置換するか プロジェクトが受ける影響
新規 WSDL が有効な WSDL ではない。 例えば、最後の </definitions> タグが WSDL の終わりにありません。 いいえ。更新は行われません。 なし。新規 WSDL はロードされません。 どのプロジェクト・エンティティーに対しても更新は行われません。
新規 WSDL をアップロードして既存の XML スキーマを置き換えると、プロジェクトが無効になる可能性がある。 いいえ。更新は行われません。 なし。新規 WSDL はロードされません。 どのプロジェクト・エンティティーに対しても更新は行われません。
現行 WSDL を別の WSDL で更新しようとしており、プロジェクト内のオーケストレーションまたはエンドポイントが現行 WSDL を参照している。
注: 複数の WSDL をプロジェクトにロードできます。
いいえ。更新は行われません。 なし。新規 WSDL はロードされません。 どのプロジェクト・エンティティーに対しても更新は行われません。
WSDL のサービス・バインディング定義が、サービス、ポート、およびロケーションの各エレメントによって定義されている。 WSDL 内のサービス、ポート、およびロケーションの各エレメントの値が変更された場合は、Web サービス・エンドポイントに格納されているこれらのエレメントの値を更新する必要があります。 はい。更新が行われます。 Web サービス・エンドポイントの値は、WSDL で指定された最新の値で更新されます。 これらのエレメントについて詳しくは、『Web サービス・エンドポイントの作成または編集』を参照してください。
操作の名前が WSDL 内で変更され、オーケストレーションが「サービスの呼び出し」アクティビティーでその操作を開始している。 はい。更新が行われます。 操作の名前が変更され、その操作が「サービスの呼び出し」アクティビティーで使用される場合は、 WSDL 内の最初の操作が「サービスの呼び出し」アクティビティーにデフォルトで割り当てられます。 ただし、このような最初の操作への再割り当ては、望ましい結果ではない場合があります。 WSDL 内の最初の操作の入出力パラメーターが、当初指定された操作のものとは異なる場合があるため、「入力のマップ」および「出力のマップ」タスクにはそれらのリンクが存在しなくなっている可能性があります。 オーケストレーションを有効にするには、「サービスの呼び出し」アクティビティーを構成し直す必要があります。
操作の 1 つの名前が WSDL で変更されたが、オーケストレーションはその操作を「サービスの呼び出し」アクティビティーで開始していない。 はい。更新が行われます。 操作の名前が変更され、その操作が「サービスの呼び出し」アクティビティーで使用されない場合、WSDL に対するこの変更は影響がありません。
追加の <part> エレメントが、操作の入出力パラメーターを定義するエレメントに追加された。 この変更は、WSDL のこのパーツを参照するプロジェクト・エンティティーに影響します。 影響を受ける可能性のあるエンティティーのリストを以下に示します。
  • スタンドアロン・マップ
  • 変数のマップ」アクティビティー
  • WSDL のこのパーツに基づく変数
  • このメッセージ・タイプを使用する操作を開始する「サービスの呼び出し」アクティビティーを含むオーケストレーション。 例えば、次の <message> エレメント例に、

例えば、『図 1』を参照してください。

はい。更新が行われます。 新規 <part> エレメントが <message> エレメントに追加されただけであるため、この変更は通常、WSDL に基づく既存のマップおよび変数に影響を与えません。 <Helloin> メッセージ例では、新しい city エレメントを追加しても、「サービスの呼び出し」アクティビティーの「入力のマップ」または「出力のマップ」タスク内の既存アドレス <part> エレメントへのリンクには影響しません。 必要に応じて、新規エレメントへのリンクを作成ができます。
操作の入出力パラメーターを定義する <message> エレメント内の <part> エレメントのタイプを変更する。 この変更は、WSDL のこのパーツを参照するプロジェクト・エンティティーに影響します。 影響を受ける可能性のあるエンティティーのリストを以下に示します。
  • スタンドアロン・マップ
  • 変数のマップ」アクティビティー
  • WSDL のこのパーツに基づく変数
  • このメッセージ・タイプを使用する操作を開始する「サービスの呼び出し」アクティビティーを含むオーケストレーション。
はい。更新が行われます。 マップ内の既存のリンクは、そのタイプが変更された場合でも、削除されません。
注意:
タイプの変更は、ランタイムに影響し、正しくない出力データを生成する可能性があります。 マップのリンクで行われたタイプ変換によって、実行時に正しくない出力データが生成されることのないよう確認してください。
操作の入出力パラメーターの <message> エレメントを変更する。

この変更は、WSDL のこのパーツを参照するプロジェクト・エンティティーに影響します。 影響を受ける可能性のあるエンティティーのリストを以下に示します。

  • スタンドアロン・マップ
  • 変数のマップ」アクティビティー
  • WSDL のこのパーツに基づく変数
  • このメッセージ・タイプを使用する操作を開始する「サービスの呼び出し」アクティビティーを含むオーケストレーション。
はい。更新が行われます。 マップで変更された入出力パラメーターへのリンクが削除されます。 マップ内の変更されたパラメーターへのリンクを作成する必要があります。 例えば、「サービスの呼び出し」アクティビティーによって呼び出される操作の入力パラメーターの <message> エレメントが変更されると、「サービスの呼び出し」アクティビティーの「入力のマップ」タスク内のノードへのリンクが削除されます。 変数から、「入力のマップ」タスクの「アクティビティーへ」ペインに示されるノードの新規セットへのリンクを作成する必要があります。
図 1. 追加の <part> エレメントの例
<message name="HelloIn">
	<part name="address" type="xsd:string>
</message>
以下のように <part> エレメントを追加します。
<message name="HelloIn">
<part name="address" type="xsd:string>
<part name="city" type="xsd:string>
</message>