電子情報通信学会 2006年総合大会 Webサービス標準化 の提案と実装 2006年3月26日 松江工業高等専門学校 越田高志 1 1.はじめに • Webサービスとは – データアクセスプロトコルとしてSOAPを用い,XML 形式でデータ交換を行う分散処理プログラムのこと. • Webサービスを構成する基本技術 – SOAP,UDDI,WSDLである. • Webサービスの問題点 ユーザが必要とする,または利用したいWebサービ スの検出が難しい. ユーザがWebサービスを利用する際に,その機能 や入出力インターフェースなど利用法について短時 間で正確に知ることが難しい. 2 – Webサービスに関して,その名称,機能説明,入出力 IFに関する規約などはなく,全て提供者に委ねられて いる. 従って, – ユーザは利用するWS個々に機能,入出力データの 確認と理解が必要である. – 標準化することによって,理解と確認を容易にする. 解決 Webサービスの標準化 プリミティブWebサービスの提案[1] 3 プリミティブWebサービス • 定義 : 様々なビジネス分野で,共通に利用 可能な一意に統一された名称,機能,入出力 IFをもつ標準化されたWebサービスとして定義 する. – WSに対する曖昧さ,不確定性が無くなる. – 一度,それについて理解すれば良い. – 任意のビジネスプロセスに対しても,ユーザ主 体で PWSの組合せとして処理できる. PWSを実現するためには,どうすれば良いのか? (入出力IFの統一,スタブレス実行が必要) 4 UDDIレジストリ Webサービス実行の流れ Webサービス提供者 Webサービスに関する情報 ・Webサービス,WSDLのア ドレス Webサービスの 登録 ①検索 ②情報 Webサービス WSDLファイル ④結果 ユーザ クライアント・プログラム の作成 ③実行 クライアント・プログラムの 作成と①~④を自動化した.5 2.Webサービスのデータ型について • 入力IFの統一とスタブレス実行が必要! • WSの実行を動的,かつ自動化したい. – WSのデータ型は大きく2種類ある. • 基本型と複合型(基本型を複数個組み合わせたもの) • 複合型の場合,実行前にそのデータ型に対応した JavaBeansクラスの開発が必要. – それを自動化した出力データ型に依存しない,自動 化・統合化されたWS動的実行システムは開発済み. – 現在のWSは,入力データ型は基本型である. (何故なら,複合型にすると,実行時にユーザ側で複合型に対 応したJavaBeansクラスを用意する必要がある.) 6 入力データ型が複合型の利点 → 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{ 7 •WSの入力データ型に複合型を使いたい.そうなれば, 入力データ型の一元化 → WSの標準化 •ユーザ側でその複合型WSが容易に利用できることが 必要である. •その入力複合型に対応したJavaBeansクラスを動的に生 成し,かつスタブレスで実行可能にすれば良い. 開発 入出力データ型に依存しないWebサービス動的実 行システム 8 入出力データ型がともに複合型であるWS に対する処理の流れ ユーザ側 入力 本システム WSDL URL と Web サービ スへの入力パラメータ値 Web サービス提供側 入出力データ型の確認 入出力データ 型に対 応した JavaBeans ク ラスの自動生成 出力データ インターネット serialization 出力 JavaBeans クラス 出力 JavaBeans クラス 入力データ 入力 JavaBeans クラス deserialization SOAP データ 入 力 デ ー タ を JavaBeans クラスに 格納 Web サービス 入力 JavaBeans クラス serialization SOAP データ deserialization 9 複合型入出力データをもつ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" /> </sequence> </complexType> <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" /> 10 </wsdl:message> 3.標準化されたWebサービスの開発 •RosettaNetの製品調達PIPsに対応したPWSを開発し, ビジネスプロセスに沿ってその実行を確認した. PIPの種類 説明 3A1 製品見積もりの要求 3A4 3A10 製品発注の要求 製品見積もり受領通知 3A13 製品発注の受領通知 バイヤー セラー 11 3.1 製品調達ビジネスプロセスの流れ (1) バイヤーから 製品見積もり要求(3A1) → セラーに送信する. (2) セラーはそれを受けて,指定された項目に対して供給が可能か否か を回答する .この回答送信に対しては , セラー側で用意した伝票番 号が新たに出力データに追加されて,返信される. (3) バイヤーから 見積もり受領通知(3A10) → セラーに送信する. (4) その後,バイヤーから 製品発注要求(3A4) → セラーに行う. (5) セラーはこの製品発注要求を受けて,その伝票番号をチェックして, 既に製品見積もりプロセス(3A1)が完了していることを確認した後,受 注完了通知をバイヤーに返す. (6) バイヤーは,セラーからの受注完了通知を受取った後に,→ 受注受 領通知(3A13) → セラーに送信する. 12 3.2 プリミティブWebサービスの設計と実装 PIPsに対応したPWSを設計・開発した. PIP PWS名 メソッド名 3A1 DataManage1 requestQuote 入出力データ型 Order 3A4 DataManage2 requestOrder 3A10 DataManage3 requestReply 3A13 入出力データ型OrderのWSDL記述を示す. 13 <complexType name="Order"> 入出力データ型OrderのWSDL記述 <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> 14 図2 セラーにおける PWSの配備状況 15 図3 DataManage1 PWSの実行結果 16 4.まとめ ・複合型入出力データを利用することで,入出力IFが 統一されたWS標準化(PWS)が実現できる. ・その標準化されたWSの利用促進には,入出力 デー タ型に依存しないWS動的実行システムを利用 する 必要がある(それも併せて開発済み). ・標準化されたWS(PWS) ⇒ RosettaNetの商品調 達ビジネスプロセスに対応したPWSを開発・実装・ 動作実験を行い,提案の有効性を確認した. 17
© Copyright 2024 ExpyDoc