レベル: 中級 Xiao Feng Zhao, Staff Software Engineer, IBM Qiang Wang, Staff Software Engineer, IBM Susan Malaika, Senior Technical Staff Member, IBM Keith Wells, Senior Software Engineer, IBM
2009年 01月 20日 IBM® DB2® 9 の pureXML® フィーチャーは、XML データのサポートに革命をもたらしました。pureXML では、XML を本来の階層のまま保管し、リレーショナル・データとも違う新しいデータ型として扱うことができるようになっています。IBM Data Studio では、複数の pureXML パラメーターを持つ Data Web Services を作成し、データベース内の pureXML インスタンスを操作することができます。XFG (XML Forms Generator) では、pureXML のサポートを利用して pureXML を XHTML ベースの XForm としてユーザーに表示することができます。さらに、pureXML インスタンスに関連する登録済み XML Schema を取得して、型情報と妥当性検査制約をターゲット pureXML XHTML/XForm の中に生成することもできます。このように XFG の pureXML サポートは、pureXML で保管された XML インスタンスのフォーム・インターフェースを簡単に作成できるようにします。
pureXML と Data Web Services
XML データを CLOB として保管したり、リレーショナル・テーブルにシュレッドしたりする時代は、もう過ぎ去りました。DB2 9 の pureXML フィーチャーは、XML データのサポートに革命をもたらしました。pureXML では、XML を本来の階層のまま保管し、リレーショナル・データとも違う新しいデータ型として扱うことができるようになっています。pureXML によって XML データとリレーショナル・データをシームレスに統合できるおかげで、アプリケーション開発が迅速に行えるようになり、非常に最適化が進んだ XML 索引を利用して検索パフォーマンスを改善することができ、さらに XML データに対して SQL と XQuery の両方を使ってクエリーを実行できるという柔軟性がもたらされます。また、XML データを pureXML で保管すると、Data Web Service のメカニズムを利用して Web Services として公開することが可能になります (この連載の第 1 回を参照)。
XFG における pureXML のサポート
 |
