本文へジャンプ

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

送信されたすべての情報は安全です。

  • 閉じる [x]

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


送信されたすべての情報は安全です。

  • 閉じる [x]

モデル・ドリブンXMLフォーム生成、第2回:Webサービス用のフォームの生成

XML Forms Generatorを使用してWSDLドキュメントからフォームを直接生成する

Jan Kratky, Lead, Workbench strategy for IBM internal tooling, IBM Japan, Software Group
Jan Kratky氏はJava1.0のリリース以来開発に携わっています。彼はIBMの内部ツールのワークベンチ戦略のリーダーです。
Kevin Kelly (kekelly@us.ibm.com), Senior Technical Staff Member, IBM Japan, Software Group
Kevin E. Kellyは、IBMのシニア・ソフトウェア・エンジニアとして、ソフトウェア標準化に従事しています。W3CのXForms Working Groupと、W3CのCompound Document Format Working Groupのメンバーとして、XMLベースでモデル駆動の手法に基づいた高速で効率的な標準の採用を図るべく、クライアント技術と新興のオープン・スタンダード・ベース技術に集中した活動を行っています。IBMに入社する前には、8年間 Rational Softwareを扱っており、UMLモデリングとJava技術に関した業務を行ってきました。Mercer Universityにて学位を、またUniversity of Montanaで修士を取得しています。
Steve Speicher (sspeiche@us.ibm.com), Senior Software Engineer, IBM Japan, Software Group
Steve Speicherは、ノースキャロライナ州Research Triangle ParkにあるIBMの、シニア・ソフトウェア・エンジニアです。新興技術に取り組んでおり、ここ数年はアプリケーション開発ツールの開発に従事しています。
Keith Wells, Advisory Software Engineer, IBM Japan, Software Group
Keith Wellsは、IBM RTPキャンパスのソフトウェア開発者です。過去数年以来、Emerging TechnologiesおよびEmerging Technologies Toolkitに取り組んでいます。

概要: XML Forms Generatorを詳しく見てみましょう。この2回シリーズの第1回では、このalphaWorksテクノロジーでモデル・ドリブン開発の概念とEclipse Modeling Framework(EMF)を使用してXMLインスタンス・データからフォームを生成する方法を説明しました。この第2回では、XML Forms Generatorを使用してWeb Services Description Language(WSDL)ドキュメントからフォームを生成する方法を説明します。

日付:  2005年 8月 25日
レベル:  上級 この記事の原文:  英語
アクティビティー: 2120 ビュー
お気軽にご意見・ご感想をお寄せください: 


この2回シリーズの第1回では、XMLインスタンス・ドキュメントを出発点として標準準拠のフォームを生成するXML Forms Generatorの機能を詳しく説明しました。フォーム生成の自動化によってフォームの開発が迅速になり、モデル・ドリブン開発テクニックが自動化に役立つことを示しました。

XMLインスタンス・データのほかに、収集しなければならないデータについての、もうひとつの共通記述メカニズムがWSDLです。WSDLとXML SchemaのEMFモデルを利用することによって、WSDLから直接フォームを生成することができ、わかりやすいフォーム送信応答ページも生成することができます。

それを行うのが、XML Forms Generatorです。すなわち、ソースWSDLドキュメントからXHTML/XFormsドキュメントを自動的に生成します。XML Forms Generatorのディストリビューションには、JavaServer Pages(JSP)Webサービス・レスポンス・テンプレートの生成およびテストのためのツールも含まれています。

生成されるフォームは、XHTMLおよびXForms 1.0標準に準拠しているので、通常のXHTML/XFormsレンダラーで表示することができます。

この記事で解説するツールは、オープン・ソースのEclipseツール・プラットフォームにシームレスに統合されていて、IBM alphaWorksからXML Forms Generatorとして無償で入手できます。

WSDLからの生成

