37
C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. Java と XML ととと BtoB EC とととととと とととととととととととととととと とと () とととととととととととととと とと とと

Java と XML による BtoB EC サイトの構築

  • 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

Page 1: Java と XML による BtoB EC サイトの構築

C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved.

Java と XML による BtoB EC サイトの構築

日立ソフトウェアエンジニアリング(株)インターネットビジネス推進部

中野 明彦

Page 2: Java と XML による BtoB EC サイトの構築

C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 2

はじめに

• 弊社(日立ソフト)のご紹介– 横浜に本社– 携帯端末からメインフレームまでのソフトウェア

開発

• 「インターネットビジネス推進部」にて取り組んでいること– Java (特に最近はサーバサイドに注力)– パッケージ開発– システム・インテグレード

Page 3: Java と XML による BtoB EC サイトの構築

C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 3

アジェンダ

• Assam Commerce Server ( ACS) の概要• ACS の BtoC 機能• ACS のフレームワーク・アーキテクチャ• ACS の BtoB 機能

Page 4: Java と XML による BtoB EC サイトの構築

C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 4

Assam Commerce Server ( ACS) の概要

Page 5: Java と XML による BtoB EC サイトの構築

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 アプリケーション・サーバ

Page 6: Java と XML による BtoB EC サイトの構築

C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 6

サポートするプラットフォーム

WebSphere

WindowsNT Solaris HP-UXAIX

WebLogic

DB2 Oracle

Assam Commerce Server

Page 7: Java と XML による BtoB EC サイトの構築

C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 7

ACS の BtoC 機能

• フロントエンド機能– 商品カタログ– ショッピング・カート– 商品購入(決済機能)– 会員機能 など

• バックエンド機能– 商品管理– オーダー管理– 会員管理 など

Page 8: Java と XML による BtoB EC サイトの構築

C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 8

BtoC 機能のデモ

Page 9: Java と XML による BtoB EC サイトの構築

C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 9

ACS のフレームワーク・アーキテクチャ

Page 10: Java と XML による BtoB EC サイトの構築

C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 10

Servlet-JSP-JavaBeans の役割分担

DataSource

<<boundary>>JSP

<<command>>JavaBeans

<<controller>> Servlet

<<entity>>JavaBeans

Page 11: Java と XML による BtoB EC サイトの構築

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 のインタフェースを定

Page 12: Java と XML による BtoB EC サイトの構築

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

Page 13: Java と XML による BtoB EC サイトの構築

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” );

}

}

Page 14: Java と XML による BtoB EC サイトの構築

C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 14

Entity オブジェクト

• 独自の永続化オブジェクト– O-R マッピングを実現– データソースの存在を Command オブジェクトに

意識させない– データソース間の相違( SQL の方言)を吸収

• EJB ( EntityBean )ではない ;)

– ACS 開発開始時(昨年半ば)に評価

– 時機尚早と判断 機能的・性能的制限から

Page 15: Java と XML による BtoB EC サイトの構築

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

Page 16: Java と XML による BtoB EC サイトの構築

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>

Page 17: Java と XML による BtoB EC サイトの構築

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の差異を吸収

Page 18: Java と XML による BtoB EC サイトの構築

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

Page 19: Java と XML による BtoB EC サイトの構築

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;}

}

Page 20: Java と XML による BtoB EC サイトの構築

C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 20

ACS の BtoB 機能

Page 21: Java と XML による BtoB EC サイトの構築

C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 21

BtoB の定義

• 企業間の電子商取引– 従来から EDI (電子データ交換)システムや CA

LS (生産・運用・調達支援統合システム)として存在

– 情報や取引関係は closed であった

• ACS がねらう BtoB とは– インターネット上で open な情報の共有と取引関係の確立を実現するものeg. インターネット調達、マーケットプレイス

Page 22: Java と XML による BtoB EC サイトの構築

C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 22

何故 XML なのか?

• 従来の BtoB ( EDI )との比較

EDI XML

スキーマ

データ形式

ツール/ライブラリ

使用言語

シンタックス・ルールが難解

固定長バイナリや CSVフォーマットで表現

不足している

ツール/ライブラリに制限される

シンプル(すぎる?)

テキストフォーマット

標準規格 API に従ったものが無償で提供

Unicode に対応するため使用言語を制限しない

利点はいろいろあるが・・・

Page 23: Java と XML による BtoB EC サイトの構築

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

Page 24: Java と XML による BtoB EC サイトの構築

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

Page 25: Java と XML による BtoB EC サイトの構築

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) のスキーマ・リポジト

リに登録

• 資材調達に係るデータの静的および動的な側面を定める– 静的な面: 商品カタログ、見積もり、発注データ な

ど– 動的な面: ローカル・カタログ機能、

インターネット・カタログ(パンチアウト)機能

Page 26: Java と XML による BtoB EC サイトの構築

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 管理者

Page 27: Java と XML による BtoB EC サイトの構築

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>

Page 28: Java と XML による BtoB EC サイトの構築

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利用者

Page 29: Java と XML による BtoB EC サイトの構築

C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 29

パンチアウト機能の利点

• アイテム数が多く増加する商品(本、 CD 、ソフトウェア)を電子カタログ化するコストを削減できる。

• コンフィギュレーションが必要となる商品(コンピュータ・ハードウェア)の見積もりに対応できる。

• 価格やメニューが変化しやすい商品(サービス)の見積もりに対応できる。

• 顧客に応じてパーソナライズしたコンテンツを提供できる。例えば、商品の仕切りや購入金額の上限など。

Page 30: Java と XML による BtoB EC サイトの構築

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」提出

Page 31: Java と XML による BtoB EC サイトの構築

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>

Page 32: Java と XML による BtoB EC サイトの構築

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

Page 33: Java と XML による BtoB EC サイトの構築

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>

Page 34: Java と XML による BtoB EC サイトの構築

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ページ など

Page 35: Java と XML による BtoB EC サイトの構築

C Hitachi Software Engineering Co.,Ltd. 2000. All Rights Reserved. 35

パンチアウト機能のデモ

Page 36: Java と XML による BtoB EC サイトの構築

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

Page 37: Java と XML による BtoB EC サイトの構築

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 入門”」