よく使われる頭字語
- CLOB: Character Large Object
- SOAP: Simple Object Access Protocol
- UI: User interface
- WSDL: Web Services Description Language
- XHTML: Extensible Hypertext Markup Language
- XML: Extensible Markup Language
|
|
XFG での pureXML サポートについて詳しいステップを説明するために、まずは DB2 に定義されたテーブルをベースとするミニ pureXML アプリケーションを作成するところから取り掛かります。このテーブルの構造は、表 1 に記載するとおりです。説明の前に、サンプル・レコードを pureXML 参照インスタンスとして挿入します。このレコードの XML1 列はどのスキーマにもバインドされていません。一方、XML2 列はリスト 1 に示す Express スキーマという登録済みスキーマにバインドされています。注: pureXML 参照インスタンスとは、XFG で XHTML/XForm を生成するために使用する XML テンプレートのことです。ご存知の通り、XFG は XML と WSDL のどちらからでもフォームを生成することができます。
表 1. テーブル構造の概要
リスト 1. Express スキーマ
Data Web Services を作成する
DB2 データベースにテーブルを作成したら、Data Studio を使用して、以下の SQL 文が含まれる SQL ファイルを作成します。
INSERT INTO XFGDEMO (ID, NAME, XML1, XML2) VALUES (:id, :name, :purexml1, :purexml2)
次に、Data Web Services を作成します。SQL ファイルから Data Web Services を作成する方法については、「参考文献」を参照してください。サンプル Web サービスを作成する際には、リスト 2 に示すような内容の insertRecord.wsdl という WSDL ファイルを生成します。ご覧のように、生成される WSDL ファイルには、PUREXML1、PUREXML2 という 2 つの pureXML パラメーターが含まれ、どちらも xsd:anyType にバインドされています。以降のステップでは、XFG を使用して、この 2 つの pureXML フィールドを XHTML/XForm の一部として視覚化します。
リスト 2. WSDL ファイルに含まれる pureXML パラメーター
XHTML/XForm を生成する
Data Studio を使用して Data Web Services を作成してデプロイし終わったら、今度はこのサービスとの間でデータの受け渡しをするための XHTML/XForm と、それに対応する XML ファイルを、XFG を使用して生成します。
insertRecord.wsdl ファイルを選択し、この WSDL ファイルを右クリックして XForms Generator メニューから Generate XHTML/XForms ウィザードを選択します。図 1 に、このウィザードの最初のステップを示します。
図 1. XFG ウィザードの最初のステップ
妥当性検査情報を生成する
XFG では、pureXML フィールドに妥当性検査制約を追加することができます。「Generate validation information (妥当性検査情報を生成する)」オプションを選択すると、妥当性検査エディター・ウィザード・ページが表示されるので、このページ以降のステップに従って妥当性検査のルールを追加で構成します。
データベースから pureXML インスタンスを取得する
XFG では、WSDL の pureXML フィールドを視覚化する上で、2 つの方法をサポートします。1 つは、ローカル・ファイル・システムで pureXML インスタンスを使用し、ローカル・ファイル・システムからバインディング・スキーマを読み取るという方法で、もう 1 つは pureXML インスタンスをデータベース内で使用し、XSR (XML Schema Repository) から登録済みスキーマを取得するという方法です。この 2 つの方法を両方とも使用できるようにするには、「Retrieve PureXML instance from Database (データベースから pureXML インスタンスを取得する)」チェック・ボックスを選択します。選択しない場合は、ファイル・システム内のスキーマしか使用することができません。このチェック・ボックスにチェック・マークを付けてから、Next をクリックしてください。
次に表示される画面では、insertRecord 操作を選択して Next をクリックします。すると、図 2 の Configure PureXML ウィザード・ページが表示されます。この図に示されているように、XFG はすべての pureXML パラメーターを認識します。XHTML/XForm を生成して表示するためには、pureXML インスタンスを参照として指定した上で、データベースから pureXML インスタンスを取得する必要があります。参照 pureXML インスタンスのうち、PUREXML1 はどのスキーマにもバインドされていない一方、PUREXML2 はリスト 1 に示した登録済みスキーマにバインドされていることに注意してください。
図 2. Configure PureXML ウィザード・ページ
Next をクリックすると妥当性検査エディター画面が表示されます。このエディターで、スキーマにバインドされていない PUREXML1 に妥当性検査ルールを追加します。
図 3. 妥当性検査エディター
ウィザードに従ってステップを進め、最後に Finish をクリックすると XHTML/XForm が生成されます。生成される XHTML ファイルは insertRecord.xhtml です。図 4 に、生成されたフォームを示します (図 4 の拡大版を参照してください)。
図 4. Firefox にレンダリングされた生成後の XHTML/XForm
分析
生成された XHTML フォームのフラグメントをリスト 3 に示します。このフラグメントには、2 つの fieldset タグがあります。それぞれのタグは、データベース内の指定されたインスタンスから生成されたもので、リスト 2 の WSDL ファイルに含まれる pureXML パラメーターに対応します。
リスト 3. pureXML XForm のフラグメント
XFG は、登録済みスキーマ (リスト 1 に示したスキーマ) に対するバインド情報を生成します。この情報は、リスト 4 のとおりです。
リスト 4. 登録済みスキーマから生成された pureXML バインド情報
その一方で、XFG はウィザードで設定された PUREXML1 妥当性検査ルールに対するバインド情報も生成します。このバインド情報はリスト 5 のとおりです。
リスト 5. 妥当性検査ルールから生成された pureXML バインド情報
複数のモデルをマージしてサブミットする
生成された XHTML/XForm には、以下の 3 つの XForm モデルが含まれます。
- 最初のモデルは、WSDL 操作、
insertRecord に対応するグローバル・モデルです。このモデルに含まれる要素は、ID、NAME、PUREXML1、PUREXML2 の 4 つだけです。これらの要素は、Data Web Services の 4 つのパラメーター名それぞれに対応します。
- 2 番目と 3 番目のモデルは、データベースまたはローカル・ファイル・システムから取得した PUREXML1、PUREXML2 のパラメーターに対応する pureXML モデルです。XHTML/XForm の 2 つの pureXML fieldset でのデータ変更はすべて、この 2 つのモデルに適用されます。
XFG は 2 番目と 3 番目の pureXML モデルを最初のグローバル XForm モデルにマージした上で、Data Web Services にサブミットします。モデルをマージするために使用するのは、リスト 6 に示す、 XHTML で生成されたクライアント・スクリプトです。このスクリプトは、XHTML フォームがサブミットされるときに、フォームの一部としてクライアントで実行されます。
リスト 6. モデルをマージする XHTML スクリプト
マージ後のデータ・モデル (リスト 7 を参照) は完全な SOAP メッセージとなります。クライアントはこの SOAP メッセージを Web サービスに直接サブミットし、フォームのデータを使って新しいレコードをテーブルに挿入します。
リスト 7. マージ後のモデル
まとめ
この記事では、XFG での DB2 pureXML サポートについて簡単に説明しました。XFG (XML Forms Generator) の pureXML サポートによって pureXML を XHTML ベースの XForm としてユーザーに表示できるだけでなく、pureXML インスタンスに関連する登録済み XML Schema の取得、そして型情報の生成に関しても、XFG に依存することができます。また、妥当性検査制約をフェッチしてターゲット pureXML XHTML/XForm に追加することも可能です。このように、XFG が pureXML をサポートしているおかげで、明らかに、pureXML で保管された XML インスタンスのフォーム・インターフェースを簡単に作成できるようになります。この 2 回の連載記事では、XForms、XFG、Data Studio、Web サービス、そして pureXML フィーチャーのサポートを紹介しました。この連載を読み終えた今、XFG を使い始めるのに苦労はしないはずです。バックエンドの Data Web Services に代わって機能する XHTML/XForm の UI を生成して、完全なデータ・サービス・ソリューションを構築してください。
ダウンロード | 内容 | ファイル名 | サイズ | ダウンロード形式 |
|---|
| Code sample for Listing 1 in article | Listing1.zip | 1KB | HTTP |
|---|
参考文献 学ぶために
製品や技術を入手するために
- DB2 Express-C: DB2 Express 9 データベース・サーバーの試用版を無料でダウンロードしてください。
- DB2 for Linux™, UNIX™, and Windows: DB2 のハイパフォーマンスと使い易さ、そして自己記述的な XML の利点を兼ね備えた対話型データ・サーバーの無料試用版をダウンロードしてください。
- alphaWorks の XML Forms Generator: 標準ベースのデータ駆動型 Eclipse プラグインをダウンロードしてください。このプラグインは、XML データ・インスタンスまたは WSDL 文書から、XHTML 文書に XForms マークアップを組み込んだ機能的フォームを生成します。
- IBM Data Studio: 統合データベース開発環境の無料の試用版をダウンロードしてください。データ・アクセスの効率性とパフォーマンスを向上させるこの環境では、アプリケーションを素早く設計、開発、デプロイメントできます。
- IBM 製品評価用の試用版ソフトウェア: developerWorks から直接ダウンロードできる試用版ソフトウェアで、次のプロジェクトを構築してください。DB2®、Lotus®、Rational®、Tivoli®、および WebSphere® によるアプリケーション開発ツールおよびミドルウェア製品のトライアル版が揃っています。
議論するために
著者について  | 
|  | Xiao Feng Zhao は、China Software Development Laboratory の China Emerging Technology Institute に勤務するスタッフ・ソフトウェア・エンジニアです。IBM インキュベーター・プロジェクトを専門とする彼は、Web 2.0、SOA、J2EE、そして Web 技術に関心を持っています。現在取り組んでいるのは、Ajax および SOA 標準に対応した PoCs 開発です。 |
 | 
