ビジネス・オブジェクト(BO) WebSphere Process Server V6 ビジネス・オブジェクト 1
by user
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