Upload
lacey
View
61
Download
3
Embed Size (px)
DESCRIPTION
Java と XML による BtoB EC サイトの構築. 日立ソフトウェアエンジニアリング(株) インターネットビジネス推進部 中野 明彦. はじめに. 弊社(日立ソフト)のご紹介 横浜に本社 携帯端末からメインフレームまでのソフトウェア開発 「インターネットビジネス推進部」にて取り組んでいること Java (特に最近はサーバサイドに注力) パッケージ開発 システム・インテグレード. アジェンダ. Assam Commerce Server ( ACS) の概要 ACS の BtoC 機能 ACS のフレームワーク・アーキテクチャ - PowerPoint PPT Presentation
Citation preview
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved.
Java と XML による BtoB EC サイトの構築
日立ソフトウェアエンジニアリング(株)インターネットビジネス推進部
中野 明彦
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 2
はじめに
• 弊社(日立ソフト)のご紹介– 横浜に本社– 携帯端末からメインフレームまでのソフトウェア
開発
• 「インターネットビジネス推進部」にて取り組んでいること– Java (特に最近はサーバサイドに注力)– パッケージ開発– システム・インテグレード
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 3
アジェンダ
• Assam Commerce Server ( ACS) の概要• ACS の BtoC 機能• ACS のフレームワーク・アーキテクチャ• ACS の BtoB 機能
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 4
Assam Commerce Server ( ACS) の概要
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 5
ACS とは
• EC サイト構築用のパッケージ・ソフト– 弊社 EC サイト「 @Buy24-Software 」がベース
http://www.abuy24.com/soft
• ビジネスモデル– BtoC モデル・・・商品陳列型販売サイト– BtoB モデル・・・インターネット調達システムとの連
動
• テクノロジ– J2EE ( Servlet 、 JSP 、 JavaBeans 、 XML) - α– Web アプリケーション・サーバ
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 6
サポートするプラットフォーム
WebSphere
WindowsNT Solaris HP-UXAIX
WebLogic
DB2 Oracle
Assam Commerce Server
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 7
ACS の BtoC 機能
• フロントエンド機能– 商品カタログ– ショッピング・カート– 商品購入(決済機能)– 会員機能 など
• バックエンド機能– 商品管理– オーダー管理– 会員管理 など
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 8
BtoC 機能のデモ
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 9
ACS のフレームワーク・アーキテクチャ
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 10
Servlet-JSP-JavaBeans の役割分担
DataSource
<<boundary>>JSP
<<command>>JavaBeans
<<controller>> Servlet
<<entity>>JavaBeans
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 11
ServletAPI の差異の吸収
• Servlet のバージョンの違いによる API の非互換性 • アプリケーション・サーバによりサポートされる Se
rvletAPI のバージョンが異なる– WebSphere3.0 ⇒ ServletAPI 2.1
– WebLogic5.1 ⇒ ServletAPI 2.2
• 抽象クラス( CommandContext )を用意– ACS が規定する ServletAPI のインタフェースを定
義
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 12
CommandContext 抽象クラス
<<abstract>>CommandContext
+<<static>> getInstance(ServletContext, HttpServletRequest, HttpServletResponse) :CommandContext+ getSession():HttpSession+ invalidateSession()+ setAttributeToSession(String, Obejct, boolean):boolean+ getAttributeFromSession(String):Object+ setAttributeToRequest(String, Object)+ getAttributeFromRequest(String):Object+ getParameterValue(String):String+ getParameterValues(String):String[]+ forward(String)+ include(String)
HttpServletRequest( from javax.servlet )
HttpServletResponse( from javax.servlet )
ServletContext( from javax.servlet )
uses
uses
uses
CommandContextForAPI20 CommandContextForAPI21 CommandContextForAPI22
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 13
CommandContext の使用例
Public class LoginServlet {
public void service(HttpServletRequest request, HttpServletResponse response) {CommandContext cmdCtx = CommandContext.getInstance(
getServletConfig().getServletContext(), request, response);String userID = cmdCtx.getParameterValue( “USER_ID” );String password = cmdCtx.getParameterValue( “PASSWORD” );
:cmdCtx.setAttributeToSession( “USER_ID”, userID, true );cmdCtx.forward( “welcome.jsp” );
}
}
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 14
Entity オブジェクト
• 独自の永続化オブジェクト– O-R マッピングを実現– データソースの存在を Command オブジェクトに
意識させない– データソース間の相違( SQL の方言)を吸収
• EJB ( EntityBean )ではない ;)
– ACS 開発開始時(昨年半ば)に評価
– 時機尚早と判断 機能的・性能的制限から
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 15
Entity インタフェースと Persister 抽象クラス
<<interface>>Entity
+ validate() + update()+ remove()
<<abstract>>Persister
+ update(Entity)+ insert(Entity)+ remove(Entity)+ query(String):Entity+ queries(String):Vector# getSQLForInsert(Entity):Vector# getSQLForUpdate(Entity):Vector# getSQLForDelete(Entity):Vector# getSQLForSingleQuery(String):Vector# getSQLForMultipleQuery(String):Vector
ConcreteEntity
+<<static>> getInstance(String):ConcreateEntity+<<static>> getInstances(String):Vector
ConcretePersister
+<<static>> getInstance():ConcreatePersister* 1uses
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 16
Entity の使用例
・・・CustomerEntity customer = new CustomerEntity();customer.setName( “ 中村” );customer.setAddress( “ 横浜市” );customer.setPhoneNumber( “045-123-4567” );customer.validate();customer.update();
<%@ import=“jp.co...CustomerEntity” %><HTML><BODY>
<% CustomerEntity customer = CustomerEntity.getInstance( “cust000001” ); %>
名前: <%= customer.getName() %>住所: <%= customer.getAddress() %>電話: <%= customer.getPhoneNumber() %>
</BODY></HTML>
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 17
AP サーバ固有 API の差異の吸収
• Web アプリケーション・サーバの代表的な機能– コンテナの実装エンジン( Servlet 、 JSP 、 EJ
B )– 各種リソースの Pooling 機能– クラスタリング(フェールオーバ、ロードバラン
ス)– 既存システムへのコネクター など
• データベース・コネクションの Pooling 機能– JDBC2.0 で「データソース」として標準化– 現状の AP サーバは未準拠のものも多い抽象クラス( PersisterConnector)用意し、固有 APIの差異を吸収
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 18
PersistConnector 抽象クラス
<<abstract>>PersisterConnector
+<<static>> getInstance():PersisterConnector+ begin():boolean+ commit()+ rollback()+ query(String):RecordSet+ insert(String):int+ update(String):int + delete(String):int
WLSPoolConnector GenericJDBCConnectorWASPoolConnector
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 19
PersistConnector の使用例
public abstract class ItemPersister extends Persister {・・・public Entity query(String id) {
PersisterConnector connector = PersisterConnector.getInstance();try {
connector.begin();
Vector aVector = getSQLForSingleQuery(id);String sql = (String)aVector.elementAt(0);RecordSet aRecordSet = connector.query(sql);
target = (Item)createInstance(aRecordSet);} catch(Exception e) {
connector.rollback();}connector.commit();
return target;}
}
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 20
ACS の BtoB 機能
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 21
BtoB の定義
• 企業間の電子商取引– 従来から EDI (電子データ交換)システムや CA
LS (生産・運用・調達支援統合システム)として存在
– 情報や取引関係は closed であった
• ACS がねらう BtoB とは– インターネット上で open な情報の共有と取引関係の確立を実現するものeg. インターネット調達、マーケットプレイス
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 22
何故 XML なのか?
• 従来の BtoB ( EDI )との比較
EDI XML
スキーマ
データ形式
ツール/ライブラリ
使用言語
シンタックス・ルールが難解
固定長バイナリや CSVフォーマットで表現
不足している
ツール/ライブラリに制限される
シンプル(すぎる?)
テキストフォーマット
標準規格 API に従ったものが無償で提供
Unicode に対応するため使用言語を制限しない
利点はいろいろあるが・・・
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 23
何故 XML なのか?( cnt’d )
• 標準技術として認知されたことが一番の理由(だと思う)– TCP/IP とか HTTP とかと同じ(デファクトの強み)– EDIFACTや ANSI X.12 は対照的な例
• Java との相性がよいこと– XML ドキュメントを解析・生成するためのライブ
ラリ(パーサ)が既に数多く提供されている– eg. Sun Project X ( JAXP )、 IBM XML Parser for Jav
a
Apache Xeres Java Parser
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 24
Ariba Buyer との連携
• Ariba Buyer (v7.0)
– インターネット調達アプリケーション• Ariba Commerce Service Network ( ACSN )
– Buyer と Supplier の間のネットワーク・ハブ
Ariba Buyer
買い手側企業 売り手側企業
Ariba 社
Supplier( ACS)
Ariba CommerceService Network
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 25
c XML
• commerce eXtensible Markup Language(cXML)
– Ariba 社を含む複数のベンダーにより策定– XML.ORG(http://www.xml.org) のスキーマ・リポジト
リに登録
• 資材調達に係るデータの静的および動的な側面を定める– 静的な面: 商品カタログ、見積もり、発注データ な
ど– 動的な面: ローカル・カタログ機能、
インターネット・カタログ(パンチアウト)機能
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 26
ローカル・カタログ機能
Ariba Buyer ACSN Supplier
Index
cXML/HTTP
ACSN にログインする
カタログを作成する
Index
cXML/HTTP
ACSN にログインする
カタログをUpload する
Index
cXML/HTTP
カタログをDownload する
カタログをインポートする
Index
cXML/HTTP
Buyer 管理者 Supplier 管理者
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 27
Index ドキュメント
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE Index SYSTEM "http://xml.cxml.org/schemas/cXML/1.1.008/cXML.dtd" ><Index> <SupplierID domain="DUNS">0000002-T</SupplierID> <IndexItem> <IndexItemAdd> <ItemID> <SupplierPartID>ABC001</SupplierPartID> </ItemID> <ItemDetail> <UnitPrice> <Money currency="JPY">4660</Money> </UnitPrice> <Description xml:lang="ja"> <ShortName>Sample 商品 001</ShortName> Sample 商品 001の詳細説明 </Description> <UnitOfMeasure>EA</UnitOfMeasure> <Classification domain="SPSC">55555555</Classification> </ItemDetail> <IndexItemDetail> <LeadTime>7</LeadTime> </IndexItemDetail> </IndexItemAdd> </IndexItem> <IndexItem> <IndexItemDelete> <ItemID> <SupplierPartID>ABC002</SupplierPartID> </ItemID> </IndexItemDelete> </IndexItem></Index>
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 28
インターネット・カタログ(パンチアウト)機能
Ariba Buyer ACSN Supplier
HTML/HTTPPunchOutSetupRequest
cXML/HTTP
PunchOutSetupRespone
cXML/HTTP
HTML/HTTP
::
「注文」ボタンの押下PunchOutOrderMessage
HTML/HTTP
商品の選択・追加
PunchOutSetupRequest
cXML/HTTP
HTML/HTTP
PunchOutSetupRespone
cXML/HTTP
Supplier の選択
Supplier の URIに遷移
PunchOutOrderMessage
HTML/HTTP
Buyer利用者
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 29
パンチアウト機能の利点
• アイテム数が多く増加する商品(本、 CD 、ソフトウェア)を電子カタログ化するコストを削減できる。
• コンフィギュレーションが必要となる商品(コンピュータ・ハードウェア)の見積もりに対応できる。
• 価格やメニューが変化しやすい商品(サービス)の見積もりに対応できる。
• 顧客に応じてパーソナライズしたコンテンツを提供できる。例えば、商品の仕切りや購入金額の上限など。
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 30
パンチアウトで使用される XML ドキュメント
説明
PunchOutSetupRequest
PunchOutSetupResponse
PunchOutOrderMessage
Buyer利用者の認証情報やカート情報が含まれる。「 create 」「 edit 」「 inspect 」のオペレーション・タイプがある。
PunchOutSetupRequest に対する応答ドキュメント。 Buyerによって表示される ACS側の画面の URIが含まれる
本ドキュメントには、見積もりデータとして、商品コードや数量、集計金額などが含まれる。
c XML ドキュメント
作成「 create」
編集「 edit」 承認完了検査
「 inspect」提出
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 31
PunchOutSetupRequest ドキュメント
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE cXML SYSTEM " http://xml.cxml.org/schemas/cXML/1.1.008/cXML.dtd "><cXML version="1.0" payloadID="970197090991.2144681359@sirius" timestamp="2000-09-29T12:11:30-15:00"> <Header> <From> <Credential domain="NetworkId"> <Identity>AN00000001-T</Identity> </Credential> </From> <To> <Credential domain="DUNS"> <Identity>0000002-T</Identity> </Credential> </To> <Sender> <Credential domain="AribaNetworkUserId"> <Identity>[email protected]</Identity> <SharedSecret>XXXXXXXX</SharedSecret> </Credential> <UserAgent>B2B Buyer 7.0 </UserAgent> </Sender> </Header> <Request deploymentMode="test"> <PunchOutSetupRequest operation="create"> <BuyerCookie>123456789</BuyerCookie> <BrowserFormPost> <URL>https://an.ariba.com/punchout?ansessionid=123456789</URL> </BrowserFormPost> </PunchOutSetupRequest> </Request></cXML>
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 32
PunchOutSetupResponse ドキュメント
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.1.008/cXML.dtd"><cXML payloadID="[email protected]"
timestamp="2000-09-29T12:19:55+09:00" xml:lang="ja" version="1.1.008"> <Response> <Status code="200" text="OK"></Status> <PunchOutSetupResponse> <StartPage> <URL>http://www.abuy24.com/servlet/Default</URL> </StartPage> </PunchOutSetupResponse> </Response></cXML>
• StartPage として以下の URI を応答する。– 「 create 」の場合: ACS のトップページの URI
– 「 edit 」「 inspect 」の場合: ACS のカート画面のURI
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 33
PunchOutOrderMessage ドキュメント
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.1.008/cXML.dtd"><cXML payloadID="[email protected]"
timestamp="2000-09-04T17:00:39+09:00" xml:lang="ja" version="1.1.009"> <Header> ・・・ </Header> <Message> <PunchOutOrderMessage> <BuyerCookie>123456789</BuyerCookie> <PunchOutOrderMessageHeader operationAllowed="edit"> <Total><Money currency="JPY">5393</Money></Total> </PunchOutOrderMessageHeader> <ItemIn quantity="1"> <ItemID><SupplierPartID>ASI0360</SupplierPartID></ItemID> <ItemDetail> <UnitPrice><Money currency="JPY">4660</Money></UnitPrice> <Description xml:lang="ja"> <ShortName>Sample 商品 001</ShortName> Sample 商品 001の詳細説明 </Description> <UnitOfMeasure>EA</UnitOfMeasure> <Classification domain="SPSC">55555555</Classification> </ItemDetail> </ItemIn> </PunchOutOrderMessage> </Message></cXML>
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 34
パンチアウト機能の実装
• LaunchListenerServlet①SAX API を用いた PunchOutSetupRequest の解析②ユーザの認証( ACS へのログイン処理)③「 edit 」「 inspect 」の場合、カート・オブジェクトを再構築④遷移先 URI を決定⑤DOM API により PunchOutSetupResponse を生成
• CreateOrderMessageCommand①DOM API により、 HTTPセッション・オブジェクト中のカー
ト・オブジェクトから XML ドキュメントを生成②生成した XML ドキュメントを HttpRequest オブジェクトに格納
• 既存 JSPページの修正– カート画面の JSPページ など
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 35
パンチアウト機能のデモ
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 36
今後の予定
• EJB コンポーネント化を再検討– 独自 Entity オブジェクト ⇒ EntityBean 化– Command オブジェクト ⇒ SessionBean 化?
• ACS の BtoB インタフェースの汎用化と Ariba以外のプロトコルへの対応– Commerce One, Inc.
– Oracle Internet Procurement 、 Oracle Exchange
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 37
ご参考資料
• インターネットビジネス推進部のホームページ– http://e-biz.hitachi-sk.co.jp
• ACS 製品情報– http://e-biz.hitachi-sk.co.jp/sub/frm_sol.html
• 関連記事– IDG ジャパン JavaWORLD
2000 年 3 月号:「 EC サイト構築事例に見る Web アプリケーション開発手法」2000 年 11 月号:「加速する EC 、進化する J2EE 」 Part2 ~ 4
2000 年 4月号より連載: 「部下には聞けない“ Java 入門”」