このサイトをビューするために JavaScript を有効化してください。

Altova MapForce 2020 Enterprise Edition

この例は、MapForce 内での SOAP Web サービスの作成方法について説明しています。この例内で作成されているマッピングプロジェクトは次のパスでみつけることができます: <マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\Tutorial\Query Person database.mfp。この例の Web サービスは 次のゴールがあります:

 

SOAP リクエストを使用してサーバー上の Microsoft Access データベースから検索条件を満たす個人のレコードのセットを抽出します (クエリはクライアントにランタイムに入力され、サーバーに送信されます。サーバーは検索結果ともに XML レスポンスを返します)。

Microsoft Access データベースに SOAP リクエストを使用して新規のレコードを挿入します ( SOAP リクエストにより個人の詳細は提供されます。成功すると、 サーバーはデータベースへの個人の詳細の書き込みの成功の通知を返します)。

 

次に注意してください:

 

MapForce 内での Web サービスの作成はターゲットプログラム言語に依存しません。Java または C# Web サービスを生成する場合でも同じです。Web サービスをコンパイルし Web サーバーにデプロイする際に違いが発生します。この点については後に説明されています。

マッピング出力のプレビューに必要なサンプル SOAP リクエストを生成するには、 この例では XMLSpy Enterprise Edition が使用されています。この MapForce プロジェクトのソース WSDL ファイルは XMLSpy  を使用して作成されています(検証することもできます)。MapForce 内で XMLSpy を使用することなく Web サービスをデザインすることができます。WSDL ファイルから SOAP リクエストを作成することのできる SOAP クライアントが必要になります。

 

Web サービスプロジェクトの作成

上記のように、MapForce を使用して SOAP Web サービスを作成するために WSDL ファイルが必要になります。この例では、XMLSpy Enterprise エディションを使用して作成された WSDL ファイルが使用されます。下のイメージでは XMLSpy の WSDL ビューで表示される WSDL 構造が示されています。上記の目的に対応する2つのオペレーション (getPersonputPerson) が定義されていることに注意してください。

mff_soap_wsdl_view

 

メモ:WSDL ファイルは MapForce Web サービスプロジェクトが作成される前に有効である必要があります。

 

Web サービスから Web サービスプロジェクトを作成するには、下記のステップに従います:

 

1.「ファイル」 メニューから「新規作成」をクリックし、 「Web サービスプロジェクト」を選択します。

mff_soap_new_project

2.フォルダー <マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\Tutorial\ 内で使用することのできる query.WSDL ファイルを参照します。WSDL ファイルを選択すると、 MapForce は自動的に残りのフィールドを入力します。

mff_soap_insert_wsdl

3.「OK」をクリックします。

4.プロンプトされると、新規の WSDL プロジェクトの名前を入力し、「保存」をクリックします。

 

プロジェクトウィンドウは プロジェクトと WSDL の名前、および WSDL ファイル内で定義されているオペレーションを表示しています。2つのオペレーションはgetPersonputPerson です。

mff_soap_ws_project

 

「getPerson」 オペレーションのデザイン

プロジェクトウィンドウ内の getPerson.mfd ファイルをダブルクリックし、メインペイン内にコンテンツをロードします。getPersonSoapIn コンポーネントは Web サービスのデータベースをクエリするために使用される クエリ (アイテム) を含んでいます。getPersonSoapOut コンポーネントは、 WSDL ファイル内で定義されている Person 構造を含んでいます。

mff_soap_getPerson1

「挿入」メニューから「データベース」をクリックします。次の Access データベースをマッピングエリアに追加します: <マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\Tutorial\people.mdb. データベースには getPersonSoapOut コンポーネント内のフィールドに一致するフィールドを持つ1つのテーブル Persons のみが含まれており、データベースをマッピングコンポーネントとして追加することに関する詳細は、データベースと MapForce を参照してください。

mff_soap_getPerson2

下に示されるようにコンポーネント間に接続を描きます:

mff_soap_getPerson3

上のマッピングデザインはまだ完成していませんが、ランタイムに何が起こっているかが示されています。part:Querypart:Result の間の接続は Web サービスの呼び出しを表しています。getPersonSoapIn コンポーネントのpart:Query アイテムは、クエリプレースホルダ(クエリ文字列が SOAP クライアント内に入力される箇所)です。データベーステーブルと getPersonSoapOutput コンポーネントの Person アイテム間の接続は、対応するデータベースフィールドからの値を抽出し対応するターゲットアイテムにパスします。次のように出力をプレビューすることができます:

 

1.getPersonSoapInput コンポーネントを右クリックします。

2.「参照」をクリックして、次のサンプルリクエストを選択します: <マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\Tutorial\getPersonRequest.xml.

3.「OK」をクリックします。

4.出力 タブをクリックします。

 

この時点では、 マッピングはデータベーステーブルから全てのレコードを抽出します。これはとても役にたちます。このため、フィルターを追加し、リクエスト文字列に一致するアイテムのみが抽出される必要があります。

 

1.ライブラリウィンドウからドラッグして、 concat 関数を追加します。この関数は、各個人の FirstLast 名を連結するために使用されます。

2.「挿入」メニューから「定数」をクリックし1つの空白文字を含む定数を追加します。定数はデータベースから抽出された氏名の間に空白文字を与えます。

