...

と WebSphere MQ の統合(第 2 部) DB2 提供:DB2 Developer Domain

by user

on
Category: Documents
15

views

Report

Comments

Transcript

と WebSphere MQ の統合(第 2 部) DB2 提供:DB2 Developer Domain
DB2 と WebSphere MQ の統合(第 2 部)
提供:DB2 Developer Domain
http://www7b.software.ibm.com/dmdd/
目次
このドキュメントをオンラインでご覧になっている方は、以下のトピックをクリックするとそのセクションに
ジャンプできます。
1. チュートリアルの概要 ............................................................................................................................2
2. シナリオの作成 ........................................................................................................................................5
3. XML エクステンダー・ファイルの生成..............................................................................................14
4. バッチ処理の実行依頼 ..........................................................................................................................19
5. バッチ処理の実行 ..................................................................................................................................22
6. まとめ ......................................................................................................................................................24
-1-
セクション 1. チュートリアルの概要
概要
DB2 Universal Database(UDB)、WebSphere MQ、WebSphere Studio Application Developer の 3 つ
は、IBM e-business ソフトウェア製品の中でも人気が高く、多くのお客様はこれら製品の 1 つで
はなく、3 つ一緒に一度に展開しています。これら製品は単独でも優れた機能を発揮しますが、
併用するとデータ統合に非常に有効です。このチュートリアルでは、データ交換メディアとして
XML を使用してこれら製品によってデータ統合を行う方法について説明します。
このチュートリアルは、2 部構成になっています。第 1 部は、テクノロジーの概要、およびこれ
ら 製 品 の イ ン ス ト ー ル と 連 携 の 概 要 ( http://www7b.software.ibm.com/dmdd/library/tutorials/
0210weinmeister/index.html でご覧いただけます)。第 2 部は、自動車部品販売代理店に注文を送
信する自動車修理工場を例にした実際的なシナリオです。この第 2 部では、開発プロセスの概要
を示し、これらの製品の使い方について順を追って説明します。
背景
XML は、データ交換標準として普及しています。IBM DB2 には、DB2 データベースの他、
WebSphere MQ などのミドルウェアに保管された重要なビジネス情報を統合してアプリケーショ
ン統合を実現する XML エクステンダー・ツールが用意されています。このチュートリアルの目
的は、XML、DB2 UDB、DB2 XML エクステンダー、ならびに WebSphere MQ の概念、既存の
DB2 データから XML 文書を作成したり XML 文書を DB2 の表および列に格納したりする方法、
WebSphere MQ による統合の具体例などを示すことです。
目的
第 1 部の最後で述べたように、この実習では DB2 XML エクステンダーと MQSeries を使用して
XML データの抽出、格納、および交換を行う方法、つまり MQSeries をトランスポートとして
DB2 データベースに格納された XML データを交換する方法について順を追って説明します。
実習の最後では、アプリケーションのコードについて順を追って説明します。このコードは、
IBM ミドルウェアのほとんどに付属する組み込み機能を利用してかなりシンプルに作成されてい
ます。
-2-
このチュートリアルで取り上げる各製品/テクノロジーの概要
・ IBM DB2 UDB:IBM DB2 Universal Database は、安定性、信頼性、スケーラビリティーに優れ
たデータベースで、ビジネス・アプリケーションに利用するデータを保管することができま
す。
・ IBM DB2 XML エクステンダー:IBM DB2 XML エクステンダーは、XML 文書の保存および検
索のためのエンドツーエンド・ソリューションです。
・ IBM WebSphere Studio Application Developer:IBM WebSphere Studio Application Developer を
使用すれば、プロのアプリケーション開発者は Java/J2EE アプリケーションの作成、テスト、
統合、および展開を迅速かつ容易に実行できます。
・ XML:XML(Extensible Markup Language)は、情報交換や e-business トランザクションを容易
にする基本テクノロジーです。
これらの製品/テクノロジーを統合する理由
このチュートリアルで取り上げる製品は単独でも役立ちますが、統合することでさらに強力な機
能を発揮します。多くの統合シナリオの中心となる要素はビジネス・データであり、ここに DB2
に対するニーズがあります。それらデータは、まず間違いなく社内の他のシステムや他の組織に
渡されます。XML は、このデータのトランスポート・メディアとして有用であると同時に、普
及しているという要件を満たしています。DB2 XML エクステンダーは、これらのテクノロジー
間のインターフェースを容易に実現する手段を提供します。WebSphere MQ は、メッセージング
を介したビジネス・データのトランスポートに非常に役立つアプリケーションです。そして、
WebSphere Studio Application Developer には、データベースから XML サポートまで、統合実現に
必要な適切なツールがすべて用意されています。さらに、WebSphere Application Single Server テ
スト環境も備えているため、統合シナリオにおいて HTML ページ、サーブレット、Enterprise
JavaBeans が必要な場合には、J2EE アプリケーション作成のための優れたツールとなります。
以下は統合シナリオの例です。
-3-
前提条件
以下の製品のインストール手順と相互運用のためのセットアップ方法については、このチュート
リアルの第 1 部で説明しています。
・ DB2 UDB v7.2
・ DB2 UDB v7.2 FixPak 7
・ DB2 XML エクステンダー FixPak 7
・ WebSphere MQ v5.3
・ WebSphere Studio Application Developer v4.0.3
-4-
セクション 2. シナリオの作成
概要
WebSphere Studio Application Developer には、アプリケーション開発を支援する各種 XML ツール
が用意されています。これらツールを使用すれば、XML ファイルの作成/編集/テスト、ある
フォーマットから別のフォーマットにマップするスタイルシートの作成、そのスタイルシートに
よる XML ファイルの変換、XML DTD またはスキーマ・ファイルからの Java beans の生成、DB2
と XML 間でのデータ転送、その他さまざまな役立つ機能を実行できます。
XML 文書は、単独で使用することも DTD ファイルまたは XML スキーマと関連付けることもで
きます。DTD/XML は、公開にも非公開にもでき、また XML 外部に用意することも XML に組
み込むことも可能です。XML ファイルと DTD の関係は、DTD から基本的な XML 文書を作成で
きるというものです。DTD は XML 構造の構築に十分な情報を備えているため、後は属性値を入
力するだけで済みます。XML 文書は各タイプごとに固有であるため、それぞれ専用のエディ
ターが用意されています。各エディターは、特定のファイル・タイプの処理に使用できる最も便
利な機能を提供するだけでなく、その他のファイル・タイプとの関係を認識して利用することも
できるように設計されています。
XML の処理は、XML パースペクティブから行います。XML エディターは、XML ファイルの作
成、編集、表示のためのビジュアル・ツールで、最初から XML ファイルを作成したり、既存の
DTD または既存の XML スキーマから XML ファイルを作成したりするのに使用します。XML
エディターは、既存の XML ファイルをインポートして構造を表示するのにも使用します。さら
に、エディターから XML ファイルと DTD ファイルまたは XML スキーマとの関連付けを行うこ
ともできます。
以下の例では、プロジェクトを作成し、XML ツールを使用してデータベース表を XML エン
ティティーにマッピングします。また、いくつかのツールを使用して一部の文書を自動的に生成
します。
プロジェクトの作成
Windows の[スタート]メニューから、[スタート] -> [プログラム] -> [IBM WebSphere
Studio Application Developer] -> [IBM WebSphere Studio Application Developer]の順
にクリックして、WebSphere Studio Application Developer を起動します。
[File]メニューの[New Project]をクリックし、[Examples]グループを選択し、
[XML]を
選択します。右側から[DB2 XML Extender]を選択し、[Next]をクリックします。
-5-
チェックボックスをオンにし、[Finish]をクリックします。
データベース・スキーマの変更
WebSphere Studio Application Developer の[コンテキスト]メニューから、[Perspective] ->
[Open] -> [Other] -> [Data]の順に選択し、[Data]パネル下部にある[Data]タブを
選択します。sales_db フォルダー、schema フォルダー、sales_db データベース、XMLDEMO
フォルダー、tables フォルダーの順に展開し、XMLDEMO.PART_TAB 表をダブルクリックしま
す。[Columns]タブをクリックし、データ型を「REAL」として新しい列「WEIGHT」を追加
します。その他はデフォルトを使用します。
-6-
SALES_DB 下にある Statements フォルダーに移動し、SelectOrder ステートメントをダブルク
リックします。XMLDEMO.PART_TAB.WEIGHT が一番上の SQL 照会に含まれていないことを確
認します。PART_TAB ボックスの下にある WEIGHT ボックスをオンにし、SQL 照会が更新され
たことを確認します。
変更内容を保存します。
order.xml ファイルのオープン
次に、例に含まれている order.xml ファイルを変更しながら、アプリケーションのカスタマイズ
に必要なさまざまなステップを確認しましょう。
-7-
まず、[Perspective] -> [Open] -> [XML]の順に選択して XML パースペクティブを開
きます。
Navigator(WebSphere Studio Application Developer の左下のウィンドウ)に移動します。salesdb
フォルダー、RDBNodeDad フォルダー、WindowsTestHarness フォルダーを順に選択しま
す。
必要に応じて設計モードに切り替え(ペイン下部にあるタブを使用して)、RDBNodeDad フォル
ダーにある order.xml ファイルをダブルクリックします。
order.xml ファイルの編集
最初の Part 要素を右クリックし、[Add Child] -> [New Element]の順にクリックして、新
しい子要素「Weight」を作成します。
Weight 要素の右側をクリックしてフィールドを編集し、値「36」を挿入します。このフィール
ドは、データベース表の REAL フィールドに対応するものですから、
「lbs」などの単位は入力し
なくても当然それが前提となります。
ウィンドウ下部にある[Source]タブをクリックし、weight 要素が XML ソース・コードに追加
-8-
されたことを確認します。XML ソースに手作業で入力することによって、値を「28」とした
weight 要素を 2 番目の部品に追加します。さらに、3 番目の部品に対しても同様に行います。ヒ
ントとして、以下のコードをご覧ください。
... </Shipment> <Weight>28</Weight> </Part> <Part color="red"> ..
order.dtd ファイルのオープンと妥当性検証
weight 要素を order.xml に追加したので、対応する変更内容を反映させるために order.dtd ファイ
ルを変更する必要があります。
左下隅の Navigator に移動し、order.dtd を探します(salesdb フォルダーにあります)
。<Ctrl>キー
を押しながら order.dtd を RDBNodeDad フォルダーにドラッグすることによって、このファイル
を RDBNodeDad フォルダーにコピーします。
order.xml ファイルに戻り、[XML]メニューから[Validate the current state of the XML File]
を選択します。このプロセスは、order.dtd ファイルに対する order.xml ファイルの妥当性検証を
実行します。order.xml にエラーがあれば、[Tasks]ウィンドウに表示されます。
-9-
手作業による order.dtd ファイルの編集
order.dtd を開き、[Tasks]ウィンドウに表示されたエラーを修正し、order.dtd を保存します。ヒ
ント:以下のコードに合わせて order.dtd を変更してください。修正が必要な箇所は、ボールド体
の行に含まれています。
<!ELEMENT Part (key,Quantity,ExtendedPrice,Tax, Shipment+, Weight)>
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ATTLIST
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
key (#PCDATA)>
Quantity (#PCDATA)>
ExtendedPrice (#PCDATA)>
Tax (#PCDATA)>
Part color CDATA #REQUIRED>
Shipment (ShipDate, ShipMode, Comment)>
ShipDate (#PCDATA)>
ShipMode (#PCDATA)>
Comment (#PCDATA)>
<!ELEMENT Weight (#PCDATA)>
ファイル編集前と同様に、order.xml ファイルの妥当性検証を再度実行します。
order.dtd の自動作成
WebSphere Studio Application Developer は、XML ファイルに基づいて DTD を自動的に作成できま
す。次に、この機能を試してみましょう。まず、先に使用した order.dtd を削除します。order.dtd
ファイルが開いている場合は閉じ、[Navigator]ウィンドウ内の order.dtd を右クリックし、
[Delete]を選択します。
それでは、DTD ファイルを生成しましょう。[File] -> [New] -> [DTD File]の順に選択
します。[Create DTD file from an XML file]を選択し、[Next]をクリックします。
- 10 -
RDBNodeDad フォルダーをクリックし、ファイル名として「order.dtd」と入力します。[Next]
をクリックします。
- 11 -
order.xml ファイルを選択し、[>]ボタンを押し、[Finish]をクリックします。
- 12 -
同じファイルの複数コピーが存在することで混乱しないように、salesdb フォルダーのルートか
ら元の order.dtd を削除します。
- 13 -
セクション 3. XML エクステンダー・ファイルの生成
概要
Document Access Definition(DAD)ファイルは、入力 XML 文書をタグなしリレーショナル・
データにマップします。また、既存のリレーショナル・データから出力 XML 文書を生成する場
合や、完全な XML 文書が格納された XML 列を DB2 サイド表にマップする場合にも使用できま
す。一般に、サイド表は検索を高速化するために索引付けされます。
RDB から XML へのマッピングの新規作成
WSAD の XML パースペクティブから、[File] -> [New] -> [RDB to XML Mapping]の
順にクリックします。
salesdb/RDBNodeDad フォルダー内に、[New RDB to XML Mapping Session]を作成します。
名前はデフォルトの「rmxmap.rmx」を使用します。[Next]をクリックします。
次の画面で、
[SQL Query to XML mapping]ではなく、[RDB table to XML mapping]がオン
になっていることを確認します。[Next]をクリックします。
SALES_DB デ ー タ ベ ース か ら 、 XMLDEMO.ORDER_TAB 、 XMLDEMO.PART_TAB、 お よ び
XMLDEMO.SHIP_TAB を選択します。[Next]をクリックします。
- 14 -
salesdb/RDBNodeDad ディレクトリーにある order.dtd を選択します。[Next]をクリックします。
ルート要素が Order であることを確認し、[Finish]をクリックします。
DAD ファイルの生成
データベース表情報をインポートしたので、DAD ファイルを生成する必要があります。この
ファイルには、データベースと先ほどの order XML ファイルとのマッピングを入れます。
GUI インターフェースを使用して、データベース列を左側から右側の一致する XML 要素および
属性にドラッグ・アンド・ドロップします。まず、すぐにわかるマッピングから始めます(例:
XML_DEMO.ORDER_TAB.CUSTOMER_NAME
か ら <order><Order><Customer><name> ) 。
XML_DEMO.PART_TAB.ORDER_KEY と XMLDEMO.SHIP_TAB.PART_KEY は、次の表結合で使
用するので、マップしないでおきます。
- 15 -
[Mapping] -> [Edit Join Conditions]の順にクリックし、次の画面に表示されている列を
結合します。空の列をクリックし、オプションを選択します。AND の場合、次の列をクリック
します。
- 16 -
[Mapping] -> [Generate DAD]の順にクリックします。
salesdb/RDBNodeDad/WindowsTestHarness デ ィ レ ク ト リ ー に order.dad フ ァ イ ル を 作 成 し 、
[Finish]をクリックします。
- 17 -
- 18 -
セクション 4. バッチ処理の実行依頼
概要
DB2 XML エクステンダーは、関数やストアード・プロシージャーを使用して、DB2 XML アプ
リケーションから DB2 MQ 関数に直接アクセスすることができます。ここで使用する MQ 関数
およびストアード・プロシージャーは、WebSphere MQ の Application Messaging Interface(AMI)
を使用して開発したものです。これらの新しい DB2 MQ 関数には、以下に示す WebSphere MQ
AMI の 2 つの重要な概念が引き継がれています。
・ サービス・ポイント:メッセージ送受信の起点となる論理ポイントで、AMI によって構成さ
れたキュー・マネージャー内の特定のキューを指します。
・ ポリシー:サービス品質オプション(優先順位、永続性など)を定義します。
AMI を使用すると、メッセージングのアクションと、アクションの実行方法を記述した定義を
きれいに分離することができます。その結果、一連の新しい DB2 MQ 関数およびストアード・
プロシージャーは構成しやすく、使いやすいものになっています。DB2 XML エクステンダーの
一部として新しい DB2 MQ 関数をインストールすると、アプリケーションで以下のことが行え
ます。
・ SQL ステートメントを使用して、WebSphere MQ AMI に定義されたサービス・ポイント
(キュー)内の XML メッセージとして文書の送信、読み取り、または受信を行う。以下の
DB2 コマンドは、デフォルトの AMI サービス・ポイント構成を使用して XML メッセージを
読み込みます。
・ 表から XML メッセージを構成し、メッセージ・キューに直接送信する。あるいは、キューか
ら XML メッセージをリレーショナル表に分解する。以下の例は、XML エクステンダーのプ
ロシージャーを使用して XML メッセージを分解し、格納する方法を示しています。
このステートメントは、キューから XML メッセージを読み取り、dadFileName 変数によって指
定された DAD ファイルを使用してメッセージを分解し、タグなしデータ・フィールドを DAD
ファイル本体の指定されたデータベース表に格納します。
以下の例では、DB2 MQ 関数を呼び出してデータベースからデータを抽出し、それを WebSphere
MQ キューに入れるバッチ処理環境をセットアップします。
- 19 -
setup.bat の編集
注:DOS 短縮名(たとえば、「Program Files」ではなく「progra~1」)を使用していますが、
これは一部の SQL ストアード・プロシージャーにはパラメーターとして渡される文字数に制限
があること、またファイル名のスペースに関する問題を避けるためです。
まず、DOS 環境変数を設定して、製品がインストールされているディレクトリーを反映させる
必要があります。
WebSphere Studio Application Developer で、WindowsTestHarness ディレクトリーにあるファイル
setup.bat を右クリックし、
[Open With] -> [Default Text Editor]を選択して、そのファイル
を開きます。たとえば次のように、ファイルの中にある以下の行を環境に合わせて編集します。
REM DB2 XML Extender directory
set DB2EXTENDER=c:¥dxx
REM DB2 UDB directory
set SQLLIB=c:¥progra~1¥sqllib
REM Directory where the project is located on your file system
set XMLDIR=c:¥progra~1¥ibm¥applic~1¥worksp~1¥salesdb¥RDBNod~1
REM The location of the DB2 Command Line Processor
"c:¥progra~1¥sqllib¥bin¥db2cmd.exe"
変更内容を保存します。
retrievexml.bat の作成
Retrievexml.bat は、注文リストが入っている order.xml を受け取り、それをメッセージ・キューに
渡します。
ファイル retrievexml.bat をコピーし、新しいファイルの名前を retrieve_sales_data.bat に変更しま
す。このファイルを、先ほど同様にデフォルトのテキスト・エディターで開きます。このバッ
チ・ファイルに、XML メッセージを WebSphere MQ キューに追加する機能を付加します。最後
から 2 行目(db2 "terminate,"の前)に、以下の行を追加します。
DB2 "Values db2xml.MQSENDXMLFILE('%XMLDIR%¥order.xml')"
ファイルを保存し、終了します。
storedistributordata.bat の作成
[ File ] -> [ New ] -> [ Other ] -> [ Simple ] -> [ File ] の 順 に 選 択 し て 、
WindowsTestHarness ディレクトリーに新しいファイル store_distributor_data.bat を作成します。
- 20 -
WebSphere Studio Application Developer が外部エディターを見つけられないことを知らせるエ
ラー・メッセージが表示されますが、これは問題ありません。このファイルに以下の行を追加し
ます(折り返している行はすべて 1 行に収めてください。合計 3 行あり、1 行目は「DB2」、2 行
目は「Call」
、3 行目は「DB2」で始まっています)。
DB2 Connect to DIST_DB DB2
Call db2xml.DXXMQSHRED(DB2.DEFAULT.SERVICE, DB2.DEFAULT.POLICY,
"%XMLDIR%¥Window~1¥order.dad", ?)
DB2 Terminate
ファイルを保存し、終了します。
キュー・マネージャーの起動
[スタート] -> [プログラム] -> [IBM MQSeries 5.2.1] -> [MQSeries Services]の順
にクリックして、WebSphere MQ Services コントロール・パネルを起動します。キュー・マネー
ジャーがまだ起動していない場合、DB2MQ_DEFAULT_MQM 下にある[Queue Manager]を右ク
リックし、[All Tasks]を選択し、[Start]を選択して起動します。
- 21 -
セクション 5. バッチ処理の実行
概要
このセクションでは、企業間統合シナリオをエミュレートします。ここでは 2 つのバッチ・ファ
イルを使用します。1 つは注文をメッセージ・キューに追加するもので、もう 1 つはメッセー
ジ・キューから注文を検索し、データベースに挿入するものです。これは、毎晩バッチ処理で注
文の送受信を実行したい企業に役に立つはずです。
この実習は、販売業者と流通業者の間で確認通知メッセージをやりとりしたり、データベース内
の注文状態フラグを更新したりすることによってさらに展開することができます。また、
WebSphere Application Server を使用してリアルタイム・ソリューションをインプリメントするこ
とも可能です。さらに、Web 上で注文を入力し、Web アプリケーションによってその注文をデー
タベースに追加し、そのメッセージをメッセージ・キューにリアルタイムで送信したり、メッ
セージ受信後直ちに EJB を起動する JMS リスナーをインプリメントしたりすることも可能で
す。このように、この実習で示す概念は、必要なビジネス要件を満たすためにさまざまな方法で
拡張することができます。
バッチ処理の実行とキューの確認
setup.bat
を 実 行 し て
DB2
CLP
ウ ィ ン ド ウ を 開 き ま す 。 setup.bat
は 、
c:¥progra~1¥ibm¥applic~1¥workspace¥salesdb¥RDBNodeDad¥WindowsTestHarness ディレクトリーに
あります。その後、同じディレクトリーにあるコマンド retrieve_sales_data.bat を実行します。
[スタート] -> [プログラム] -> [IBM MQSeries 5.2.1] -> [MQSeries Explorer]の順
に ク リ ッ ク し て 、 MQSeries Explorer を 起 動 し ま す 。 メ ッ セ ー ジ ・ キ ュ ー ・ マ ネ ー ジ ャ ー
DB2MQ_DEFAULT_MQM 下にあるメッセージ・キューDB2MQ_DEFAULT_Q をダブルクリック
します。キュー内の先頭のメッセージ上で[Properties]を選択します。[Data]タブをクリッ
クし、[Message Data]下の[Text]ボックスをオンにします。これで、XML の追加が確認で
きるようになります。[OK]をクリックして、メッセージ・ウィンドウを閉じます。
メッセージの検索とデータベースの確認
DB2 CLP ウ ィ ン ド ウ に 戻 り 、 WindowsTestHarness デ ィ レ ク ト リ ー に あ る コ マ ン ド
store_distributor_data.bat を実行します。
- 22 -
DB2 コ ン ト ロ ー ル ・ セ ン タ ー を 開 き 、 DIST_DB デ ー タ ベ ー ス を 開 き 、[ Tables ] に あ る
PART_TAB 表を選択します。右クリックし、[Sample Contents]を選択します。これで、販売
代理店のデータベース内のデータを確認できるようになります。
- 23 -
セクション 6. まとめ
まとめ
お疲れ様でした。これで以下の作業に必要な手順はすべて完了しました。
・ DB2 データベースとトランスポートとして使用される XML ファイルとのマッピングの生成
・ メッセージ・キューへの XML ファイルの追加
・ キューからの XML メッセージの検索と適切な DB2 表へのデータの挿入
ぜひ、このチュートリアルで学んだ手法を利用して、独自の企業間アプリケーションを作成して
みてください。
後書き
このチュートリアルはすべて、developerWorks のチュートリアル生成プログラム Toot-O-Matic を
使用して、XML で作成されています。オープン・ソースの Toot-O-Matic ツールは、XSLT スタイ
ルシートといくつかの XSLT 拡張関数からなるもので、XML ファイルを複数の HTML ページ、
ZIP ファイル、JPEG 見出しグラフィックス、および 2 つの PDF ファイルに変換します。1 つの
ソース・ファイルから複数のテキスト・フォーマットとバイナリー・フォーマットを生成できる
ことからも、XML の強力さと柔軟性がわかります(DB2 Developer Domain 制作チームの時間と
労力の大幅な節減にもなっています)。
Toot-O-Matic のソース・コードは、www6.software.ibm.com/dl/devworks/dw-tootomatic-p から入手
で き ま す 。 Toot-O-Matic に よ る チ ュ ー ト リ ア ル の 作 成 方 法 に つ い て は 、 チ ュ ー ト リ ア ル
「Building tutorials with the Toot-O-Matic」をご覧ください。また、developerWorks では Toot-OMatic 専門のフォーラムも開設しています
(www-105.ibm.com/developerworks/xml_df.nsf/AllViewTemplate?OpenForm&RestrictToCategory=11) 。
ツールに関する皆さんのご意見・ご感想をお待ちしております。
- 24 -
Fly UP