SOAP/UDDI/WSDL による B2B システムの開発 - www2.matsue

SOAP/UDDI/WSDL による B2B システムの開発
研究者
金山 隆志
中村 典浩
プッタソン
指導教官 越田 高志
1. はじめに
サービス仲介者
1.1 開発の背景
<tModel>
UDDI
WSDL
インターネットの普及とともに,ネットワークを
利用して企業業務活動全般を電子化する CALS が発
SOAP 検索
SOAP 登録・公開
展してきた.近年は,その CALS の中の電子商取引
(EC)が世界規模で展開されつつある.その電子商取
サービス利用者
接続
サービス提供者
SOAP
引システムを実現する技術として Java をベースに
したクライアント‑サーバ技術が用いられてきた.
図 1.Web サービスの構成
我々は,特定の相手先との電子商取引とともに,必
ン上のサービス・ルーチンを呼び出したり,オブジ
要に応じて取引企業を選定できる動的な電子商取引
ェクトにアクセスしたりできるようにするプロトコ
システムの開発を様々なテキストデータを一元的に
ルである. SOAP を利用することで,様々な場所に
操作できる XML[1] をベースにした分散処理技術を
分散したサービスを結合し,システムとシステムを
用いて推進し,
その開発を通して問題点を明確化し,
連携させることができるようになる.プラットホー
その解決を提言してゆく.
ム独立な XML を利用するため,環境の違いを吸収す
1.2 B2B システムについて
ることができる SOAP は,
まさにインターネット向け
B2B(Business to Business)とは,企業間の電子商
の仕様といえる. XML メッセージを送信するプロト
取引やデータ交換の総称である.今までは,特定の
コルに制限は無く,HTTP,SMTP,FTP などどのよう
企業間のみでのデータ交換であったが,これからは
なものであっても構わない.[5]
必要に応じて,様々な企業との取引を行う動的な
2.2 UDDI
B2B システムが求められている.そのためには,異
UDDI とは,
その名前の通り,
Web サービスの記述,
なるプラットホーム上の多様なシステム,アプリケ
発見,統合のための仕組みである.この UDDI を利用
ーションとのデータ交換が必要となり,それにプラ
することで,Web サービスを必要な時に検索するこ
ットホーム独立な XML を利用する.
とが出来るようになる.
1.3 Web サービスについて
Web サービスを提供するサービス・プロバイダが,
Web サービスとは,
XML データを媒体としたインタ
UDDI レジストリにWeb サービスを登録することによ
ーネット上の動的な分散処理技術の総称である.そ
って,Web サービスが公開される.一方,Web サービ
の Web サービスを実現する技術が,SOAP(Simple
スを利用するサービス・リクエスタは,自分が利用
Object Access Protocol)[2] , UDDI(Universal
したい Web サービスの種類や内容をレジストリに対
Description
して問い合わせ,検索して,利用する.
Discovery and Integration)[3] ,
WSDL(Web Services Description Language)[4]の3
つの技術である.その構成を図 1.に示す.
2. B2B システムの技術
2.1 SOAP
SOAP は,XML ベースのメッセージ交換により RPC
(Remote Procedure Call)のようにリモート・マシ
UDDI レジストリには,以下のような情報が登録さ
れ,検索できるようになっている.
①ビジネス情報(WhitePages)
Web サービス提供者についての情報が登録される.
②サービス情報 (YellowPages)
Web サービス提供者の業務情報が登録される.
③バインド情報 (GreenPages)
SOAP/UDDI/WSDL によるB2B システムの開発(1)
Web サービスに接続する際のポインタや URL が記
生産しているメーカを検索し,発注するというもの
述される.
である.その際に,商品コードとそのメーカ名の対
④tModel
応を管理する DB,及びメーカ情報とメーカが提供す
Web サービスのインタフェース情報を記述する.
具体的には WSDL へのポインタが記述される.[6]
るWebサービスを一元的に管理するUDDIレジストリ
を利用する.
UDDI に登録される4 つのデータ構造型は,
各々XML
具体的には,卸売業者は小売業者を顧客として,
の要素として定義されているため,UDDI レジストリ
複数のメーカの様々な商品に対する注文を一元的に
へのアクセスを SOAP による XML 文書のメッセージ
受付け,顧客の指定する日時,店舗に納品する業務
の送受信によって行うことができる.また,UDDI レ
を行う.特に,受注商品に対する納品率をできるだ
ジストリ自身が Web サービスとして構成されており, け 100%に近づけること,小売業者への納品回答の高
UDDI レジストリへの登録,検索も SOAP メッセージ
速化と在庫状況と納品処理状況がいつでも確認でき
を用いた Web サービスを介して行うことが出来る.
ることが必要である.そのモデル図を図 2.で示す.
2.3 WSDL
食料品協会
UDDI サーバ
WSDL とは,サービスがどのようなメッセージを理
解できるのかを説明するための規格であり,XML ベ
ースの言語仕様の 1 つである.メッセージの構造や
③メーカ検索 通常メーカ
小売業者
①
②
送受信の方法,採用されるプロトコルなどが記述さ
れる.また,WSDL はコンピュータにより解析され,
受注 卸売業者
在庫確認
④ 発注
サービスを利用するためのクライアントプログラム
テンポラリーメーカ
を自動生成したりするために用いられる. WSDL で
定義される情報の型を表 1.に示す.具体的に WSDL
図 2.システムのモデル
ドキュメントでは,主にこの 6 つの要素を使用して
3.2 処理の流れ
Web サービスが提供するサービスを記述する.
ここでは,商取引を行う全体の処理の流れについ
3.調達 B2B システムの開発
3.1 システムのモデル
て説明する.まず,小売業者から卸売業者への商品
発注を受けて,
卸売業者はメーカに在庫確認を行い,
今回開発する B2B システムは,食料品を扱う卸売業
メーカはその在庫確認を卸売業者に回答する.在庫
者とスーパーマーケットのような小売業者,食料品
があれば,
卸売業者はそのままメーカに発注を行う.
メーカ間の商品流通に関する動的な電子商取引を実
欠品商品については,その商品を扱っているメーカ
現するものである.小売業者からの新規商品の受注
を DB から商品コードによって検索し,UDDI レジス
表 1.要素型の一覧表
トリと連携してその商品を扱うメーカ情報及びその
要素
①
types
解説
メーカが提供する Web サービス情報を取得する.そ
メッセージ内で用いられる情報を型と
の複数のメーカに対して,在庫確認と見積もり依頼
して定義
②
③
message
portType
サービスとその利用者間で送受信され
るメッセージを定義
これを繰り返し,小売業者から受注した全商品に対
Operation 要素をまとめてサービスを形
するメーカへの発注を完了する.小売業者は逐次状
成
況照会を行う.卸売業者は,小売業者からの注文を
格納する受注 DB と,
メーカへの発注内容を格納する
④
binding
WSDL におけるバインディングの定義
⑤
service
③,④を用いて説明されたサービスの特
定の実装にアクセスするための情報の
⑥
port
を行い,発注メーカを選択して,商品発注を行う.
発注 DB,及び取引メーカを管理する DB の3つの DB
定義
を持つ.各メーカは受注と発注を管理する受発注 DB
具体的なネットワークアドレスと④を
と在庫を管理する在庫 DB を持ち,
食料品協会はメー
関連づけることによって定義
カ情報 DB を持っている.この流れを図 3.に示す.
や既存商品のメーカ在庫切れに対して,その商品を
ここでのポイントは,欠品が発生した時に,その
SOAP/UDDI/WSDL によるB2B システムの開発(2)
商品を供給する最適なメーカを動的に検索し,選定
UDDI レジストリとして Microsoft Access を使用し
できることである.
ている.UDDI に登録されているデータを XML 階層で
3.3 システムの機能
表したものを図 6.に示す.UDDI への検索サービス
これらの処理を実現するシステムの機能を以下に
は UDDI4J[7]を用いて開発した.
示す.これらのサービスを全て Web サービスとして
提供する.
3.3.1 卸売業者が提供する Web サービス
(1) 発注サービス(OrderService)
小売業者はこの Web サービスで発注処理を行う
(図 4.).
< bus ine ssE nti ty aut hor ize dNa me= "ka ney ama "
b usi nes sKe y=" 718 a49 ff‑ f20 0‑0 000 ‑00 80‑ 8f5 26d 650 22a "
o per ato r=" www .in dus log ic. com ">
<na me> Kan eya ma com pan y</ nam e>
<co nta cts >
<c ont act us eTy pe= "">
< per son Nam e>k ane yam a</ per son Nam e>
< des cri pti on xml :la ng= "en ">
kos hid a l abo rat ory </d esc rip tio n>
< pho ne use Typ e=" pho ne" >08 52‑ 36‑ 111 1</ pho ne>
< ema il use Typ e=" E‑m ail ">
kan eya ma‑ com pan y@k ane yam a.c om< /em ail >
< add res s s ort Cod e=" " t Mod elK ey= "" use Typ e=" ">
<ad dre ssL ine ke yNa me= "" key Val ue= "">
Ni shi iku ma 14‑ 4</ add res sLi ne>
(中略)
< /ad dre ss>
</ con tac t>
</c ont act s>
(中略)
< /bu sin ess Ent ity >
図 6. UDDI の XML データ階層
(1) メーカ検索サービス(findMakerByProductCode)
これは卸売業者に対するサービスであり,商品コ
ード(JAN コード)を検索キーとして指定すること
で,
その商品を生産するメーカの一覧
(企業コード,
図 4. 発注伝票画面
小売業者は,発注商品,発注数量,納品希望日な
企業名,アクセスポイントなど)を出力する.図 7.
はこのサービスの結果を表示した画面である.
どを入力し,発注を行う.
(2) 発注状況照会サービス(SituationOrder)
これも卸売業者が小売業者に提供する Web サービ
スである.図 5.は発注状況照会画面である.「○」
が在庫あり,「×」が在庫なし,「△」は在庫不足
を示す.
図 7. メーカ検索サービス
(2) メーカ情報提供サービス (getMakerDetail)
企業コードを入力し,UDDI と連携してその企業情
報(資本金,取引銀行など)を出力する.図 8.は
このサービスの結果を表示した画面である.
食料品協会の持つメーカ情報 DB には,メーカが
UDDI に登録した時に与えられるビジネスキーやメ
図 5. 状況照会画面
ーカ名,
UDDI では持たない情報を格納する
(表 2.
)
.
3.3.2 食料品協会が提供する Web サービス
食料品協会はUDDIと連携したWebサービスを提供
する.UDDI には SOAPUDDI という Web アプリケーシ
ョンを利用した.
これは UDDI の XML 階層を実装した
SOAP/UDDI/WSDL によるB2B システムの開発(3)
まず卸売業者は商品分類コード(例:冷凍食品)を
用いてメーカ検索を行うサービスである
「findMakerByProductCode」を利用し,商品を扱って
いるメーカを検索する.食料品協会では受け取った
商品分類コードを使用して,
メーカ情報 DB からビジ
ネスキー,メーカ名を検索し,そのビジネスキーを
使用してUDDIからメーカWebサービスへのアクセス
ポイントを取得する.ビジネスキー,メーカ名,ア
クセスポイントは見つかったメーカ数だけ卸売業者
に伝えられ,次に卸売業者はそのビジネスキーを用
図 8. メーカ情報提供サービス
いてメーカ情報を提供するサービスである
表 2. メーカ情報 DB
「getMakerDetail」を利用する.食料品協会では受け
テーブル:MakerInfo
属性名
説明
businessKey
ビジネスキー
makerName
メーカ名
capital
資本金
stockHolder
主要株主
contents
業務内容
mainBank
主要取引銀行
customer
主要取引先
supplier
主要仕入先
productCode
商品分類コード
productHandled 取扱商品
取ったビジネスキーによって,
メーカ情報 DB から主
要株主,事業内容などの情報を,UDDI からはメーカ
の電話番号,E‑mail アドレス,住所を取得して卸売
業者に伝える.卸売業者はこのメーカ情報を見て取
引を行うメーカを選択し,メーカの Web サービスを
利用することができる.
このように UDDI と連携している食料品協会の存
在により,欠品が発生したとき,その商品を供給す
るメーカを動的に検索することができるようになる.
(3) Web サービスのセキュリティ
また食料品協会ではメーカの検索と登録を行うこ
B2B での通信では,セキュリティが必要不可欠と
とができるホームページを公開している(図 9.).
なってくる.そこで XML 暗号や XML 署名による SOAP
これは JSP と Servlet で開発した.
の機能強化を提供する WS‑Security(Web Services
Security)仕様での試験を行った.
今回 XKMS 方式(XML Key Management Service:公
開鍵情報の処理と管理を外部のサービスに依頼す
る)を用いて,XML 署名と XML 暗号処理を行った.
この処理は WSTK (Web Service Toolkit)で構築した.
3.3.3 メーカが提供する Web サービス
図 10 .に登録されているサービスを示す.
Version,AdminService は始めから登録されている
サービスで Axis を利用するのに必要な土台である.
メーカが提供する発注サービスとして,
図 9. 食料品協会ホームページ
通常メーカへの発注において欠品商品が生じた場
合,卸売業者は食料品協会が提供している Web サー
MakerService を配備した.以下で MakerService の
内容を説明する.
(1) 在庫・価格見積もり (PriceAndAvailable)
ビスを使用して欠品を補うテンポラリーメーカを検
在庫・価格見積もりを回答するメソッドである.
索し,メーカの Web サービスのアクセスポイントを
商品名,発注数量,希望納品日などを入力し,価格,
取得する.
発注数量に対する対応数量などを出力する.
SOAP/UDDI/WSDL によるB2B システムの開発(4)
表 4. 受発注 DB
orderTable
図 10. メーカサービス一覧
(2) 発注要求サービス (RequestOrder)
実際に発注を行うメソッドである.商品,発注数
量,希望納品日など入力する.発注が行われると,
そ の メ ー カ の 在 庫 DB(productTable) , 受 発 注
DB(TimeAndPlaceTable, orderTable)が更新される.
以上の 2 メソッドを各メーカに配備する.
(3) DB について
在庫・価格見積もり,発注要求を行う際に必要な
DB を説明する.
a) 取引メーカ DB
表 3.
は卸売業者が持っている取引メーカ DB で,
属性名
説明
voucher
伝票番号
JAN
製品コード
product
製品名
request
要求数量
totalPrice
合計金額
TimeAndPlaceTable
voucher
伝票番号
receiveTime
受注日時
appointedDay
納品予定期日
retailStore
小売名
place
場所
wholeID
卸売業者 ID
wholeName
卸売業者名
表 5. 在庫 DB
productTable
属性名
説明
JAN
製品コード
product
製品名
stocks
在庫
price
単価
BusinessConnection テーブルを持つ.卸売業者が
最初に製品を発注するとき,BusinessConnection
テーブルの製品に対応した通常メーカを参照する.
b) 受発注 DB・在庫 DB
表 4.,表 5.は各メーカが持っている受発注
DB,在庫 DB である.ProductTable を参照し,
PriceAndAvailable メソッドで在庫・価格見積も
図 11 . BusinessConnection
りを行い,RequestOrder メソッドで在庫を更新す
ることで発注処理を行う.TimeAndPlaceTable に
発注要求をした卸売業者の詳細を記録する.そし
て orderTable に具体的な発注内容(製品名,数量
など)を記録する.
表 3. 取引メーカ DB
BusinessConnection
属性名
説明
JAN
製品コード
product
製品名
maker
通常メーカ名
accessPoint
アクセスポイント
(4) 処理内容
図 12. PriceAndAvailable
図 12.で発注した内容を確認し,発注処理を行う.
図 13.から図 15.にメーカが持っている受発注・在
MakerService をコマンドプロンプトで利用した
庫 DB を示す.図 12.で発注した処理により,これ
場合を説明する.図 11.に BusinessConnection を
らの DB が更新されているのが分かる.図 13.の在
示す.product のライトビールを 100 本発注した場
庫 DB では,
ライトビールの在庫(stocks)が 100 減少
合,在庫・価格見積もりは図 12.のようになる.
している.図 14.と図 15.の受発注 DB では,発注
SOAP/UDDI/WSDL によるB2B システムの開発(5)
した商品,数量などが更新されている.
の企業では導入コストが高いために従来型の電子商
取引はあまり普及しておらず,電話や FAX による発
注作業が依然残っている.しかし Web サービス技術
は,インターネット接続環境を整備している企業で
あれば,容易に利用することができる.また,取引
図 13. ProductTable
先が固定されている従来の電子商取引とは違い,
UDDI レジストリを利用することにより,今まで全く
取引がなかったベンダーとも必要に応じて,動的に
接続できるようになる.今後は,複数の Web サービ
図 14. TimeAndPlaceTable
スの連携や企業間での Web サービスの結合も考えら
れる.このように,様々なシステムを柔軟に,迅速
に,容易に,安価に実現する Web サービスは,今後
の B2B システムにおいて,非常に重要なものとなる
図 15. OrderTable
だろう.今回の開発を通して,更に使いやすくなる
ように現在の問題点を明確化し,それらを解決する
4. おわりに
提案や実装の実現に努力したい.
現在,取引を行う中小規模の企業も多く,それら
メーカ情報
DB
①受注 Servlet
をコール
食料品協会
UDDI
SOAP サーバ
メーカ検索サービス
メーカ情報サービス
⑥発注
処理
卸売業者
SOAP サーバ
小売業者
⑧発注回答
⑮最終発注
状況の回答
受注 DB
通常メーカ
SOAP サーバ
在庫・価格見積もりサービス
発注要求サービス
④在庫
⑨メーカ 確認 ⑤在庫回答
の検索
⑩検索の
回答
②受注画面
表示
③発注処理
UDDI サーバ
⑦受注回答
⑪在庫確認
発注要求サービス
発注状況照会サービス
⑫在庫
回答
⑬発注処理
発注 DB
取引メーカ
一覧 DB
受注 DB
在庫 DB
テンポラリー
メーカ
SOAP サーバ
在庫・価格見積もりサービス
⑭受注
発注要求サービス
回答
図 3.処理の流れ
参考文献
[1]
World
Wide
Web
[5] 日本ユニシス株式会社:高瀬俊郎:SOAP,情報処
Consortium(W3C),
理,VOL.42 NO.9,pp.863‑869
http://www.w3.org/
[6] 高瀬俊郎 :UDDI と WSDL,
情報処理,VOL.42 NO.9,
[2] SOAP, http://www.w3.org/TR/SOAP/
pp.870‑877
[3] UDDI, http://www.uddi.org/
[7]UDDI4J,http://www‑124.ibm.com/developerwor
[4] WSDL, http://www.w3.org/TR/WSDL
ks/oss/uddi4
SOAP/UDDI/WSDL によるB2B システムの開発(6)