WSDL for CRSサンプル

Copyright© 2025 Accenture. All rights reserved.


概要

Webサービスにおける定義ファイルWSDL(Web Services Description Language)を取り込み、定義されているメソッドをBiz/Browser上で扱えるCRSファイル形式に変換して出力します。

ユーザーが作成したCRSファイルに、ツールにより自動変換されたCRSファイルをIMPORTし、定義されている関数を呼び出すだけで、提供されるサービスへの要求や応答にも比較的容易に対応できます。

クライアント／サーバー間の通信は、HTTPと基本プロトコルとしてSOAPを利用します。

通信に関しては、変換ファイルと連携するsoap.carを提供することにより、ユーザーはSOAPを意識しなくてもBiz/Browser上でWebサービスを簡単に利用することができます。


Webサービスの説明

Webサービス(Web Services)

Webのサーバーアプリケーションのサービス機能をWebサービスといいます。

クライアントはサーバーに対してリクエストを行い、サーバーがその結果をテキスト(XML)にて返します。

専用のアプリケーションやハードを使わなくとも、HttpとSOAPが扱えるクライアントであれば、機種を問わずに通信が可能です。開発に使用されるスクリプトまたはプログラム言語も比較的自由に選ぶことができます。

Windowsで開発する場合、.NETやJAVA、FLASH等で作成することが可能です。Biz/Browserは以前よりWebサービスを扱えましたが、今回新たに用意したWSDL for CRSを使用することで、XMLやSOAPについて知識のないユーザーでも簡単にWebサービスが行えます。

また現在行われている主なWebサービスとしては、ショッピングも可能なほど高機能なAmazon.comやいち早くWebサービスに対応したGoogle等が挙げられます。Webサービスは個人での提供も多く、為替レートや星座占いまで多種多様なサービスをWeb上に見つけることができます。

Webサービスは、異なるプラットホームに対して比較的安価にサービスを提供できるため、いろんな企業がこの技術を使った今後の可能性を探っていますが、Webサービス自体まだ生まれたばかりの技術であるため、セキュリティやトランザクションなどのビジネスにおいて不可欠な機能が欠けています。しかし、今後はそういった技術も１つ１つ確立されてくると予想されます。

通信する上では現在でもなんら問題なく利用することができますし、通信のために特別な仕組みを持たせなくてもいいといった利点があります。

Webサービスで使用できるプロトコルはSOAPの他にHTTP-GETやHTTP-POST、SMTP等が利用できます。

WSDL(Web Services Description Language)

Webサービスを行うために必要なXMLベースのアプリケーションインターフェースの定義です。この定義は、サーバー側のアプリケーションを作成する時点で、多くはユーティリティにより自動生成されます。

WSDLには、呼び出すメソッドやデータ形式、プロトコルの定義等が細かく書かれており、クライアントはその定義に従ってメソッドを呼び出し、通信を行います。

SOAP

Webサービスの基本プロトコルですが、Webサービス用に開発されたものではありません。SOAPの書式はXMLで、SOAPエンベローブにカプセル化したメッセージを使ってやりとりします。例えて言えば、封筒に入れた手紙のようなものです。内容はヘッダ部分とボディ部分に分かれており、その記述に従って処理を行います。

SOAPにはRPC機能(Remote Procedure calls)があり、これにより要求に対する応答の取得が可能となっています。

XML(eXtensible Markup Language)

XMLは、HTMLと同様にマークアップ言語です。HTMLと違い、拡張性のある点が特徴です。

XML文書は書式のルールに従って書く必要がありますが、Webを意識した言語なため、文書だけでなく同時にデータも記述でき、人間が理解しやすい形式での記述が可能です。

Webサービスでは、WSDLとSOAPの記述に使用されています。


使用方法

１）WSDL for CRSを開きます。

スタートメニューを開き、プログラム→AXIS SOFT→BizBrowser4.0→BizDesinerツール→WSDL4CRSを選択します。

URLから直接実行する場合は、上記のようにWSDLのあるURLを指定した後「URLから実行」を押します。http://www……….asmx?wsdlといった「？」の入るURLではそのまま変換できませんので、一度ローカルにファイルを保存してから実行します。

ローカルにファイルがある場合には「WSDLファイルを開く(F1)」のボタンを押して、WSDLファイルを選択します。

ドキュメントHTML出力

ドキュメントHTML出力にチェック後ファイルに保存のボタンを押すと、変換されたCRSファイル出力の他にメソッドやサブクラスの情報を含んだHTMLファイルが出力されます。

