電子情報通信学会 2006年総合大会 Webサービス標準化 の提案と実装 2006年3月26日 松江工業高等専門学校 越田高志
1.はじめに Webサービスとは Webサービスを構成する基本技術 Webサービスの問題点 データアクセスプロトコルとしてSOAPを用い,XML形式でデータ交換を行う分散処理プログラムのこと. Webサービスを構成する基本技術 SOAP,UDDI,WSDLである. Webサービスの問題点 ユーザが必要とする,または利用したいWebサービスの検出が難しい. ユーザがWebサービスを利用する際に,その機能や入出力インターフェースなど利用法について短時間で正確に知ることが難しい.
Webサービスに関して,その名称,機能説明,入出力IFに関する規約などはなく,全て提供者に委ねられている. 従って, ユーザは利用するWS個々に機能,入出力データの確認と理解が必要である. 標準化することによって,理解と確認を容易にする. 解決 Webサービスの標準化 プリミティブWebサービスの提案[1]
プリミティブWebサービス 定義 : 様々なビジネス分野で,共通に利用 可能な一意に統一された名称,機能,入出力IFをもつ標準化されたWebサービスとして定義する. WSに対する曖昧さ,不確定性が無くなる. 一度,それについて理解すれば良い. 任意のビジネスプロセスに対しても,ユーザ主体で PWSの組合せとして処理できる. PWSを実現するためには,どうすれば良いのか? (入出力IFの統一,スタブレス実行が必要)
Webサービス実行の流れ UDDIレジストリ Webサービス提供者 ユーザ クライアント・プログラムの作成と①~④を自動化した. WSDLファイル Webサービスに関する情報 ・Webサービス,WSDLのアドレス Webサービスの登録 ②情報 ①検索 ④結果 ユーザ ③実行 クライアント・プログラムの作成 クライアント・プログラムの作成と①~④を自動化した.
2.Webサービスのデータ型について 入力IFの統一とスタブレス実行が必要! WSの実行を動的,かつ自動化したい. 基本型と複合型(基本型を複数個組み合わせたもの) 複合型の場合,実行前にそのデータ型に対応したJavaBeansクラスの開発が必要. それを自動化した出力データ型に依存しない,自動化・統合化されたWS動的実行システムは開発済み. 現在のWSは,入力データ型は基本型である. (何故なら,複合型にすると,実行時にユーザ側で複合型に対応したJavaBeansクラスを用意する必要がある.)
入力データ型が複合型の利点 → 1つのオブジェクトとして操作できるので,コードが シンプルになり,開発と処理操作が容易になる.データ内容がカプセル化できるので, 入出力データ型の一元化も可能になる. public class GoodsService6{ // (A) 基本型入力データ public SData6 getStocks(String btype, Stirng id, String gcode, int quantity, int price) throws Exception{ public class GoodsService6{ // (B) 複合型入力データ public SData6 getStocks(GData6 details) throws Exception{ データ型と順番!
入出力データ型に依存しないWebサービス動的実行システム WSの入力データ型に複合型を使いたい.そうなれば,入力データ型の一元化 → WSの標準化 ユーザ側でその複合型WSが容易に利用できることが必要である. その入力複合型に対応したJavaBeansクラスを動的に生成し,かつスタブレスで実行可能にすれば良い. 入出力データ型に依存しないWebサービス動的実行システム 開発
入出力データ型がともに複合型であるWSに対する処理の流れ
複合型入出力データをもつWSのWSDL記述の一部 <wsdl:types> <schema targetNamespace="http://10.70.51.20:8080/axis/services" xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" /> <complexType name="GData6"> <sequence> <element name="beertype" nillable="true" type="xsd:string" /> <element name="quantity" type="xsd:int" /> </sequence> </complexType> <element name="GData6" nillable="true" type="tns1:GData6" /> <complexType name="SData6"> <sequence> <element name="beercode" nillable="true" type="xsd:string" /> <element name="beername" nillable="true" type="xsd:string" /> <element name="casevalue" type="xsd:int" /> <element name="totalcost" type="xsd:int" /> <element name="unitvalue" type="xsd:int" /> <element name="SData6" nillable="true" type="tns1:SData6" /> </schema> </wsdl:types> <wsdl:message name="getStocksRequest"> <wsdl:part name="in0" type="tns1:GData6" /> </wsdl:message> <wsdl:message name="getStocksResponse"> <wsdl:part name="getStocksReturn" type="tns1:SData6" /> </wsdl:message> 入力データ部分 出力データ部分
3.標準化されたWebサービスの開発 RosettaNetの製品調達PIPsに対応したPWSを開発し, ビジネスプロセスに沿ってその実行を確認した. PIPの種類 説明 3A1 製品見積もりの要求 3A4 製品発注の要求 3A10 製品見積もり受領通知 3A13 製品発注の受領通知 バイヤー セラー
3.1 製品調達ビジネスプロセスの流れ (1) バイヤーから 製品見積もり要求(3A1) → セラーに送信する. 3.1 製品調達ビジネスプロセスの流れ (1) バイヤーから 製品見積もり要求(3A1) → セラーに送信する. (2) セラーはそれを受けて,指定された項目に対して供給が可能か否か を回答する.この回答送信に対しては,セラー側で用意した伝票番 号が新たに出力データに追加されて,返信される. (3) バイヤーから 見積もり受領通知(3A10) → セラーに送信する. (4) その後,バイヤーから 製品発注要求(3A4) → セラーに行う. (5) セラーはこの製品発注要求を受けて,その伝票番号をチェックして, 既に製品見積もりプロセス(3A1)が完了していることを確認した後,受 注完了通知をバイヤーに返す. (6) バイヤーは,セラーからの受注完了通知を受取った後に,→ 受注受 領通知(3A13) → セラーに送信する.
3.2 プリミティブWebサービスの設計と実装 PIPsに対応したPWSを設計・開発した. PIP PWS名 メソッド名 入出力データ型 3A1 DataManage1 requestQuote Order 3A4 DataManage2 requestOrder 3A10 DataManage3 requestReply 3A13 入出力データ型OrderのWSDL記述を示す.
入出力データ型OrderのWSDL記述 <complexType name="Order"> <sequence> <element name="customerID" type="xsd:int"/> <element name="customerName" type="xsd:string"/> <element name="message" type="xsd:string"/> <element name="orderDate" type="xsd:string"/> <element name="orderID" type="xsd:string"/> <element name="passwd" type="xsd:string"/> <element name="price" type="xsd:int"/> <element name="productCode" type="xsd:string"/> <element name="quantity" type="xsd:int"/> <element name="receiptDate" type="xsd:string"/> <element name="sellerID“ type="xsd:int"/> <element name="sellerName" type="xsd:string"/> <element name="totalPrice“ type="xsd:int"/> <element name="unit" type="xsd:int"/> </sequence> </complexType> 入出力データ型OrderのWSDL記述
図2 セラーにおける PWSの配備状況
図3 DataManage1 PWSの実行結果
4.まとめ ・複合型入出力データを利用することで,入出力IFが 統一されたWS標準化(PWS)が実現できる. ・その標準化されたWSの利用促進には,入出力デー タ型に依存しないWS動的実行システムを利用する 必要がある(それも併せて開発済み). ・標準化されたWS(PWS) ⇒ RosettaNetの商品調 達ビジネスプロセスに対応したPWSを開発・実装・ 動作実験を行い,提案の有効性を確認した.