第10章
この章では、ワイヤレスデバイスをサポートするexteNd Directorポータルアプリケーションを作成する方法について説明します。この章の節は次のとおりです。
exteNd Directorでは、モバイルコミュニティに使用されるPDAや携帯電話など、絶えず発展するさまざまなデバイスに、アプリケーションを簡単に拡張できます。 XML出力を作成する任意のポートレットでexteNd Directorのワイヤレス機能を使用し、ワイヤレスデバイスに適した出力を生成することができます。 ポートレットクラスを実装する際に、表示のサイズや種類に従ってポートレット出力を変更する必要はありません。
ワイヤレスデバイス用のアプリケーションを実現する方法は、2つの手順、すなわち デバイス固有レンダリングおよびデバイス固有ページネーションからなります。手順は連携して機能することが意図されていますが、どちらも個別に使用できます。たとえば、検索エンジンはデバイス固有ページネーションを使用して、PCやワイヤレスデバイスのWebブラウザについてページ当たりの指定ヒット数を表すことができます。
exteNd Directorアプリケーションの任意のXMLポートレットをワイヤレス対応に指定できるため、ポータルアグリゲータによってワイヤレスクライアントデバイスを自動的に識別し、ポートレットのXML出力をWML、cHTML、またはWeb Clippingなどのデバイス固有形式で表示できます。
ポータルは、ポータルのリソースセットに保存されているさまざまなデバイスのプロファイルリストを使用します。リストの更新は、新しいデバイスや形式の発売時にNovellWebサイトからダウンロードできます。
1ページに収まる小さなアプリケーションコンテンツは、適切なデバイス固有形式で表示することの他に、何も必要でない場合があります。つまり、長さ拡大によるページ幅の減少は、許容される場合と許容されない場合があります。垂直方向のスクロール(スクロールする場合)はどれだけ1ページに許容可能か、判断することが必要です。
ポートレットコンテンツは、大きすぎて1ページに収まらないこともあります。 exteNd Directorアプリケーションの任意のXMLポートレットを「デバイス固有ページネーション」に指定すると、ポートレットのXML出力を小さなブロックに分割し、コンテンツ表や前ボタン次ボタンなど、ナビゲーション用の項目を追加することができます。
開発環境に搭載されたグラフィックエディタを使用してサンプルのポートレットコンテンツファイルをドラッグし、レイアウトとナビゲーションの両方を形成する「データ定義」にドロップできます。作業中に、データ定義により生成された出力を即座にプレビューできます。
ランタイム時に「デバイストランスコード」エンジンは、データ定義をポータルの出力に適用してからポータルアグリゲータに送ります。
exteNd Directorソフトウェアには、デバイス固有レンダリングを使用するStockQuotePortletというサンプルのワイヤレス対応ポートレットが含まれています。 このポートレットを使用して、アプリケーションをワイヤレス対応にする方法について学習することができます。
ポートレットウィザードを使用してワイヤレス対応ポートレットを作成すると、操作の大部分を自動的に処理できます。
ポートレットウィザードの使用に関する節の説明にしたがって、ポートレットウィザードを起動します。
デバイスがポートレットのデータ定義をすでにトランスコードしている場合は、ここでそのデータ定義を指定します。その他の場合は、[完了]をクリックして、デバイストランスコードデータ定義の作成に移ります。
既存ポートレットをワイヤレス対応にするには、次の手順で説明されているとおり、複数のファイルの変更または作成、あるいはその両方を行う必要があります。
次に示すように、doView()メソッドで、MIMEタイプをMIME_TYPE_XMLに設定します。
response.setContentType(com.novell.afw.portlet.api.EbiPortletConstants.MIME_TYPE_XML);
注記: トランスコードをサポートするワイヤレスポートレットを作成する場合は、MIMEタイプをMIME_TYPE_DEVICE_PROFILINGに設定する必要があります。
トランスコードをサポートする場合は、スタイルセクションで「データ定義」ファイルのファイル名を記入します。データ定義ファイルは、この時点で存在する必要はありません。
<style> <name>MyPortletDefault</name> <display-name>MyPortlet Default Style</display-name> <user-agent> <device-name>Generic_HTML</device-name> <file-name> $RESOURCE_SET$/portal-style/MyPortlet_HTML.xsl </file-name> </user-agent> <user-agent> <device-name>Generic_WML</device-name> <file-name> $RESOURCE_SET$/portal-style/MyPortlet_WML.xsl </file-name> </user-agent> <data-definition> $RESOURCE_SET$/portal-data-definition/PhoneList </data-definition> </style>
スタイル設定で、選択されたスタイルを検査します。 ポートレットに対してポートレットスタイルがすでに作成されている場合は、ポータルスタイル記述子を変更するへ進みます。 まだ作成されていない場合は、次のいずれかを実行します。
[GenericStyle]を選択して、デバイストランスコードデータ定義の作成に進みます。
<auto-register enabled="true"> <category>Wireless</category> </auto-register>
記述子に名前を付け、ポータルスタイル記述子を変更するに進みます。
ユーザエージェントは、デバイスプロファイルをXSLスタイルシートにマップすることにより、特定のユーザ環境にポータルスタイルが表示される方法を指定します。
[Device Name](<device-name>
)を[Generic_WML]に設定します。デバイス名は、ユーザ環境を定義するデバイスプロファイルの名前です。
[Data Definition](<dp-file-name>
)をXSLスタイルシートに設定します。
注記: ポータルスタイル記述子GUIのData Definitionカラムを、デバイストランスコードデータ定義と混同しないでください。
ポートレットのスタイルシートがない場合は、portal-style
ディレクトリにあるGeneric_WML.xsl
などの一般スタイルシートを使用します。
<user-agent> <device-name>Generic_WML</device-name> <dp-file-name>Generic_WML.xsl</dp-file-name> </user-agent>
デバイスプロファイルの詳細については、デバイスプロファイルエディタの使用を参照してください。
ワイヤレスレイアウトマネージャによって、[ワイヤレスプロファイル]の定義が可能になります。 Webブラウザを使用して、利用可能なワイヤレス対応ポートレットを選択し、表示する順序を設定します。 リストには、カテゴリWirelessを持つポートレットが含まれています。
ポータルパーソナライザを開いて[ポータルワイヤレスレイアウト]セクションまでスクロールし、[ワイヤレスレイアウトの編集]をクリックします。
動作中のワイヤレスポートレットを見るには、[ポートレットの保存]をクリックし、[MyPortal]に進んで、[MyWirelessProfile]をクリックします。
exteNd Directorは、デバイスプロファイルの作成や編集を行うグラフィックエディタを開発環境で提供します。
次の仕様は、デバイスプロファイルエディタのフィールドを説明します。
http://www1.wapforum.org/tech/terms.asp?doc=WAP-248-UAProf-20011020-a.pdf
WapforumではRDFを使用して情報を説明するのに対し、exteNd Directorは記述子タグを使用するため、WAP仕様とexteNd Directorエディタは少し異なります。このため、XMLソースビューでtag-completionにW3Cスキーマを使用することができます。
トランスコードデータ定義は、出力データの分割方法やナビゲーション項目の追加方法の指定に使用できるポートレット出力の特定のタグを識別するXMLファイルです。 参照ファイルの作成で説明されているとおり、最初の手順は、ポートレット出力の代表的なサンプルをキャプチャすることです。
出力サンプルを得たら、カラムと行のあるテーブルとして考えます。 次の手順は、行セパレータのタグを識別することです。行セパレータを定義したら、出力データを次のオブジェクトにマップできます。
オブジェクト |
説明 |
---|---|
Listブロック |
すべての行を含むビュー |
Contentブロック |
1行のみ含むビュー |
Element |
カラム |
Link |
リストブロックをコンテンツブロックに接続します |
参照ファイルを作成するには、実際のXMLポートレット出力のサンプルをファイルにキャプチャする必要があります。 次のように実行すれば、任意のXMLベースポートレットをXMLをコンソールに印刷できます。
// Create the XML Document Document newDoc = EboXmlHelper.getNewDocument(); // Add elements to the document ... // Print the document to the console com.sssw.fw.util.EboXmlHelper.printDOMTree(newDoc);
実際のデータ定義ファイルと競合しない名前を使用して、portal-data-definitionフォルダにテキストファイルを保存します。 たとえば、PhoneListポートレットのXML出力は次のとおりです。必要に応じて、この出力をコピーし、PhoneListReference.xmlというテキストファイルに貼り付けることができます。
<?xml version="1.0"?> <phonelist compInstance="a63974dcac7e4f28bd2c49ab7b1921d2" compid="PhoneList" post-url="http://localhost/Director/Portal/main /comp/PhoneList"> <results querystring="c"> <employee> <first-name>Samuel</first-name> <last-name>Craddock</last-name> <phone-number>(617) 343-6505</phone-number> <email>scraddock@silverdemo.com</email> </employee> <employee> <first-name>John</first-name> <last-name>Chester</last-name> <phone-number>(617) 343-6506</phone-number> <email>jchester@silverdemo.com</email> </employee> <employee> <first-name>Lynn</first-name> <last-name>Campbell</last-name> <phone-number>(617) 343-6507</phone-number> <email>lcampbell@silverdemo.com</email> </employee> </results> </phonelist>
exteNd Directorは、トランスコードデータ定義ファイルを作成するウィザードを含んでいます。
トランスコード定義ファイルに名前を付け、ファイルを追加するリソースセットを指定して(必要な場合)、[次へ]をクリックします。
行セパレータを選択します。 サンプルポートレット参照ファイル(PhoneListReference.xml)を使用している場合は、[Employee]を選択します。
この節では、サンプルポートレットデータ定義ファイルPhoneList.xmlおよび参照ファイル(PhoneListReference.xml)を使用して、手順を説明します。
参照ドキュメントを開きます(まだ開いていない場合)。参照ペインを右クリックし、[参照ファイルを開く]を選択します。
注記: サンプルポートレット参照ファイルのファイル名は、PhoneListReference.xmlです。
参照ペインは、ツリービューを使用してデータの構造を表示します。ビューのブランチは、プラス(+)をクリックすると拡大し、マイナス(-)をクリックすると閉じます。
行セパレータをすでに定義している場合(データ定義ファイルの作成で説明されているとおり)、この手順は省略します。
注記: サンプルポートレット参照ファイルを使用している場合は、次の2つのブロックを作成します。[employeeList]というListブロックおよび[employeeDetails]というContentブロック。
[Style]を指定して、このブロックのデフォルトスタイルのみ上書きできます。
注記: ブロック名の右にある小さな三角形()をクリックして、カーソルを他のオブジェクトに移動させた場合にもブロックを開いたままにします。三角形の色が変わり、回転して下方向を指し(
)、ブロックが開いたままロックされていることを示します。デフォルトでは、カーソルを他の場所に移動すると、エディタはオブジェクトを閉じます(オブジェクト名のみ表示します)。
参照ペインで要素を選択し、定義ペインのブロックにドラッグします。
注記: サンプルポートレット参照ファイルを使用している場合は、次の要素を追加します。employeeListにfirstName、lastNameemployeeDetailsにfirstName、phoneNumber、email
[XPath expr]フィールドは、XMLドキュメントの部分を特定するXpathの式です(XMP Path言語)。このフィールドを使用して、要素をリマップできます。
XPathの詳細については、言語仕様(http://www.w3.org/TR/xpath)を参照してください。
注記: サンプルポートレット参照ファイルを使用している場合は、次のとおりに設定します。From blockをemployeeListFrom elementをfirstNameTo blockをemployeeDetails
Test Viewでは、作成したトランスコード定義により生成された出力を表示できます。
設定ペインで、ドロップダウンリストから使用できるユーザエージェントを1つ選択します。リストは、登録されたポータルのデバイスタイプをすべて含んでいます。
注記: サンプルポートレットデータ定義を使用している場合は、[User-agent]を[Generic_WML]に設定します。
ドロップダウンリストから、使用できるスタイルを1つ選択します。リストは、選択されたユーザエージェントをサポートするスタイルをすべて含んでいます。
注記: サンプルポートレットデータ定義を使用している場合は、[Style]を[PhoneListStyle.xml]に設定します。
ナビゲーションペインを検査します。ビューのブランチは、プラス(+)をクリックすると拡大し、マイナス(-)をクリックすると閉じます。
項目をクリックして、結果ペインのトランスコードエンジン出力を見ます。
ヒント: 表示されたデータのグラフィックビューを行うには、ワイヤレスプロファイル をセットアップして(ワイヤレスレイアウトマネージャの使用で説明されているとおり)、 PhoneListポートレットをプロファイルに追加します。
Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved. more ...