XMLインスタンス・ドキュメントの場合(第1回を参照)と同様、WSDLドキュメントからフォームを生成するときにも、XML Forms Generatorはモデル・ドリブン・アプローチを使用します。GeneratorはWSDLドキュメントのプロパティー(操作、メッセージ部分、型定義など)を、WSDLおよびXML SchemaのEMFモデルによって定められたランタイムJava(TM)構造に読み込みます。結果として、この構造がWSDLドキュメントの分析を容易にして、典型的なXMLインスタンス・ドキュメントの作成を可能にし、それが(水面下で)、すぐに展開できる実用的なフォームの生成を可能にします。

略語

DTD -- Document Type Definition(文書型定義)
EMF -- Eclipse Modeling Framework
JSP -- JavaServer Pages
JSTL -- Java Standard Tag Library(Java標準タグ・ライブラリー)
MDA -- Model Driven Architecture(モデル・ドリブン・アーキテクチャー)
MDD -- Model Driven Development(モデル・ドリブン開発)
UML -- Unified Modeling Language(統一モデリング言語)
W3C -- World Wide Web Consortium(ワールド・ワイド・ウェブ・コンソーシアム)
XHTML -- eXtensible HyperText Markup Language(拡張可能ハイパーテキスト・マークアップ言語)
XMI -- XML Model Interchange(XMLモデル交換)
WSDL -- Web Services Description Language(Webサービス記述言語)

結果として生成されたフォームは、Webサービスのエンドポイントに直接送信することができます。ただし、XForms 1.0勧告では、このような呼び出しの成功が特に要求されているわけではないので、中間にミドルウェアを含める必要があるかもしれません。XML Forms Generatorのディストリビューションには、Java 2 Platform, Enterprise Edition(J2EE)Webアプリケーションが付属していて、これには、このような中間層ソリューションの簡単なデモを示す1組のサーブレットが含まれています(参考文献を参照)。

また、WSDLドキュメントはサービス呼び出しに応答して送信されるデータの構造をエンコードするので、WSDLによって定義されたWebサービス操作の呼び出しに対する応答を表示するテンプレートを生成することが可能です。応答テンプレートを生成するには、XSLTやXFormsそのものをswitch/caseメカニズムで使用するなど、いくつかのアプローチがあります。J2EE環境での対話例を示すために、XML Forms Generatorの現在のリリースは、応答テンプレートをJSPファイルとして生成します。

リクエスト・フォームの生成

複数送信フォームの複雑さを避けるために、XML Forms Generatorでは、ユーザーはフォームを生成する単一の操作を選択する必要があります。そのためには、WSDLを読み込んで、使用可能な操作を判断し、これらの操作のリストを含んだウィザード・ページを表示し、そこから1つを選択しなければなりません(図1参照)。


図1. WSDLドキュメントで定義された操作の選択
図1. WSDLドキュメントで定義された操作の選択

XML Forms Generatorは、さらに分析を行い、その結果として、フォームのデフォルトの送信ターゲット(実際のサービス・エンドポイントURL)が選択されます。


図2. サービス・アドレスに応じてオーバーライドされるフォームのデフォルトの送信ターゲット
図2. サービス・アドレスに応じてオーバーライドされるフォームのデフォルトの送信ターゲット

リスト1では、エンドポイントはWSDLドキュメントで宣言されたservice要素を調べることによって発見されます。


リスト1. service要素を含んだWSDLコード
                
<service name="GoogleSearchService">
<port name="GoogleSearchPort" binding="typens:GoogleSearchBinding">
<soap:address location="http://api.google.com/search/beta2"/>
</port>
</service>

選択された操作の入力メッセージ部分と、WSDLのtypesセクション内のXML Schemaで定義された型が調べられて、リクエスト・メッセージで送信されるすべてのデータを含んだプロトタイプXMLインスタンス・ドキュメントが生成されます。リスト2は、単一の操作とその入力メッセージ定義を含んだ単純なWSDLportType宣言です。


リスト2. WSDL portType宣言
                
<portType name="GoogleSearchPort">
<operation name="doSpellingSuggestion">
<input message="typens:doSpellingSuggestion"/>
<output message="typens:doSpellingSuggestionResponse"/>
</operation>
</portType>
<message name="doSpellingSuggestion">
<part name="key"            type="xsd:string"/>
<part name="phrase"         type="xsd:string"/>
</message>