WSDLに記述された情報をまとめて表したものですが、サービスの全体を把握するためにお使いください。

２）メソッドの選択

WSDLが正常に読み込まれると下記のようなダイアログが現れます。

soapパス以外はデフォルト値が入っていますので、soap.carの場所を指定して「変換ボタン」を押すと、指定したメソッドがすべてCRSに変換されます。

以下に各入力項目を詳しく説明します。

Class名

この項目は、生成されるPackage名とClass名になり、ファイル保存時の名前になります。

実際にメソッドを利用するときは、このクラス名を用いてインスタンスを作成します。

WSDL内で特にサービス名が決まっていない場合には、SAMPLEという適当な名前になりますので、サービスにあった名前に書き換えてください。CRSでは同じクラス名を２度定義することはできませんので、複数のサービスを同時に行う場合には、気をつけて名前を付けるようにしてください。

Encoding Type

送信時のエンコーディングを指定します。

処理するサーバーに依存しますので、サービスが指定するエンコーディングを選んでください。

適切なエンコーディングが選ばれていないと、漢字が化けてしまうなど正常に通信が行えない場合もあります。

ちなみに実行時のデータ受信については、Biz/Browserが自動的にShift_JISに変換しますので、特に意識せずデータを扱うことができます。

soapバージョン

使用するWebサービスにあわせて、soapバージョンを指定します。

一度出力したCRSは、異なるsoapバージョンをサポートするWebサービスとは接続できません。

soap1.1とsoap1.2には完全な互換が取られていないため、Webサービスのsoapバージョンが変更になった場合は、WSDL4CRSで再度CRSを出力し直す必要があります。

soap.carについては両バージョンに対応しているため、特に意識する必要はありません。

soapパス

soap.carの場所を指定します。

この内容は、変換されたCRSファイルの先頭にImportファイルとして自動的に記述されます。

変換時に場所が指定できない場合には、プルダウンリストから適当な場所を選んで記述しておきます。

後にsoap.carの場所を変更する場合には、ユーザーが自由に書き換えることができます。

ローカルではなく、サーバーに置いてある場合にはURLを指定します。

例： http://localhost/soap.car

メソッドエレメントNameSpace

トップノードの名前空間を指定します。

Webサービスによっては、トップノードのネームスペースを強要する場合がありますので、ここに名前空間名を指定します。

この項目は通常、ユーザーが意識しなくてもデフォルトのままで通信は行えますので、特別な場合を除いては変更不要です。

ラベル付加文字列

クラス、サブクラス、関数名に指定した文字列を付加します。

複数のWSDLを変換すると、違うサービスなのに同じクラス名が作成されてしまうことがあります。この付加文字列は、実際に作成されるメソッドやクラス名に任意の文字列を与えて一意な名前を作成します。例えば、getName()というメソッドがあるとして、この付加文字列に「_AXIS」等と入力すると、実際に作成されるメソッド名はgetName_AXIS()となります。あまり長い名前を与えてしまうと、実際のアクセス時に支障をきたす場合があるので、明確でわかりやすく、なるべく短い文字列を与えるとよいでしょう。

soapヘッダ追加

soapヘッダを関数呼び出し時の引数に渡すことができます。

出力

空白の場合は、そのメソッドを出力します。

使用しない、または出力したくないメソッドはプルダウンで「×」を選択します。全メソッドをまとめてマークしたい場合は「すべてOFF」「すべてON」ボタンを使用します。

メソッド名

WSDLに記載されている使用可能なメソッドです。

このメソッド名は変更することはできませんが、ラベル付加文字列を使って一意の名前に定義しなおすことが可能です。

サービス

通常はSOAPプロトコルを使用します。

定義されているメソッドにより、HTTP-GETやHTTP-POSTが選択できる場合もあります。

SMTPはサポートしていません。

すべてOFF

すべてのメソッドを出力しないように出力項目を自動設定します。

すべてON

すべてのメソッドを出力するように出力項目を自動設定します。

３）変換後、ファイルに保存

解析が終了して、関数が出力されると、メインとなるクラスが生成されます。

「ファイルに保存(F5)」ボタンを押してファイルに保存します。このときドキュメントHTML出力にチェックを入れておくと、同時にドキュメントも出力されます。


Webサービスの利用手順

ここではサンプルとして提供されている、通貨変換(為替レート)サービスを取り上げています。

