...

ビジネス・オブジェクト(BO) WebSphere Process Server V6 ビジネス・オブジェクト 1

by user

on
Category: Documents
13

views

Report

Comments

Transcript

ビジネス・オブジェクト(BO) WebSphere Process Server V6 ビジネス・オブジェクト 1
WebSphere Process Server V6
ビジネス・オブジェクト
ビジネス・オブジェクト(BO)
万仲龍樹
ISE Web基盤設計
Copyright IBM Japan Co.,Ltd 2005
1
WebSphere Process Server V6
ビジネス・オブジェクト
Agenda
„
Business Object概要
‹
„
Business Object Framework
‹
„
BOの構成要素
BOの作成方法
‹
„
SDO
WIDを使用したBOの作成
BOの使用方法
‹
SCAプログラミング・モデルでの使用
各種API
‹
トランスフォーメーション・サービス
‹
2
2
WebSphere Process Server V6
ビジネス・オブジェクト
Business Object概要
3
3
WebSphere Process Server V6
ビジネス・オブジェクト
ビジネス・オブジェクト概要
„
„
„
SCAに対して一貫したデータ形式を提供する。
様々なビジネスデータを同時に扱う際の複雑性を低減させ
る。
技術的にはSDOv1.0をベースとしている。
Web
BO
サービス・
コンポーネント
エクスポート
doOrder
ApproveOrder
BO
サービス・
コンポーネント
BO
doOrder
BO
インポート
サービス・モジュール
Order
CreditCheck
BO
Web
4
SCAという実行モデルの環境下では、モジュール内外の各コンポーネント間でビジネス・データを一貫し
て扱う形式が求められます。このために採用されている技術がBOです。
上の図では、Orderというサービス・モジュールを例として取り上げています。このOrderの中心にあるサー
ビス・コンポーネントはBPELのビジネス・プロセスであり、ここからApproveOrderというヒューマンタスクと、
CreditCheckという外部サービスコールを行っており、プロセス自体もdoOrderというエクスポートで外部公
開しています。
ここでオーダーを行う際に必要なデータとして、例えばオーダーID、ユーザーID、商品ID、数量、単価、
合計金額、決済方式、決済情報(カード番号など)が必要であるとします。ビジネス・プロセスはオーダー
を実行するに当たり、モジュール外部からこれらのデータを受領して処理を開始します。ただし
ApproveOrderに対してはこれら情報の全てを渡し、CreditCheckにはオーダーID、カード番号、合計金額
など決済関連の情報しか渡す必要がない場合、個々のデータを取捨選択して渡すのはビジネス・プロセ
スにとって負荷の大きな作業になります。(これらアプリケーション固有のデータのことをICSではアプリ
ケーション固有BO、『ASBO』と呼んでいました。)
代わりに、上記全ての情報を含む、複合オブジェクトとしてのBOをコンポーネント間で持ちまわることにより、
個々のコンポーネントでのデータ操作の負荷を減らすことが出来ます。(こちらはICSでは汎用BO、
『GBO』と呼んでいました。)CreditCheckの例のように、呼び出しコンポーネントによって必要とされるデー
タ構造が異なる場合は、別のBOを定義して間のマッピングを定義することで個々のコンポーネント内での
操作を回避することが出来ます。
4
WebSphere Process Server V6
ビジネス・オブジェクト
ビジネス・オブジェクトの位置付け
BPEL + Extensions
SDO技術を
元に
ICSの概念を
元に
Business Objects
Service Component
Architecture (SCA)
5
BOはSCAコンポーネントでのデータの受け渡しに使用されるオブジェクトで、SDO(Service Data Object)
を基にした技術で実装されています。また、ビジネス・オブジェクトという概念(ビジネス・オブジェクトと言う
言葉自体も)はWBI Server内の一製品であるICS(InterChange Server)から採用された概念でもあります。
こうした経緯を元に、SCAに付随する重要な概念であるBOに関する解説をここで行います。
5
WebSphere Process Server V6
ビジネス・オブジェクト
ビジネス・オブジェクトの位置付け(続き)
„
WPSのコンポーネントで見た場合
サービス・
コンポーネント
Business
Business
Processes
Processes
サポーティング
・サービス
Interface
Maps
SOA コア
Human
Human
Tasks
Tasks
Business
Business
State
State
Machines
Machines
Business
Relationships
Object Maps
Service Component
Architecture
Business
Objects
Business
Business
Rules
Rules
Selectors
Selectors
Common Event
Infrastructure
WebSphere Application Server (J2EE Runtime)
6
WebSphere Process Serverは複数の論理的なコンポーネントから構成されているといえます。WebSphere
Application Serverをベースとして、大きく3層からなります。
そのうちの「SOAコア」と呼ばれる基本的なコンポーネントの層に位置付けられます。
6
WebSphere Process Server V6
ビジネス・オブジェクト
SDO概要
„
データソース非依存のデータ・モデル
‹
‹
„
データソースの違いを隠蔽し、データに対する統一的なプ
ログラミングモデルを提供
‹
„
JSR 235として策定
SDO V1.0はWAS V6/RAD V6で実装、SDO V2.0はスペック公開中
RDB、XMLファイル、Webサービス、JCAリソースアダプター、JMSなど
SDOの特徴
‹
‹
‹
データソースとは独立している
データとビジネスロジックの分離
データをXML形式に変換可能
共通API
Client
様々なデータソース
XML
SDO
様々なAPI
Entity Bean、JDBC、JDO、
JCA、JMS、EJB、JAX系API…
RDB
EJB
Web Service
7
BOとはSDOという標準技術を基に実装された技術であるため、BOを理解する前提としてのSDOについて
触れておきます。
まず、SDOが出現した背景は次のようなものでした。
J2EEアプリケーションの適用範囲が単なるWebアプリケーションから基幹システムにシフトされるにつれ、
J2EEの仕様は増加し、200以上のJSRが提案されています。バックエンドのDBにアクセスするだけでも
JDBC、EJBなどの複数の規格があり、それぞれ異なるプログラミング・モデルを採用しています。こうした
様々なAPIの介在がJ2EEを複雑化させているという批判から、シンプルなデータ表現の必要性が問われ
ていました。
SDO(Service Data Object)は、IBMとBEAが中心になってJSR235として策定したデータ表現の新しい仕様
です。様々なデータソース(RDB/XML/JMSなど)の違いを隠蔽し、統一されたデータ表現を行うプログラミ
ングモデルとして使用されます。つまりRDBやXMLファイルなどのデータをSDOの規格で統一されたデー
タ形式に変換することで、接続先のリソースに左右されないデータ表現を実現することを目的としています。
SOAのような多様なデータ・ソースが混在することが想定される環境では、SDOの特性であるデータソース
を隠蔽した共通プログラミングモデルや、データソースへの同時接続数が削減できる非接続プログラミン
グモデル、後述するデータ・グラフを送受信することによるネットワーク負荷の軽減など多くのメリットが享
受できるため、SOA環境でのキーテクノロジーとして目されています。
7
WebSphere Process Server V6
ビジネス・オブジェクト
SDOのアーキテクチャー
データ送受信の
単位
Data Object
各データソース
Change Summary
データソースとデータグラフの
情報を関連付ける役割
(インターフェース
出典:Next-Generation Data Programming: Service Data Objects
8
このページではSDOのアーキテクチャーを解説します。
データソースにアクセスするのはクライアントアプリケーションではなく、Data Mediator Serviceです。クライ
アントアプリケーションは、Data Mediator Serviceから渡されるData Graphを使用します。基本的にData
Graphの単位でデータのやりとりが行われます。データアクセスの順序は以下のようになります。データとト
ランザクションが切断されている状態も注目してください。
1.クライアントアプリケーションが「データ(DataGraph)」を使用したいというリクエストをData Mediator
Serviceに送ります。
2.Data Mediator Serviceはデータソースとのトランザクションを始め、Data Graph作成に必要な情報を要
求します。
3.Data Graph作成に必要な情報をデータソースから取得します。
4.取得した情報を元に、Data Graphを作成します。 Data Graphが作成できたら、トランザクションを終了し
ます。
5.作成されたData Graphをクライアントアプリケーションに渡します。
6.クライアントアプリケーションは渡されたData Graphに対して処理を行います。
7.再度、クライアントアプリケーションはData Mediator Serviceを呼び出し、処理済みのData Graphを渡し
ます。
8. Data Mediator Serviceは新たにトランザクションを始め、クライアントアプリケーションが行った処理に
基づいて、データソースを更新します。
上記の順序から分かるように、クライアントアプリケーションが取得するData Graphはどのトランザクションと
もコネクションを持ちません。
8
WebSphere Process Server V6
ビジネス・オブジェクト
SDOのAPI
Data Graph
Type(=スキーマ)
Data Object
1対1
Property
(=カラム)
Property
(=カラム)
Property
(=カラム)
Sequence
Change Summary
*( )はRDBにおいて相当するものという意味です。
9
・DataGraph
Data Graphはデータソースとクライアント間のデータ送受信の単位です。Data Objectのツリー構造におけ
る最上位のData Objectを保持します。また、Data Objectに対して変更があった場合の変更情報(Change
Summary)も含みます。Data GraphはData Mediator Serviceによって作成されます。
・DataObject
ビジネスデータのオブジェクトを持ちます。 Data Objectは、ビジネスデータのオブジェクトをPropertyの集
まりとして保持します。他のDataObjectやSequenceへの参照をもつ場合もあります。
・ChangeSummary
Data Graph内にあるData Objectの変更履歴を保持します。Data Graphに対してクライアントアプリケー
ションが行った変更の情報はすべてChange Summaryに記録されます。
・Type
データの型を示します。Data ObjectとTypeは1対1の関係です。Typeの属性としてPropertyが含まれます。
Typeは0個からN個のPropertyを保持します。 RDBにおけるテーブルに相当します。
・Property
ビジネス・データの値を格納します。RDBにおけるカラムに相当します。下記の型をサポートしています。
・プリミティブ型とそのラッパー・クラス、String、Date、byte[]、BigDecimal、BigInteger
・Sequence
部分的なデータを保持します。複数のPropertyをまとめたものです。
9
WebSphere Process Server V6
ビジネス・オブジェクト
Business Object Framework
10
10
WebSphere Process Server V6
ビジネス・オブジェクト
ビジネス・オブジェクト・フレームワーク:主要概念
概念
説明
Business Object (BO)
ビジネス・データを表現する基本的なデータ構造。
Business Graph (BG)
ビジネス・オブジェクト、および複数のビジネス・オジェクトの階層
構造に対するラッパーで、以下のような付加する情報を提供する。
・Change summary
・Event summary
・Verb
Business Object Type
Metadata
ビジネスオブジェクトにアプリケーション特有の情報(Application
specific information : ASI)を注釈としてつけることができる。
Business Object
Services
ビジネスオブジェクトを容易に扱うことができるような一連のサービ
スを提供する。それらは、SDOv1.0によってすでに提供されている
ものに付け加えて利用可能である。
11
ビジネス・オブジェクトという場合に、2つの意味を持つ場合があります。一つはWIDで定義し、WPSのSCA
上でやり取りされる実際のデータです。もう一つは、WPS上でのデータ表現のフレームワークそのものをビ
ジネス・オブジェクト・フレームワークと呼ぶことがあります。
ビジネス・オブジェクト・フレームワークには上記4つの主要概念があります。以下のページではそれらに
ついて説明していきます。
なお、Business Object Type Metadataについてはここでは詳しく触れません。
Adaptorを使用する際に、アプリケーションに固有の情報(Application Specific Information : ASI)を付加
する事ができる、というものです。(コードページの情報など)
11
WebSphere Process Server V6
ビジネス・オブジェクト
Business Object
„
SDOv1.0にいくつかの機能拡張を行ったもの
‹
明示的なChange Summaryの操作
z
‹
各種サービス(Create、Copy、Equality、Serialization)
z
‹
„
ICS Business Objectのイベントモデルをサポート
XSD(XML Schema Definition)
メモリ上では
‹
„
SDOv2から提供される
定義上は
‹
„
SDOv2から提供される
commonj.sdo.DataObject というSDOのデータタイプ
シリアライズすると
‹
XMLドキュメント
12
Business Objectは基本的には先の説明したService Data Object v1.0をベースに、いくつかの機能拡張を
行ったものです。
ChangeSummaryはSDOがデータの更新などを処理する際に内部的に使用するものでしたが、Business
Objectでは、ユーザーが明示的に変更することができるような拡張がなされています。
また後述するBusiness Object Serviceが提供され、オブジェクトの生成やコピーといったオブジェクトその
ものの操作を容易にします。
そして、InterChange ServerのBusiness Objectが持っていたイベントモデルをサポートします。
Business Objectの開発はXMLのスキーマを作成していくことになります。データ構造(属性)の定義はす
べてXSDによって記述できます。それがWPS上での実行時には、commonj.sdo.DataObjectの型となり、プ
ログラム上で操作することができます。また、XMLドキュメントの形式でBusiness Objectのインスタンスをシ
リアライズすることも可能です。
12
WebSphere Process Server V6
ビジネス・オブジェクト
Business Object(続き)
„
„
BOの2つのタイプ
シンプルBO
‹
„
内部にプリミティブ型のみを保持
階層BO
‹
内部に別のBOをネストして保持
シンプルBO
階層BO
13
Business Objectには2つのタイプがあります。
シンプルBOは、属性に基本的なデータ型のみを使用するものです。したがってStringやInteger、Dateな
どのデータ型のみで構成されます。
階層BOは、シンプルBOで使用していたような基本的なデータ型のほかに、属性として別のBOを使用す
るようなタイプです。上記の図ではCustomerというBOが、属性としてstocksを持っています。stocksの型は、
StockというBOの配列として定義されています。これは一つのCustomerオブジェクトは、複数のStockオブ
ジェクトをもつことができる、ということを意味しています。
13
WebSphere Process Server V6
ビジネス・オブジェクト
Business Graph
„
„
BOのトップレベルのコンテナー
BOに関連する以下の情報をもつ
‹
‹
‹
„
Change Summary Header
Event Summary Header
Verb
次のような使用モデルを提供する
‹
‹
Disconnected Data Model
Event Model
14
Business GraphはBusiness Objectをラップするものです。
Business Objectの振る舞いに関わるChange Summary, Event Summary, Verbを保持します。
SDOの仕様においては、DataGraphに相当します。
Business Objectを単純なデータ表現として使用する場合には意識する必要はありませんが、SDOの特徴
としての非接続型のプログラミングモデルとして使用する場合や、ICSのイベントモデルを使用する場合に
意識する必要があります。
14
WebSphere Process Server V6
ビジネス・オブジェクト
Business ObjectとBusiness Graph
„
Business Objectと
Business Graphのク
ラス図
‹
「CustomerBG」のようなア
プリケーション特有のBGは
必須の項目ではない。
Business Graph
(from WPS)
1
0..1
1
Change Summary
(from SDO)
Event Summary
(from WPS)
0..1
CustomerBG
(from Application)
ƒ verb : string
ƒ cust : Customer
1
1
Customer
(from Application)
Stock
(from Application)
ƒ lastName : string
ƒ firstName : string
ƒ custID : string
ƒ stocks : Stock [ ]
ƒ symbol : string
0..1 ƒ numShares : int
1
15
Business ObjectとBusiness Graphの関係をクラス図であらわすとこのようになります。
基本的にすべての要素はBusiness Graphと集約の関係があります。
この図では「CustomerBG」というBusiness Graphを継承したアプリケーション特有のBusiness Graphが記述
されていますが、これは必須ではなく、特に作る必要がある場合にのみ作成します。
15
WebSphere Process Server V6
ビジネス・オブジェクト
Business Object Services
„
SDOv1.0で提供されない機能をAPIとして提供する
‹
BOFactory
z
‹
BOCopy
z
„
„
BOを実行時のデータ型へ変換する
BOの値をコピーする
BGのChangeSummary、EventSummaryへのアクセス
com.ibm.websphere.bo パッケージに含まれる
BOFactoryの例
ServiceManager serviceManager = new ServiceManager();
BOFactory bof = (BOFactory) serviceManager.locateService("com/ibm/websphere/bo/BOFactory");
DataObject hello = bof.create("http://HelloWorld", "HelloBO");
16
Business Object ServiceはSDO V1.0の仕様では提供されない機能をAPIとして提供します。
例えばBOFactory(com.ibm.websphere.bo.BOFactory)はBusiness Objectのインスタンスを作成するため
のAPIです。
これらのサービスを使用する際にはプログラミングとしてはSCAのサービス・コンポーネントを取得する場
合と同様です。
ServiceManagerのlocateServiceメソッドに対して、BOFactoryなどへのリファレンス名を渡します。
16
WebSphere Process Server V6
ビジネス・オブジェクト
BOを使用する3つのパターン
„
PODO Plain Old Data Object
‹
‹
„
Disconnected Data Model
‹
‹
„
Business Object
データ表現としてDataObjectの型を使用する
Business Graph = Business Object + SDO Change Summary
SDOとしての利用、非接続型のデータアクセスを実現する
Event Model
‹
‹
Business Graph = Business Object + Event Summary+Verb+
ChangeSummary
Business Integration data synchronization pattern
17
Business Objectを使用するにあたって3つのパターンをご紹介します。
・PODO Plain Old Data Object
Business Objectのみを使用します。SCAの中で受け渡しするデータのデータ型としてBusiness Object
(commonj.sdo.DataObject)を使用するパターンです。
・Disconnected Data Model
Business Objectとともに、ChangeSummaryを使用します。SDOを使用したデータアクセスは非接続型の
データアクセスモデルです。Data Mediator Serviceが特定のデータソースを隠蔽した統一的なプログラミ
ングモデルを提供すると同時に、データソースとのコネクションやトランザクションは1リクエストごとに切断
される仕組みを持っています。すなわち、複数のSQLを実行するような処理であっても、データソースへの
コネクションを長時間保持せず、必要最低限の間だけ物理接続を使用するということになります。
検索結果をクライアント側にキャッシュしておき、参照や更新などはそのキャッシュに対して行います。更
新された場合にはChangeSummaryにその操作の内容が記述され、まとめてその変更内容がデータソース
に対して適用されます。
・Event Model
イベント・モデルはICSで使用されていたデータの更新を行うためのメカニズムです。
17
WebSphere Process Server V6
ビジネス・オブジェクト
BOの作成方法
18
18
WebSphere Process Server V6
ビジネス・オブジェクト
BOの作成方法
„
„
2つの作成方法
WIDを使用する
‹
„
ウィザードや専用の編集エディターを使用して開発することができる
XSDをEditorなどで作成する
‹
‹
基本的なXSD作成スキルがあれば作成可能
Business GraphもXSDであるが少々特殊なため、エディターで開発するの
は困難
19
Business Objectを作成するに当たって、2つの方法があります。
一つはWPSの統合開発環境であるWIDを使用する方法です。ウィザードや専用のエディターを使用して
開発できるため、容易にBusiness Objectを作成することができます。
一方、WIDを使用せずにBusiness Objectを作成することもできます。
Business Objectを定義する段階では、その実体はXSDであるため、Notepadなどのエディターを使用して
も開発することは可能です。
ただし、XSDについてのスキルが必須であるため、WIDを使用する場合よりも開発者に高いスキルが要求
されます。
19
WebSphere Process Server V6
ビジネス・オブジェクト
Business Object Editor
Business Object Editor
グラフィカルにXSDを作成、編集できる
Property View
選択したパーツのプロパティを参照、変
更できる
20
WIDが提供するBusiness Objectを編集するためのエディタです。
上のペインがBusiness Objectを編集するためのエディタです。Business Objectの属性をグラフィカルに追
加、削除することができます。
下のペインがProperty ビューです。属性などを選択すると、その詳細な情報が表示され、また名前や型の
変更などの編集作業も行えます。
20
WebSphere Process Server V6
ビジネス・オブジェクト
Integration View
基本の見え方
ネームスペースを表示する
「Data Types」の下にフラットに
見える
「Data Types」の下にネームス
ペースごとにまとまって見える
21
Business Integration ViewはWIDのBusiness Integrationパースペクティブの中で基本的なビューです。
SCAコンポーネントやBusiness Objectを論理的なビューで見やすく表現しています。
その中でBusiness Objectは、「Data Types」という階層に配置されています。
通常は左側のキャプチャーにあるように、「Data Types」の下にフラットに表示されていますが、ネームス
ペースを表示するモードにすると、「Data Types」の下にさらに、XMLの名前空間ごとの区切りが見えるよう
になります。
21
WebSphere Process Server V6
ビジネス・オブジェクト
Physical Resource View
物理的なファイルとしてみた場合
BO、BGともXSDファイルとして見える
22
Business Integrationビューでは、物理的なファイルの配置に関係なく、論理的にコンポーネントが表示さ
れていましたが、Physical Resourceビューを使用すると、モジュールやライブラリーの中の物理的なファイ
ル配置を見ることが出来ます。
Business ObjectやBusiness GraphがXSDファイルとして見えています。
22
WebSphere Process Server V6
ビジネス・オブジェクト
BOの作成と編集(1)
„
「Data Types」でコンテキスト・メニューから「New」→
「Business Object」とすすむ
23
ここからはウィザードによるBusiness Objectの作成方法についてご紹介していきます。
Business Integrationビューの「Data Types」を選択し、コンテキスト・メニューから「New」→「Business
Object」と選択していきます。
するとウィザードが立ち上がります。
23
WebSphere Process Server V6
ビジネス・オブジェクト
BOの作成と編集(2)
„
必須の入力項目は「Name」
‹
「Namespace」のデフォルトは「http://<Module_Name>」
z
‹
‹
‹
ここでは http://TestLibrary
「Folder」を作成すると、物理的にはそのフォルダ内に保存される
ブランクの場合はプロジェクトディレクトリの直下に置かれる
フォルダを入力すると、Namespaceにフォルダも追加される
z
ここでは http://TestLibrary/<Folder_name> となる
24
ここでは、作成するBusiness Objectの名前を入力する必要があります。
オプションの入力項目としてはNamespaceとFolder、および継承するBusiness Objectの選択になります。
Namespaceはデフォルトでは「http://<module_name>」となります。
Folderを作成すると、物理的な配置がモジュールのルートディレクトリではなく、<module_root>¥<folder>と
なります。また、Namespaceが「http://<module_name>/<folder>」となります。
24
WebSphere Process Server V6
ビジネス・オブジェクト
BOの作成と編集(3)
„
„
入力した後の状態
「Inherit from」を選択した場合、あるBOを選択し、それを
継承したBOを作成することができる。
25
既存のBusiness Objectを継承して作成したい場合は、「inherit from」というプルダウンメニューから選択可
能です。
どのようなBusiness Objectが作成されるかは後述します。
25
WebSphere Process Server V6
ビジネス・オブジェクト
BOの作成と編集(4)
„
「Derived Business Object」では、既存のBOから特定の
属性をコピーすることが出来る
‹
Inheritとは出来上がるものが異なるので注意
26
ウィザードの次のページは、既存のBusiness Objectから特定の属性をコピーする操作を行うことが出来ま
す。
何も操作せずに終了することも出来ます。
26
WebSphere Process Server V6
ビジネス・オブジェクト
BOの作成と編集(5)
„
ウィザードが終了すると、自動的に作成したBOを定義して
いるXSDが開かれる
„
エディター上で選択した要素を下のプロパティ・ビューで編
集できる。
27
作成したBusiness Objectが自動的にエディタで開きます。
ここで属性の追加などを行うことができます。
27
WebSphere Process Server V6
ビジネス・オブジェクト
BOの作成と編集(6)
„
属性を追加する場合、BOを選択して、コンテキスト・メ
ニューから「Add Attribute」を選択する
‹
エディター上のボタンでも同じ操作は可能
28
エディター上で、コンテキストメニューから「Add attribute」を行うことで新規の属性を追加することができま
す。
また、エディター上部にあるボタンを使っても同様の操作ができます。
28
WebSphere Process Server V6
ビジネス・オブジェクト
BOの作成と編集(7)
„
属性が追加されたら、プロパティ・ビューで名前や型などを
編集する
29
追加した属性の名前や型などの編集はPropertyビューを使用して行います。
29
WebSphere Process Server V6
ビジネス・オブジェクト
BOの作成と編集(8)
Derived
Business
Object
Inherit
30
エディター上でBusiness Objectがどのように見えるかを比較したページです。
・inheritをして作成すると、親にあたるBusiness Objectをスーパーセットとして表示します。
・「Derived Business Object」で既存のBusiness Objectから属性をコピーして作成した場合、0から作成し
た場合と見た目も出来上がるXSDも同じです。
・属性に他のBusiness Objectを指定している場合、→で他のBusiness Objectへのポイントがされます。
30
WebSphere Process Server V6
ビジネス・オブジェクト
(参考)作成されたBO
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://MyBOService/datas">
<xsd:complexType name="SampleBO">
<xsd:sequence>
<xsd:element minOccurs="0" name="id" type="xsd:int"/>
<xsd:element minOccurs="0" name="name" type="xsd:string"/>
<xsd:element minOccurs="0" name="data" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
31
実際にウィザードを使用して作成したBusiness Objectをテキストエディタで開いた内容です。
普通のXSDです。
31
WebSphere Process Server V6
ビジネス・オブジェクト
(参考)InheritしたBO
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:bons0="http://MyBOService/datas"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://MyBOService/datas">
<xsd:include schemaLocation="SampleBO.xsd"/>
<xsd:complexType name="ChildBO">
<xsd:complexContent>
<xsd:extension base="bons0:SampleBO">
<xsd:sequence>
<xsd:element minOccurs="0" name="data2" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>
32
こちらはinheritして作成したBusiness Objectをテキストエディタで開いた内容です。
32
WebSphere Process Server V6
ビジネス・オブジェクト
BOの使用方法
33
33
WebSphere Process Server V6
ビジネス・オブジェクト
BOの使用方法
„
„
SCAプログラミングの中で実際にBOを使用する
メモリ上では、commonj.sdo.DataObjectとして扱われる
‹
‹
オブジェクトをどのようにして作成するか
オブジェクトをどのように操作するか
SampleBO.xsd
SampleBO:
commonj.sdo.DataOjbect
JVM
開発時
実行時
34
ここでは、SCAで作成したサービス・コンポーネントの中でBusiness Objectを使用する方法についてご紹
介します。
先にも述べたように、Business Objectは作成時にはXSDですが、WPSのランタイム上(JVM上)では
commonj.sdo.DataObjectです。
したがってBusiness Objectを扱う場合のポイントは、次の2点になります。
・どのようにしてDataObject型のオブジェクトを作成するか
・DataObjectの操作方法
34
WebSphere Process Server V6
ビジネス・オブジェクト
データオブジェクトの作成
„
„
BOFactoryをServiceManagerからlocateServiceで取得
する
BOFactoryのcreateメソッドにXSDのNamespaceと名前を
引数として渡し、BOを受け取る
ServiceManager serviceManager = new ServiceManager();
BOFactory bof = (BOFactory) serviceManager.locateService("com/ibm/websphere/bo/BOFactory");
DataObject sample = bof.create("http://MyBOService/datas", “SampleBO");
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://MyBOService/datas">
<xsd:complexType name="SampleBO">
<xsd:sequence>
<xsd:element minOccurs="0" name="id" type="xsd:int"/>
<xsd:element minOccurs="0" name="name" type="xsd:string"/>
<xsd:element minOccurs="0" name="data" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
35
まずDataObjectの作成についてです。
先に紹介した、Business Object Frameworkの1要素であった、Business Object Serviceを使用します。
具体的には、BOFactoryというAPIを使用することにより、簡単にXSDからcommonj.sdo.DataObject型のオ
ブジェクトを作成することが出来ます。
35
WebSphere Process Server V6
ビジネス・オブジェクト
データオブジェクトの操作
„
DataObjectに値をSetする、Getするサンプルです。
//BOFactoryを取得します。
BOFactory factory = (BOFactory)manager.locateService("com/ibm/websphere/bo/BOFactory");
//BOFactoryを使用してDataObjectを作成します。
commonj.sdo.DataObject inputDO = factory.create("http://MyBOService/datas", "SampleBO");
//DataObjectに対して値をSetします。
inputDO.setInt("id", 10);
inputDO.setString("name", "ise");
inputDO.setString("data", "samples");
//サービス・コンポーネントの呼び出しにDataObjectを引数として渡します。
IMyService.invoke("sendMessage", inputDO);
public DataObject testBO(DataObject in) {
//取得したDataObjectから値をGetします。
System.out.println("id : " + in.getInt("id"));
System.out.println("name : " + in.getString("name"));
System.out.println("data : " + in.getString("data"));
return null;
}
36
続いて、DataObjectをどのように操作するかについてですが、SDOのDataObjectの操作方法と同じです。
基本的にgetter/setterでアクセスします。
get(String path)
set(String path, Object value)
型がわかっている場合には、明示的にsetString()やgetInt()のように型を指定してset/getすることができま
す。
36
WebSphere Process Server V6
ビジネス・オブジェクト
各種API
„
„
Business Object Servicesを構成するAPI群
BOFactory
‹
„
BODataObject
‹
„
BOやBGを作成することができる
DataObjectなどを扱う際に便利なインターフェースを提供する
BOChangeSummary
‹
SDOのChangeSummary Interfaceを拡張し、BGのChangeSummary
Headerを管理できる
37
詳細については、下記リンクからInfocenterの情報を参照してください。
http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/topic/com.ibm.wsps.ref.doc/doc/gref_apis.
html
37
WebSphere Process Server V6
ビジネス・オブジェクト
トランスフォーメーション・サービス
„
インターフェース・マッピング
‹
‹
„
オペレーションとオペレーションをマッピング
インターフェース・マップは一SCAコンポーネントとなる
データ・マッピング
‹
オペレーション内のパラメーターをマッピング
Web
Service
EIS
WS Export
Mediation Component
Map
Business Process
Mediation Component
EIS Import
Map
38
SCAコンポーネントでBOを扱う際に重要な概念として、BOのマッピングがあります。BOのマッピングとは、
異なるBO間の各要素をマップすることでデータのコンバートを行うことを指します。
例えば、あるビジネス・プロセスで使用されるBOに対し、特定のアクティビティより呼び出されるサービスで
は別のデータ・タイプを持つケースがあるとします。こうした場合、サービス・コンポーネント内部でデータの
抽出や展開を行うとメンテナンス性が低下しますが、BOのマッピングを利用すればコンポーネント外部に
定義をすることができるため、仮にデータ・タイプの変更が起きた場合でもマッピングを変えるだけで対処
ができるという利点があります。
マッピングにはインターフェース・マッピング、データ・マッピング、リレーションの三種類があります(リレー
ションはここでは触れません) 。インターフェース・マッピングとはオペレーション間のマッピングで、リファ
レンスとインターフェースの間に配置されます。上の例のように特定アクティビティから呼び出されるサービ
スが独自のデータ・タイプを扱うようなケースでは、ビジネス・プロセスのサービス・コンポーネントと、呼び
出すサービスのインポートのインターフェース(オペレーション)が異なることになります。この場合、間にイ
ンターフェース・マップのコンポーネントを配して、呼び出し側・呼び出され側オペレーション間をマップし
ます。
データ・マッピングとは個々のデータ要素のマッピングで、オペレーション・マッピングに付随して定義しま
す。ビジネス・プロセスが扱うBOの各要素とサービスが扱うBOの各要素を結び、必要なデータが受け渡し
されるように定義します。
38
WebSphere Process Server V6
ビジネス・オブジェクト
Summary
„
„
„
„
Business ObjectはService Data Object v1.0をベースに
した統一的にデータを取り扱うためのフレームワーク。
XSDとして定義することができる。
ランタイムではcommonj.sdo.DataObjectとして扱う。
3つの使用パターンが考えられる
‹
‹
‹
PODO
Disconnected Data Model
Event Model
39
39
Fly UP