この入力メッセージ宣言から、XML Forms GeneratorはXMLインスタンス・ドキュメント(リスト3)を生成し、それから実用的なXHTML/XFormsドキュメントが作成されます。インスタンス・ドキュメントそのものがSOAPエンベロープなので、フォームの送信前にインスタンスの特別な操作をしなくても、Webサービスを直接呼び出すことができます。


リスト3. XMLインスタンス・ドキュメント
                
<portType name="GoogleSearchPort">
<operation name="doSpellingSuggestion">
<input message="typens:doSpellingSuggestion"/>
<output message="typens:doSpellingSuggestionResponse"/>
</operation>
</portType>
<message name="doSpellingSuggestion">
<part name="key"            type="xsd:string"/>
<part name="phrase"         type="xsd:string"/>
</message>

XML Forms Generatorは、より複雑な型定義も理解でき、RPC自由形式とドキュメント自由形式の両方のサービス定義からフォームを生成することができます。

図3は、リスト3に示されている例から生成されたフォームであり、Internet ExplorerのformsPlayerプラグインで表示されています(参考文献を参照)。


図3. WSDL操作のために生成されたフォーム
図3. WSDL操作のために生成されたフォーム

サービス呼び出しのための中間物

フォームがブラウザーからWebサービスに直接送信される場合、ブラウザーが受け取る応答そのものがSOAPエンベロープです。エンベロープは生のXMLマークアップ以外のものとして表示されないと予想するのが妥当です。


図4. フォーム送信に対するSOAP応答の生のXML
図4. フォーム送信に対するSOAP応答の生のXML

表示可能な応答を作成するための最も単純なアプローチは、実際に呼び出しを行い、SOAPエンベロープを表示可能なXHTMLマークアップに変換する中間物を注入することです。


図5. サービス呼び出しを仲介するサーブレット
図5. サービス呼び出しを仲介するサーブレット

XML Forms Generatorのディストリビューションに付属のWebアプリケーションには、このアプローチの長所と短所を示すために、まさにこれを行うサーブレットが含まれています。このサーブレットは、Webサービス応答エンベロープを調べて、データを抽出し、そのデータを表示可能なXHTMLマークアップで包みます。


図6. サーブレットによって生成された応答表示
図6. サーブレットによって生成された応答表示

これで、エンド・ユーザーが応答データを使えるようになりましたが(図6を参照)、プレゼンテーション・メカニズムと呼び出しメカニズムがもつれ合っています。J2EEの「モデル2」アーキテクチャー・パターンが推奨しているようなモデル・ビュー・コントローラー方式の分離を実現する、より柔軟なアーキテクチャーを可能にするには、応答のビューを提供する別のテンプレートが必要です。

応答テンプレート

すでに述べたように、XML Forms Generatorでは、WSDLドキュメントを使用して、応答テンプレートとして使えるJSPを作成することができます。Java Standard Tag Library(JSTL)要素は、応答エンベロープのXMLを照会します。リスト4は、生成されたJSPマークアップの代表的な抜粋です。


リスト4. 生成されたJSPマークアップ
                
<?xml version="1.0" encoding="ASCII"?>
<jsp:root xmlns:jsp=http://java.sun.com/JSP/Page
xmlns:x="http://java.sun.com/jsp/jstl/xml" version="2.0">
...
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>
WSDL Response Template: doSpellingSuggestion Response
</title>
<link href="gen_default.css" rel="stylesheet"/>
</head>
<body>
<h1>doSpellingSuggestion Response</h1>
<p><b>Return</b></p>
<p><x:out select="$myDOM//return"/></p>
</body>
</html>
</jsp:root>

最初のビジュアル・プレゼンテーションは、以前のサーブレットのみのアプローチで生成されるものと大きく違うわけではありませんが、開発者やデザイナーがすぐに手を加えられる応答ページになります。基本的なフォーム要素を構築して、それらをXPath式でデータに対応させる作業は、XML Forms Generatorによってすでに行われています。