※ここで紹介している(プロジェクト以外の)ファイルについては、Biz/Desiner4のサンプルプログラムにすべて含まれています。

サンプルのファイルを使って、Webサービスの利用手順を詳しく説明していきます。

１）まずWSDLから変換されたCurrencyExchangeService.crsと通信を行うためのsoap.carを新しいプロジェクトに追加します。

ここでは新規プロジェクト名を通貨変換サービスとして作成します。

soap.carの位置は、今回動作のみが目的なのでプロジェクトの直下に置いておきます。

CurrencyExchangeService.crs内の記述は Import “soap.car”; となります。

２）サービスを行うために、メインフォームを作成します。

ここでは、メインフォームをExchange.crsとしてプロジェクトに組み込みます。

３）CurrencyExchangeService.crsをインポートして、インスタンスを作成します。

Exchange.crsに下記のスクリプトを記述します。

上記のように定義することで、クラスのインスタンスが作成できます。

これで基本的な定義はすべてできましたので、これを使ってWebサービスを始めます。

４）サービスを行うためにメソッドを利用します。

今回のサービスではメソッドを１つしか使用しませんが、他のサービスや複数あるメソッドの場合にも基本的には同様の形で呼び出します。

GetRate()というメソッドを動作させるためには以下のような記述になります。

CurrencyExchangeService.getRate( country1, country2 );

２つの引数は、変換対象となる国名１(文字列)と国名２(文字列)です。

GetRate()の定義を見ると、変換されたレートが数値(Number)で戻ることがわかります。

Webサービスの動作が目的ですので、今回は下記のように直接引数を渡して呼び出します。

var rate = CurrencyExchangeService.getRate( “USA”, “Japan” );

正常に動作すれば、アクセスした時間の現在1ドルあたりの円(レート)が戻ってきます。

５）注意点として

上記の例では、countryにはUSAとJapanを入力しましたが、入力値はこのサービスの運営者が決めたもので、好き勝手な値を入れるとエラーになります。

このように、入力する値を何にすればいいか、どういった値が戻ってくるかなどWSDLの仕様だけでは不明な点が多々発生します。

残念ながらこの問題を解決する手立ては現在ありません。この問題解決には、サービスを提供している運営者が作成したドキュメント等を参考にする方法がもっとも一般的です。

通常、レートを表示するにはディスプレイオブジェクトの操作が必要になりますが、上記の例では、その部分を一切省きWebサービスの通信部分だけに絞った解説になっています。

値の受け渡し部分については、Biz/Desiner4.0付属のサンプルプログラムを参照してください。

またこのサービスは、個人が提供しているサービスなので場合によってはサービスを受けることができない場合もありますので御了承ください。


全体の流れ図


注意事項、その他

注意事項

1. DateTime等のBiz/Browserにないデータ型を使用したSOAP要求／応答では、フォーマットに一致しない型ではサーバーエラーとなりますので、要求されるデータ型を必ず御確認ください。

例:DateTime型 -> GGYY-MM-DDThh:mm:ss

2. URLにてWSDLを取り込む場合、http://www……….asmx?wsdlといった「？」の入るURLでは取り込むことができない場合があります。一度ローカルにファイルを保存してから再度取り込むようにしてください。

3. SMTPやFTPのサービスは現在サポートしていません。

4. Apache SOAPを利用したサービスの場合に、JDK のバージョンによって動作が異なり、正常に動作しない場合があります。

5. Webサービスによっては、RPCメッセージのトップノードに名前空間の修飾を強要する場合があります。その場合には、メソッドの選択画面にて、メソッドエレメントNameSpaceを設定の上お使いください。

6. soapは1.1と1.2のバージョンをサポートしていますが、仕様的に完全互換が取られていないためsoapバージョンにあわせてWSDL4CRSでCRS出力する必要があります。Soap.carについては両バージョンをサポートしていますので、特に意識する必要はありません。

7. データのエスケープ処理が必要な場合は、事前にエンコードしてください。

WSDL変換ツールのファイル内容

wsdl4crs.car WSDL変換ツール

soap.car SOAP通信ライブラリ

WEBサービスの関連バージョン

SOAP1.1 SOAP1.2

WSDL1.1

XML Schema1.0

ツールテスト時の動作／検証環境

Windows2000 Professional SP4

Windows2003 Server

Linux RedHat8.0

Microsoft Visual Studio .NET

Microsoft FrameWork .NET

Tomcat4.1.12

Apache AXIS1.0

j2sdk1.4.1.01

GLUE

SOAPLite