|  | Qiang Wang は、China Software Development Laboratory の China Emerging Technology Institute でテクニカル・リーダーを務めています。専門は、IBM インキュベーター・プロジェクトと SOA 関連のトピックです。彼が関心を持っている分野には、J2EE、SOA、MDA/MDD、AOP、RUP、そしてプロジェクト管理があります。現在は、産業関連の SOA ソリューションのリーダーとして活躍しています。 |
 | 
|  | Susan Malaika は (IBM Software Group の一部である) IBM Information Management Groupのシニア・テクニカル・スタッフです。専門分野は XML、Web、データベースであり、Global Grid Forum ではグリッド環境でデータをサポートする標準を開発しました。彼女は IBM 製品のソフトウェア開発者としての経験の他に、インターネット・スペシャリスト、データ・アナリスト、アプリケーションの設計者および開発者としての経験もあります。また Web に関する共著作があり、トランザクション処理や XML に関する記事も執筆しています。彼女は IBM Academy of Technology の一員でもあります。 |
 | 
|  | Keith Wells は、ノースカロライナ州リサーチ・トライアングル・パークにある IBM のソフトウェア・エンジニアです。この数年間、Emerging Technologies および Emerging Technologies Toolkit に取り組んできました。彼は現在、合成文書、モデル駆動開発、ソフトウェア標準、XML ベース技術でのさまざまな可能性を調査しています。 |
記事の評価
|