図7. JSP応答テンプレートによって可能になった、よりモデル2アーキテクチャーなフロー
図7. JSP応答テンプレートによって可能になった、よりモデル2アーキテクチャーなフロー

Eclipseとの統合

Eclipseプラグインとして、XML Forms GeneratorはEclipseおよびEclipse対応製品との緊密な統合を提供し、コンテキスト・メニュー、ウィザード、環境設定ページなど、便利なユーザー・インターフェース要素も備えています。

豊富なオプションによって、生成されたフォームのタイトルと見出しテキスト、スタイルシート、送信ターゲット、反復回数、テキスト領域生成などを制御することができます。

また、XML Forms Generatorでは、このシリーズの第1回で示したのと同じメカニズムによって、生成されたフォームをCompound XML Document Editor上でさまざまなレンダラーですばやく表示することができます。

多くの場合、マウスを数回クリックするだけで、実用的なフォームを生成できます。実際、XML Forms GeneratorにはWSDLドキュメント用の"Generate All"オプションがあり、XMLインスタンス・ドキュメント、フォーム、および応答JSPテンプレートのすべてを1回のアクションで生成することができます。


図8. WSDLドキュメント用の生成オプション
図8. WSDLドキュメント用の生成オプション

まとめ

XML Forms Generatorでは、EMFのモデル・ドリブン開発の概念を利用して、WebサービスのWSDL記述からフォームを生成することができます。XForms 1.0ではWebサービス呼び出しサポートは不要ですが(このサポートはXForms 1.1に含まれる予定です)、これまで見てきたように、Webサービスに対してXFormsを使用するためのオプションはきわめて限られています。この記事の例から生成されたフォームは、現在、サービス・エンドポイントに対して正常に呼び出すことができます。

標準準拠のモデル・ドリブン・ツールであるXML Forms Generatorを使用すると、Webサービス用の実用的なフォームをすぐに生成でき、あらゆるサービス指向アーキテクチャー(SOA)でフォーム開発を有利にスタートすることができます。

謝辞:IBMのKelvin LawrenceとHenry Tranに感謝します。


参考文献

学ぶために

製品や技術を入手するために

著者について

Jan Kratky氏はJava1.0のリリース以来開発に携わっています。彼はIBMの内部ツールのワークベンチ戦略のリーダーです。

Kevin E. Kellyは、IBMのシニア・ソフトウェア・エンジニアとして、ソフトウェア標準化に従事しています。W3CのXForms Working Groupと、W3CのCompound Document Format Working Groupのメンバーとして、XMLベースでモデル駆動の手法に基づいた高速で効率的な標準の採用を図るべく、クライアント技術と新興のオープン・スタンダード・ベース技術に集中した活動を行っています。IBMに入社する前には、8年間 Rational Softwareを扱っており、UMLモデリングとJava技術に関した業務を行ってきました。Mercer Universityにて学位を、またUniversity of Montanaで修士を取得しています。

Steve Speicherは、ノースキャロライナ州Research Triangle ParkにあるIBMの、シニア・ソフトウェア・エンジニアです。新興技術に取り組んでおり、ここ数年はアプリケーション開発ツールの開発に従事しています。

Keith Wellsは、IBM RTPキャンパスのソフトウェア開発者です。過去数年以来、Emerging TechnologiesおよびEmerging Technologies Toolkitに取り組んでいます。

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


developerWorks: サイン・イン


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。 プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。 お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

表示名をお選びください

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

(半角英数字で3文字以上31文字以下にする必要があります)


「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


この記事を評価する

コメント

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=XML, Open source, SOA and Web services
ArticleID=241484
ArticleTitle=モデル・ドリブンXMLフォーム生成、第2回:Webサービス用のフォームの生成
publish-date=08252005
author1-email=
author1-email-cc=
author2-email=kekelly@us.ibm.com
author2-email-cc=clarkega@us.ibm.com
author3-email=sspeiche@us.ibm.com
author3-email-cc=clarkega@us.ibm.com
author4-email=wellsk@us.ibm.com
author4-email-cc=dwxed@us.ibm.com

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。