(57)【要約】【課題】  WSDLファイルを簡易、迅速、確実に生成することを可能にする。【解決手段】  コンピュータに、入力されたサービス名及びURLを記憶させ（Ｓ１０５）、サービス名に関連付けて予め記憶されているバックエンドトランザクションを決定させ（Ｓ１０７）、バックエンドトランザクションに関連付けて予め記憶されているレイアウト定義を決定させ（Ｓ１０９）、予め記憶されているネーミングルール及び項目名に基づいてタイプ定義を作成させ（Ｓ１１１）、ネーミングルール及びタイプ定義に基づいてメッセージ定義を作成させ（Ｓ１１３）、ネーミングルール及びメッセージ定義に基づいてポートタイプ定義を作成させ（Ｓ１１５）、ネーミングルール及びポートタイプ定義に基づいてバインディング定義を作成させ（Ｓ１１７）、ネーミングルール及びバインディング定義に基づいてサービス定義を作成させ（Ｓ１１９）、タイプ定義、メッセージ定義、ポートタイプ定義、バインディング定義及びサービス定義からなるWSDLファイルを出力させる（Ｓ１２１）。【選択図】      図３
2005267352.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
入力されたサービス名及びURLを記憶する手順、
前記サービス名に関連付けて予め記憶されているバックエンドトランザクションを決定する手順、
前記バックエンドトランザクションに関連付けて予め記憶されているレイアウト定義を決定する手順、
予め記憶されているネーミングルール及び前記項目名に基づいてタイプ定義を作成するタイプ定義作成手順、
前記ネーミングルール及び前記タイプ定義に基づいてメッセージ定義を作成するメッセージ定義作成手順、
前記ネーミングルール及び前記メッセージ定義に基づいてポートタイプ定義を作成するポートタイプ定義作成手順、
前記ネーミングルール及び前記ポートタイプ定義に基づいてバインディング定義を作成するバインディング定義作成手順、
前記ネーミングルール及び前記バインディング定義に基づいてサービス定義を作成するサービス定義作成手順、
前記タイプ定義、前記メッセージ定義、前記ポートタイプ定義、前記バインディング定義及び前記サービス定義からなるWSDLファイルを出力する手順、を実行させるWSDLファイル生成プログラム。
【請求項２】
前記タイプ定義作成手順は、
ミドルヘッダに関して、前記ネーミングルールに規定の固定値を用いたタイプ定義名と、前記項目名を用いたタイプ項目名を、
上り電文に関して、前記レイアウト定義のレイアウトIDを用いたタイプ定義名と、前記レイアウト定義中のカラム名を用いたタイプ項目名を、
下り電文に関して、前記サービスID名を用いたタイプ定義名と、前記ミドルヘッダのタイプ定義名を用いたタイプ項目名と、前記下り電文のタイプ定義名を用いたタイプ項目名を、
下り単純電文に関して、前記レイアウト定義のレイアウトIDを用いたタイプ定義名と、前記レイアウト定義中のカラム名を用いたタイプ項目名を、前記コンピュータに作成させる請求項１記載のWSDLファイル生成プログラム。
【請求項３】
前記メッセージ定義作成手順は、
リクエストメッセージに関して、前記サービスID名を用いたリクエストメッセージ名と、前記ミドルヘッダの前記タイプ定義名を用いたパート名と、前記上り電文の前記タイプ定義名を用いたパート名を、
レスポンスメッセージに関して、前記サービスID名を用いたレスポンスメッセージ名と、前記下り電文又は前記下り単純電文の前記タイプ定義名を用いたパート名を、前記コンピュータに作成させる請求項２記載のWSDLファイル生成プログラム。
【請求項４】
前記ポートタイプ定義作成手順は、
前記サービスID名を用いたポートタイプ名と、前記リクエストメッセージ名を用いた上り電文データ名及び上り電文メッセージ名と、前記レスポンスメッセージ名を用いた下り電文データ名及び下り電文メッセージ名を、前記コンピュータに作成させる請求項３記載のWSDLファイル生成プログラム。
【請求項５】
前記バインディング定義作成手順は、
前記サービスID名を用いたバインディング名と、前記ポートタイプ名を用いたバインディングタイプと、前記リクエストメッセージ名を用いた上り電文データ名と、前記サービスID名を用いた上り電文のネームスペースと、前記レスポンスメッセージを用いた下り電文データ名と、前記サービスID名を用いた下り電文ネームスペースを、前記コンピュータに作成させる請求項４記載のWSDLファイル生成プログラム。
【請求項６】
前記サービス定義作成手順は、
前記サービスID名を用いたサービス名及びポート名と、前記バインディング名を用いたバインディング名と、前記URLを用いたエンドポイントURLを、前記コンピュータに作成させる請求項５記載のWSDLファイル生成プログラム。
【請求項７】
コンピュータが、
入力されたサービスID名、URL及び項目名を記憶し、
前記サービス名に関連付けて予め記憶されているバックエンドトランザクションを決定し、
前記バックエンドトランザクションに関連付けて予め記憶されているレイアウト定義を決定し、
予め記憶されているネーミングルール及び前記項目名に基づいてタイプ定義を作成し、
前記ネーミングルール及び前記タイプ定義に基づいてメッセージ定義を作成し、
前記ネーミングルール及び前記メッセージ定義に基づいてポートタイプ定義を作成し、
前記ネーミングルール及び前記ポートタイプ定義に基づいてバインディング定義を作成し、
前記ネーミングルール及び前記バインディング定義に基づいてサービス定義を作成し、
前記タイプ定義、前記メッセージ定義、前記ポートタイプ定義、前記バインディング定義及び前記サービス定義からなるWSDLファイルを出力するWSDLファイル生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、WSDL（Web Service Description Language：ウェブサービス記述言語）で記述されたファイルを生成するプログラム及び方法に関する。
【背景技術】
【０００２】
WSDLは、W3C(World Wide Web Consortium) によって指定された標準のXMLドキュメントである。WSDLファイルは、Webサービスを提供するサービス・プロバイダとWebサービスを利用するサービス・リクエスタ（クライアント）の間でインターフェイス情報をやり取りするために使用される。WSDLの記述により、クライアントはWebサービスの実装に関する詳細を知らなくても、Webサービスの機能を利用できる。WSDLファイルには、クライアントがWebサービスのメソッドを呼び出すのに必要なすべての情報が含まれる。
【０００３】
WSDLに準拠し、コントローラ装置のプログラムと対話することのできる少なくとも１つのウェブサービスによりWSDL言語を使用する通信システムがある（例えば、特許文献１参照）。
【特許文献１】特開２００２−２１５４８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ネットワークを介して個々のアプリケーションがWebサービスを提供する場合、そのネットワークを介して送受信されるメッセージの記述形式を意識したプログラム開発が必要となる。メッセージがXML（eXtensible Markup language）で記述されている場合、  XMLによるメッセージのデータ形式とWebサービス・プロバイダ側におけるプログラム言語にて処理可能なデータ形式とは異なるため、各Webサービス・プロバイダ側においてデータ形式の相違を吸収する仕組みが必要となる。データ形式の相違を吸収するために必要となるWSDLファイルの生成には、似たようなコードを繰り返し記載する必要があり、煩雑でかつ誤りが発生し易いという問題があった。
【０００５】
そこで本発明は、そのようなWSDLファイルの生成を容易にするWSDLファイル生成プログラム及び方法の提供を目的とする。
【課題を解決するための手段】
【０００６】
本発明の第１の特徴は、WSDLファイル生成プログラムであって、コンピュータに、（１）入力されたサービス名及びURLを記憶する手順、（２）サービス名に関連付けて予め記憶されているバックエンドトランザクションを決定する手順、（３）バックエンドトランザクションに関連付けて予め記憶されているレイアウト定義を決定する手順、（４）予め記憶されているネーミングルール及び項目名に基づいてタイプ定義を作成するタイプ定義作成手順、（５）ネーミングルール及びタイプ定義に基づいてメッセージ定義を作成するメッセージ定義作成手順、（６）ネーミングルール及びメッセージ定義に基づいてポートタイプ定義を作成するポートタイプ定義作成手順、（７）ネーミングルール及びポートタイプ定義に基づいてバインディング定義を作成するバインディング定義作成手順、（８）ネーミングルール及びバインディング定義に基づいてサービス定義を作成するサービス定義作成手順、（９）タイプ定義、メッセージ定義、ポートタイプ定義、バインディング定義及びサービス定義からなるWSDLファイルを出力する手順、を実行させることにある。
【０００７】
本発明の第２の特徴は、さらに、タイプ定義作成手順が、（１）ミドルヘッダに関して、ネーミングルールに規定の固定値を用いたタイプ定義名と、項目名を用いたタイプ項目名を、（２）上り電文に関して、レイアウト定義のレイアウトIDを用いたタイプ定義名と、レイアウト定義中のカラム名を用いたタイプ項目名を、（３）下り電文に関して、サービスID名を用いたタイプ定義名と、ミドルヘッダのタイプ定義名を用いたタイプ項目名と、下り電文のタイプ定義名を用いたタイプ項目名を、（４）下り単純電文に関して、レイアウト定義のレイアウトIDを用いたタイプ定義名と、レイアウト定義中のカラム名を用いたタイプ項目名を、コンピュータに作成させることにある。
【０００８】
なお、「ミドルヘッダ」とはサービス・プロバイダとクライアント間でやりとりする制御情報を保持する領域である。
【０００９】
本発明の第３の特徴は、さらに、メッセージ定義作成手順が、（１）リクエストメッセージに関して、サービスID名を用いたリクエストメッセージ名と、ミドルヘッダのタイプ定義名を用いたパート名と、上り電文の前記タイプ定義名を用いたパート名を、（２）レスポンスメッセージに関して、サービスID名を用いたレスポンスメッセージ名と、下り電文又は下り単純電文のタイプ定義名を用いたパート名を、コンピュータに作成させることにある。
【００１０】
本発明の第４の特徴は、さらに、ポートタイプ定義作成手順が、サービスID名を用いたポートタイプ名と、リクエストメッセージ名を用いた上り電文データ名及び上り電文メッセージ名と、レスポンスメッセージ名を用いた下り電文データ名及び下り電文メッセージ名を、コンピュータに作成させることにある。
【００１１】
本発明の第５の特徴は、さらに、バインディング定義作成手順が、サービスID名を用いたバインディング名と、ポートタイプ名を用いたバインディングタイプと、リクエストメッセージ名を用いた上り電文データ名と、サービスID名を用いた上り電文のネームスペースと、レスポンスメッセージを用いた下り電文データ名と、サービスID名を用いた下り電文ネームスペースを、コンピュータに作成させることにある。
【００１２】
本発明の第６の特徴は、さらに、サービス定義作成手順が、サービスID名を用いたサービス名及びポート名と、バインディング名を用いたバインディング名と、URLを用いたエンドポイントURLを、コンピュータに作成させることにある。
【発明の効果】
【００１３】
本発明の第１の特徴によれば、ユーザは、コンピュータに、サービスID名、URL及び項目名を入力することによって、WSDLファイルを生成することができる。
【００１４】
本発明の第２の特徴によれば、type定義として、ミドルヘッダ、上り電文、下り電文及び下り単純電文を生成することができる。
【００１５】
本発明の第３の特徴によれば、リクエスト定義とレスポンス定義からなるメッセージ定義を生成することができる。
【００１６】
本発明の第４の特徴によれば、ポートタイプ名、上り電文定義、下り電文定義からなるポートタイプ定義を生成することができる。
【００１７】
本発明の第５の特徴によれば、バインディング名、バインディングタイプ、上り電文定義、下り電文定義からなるバインディング定義を生成することができる。
【００１８】
本発明の第６の特徴によれば、サービス名、ポート名、バインディング名、エンドポイントURLからなるサービス定義を生成することができる。
【発明を実施するための最良の形態】
【００１９】
本発明の実施形態では、バックエンド定義シート、レイアウト定義シート等に基づいてタイプ定義を作成し、タイプ定義に基づいてメッセージ定義を作成し、メッセージ定義に基づいてポートタイプ定義を作成し、ポートタイプ定義に基づいてバインディング定義を作成し、バインディング定義に基づいてサービス定義を作成してWSDLファイルを出力する。
【００２０】
WSDLとは、Webサービスを記述するための、XMLをベースとした言語仕様である。それぞれのWebサービスがどのような機能を持つのか、それを利用するためにはどのような要求をすればいいのか、などの定義が記述されている。
【００２１】
図１は、WSDLの構造を示す。図１に示すように、WSDL定義要素１は、タイプ要素２、メッセージ要素３、ポートタイプ要素４、バインディング要素６及びサービス要素７からなる。ポートタイプ要素４は、１又は２以上のオペレーション要素５からなり、サービス要素７は、１又は２以上のポート要素８からなる。
【００２２】
タイプ要素２では、下位データタイプを定義する。ネストした型も定義することができる。メッセージ要素３では、送信データフォーマットを定義する。要求として受信するメッセージは、どのような名前の要素で、それには、どのタイプ要素２で定義されたデータタイプが含まれるのか、ということを定義する。
【００２３】
ポートタイプ要素４では、メッセージ要素３で定義された送信データフォーマットをいくつか組み合わせて、１つの操作単位を論理的に定義する。具体的には、要求（リクエスト）メッセージとそれに対応する応答（レスポンス）メッセージを定義する。
【００２４】
バインディング要素６では、前記タイプ定義２、メッセージ定義３、ポートタイプ定義４などで定義されたインターフェイスの論理的なモデル（こういうデータ型を組み合わせて、こういうメッセージで、こういうやりとりをするという定義）と、物理的なモデル（例えば、SOAP-RPCを、HTTP上で行うという定義)とを結びつける定義をする。SOAP-RPCとは、RPC（Remote Procedure Call）すなわち遠隔手続き呼び出しをSOAP(Simple Object Access Protocol)すなわちXMLを使用した通信規約を使用して行うための仕様である。
【００２５】
サービス要素７では、具体的なアクセスポイントを定義する。ポート要素８では、どのバインディング要素６のインターフェイスを、どのURLで提供するかを定義する。
【実施例１】
【００２６】
図２は、実施例１でWSDLファイル生成に使用されるコンピュータの構成の概略を示すブロック図である。図２に示すように、コンピュータ１０は、中央処理装置（ＣＰＵ）１１、リード・オンリー・メモリ（ＲＯＭ）１２、ランダム・アクセス・メモリ（ＲＡＭ）１３、ハード・ディスク・ドライブ（ＨＤＤ）１４及び入出力制御部１５から構成される。ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、ＨＤＤ１４及び入出力制御部１５は、バス２０に接続される。また、入出力制御部１５には、液晶ディスプレイ３１、キーボード３２及びマウス３３が接続される。
【００２７】
ＲＯＭ１２には基本入出力システム（ＢＩＯＳ）が記憶されている。ＲＡＭ１３は、後述するプログラムが実行する際に作業領域として使用される。ＨＤＤ１４には、バックエンド定義シート、及びレイアウト定義シート、並びにタイプ定義、メッセージ定義、ポートタイプ定義、バインディング定義、及びサービス定義に関するネーミングルールが記憶される。
【００２８】
液晶ディスプレイ３１には、WSDL生成情報の入力を促すメッセージ、入力されたサービス名等が表示される。液晶ディスプレイ３１の代わりに、陰極線管（ＣＲＴ）などの他の表示装置を使用しうることは言うまでもない。キーボード３２は、サービス名等の入力に使用される。同様に、マウス３３もサービス名等の入力に使用される。例えば、バックエンド定義シート中に含まれる複数のトランザクション名が液晶ディスプレイ３１上に表示され、それら複数のトランザクション名中の一つのトランザクション名にポインタを移動し、マウス３３のボタンをクリックするなどして、サービス名等を入力するとしても良い。ポインティングデバイスとしてマウス３３の代わりに、トラックボール等を使用することも可能である。
【００２９】
図３は、バックエンド定義からWSDLを生成する処理の流れを示す。図３に示すように、ステップＳ１０１では、バックエンド定義シートとレイアウト定義シートを予め読み込んでおく。
【００３０】
図４（ａ）はバックエンド定義シートの一例を示す。図４（ａ）に示すように、PLTr_A1に対して、BETr_A1とBETr_A2という２つのバックエンドトランザクションが関連付けられている。
【００３１】
BETr_A1というバックエンドトランザクションの、上り電文に対してTRL_A1というレイアウト定義が関連付けられ、下り電文に対して、TRL_A2というレイアウト定義が関連付けられている。
【００３２】
同様に、BETr_A2というバックエンドトランザクションの、上り電文に対してTRL_A3というレイアウト定義が関連付けられ、下り電文に対して、TRL_A4というレイアウト定義が関連付けられている。
【００３３】
図４（ｂ）はレイアウト定義シートTRL_A1を示す。図４（ｂ）に示すように、string_5という名のカラムのデータ型は文字列型であり、Decimal_5という名のカラムのデータ型は１０進数文字列表記型である。
【００３４】
図４（ｃ）はレイアウト定義シートTRL_A2を示す。図４（ｃ）に示すように、string_5という名のカラムのデータ型は文字列型であり、Decimal_5という名のカラムのデータ型は１０進数文字列表記型である。
【００３５】
ステップＳ１０３では、トランザクション定義ファイル、データ変換定義ファイル及びレイアウト定義ファイルを中間生成物として作成する。トランザクション定義ファイル、データ変換定義ファイル及びレイアウト定義ファイルはいずれもXMLで記述されている。本実施例では、トランザクション定義ファイルの名前をTRD_Def.xml、データ変換定義ファイルの名前をDEX_Def.xml並びにレイアウト定義ファイルの名前をTRL_A1.xml及びTRL_A2.xmlとする。
【００３６】
トランザクション定義ファイル、TRD_Def.xmlの一例を以下に示す。
【００３７】
<?xml version="1.0" encoding="Shift_JIS"?>
<DispatchDef>
<Tr_Def PLTrID="PLTr_A1">
<BETr_Def BETrID="BETr_A1"/>
<BETr_Def BETrID="BETr_A2"/>
</Tr_Def>
<Tr_Def PLTrID="PLTr_B1">
<BETr_Def BETrID="BETr_B1"/>
</Tr_Def>
</DispatchDef>
データ変換定義ファイル、DEX_Def.xmlの一例を以下に示す。
【００３８】
<?xml version="1.0" encoding="Shift_JIS"?>
<ExchangeDef>
<BETrInfo BETrID="BETr_A1">
<TrLayoutID InLayoutID="TRL_A1" OutLayoutID="TRL_A2"/>
</BETrInfo>
<BETrInfo BETrID="BETr_A2">
<TrLayoutID InLayoutID="TRL_A3" OutLayoutID="TRL_A4"/>
</BETrInfo>
<BETrInfo BETrID="BETr_B1">
<TrLayoutID InLayoutID="TRL_B1" OutLayoutID="TRL_B2"/>
</BETrInfo>
</ExchangeDef>
レイアウト定義ファイル、TRL_A1.xmlの一例を以下に示す。
【００３９】
<?xml version = "1.0" encoding="Shift_JIS"?>
<TRLAYOUTDEF>
<FMTDEF>
<String_5  ItemType="X" ItemSize="5"/>
<Decimal_5 ItemType="9" ItemSize="5" Figure="5" DecimalPlace="0"/>
</FMTDEF>
</TRLAYOUTDEF>
レイアウト定義ファイル、TRL_A2.xmlの一例を以下に示す。
【００４０】
<?xml version = "1.0" encoding="Shift_JIS"?>
<TRLAYOUTDEF>
<FMTDEF>
<String_6  ItemType="X" ItemSize="5"/>
<Decimal_6 ItemType="9" ItemSize="5" Figure="5" DecimalPlace="0"/>
</FMTDEF>
</TRLAYOUTDEF>
ステップＳ１０５では、WSDL生成情報を入力する。WSDL生成情報には、サービス名、WSDLファイル出力先ディレクトリ名、エンドポイントURLなどが含まれる。
【００４１】
ステップＳ１０７では、トランザクション定義ファイルに基づいて、サービス名に対応するバックエンドトランザクション (BETr)を決定する。
【００４２】
例えば、前記トランザクション定義ファイル、TRD_Def.xmlに基づいて、サービス名：PLTr_A1に対応するバックエンドトランザクションが、BETr_A1及びBETr_A2であると決定する。
【００４３】
ステップＳ１０９では、データ変換定義ファイルに基づいて、バックエンドトランザクションに対応するレイアウト定義ファイルを決定する。
【００４４】
例えば、前記データ変換定義ファイル、DEX_Def.xmlに基づいて、バックエンドトランザクション：BETr_A1に対応するレイアウト定義ファイルが、TRL_A1.xml及びTRL_A2.xmlであると決定する。また、バックエンドトランザクション：BETr_A2に対応するレイアウト定義ファイルが、TRL_A3.xml及びTRL_A4.xmlであると決定する。
【００４５】
ステップＳ１１１では、レイアウト定義ファイル及びWSDLネーミングルールに基づいてタイプ（type）定義を作成する。
【００４６】
ステップＳ１１３では、タイプ定義及びWSDLネーミングルールに基づいてメッセージ（message）定義を作成する。
【００４７】
ステップＳ１１５では、メッセージ定義及びWSDLネーミングルールに基づいてポートタイプ（portType）定義を作成する。
【００４８】
ステップＳ１１７では、ポートタイプ定義及びWSDLネーミングルールに基づいてバインディング（binding）定義を作成する。
【００４９】
ステップＳ１１９では、バインディング定義及びWSDLネーミングルールに基づいてサービス（service）定義を作成する。
【００５０】
ステップＳ１２１では、前記タイプ定義、メッセージ定義、ポートタイプ定義、バインディング定義及びサービス定義に基づいて、WSDLファイルを出力する。
【００５１】
WSDLネーミングルールは、サービスID名、出力WSDLファイル名、XML名前空間設定、xml宣言、タイプ定義、メッセージ定義、ポートタイプ定義、バインディング定義、サービス定義から成る。
【００５２】
図５にサービスID名、出力WSDLファイル名、XML名前空間設定、xml宣言に関するネーミングルールを示す。
【００５３】
サービスID名は、WebサービスのサービスID名であり、アプリケーションごとに異なり、
出力WSDLファイル名は、WSDLのファイル名であり、サービスID名と拡張子”.WSDL”から成り、例えばPLTr_A1.WSDLとする。
【００５４】
XML名前空間設定は、impl、WSDL、WSDLsoap、xsd、tns1、tns2及びsoapencから成る。
【００５５】
implは、サービスが属する名前空間であり、[サービスID名]となり、
WSDLは、WSDLフレームワークのためのWSDL名前空間を示す固定値であり、例えばhttp://schemas.xmlsoap.org/WSDL/となり、
WSDLsoapは、WSDL  SOAPバインディングのためのWSDL名前空間を示す固定値であり、例えばhttp://schemas.xmlsoap.org/WSDL/soap/となり、
xsdは、XSDで定義のスキーマ名前空間を示す固定値であり、例えばhttp://www.w3.org/2001/XMLScheme/となり、
tns1は、ミドルヘッダの電文が属する名前空間を示す固定値であり、例えばhttp://PPPI.header.WSDL.info.nri.co.jpとし、
tns2は、上り電文及び下り電文が属する名前空間であり、例えばhttp://[サービスID名].apl.wsd.info.nri.co.jpとし、
soapencは、SOAP1.1で定義されているエンコーディング名前空間を示す固定値であって、例えばhttp://schemas.xmlsoap.org/soap/encoding/となる。
【００５６】
xml宣言は、xml versionとencodingから成り、
xml versionは、ＸＭＬのバージョンを示す固定値であって、例えば1.0となり、
encodingは、エンコーディングを示す固定値であって、例えばUTF-8となる。
【００５７】
XML名前空間設定に対応するWSDLの一例を以下に示す。
【００５８】
<?xml version="1.0" encoding="UTF-8"?>
<WSDL:definitions targetNamespace="PLTr_A1" xmlns:impl="PLTr_A1" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns1="http://PPPI.header.wsd.info.nri.co.jp" xmlns:tns2="http://PLTr_A1.apl.wsd.info.nri.co.jp" xmlns:WSDL="http://schemas.xmlsoap.org/WSDL/" xmlns:WSDLsoap="http://schemas.xmlsoap.org/WSDL/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
図６及び図７に示すタイプ定義に関するネーミングルールに基づいて、タイプ（type）定義作成について説明する。図６及び図７に示すように、タイプ定義は、ミドルヘッダ、上り電文、下り電文[ミドルヘッダ＋下り単純電文]、下り単純電文に関する定義から成る。
【００５９】
図６に示すように、ミドルヘッダ（O3Wヘッダ）は、タイプ定義名(complexType name)、名前空間接頭辞、targetNamespace、type項目名(element name)、type属性(type)から成り、
タイプ定義名は、ミドルヘッダのデータ名を示す固定値で、例えば、O3WheadBeanとし、
名前空間接頭辞は、ミドルヘッダの電文が属する名前空間の接頭辞を示す固定値で、例えばtns1とし、
targetNamespaceは、ミドルヘッダの電文が属する名前空間であり、tns1で指定した名前となり、
type項目名は、ミドルヘッダとして設定する項目であり、アプリケーションで設定された項目名、例えば、TRID, RETCD, MSGCDとし、
type属性は、ミドルヘッダのデータ型を示す固定値、例えば、xsd:stringとする。
【００６０】
ミドルヘッダに関するタイプ定義に対応するWSDLの一例を以下に示す。
【００６１】
<WSDL:types>
<schema targetNamespace="http://PPPI.header.wsd.info.nri.co.jp" xmlns="http://www.w3.org/2001/XMLSchema">
<complexType name="O3WheadBean">
<sequence>
<element name="TRID" type="xsd:string"/>
<element name="RETCD" type="xsd:string"/>
<element name="MSGCD" type="xsd:string"/>
</sequence>
</complexType>
<element name="O3WheadBean" type="tns1:O3WheadBean"/>
</schema>
次に、上り電文について説明する。図６に示すように、上り電文は、type定義名(complexType name)、targetNamespace、名前空間接頭辞、type項目名(element name)、type属性(type)から成り、
type定義名は、上り電文のデータ名であり、[TRLレイアウトID]+Bean、例えば、TRL_A1Beanとなり、
名前空間接頭辞は、上り電文が属する名前空間の接頭辞を示す固定値であり、例えばtns2とし、
targetNamespaceは、上り電文が属する名前空間であり、tns2で指定した名前空間となり、
type項目名は、上り電文として設定する項目であり、[TRLのカラム名]、例えば、String_5, Decimal_5となり、
type属性は、上り電文のデータ型であり、例えば、[xsd:string], [xsd:decimal], [tns2:ArrayOfString], [tns2:ArrayOfDecimal]とする。
【００６２】
上り電文に関するタイプ定義に対応するWSDLの一例を以下に示す。
【００６３】
<schema targetNamespace="http://PLTr_A1.apl.wsd.info.nri.co.jp" xmlns="http://www.w3.org/2001/XMLSchema">
<complexType name="TRL_A1Bean">
<sequence>
<element name="String_5" type="xsd:string"/>
<element name="Decimal_5" type="xsd:decimal"/>
</sequence>
</complexType>
<element name="TRL_A1Bean" type="tns2:TRL_A1Bean"/>
次に、下り電文について説明する。図７に示すように、下り電文は、type定義名(complexType name)、targetNameplace、名前空間接頭辞、type項目名(element name)、type属性(type)から成り、
type定義名は、下り電文のデータ名であり、[サービスID名]+ReturnBean、例えばPLTr_A1ReturnBeanとし、
名前空間接頭辞は、下り電文が属する名前空間の接頭辞を示す固定値であり、例えばtns2とし、
targetNamespaceは、下り電文が属する名前空間であり、tns2で指定した名前空間であって、上り電文と共有し、
type項目名は、下り電文として設定する項目であり、ミドルヘッダと下り電文のtype定義名を小文字にしたもの、例えばo3wheadbeanなどであり、
type属性は、下り電文のデータ型であり、単純電文の場合は、例えば、ミドルヘッダに関してはtns1:O3WheadBean、下り単純電文に関してはtns2:[下り単純電文のtype定義名]、例えばtns2:TRL_A2Beanとする。
【００６４】
下り電文に関するタイプ定義に対応するWSDLの一例を以下に示す。
【００６５】
<complexType name="PLTr_A1ReturnBean">
<sequence>
<element name="o3wheadbean" type="tns1:O3WheadBean"/>
<element name="trl_a2bean" type="tns2:TRL_A2Bean"/>
</sequence>
</complexType>
<element name="PLTr_A1ReturnBean" type="tns2:PLTr_A1ReturnBean"/>
次に、下り単純電文について説明する。図７に示すように、下り単純電文は、type定義名(complexType name)、targetNamespace、名前空間接頭辞、type項目名(element name)、type属性(type)から成り、
type定義名は、下り単純電文のデータ名であり、[TRLレイアウトID]+Beanとし、例えばTRL_A2Beanとし、
名前空間接頭辞は、下り単純電文が属する名前空間の接頭辞を示す固定値であり、例えばtns2とし、
targetNamespaceは、下り単純電文が属する名前空間であり、tns2で指定した名前空間であって、上り電文と共有となり、
type項目名は、下り単純電文として設定する項目であり、[TRLのカラム名]、例えば、String_6, Decimal_6とし、
type属性は、下り単純電文のデータ型であり、例えば、[xsd:string]、[xsd:decimal]、 [tns2:ArrayOfString]、 [tns2:ArrayOfDecimal]とする。
【００６６】
下り単純電文に関するタイプ定義に対応するWSDLの一例を以下に示す。
【００６７】
<complexType name="TRL_A2Bean">
<sequence>
<element name="String_6" type="xsd:string"/>
<element name="Decimal_6" type="xsd:decimal"/>
</sequence>
</complexType>
</schema>
</WSDL:types>
以上は、タイプ（type）定義作成に関する説明である。次に、メッセージ（message）定義作成について説明する。
【００６８】
図８に示すメッセージ定義及びポートタイプ定義に関するネーミングルールに基づいて、メッセージ定義作成について説明する。図８に示すように、メッセージ定義は、リクエスト（Request）定義とレスポンス（Response）定義から成る。リクエスト定義もレスポンス定義もメッセージ名(message name)、パート名(part name)、パートタイプ(type)から成る。
【００６９】
まず、リクエスト定義について説明する。メッセージ名は、上り電文のメッセージ名であり、[サービスID名]+Request、例えばPLTr_A1Requestとし、
パート名は、上り電文のパート名であり、type定義名を小文字にしたもので、例えばo3wheadbeanとし、
パートタイプは、上り電文のパートタイプであり、[type定義で設定したtargetNamespaceの名前空間接頭辞]+":"+[type定義名]、例えばtns1:O3WheadBeanとする。
【００７０】
次に、レスポンス定義について説明する。メッセージ名は、下り電文のメッセージ名であり、[サービスID名]+Response、例えばPLTr_A1Responseとし、
パート名は、下り電文のパート名であり、[下り電文のtype定義名を小文字にしたもの]、例えばpltr_a1returnbeanとし、
パートタイプは、下り電文のパートタイプであり、[下り電文のtype定義で設定したtargetNamespaceの名前空間接頭辞]+":"+[type定義名]、例えばtns2:PLTr_A1ReturnBeanとする。
【００７１】
メッセージ定義に対応するWSDLの一例を以下に示す。
【００７２】
<WSDL:message name="PLTr_A1Request">
<WSDL:part name="o3wheadbean" type="tns1:O3WheadBean"/>
<WSDL:part name="trl_a1bean" type="tns2:TRL_A1Bean"/>
</WSDL:message>
<WSDL:message name="PLTr_A1Response">
<WSDL:part name="pltr_a1returnbean" type="tns2:PLTr_A1ReturnBean"/>
</WSDL:message>
以上は、メッセージ定義作成に関する説明である。次にポートタイプ（portType）定義作成について説明する。
【００７３】
図８に示すメッセージ定義及びポートタイプ定義に関するネーミングルールに基づいて、ポートタイプ定義作成について説明する。図８に示すように、ポートタイプ定義は、ポートタイプ名(portType name)、parameterOrder、オペレーション名(operation name)、
inputのメッセージ名(message)、データ名(name)、
outputのメッセージ名(message)、データ名(name)から成る。
【００７４】
ポートタイプ名は、[サービスID名]+"Server"、例えばPLTr_A1Serverとし、
parameterOrderは、パラメータの順序を示す属性であり、"o3wheadbean"+[上り電文のtype定義名を小文字にしたもの]、例えばo3wheadbean trl_a1beanとし、
オペレーション名は、サービスの呼び出しメソッドを示す固定値であり、例えばTRDOperationとし、
inputのメッセージ名は、上り電文のメッセージ名であり、"impl:"+[message定義で設定したRequestメッセージ名]、例えばimpl:PLTr_A1Requestとし、
inputのデータ名は、上り電文のデータ名であり、[サービスID名]+"Request"、例えばPLTr_A1Requestとし、
outputのメッセージ名は、下り電文のメッセージ名であり、"impl:"+[message定義で設定したResponseメッセージ名]、例えばimpl:PLTr_A1Responseとし、
outputのデータ名は、下り電文のデータ名であり、[サービスID名]+"Response"、例えばPLTr__A1Responseとする。
【００７５】
ポートタイプ定義に対応するWSDLの一例を以下に示す。
【００７６】
<WSDL:portType name="PLTr_A1Server">
<WSDL:operation name="TRDOperation" parameterOrder="o3wheadbean trl_a1bean">
<WSDL:input message="impl:PLTr_A1Request" name="PLTr_A1Request"/>
<WSDL:output message="impl:PLTr_A1Response" name="PLTr_A1Response"/>
</WSDL:operation>
</WSDL:portType>
以上は、ポートタイプ定義作成に関する説明である。
【００７７】
次に、図９に示すバインディング定義及びサービス定義に関するネーミングルールに基づいて、バインディング定義作成について説明する。図９に示すように、バインディング定義は、バインディング名(binding name)、バインディングタイプ(binding type）、transport、soapAction、バインディングスタイル(binding style)、オペレーション名(operation name)、
inputのデータ名(input name)、inputのエンコード指定(use)、inputのエンコード形式(encodingStyle)、inputのネームスペース(namespace)、
outputのデータ名(output name)、outputのエンコード指定(use)、outputのエンコード形式(encodingStyle)、outputのネームスペース(namespace)から成る。
【００７８】
バインディング名は、[サービスID名]+"SoapBinding"、例えばPLTr_A1SoapBindingとし、
バインディングタイプは、"impl:"+[portType定義で設定したポートタイプ名]、 例えばimpl:PLTr_A1Serverとし、
transportは、使用するプロトコルを示す固定値であって、例えばhttp://schemas.xmlsoap.org/soap/httpとし、
soapActionは、SOAPActionヘッダの値を示す固定値であり、
バインディングスタイルは、固定値であり、例えばrpcとし、
オペレーション名は、[portType定義で設定したオペレーション名]、例えばTRDOperationとし、
inputのデータ名は、上り電文のデータ名を示し、[portType定義で設定したRequestメッセージ名]、例えば”PLTr_A1Request”とし、
inputのエンコード指定は、上り電文のエンコード指定を示す固定値であって、例えばuse="encoded"とし、
inputのエンコード形式は、上り電文のエンコード形式を示す固定値であって、例えばhttp://schemas.xmlsoap.org/soap/encoding/とし、
inputのネームスペースは、上り電文のネームスペースであって、[サービスID名]、例えばPLTr_A1とし、
outputのデータ名は、下り電文のデータ名を示し、[portType定義で設定したResponseメッセージ名]、例えば”PLTr_A1Response”とし、
outputのエンコード指定は、下り電文のエンコード指定を示す固定値であって、例えばuse="encoded"とし、
outputのエンコード形式は、下り電文のエンコード形式を示す固定値であって、例えばhttp://schemas.xmlsoap.org/soap/encoding/とし、
outputのネームスペースは、下り電文のネームスペースであって、[サービスID名]、例えばPLTr_A1する。
【００７９】
バインディング定義に対応するWSDLの一例を以下に示す。
【００８０】
<WSDL:binding name="PLTr_A1SoapBinding" type="impl:PLTr_A1Server">
<WSDLsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<WSDL:operation name="TRDOperation">
<WSDLsoap:operation soapAction=""/>
<WSDL:input name="PLTr_A1Request">
<WSDLsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="PLTr_A1" use="encoded"/>
</WSDL:input>
<WSDL:output name="PLTr_A1Response">
<WSDLsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="PLTr_A1" use="encoded"/>
</WSDL:output>
</WSDL:operation>
</WSDL:binding>
以上は、バインディング定義作成に関する説明である。
【００８１】
次に、図９に示すバインディング定義及びサービス定義に関するネーミングルールに基づいてサービス定義について説明する。図９に示すように、サービス定義は、サービス名(service name)、バインディング名(port binding)、ポート名(port name)、エンドポイントURL(address location)から成る。
【００８２】
サービス名は、 [サービスID名]＋ServerService、例えばPLTr_A1ServerServiceとし、
バインディング名は、”impl:”+[binding定義で設定したバインディング名]、例えばimpl:PLTr_A1SoapBindingとし、
ポート名は、[サービスID名]、例えばPLTr_A1とし、
エンドポイントURLは、アクセスする際の相手先を示し、http://サーバアドレス/コンテキストルート/[サービスID名]とし、例えばhttp://localhost:8090/axis/services/PLTr_A1とする。
【００８３】
サービス定義に対応するWSDLの一例を以下に示す。
【００８４】
<WSDL:service name="PLTr_A1ServerService">
<WSDL:port binding="impl:PLTr_A1SoapBinding" name="PLTr_A1">
<WSDLsoap:address location="http://localhost:8090/axis/services/PLTr_A1"/>
</WSDL:port>
</WSDL:service>
前記の如く、タイプ要素、メッセージ要素、ポートタイプ要素、バインディング要素及びサービス要素を作成することによって、WSDLファイルの出力が可能となる。
【図面の簡単な説明】
【００８５】
【図１】WSDL(Web Service Description Language)の構造を示す図である。
【図２】実施例１でWSDLファイル生成に使用されるコンピュータの構成の概略を示すブロック図である。
【図３】バックエンド定義からWSDLを生成する処理の流れを示すフローチャートである。
【図４】（ａ）はバックエンド定義シートの一例を示し、（ｂ）はレイアウト定義シートTRL_A1を示し、（ｃ）はレイアウト定義シートTRL_A2を示す図である。
【図５】サービスID名、出力WSDLファイル名、XML名前空間設定、xml宣言に関するネーミングルールを示す図である。
【図６】type定義（ミドルヘッダ及び上り電文）に関するネーミングルールを示す図である。
【図７】type定義（下り電文及び下り単純電文）に関するネーミングルールを示す図である。
【図８】message定義及びportType定義に関するネーミングルールを示す図である。
【図９】binding定義及びservice定義に関するネーミングルールを示す図である。
【符号の説明】
【００８６】
１０…コンピュータ  １１…主制御部（ＣＰＵ）
１２…リード・オンリー・メモリ（ＲＯＭ）
１３…ランダム・アクセス・メモリ（ＲＡＭ）
１４…ハード・ディスク・ドライブ（ＨＤＤ）  １５…入出力制御部
２０…バス  ３１…表示装置（液晶ディスプレイ）
３２…キーボード  ３３…マウス
【図１】
2005267352.tif 000003
【図２】
2005267352.tif 000004
【図３】
2005267352.tif 000005
【図４】
2005267352.tif 000006
【図５】
2005267352.tif 000007
【図６】
2005267352.tif 000008
【図７】
2005267352.tif 000009
【図８】
2005267352.tif 000010
【図９】
2005267352.tif 000011