PPT - 松江工業高等専門学校 ホームページ

電子情報通信学会 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