3.ライブラリウィンドウからドラッグして contains 関数を追加します。

4.ソース Persons テーブルと Person ターゲットノード間の接続を右クリックします。コンテキストメニューから Insert Filter: Nodes/Rows を選択します。

5.下に示されるようにコンポーネント間に接続を描きます。

 

mff_soap_getPerson4

"getPerson" マッピング

上記のように、クエリ文字列が( concat 関数により名前が与えられ低増す。名前は名の後にスペース文字と氏がリストされているように構成されています)。データベース内で名前の全部または一部が一致する場合 contains 関数は true を返します。一致が存在する場合、一致する個人の情報がレスポンスメッセージ内に含まれます。ですから、この例の場合、検索の値 "Ro" は次のレコードを返します: "Martin Rope"、"Ronald Superstring"、"Robert Darkmatter"、 および "Roger Gravity"。

 

「putPerson」 オペレーションのデザイン

メインペイン内にコンテンツをロードするためにプロジェクトウィンドウ内の putPerson.mfd ファイルをダブルクリックします。putPersonSoapInput コンポーネントはリクエスト構造を提供します (Web サービスを介してアイテムはデータベースに挿入されます)。 putPersonSoapOutput コンポーネントは Web サービス呼び出しの結果を示しています。Web サービス 呼び出し元への呼び出しの結果を表示する確認の部分が含まれています。

mff_soap_putPerson1

以下をマッピングに追加するために上記の説明と同様のオペレーションをおこないます:

 

people.mdb Access データベース (Web サービス 呼び出し元により提供されるデータが挿入されます)。

concat 関数と5つの定数 (Web サービスの呼び出し元を表示するための情報文字列をビルドするために使用されます)。

 

下に示されるように接続を描きます:

mff_soap_putPerson2

"putPerson" マッピング

上のマッピングでは、part: Put と データベース間の接続によりランタイムにデータベースが更新されます。ターゲット側で part: Confirmation レスポンスはリクエスト、および、定数により与えられたテキストから多種のフィールドを連結することにより取得されます。データベースを更新するマッピングに関する詳細は、データをデータベースにマッピングするを参照してください。

 

マッピングの出力のプレビューの方法:

 

1.getPersonSoapInput コンポーネントを右クリックします。

2.「参照」 をクリックして次のサンプルリクエストを選択します: <マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\Tutorial\putPersonRequest.xml

3.「出力」 タブをクリックします。

 

マッピングをプレビューする際、 MapForce はデータベースを更新し、出力ウィンドウに表示するために必要な INSERT クエリを生成しますが実際の更新は行いません。データベースに対してクエリを実行するには、「出力 | SQL-Script の実行」を選択します。

mff_soap_putPerson3

 

他方、コンパイルされた Web サービスがサーバーにデプロイされクライアントにより呼び出されると、 データベースはすぐに更新され、効果が反映されます。次も参照してください: データベースを変更するマッピングの実行.

 

 

マッピング出力のプレビュー

WSDL ファイルから作成されるマッピングは実際の Web サーバーにデプロイされる前に MapForce 内でプレビューすることができます。このようなマッピングをプレビューするには、 WSDL ファイルに準じたサンプル SOAP リクエスト (XML ファイル) が必要になります。Web サービスプロジェクト内の各オペレーション(マッピング) のために XMLSpy または SOAP クライアントを使用してサンプルリクエストを作成することができます。XMLSpy を使用する場合、メニューコマンド 「SOAP | 新規 SOAP リクエストを作成する」 を実行してリクエストを生成します。XMLSpy が MapForce と共にインストールされている場合、MapForce から直接サンプルリクエストを生成することができます。例:

 

1.マッピング上の getPersonSoapInput コンポーネントをクリックし、コンテキストメニューからPropertiesを選択します。

mff_soap_create_request

2.「作成」をクリックします。

3.プロンプトされると、 ディスク上の場所に XML ファイルを保存します。

 

リクエストファイルは入力パラメーターの代わりにダミーの入力値(例えば、 「文字列) を使用して生成されます。リクエストファイルを使用する前に、ダミーの値を使用する実際のリクエストの値と置き換えてください。 このプロジェクトのために、2つのサンプルリクエストを使用することができます:

 

1.<マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\Tutorial\getPersonRequest.xml. getPerson マッピングの出力をプレビューするためにこのファイルを使用します。デフォルトでは、 このリクエストファイルは、 Web サービスの入力として 「Ro」 の値を提供します。テキスト"Ro" が氏または名に含まれる全ての個人のレコードがデータベースから抽出されます。

2.<マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\Tutorial\putPersonRequest.xml. putPerson マッピングの出力をプレビューするためにこのファイルを使用します。デフォルトでは、 このリクエストファイルは、 Web サービスへの入力として架空の個人の詳細を提供します。

 

2つのマッピングをプレビュー中に異なる出力を取得するには、上のファイルを編集し、テストする入力の値が含まれるようにします。

 

次のステップ

Web サービス (Java または C#) を実装するコードを生成する準備ができると、次のサンプル内で説明されているとおりサーバーにデプロイします:

 

例: SOAP Web サービスの生成 (C#)

例: SOAP Web サービスの生成 (Java)

(C) 2019 Altova GmbH