(57)【要約】【課題】完全なストリームベースのシリアル化を用いることによりナビゲーション状態を新しいポータル・ページのＵＲＬまたはヘッダ中に効率的にシリアル化するための方法、システム、およびコンピュータ・プログラムを提供する。【解決手段】本発明のシリアル化は、両方ともストリームベースである２つのサブプロセスに分割される。階層指向である第１のストリームベースのシリアル化サブプロセスは、ナビゲーション状態の階層型オブジェクト表現を用い、これを一連のイベントに変換する。イベントは、これらのイベントに関連付けられた情報を圧縮するための様々な戦略のための入力として働く。このサブプロセスの終わりに、受信されたイベントにより運ばれた圧縮されたナビゲーション状態情報が、文字ベースの表現に変換され、ナビゲーション状態の階層構造が、受信されたイベントの順序から導き出されて付加的な文字ベースの表現に変換され、両方とも第２のサブプロセスに直接的に流される。  階層に依存しない第２のストリームベースのシリアル化サブプロセスは、第１のサブプロセスの結果を用い、さらなる圧縮および文字符号化戦略を適用し、最終的に圧縮および文字符号化された情報を前記新しいポータル・ページのＵＲＬまたはヘッダ中に流す。  両方のサブプロセスは、共にシームレスにリンクされる。  本発明のストリームベースのシリアル化方法は、ＵＲＬを生成するために必要な全体的な処理時間を最小限にするので効率的であり、さらにＵＲＬ長さおよびマークアップ・サイズに関する要件を満たすためにシリアル化結果ができるだけ短くなることを保証するので効果的でもある。【選択図】図１
2009519519.tif 000002
【特許請求の範囲】
【請求項１】
ポータルにおけるナビゲーション状態を効率的にシリアル化するための方法であって、
前記ポータルは、サーバ・システム中で稼動しており、
前記サーバ・システムは、通信チャネルを介した前記ポータルとクライアントのブラウザとの間の通信を可能にする通信コンポーネントを含み、
前記ポータルは、
要求されたポータル・ページのレイアウトを決定し、
前記ポータル・ページに属する種々のページ要素のレンダリングを呼び出し、
前記ポータル・ページを表示用に前記クライアントのブラウザに伝送し、
前記ポータル・ページの少なくとも１つのページ要素が、前記ポータルによる新しいページまたは新しいページ要素のレンダリングを起動するためのリンク機能性を提供し、
前記ページ要素において前記リンクをクリックすることによる各ユーザ対話が、前記ポータル側における新しいナビゲーション状態を生成し、
前記ナビゲーション状態は、特定のクライアントのすべての以前のナビゲーション対話の結果として前記ポータルの現在のビューを記述し、
新しいポータル・ページについてのクライアント要求に応答して、前記ナビゲーション状態が、シリアル化された形で各ＵＲＬ中または前記新しいポータル・ページのヘッダ中あるいはその両方に符号化され、
以下の２つのサブプロセス：
（１）前記ナビゲーション状態の階層型オブジェクト表現を用いこれを一連のイベントに変換する階層指向である、第１のストリームベースのシリアル化サブプロセスであって、
前記イベントは、これらのイベントに関連付けられた情報を圧縮するための様々な戦略のための入力として働き、
当該サブプロセスの終わりに、
前記受信されたイベントにより運ばれた圧縮ナビゲーション状態情報が、文字ベースの表現に変換され、
前記ナビゲーション状態の階層構造が、前記受信されたイベントの順序から導き出されて付加的な文字ベースの表現に変換され、
前記文字ベースの表現および前記付加的な文字ベースの表現の何れもが、もう一方のサブプロセスに直接的に流される、
第１のストリームベースのシリアル化サブプロセスと、
（２）  前記第１のストリームベースのシリアル化サブプロセスの結果を用い、
さらなる圧縮および文字符号化戦略を適用し、
最終的に圧縮および文字符号化された情報を前記新しいポータル・ページのＵＲＬまたはヘッダ中に流す、
階層に依存しない第２のストリームベースのシリアル化サブプロセスと、
を含み、両方のサブプロセスが、共にシームレスにリンクされる、
方法。
【請求項２】
前記第１のストリームベースのシリアル化サブプロセスがイベントベースのフィルタ・チェーンに基づき、
各フィルタは、特に割り当てられたイベントのサブセットに関して動作し、
前記イベントに関連付けられている前記ナビゲーション状態情報を圧縮するための一定の戦略を適用する、
請求項１に記載の方法。
【請求項３】
第１のストリームベースのシリアル化サブプロセスが、
ナビゲーション状態の階層型オブジェクト表現を横断することにより前記イベントベースのフィルタ・チェーンのための前記イベントのストリームを生成し、
前記オブジェクト表現の各訪ねられたノードについて、ノード名ならびにノード属性が格納されたｓｔａｒｔＮｏｄｅイベント、ノード値が格納されたｎｏｄｅＶａｌｕｅイベント、および前記ノードの終わりを示すｅｎｄＮｏｄｅイベントを生成する、
請求項２に記載の方法。
【請求項４】
前記生成されたｓｔａｒｔＮｏｄｅ、ｎｏｄｅＶａｌｕｅ、およびｅｎｄＮｏｄｅイベントが、ナビゲーション状態オブジェクト表現の階層型樹状構造を反映する順序で生成され、
前記ｅｎｄＮｏｄｅイベントが、前記それぞれのノードの完全なサブツリーが処理されて初めて生成される、
請求項３に記載の方法。
【請求項５】
前記イベントベースのフィルタ・チェーンの終わりに、前記受信されたイベントの順序および前記受信されたｓｔａｒｔＮｏｄｅイベントのネスティングで設定される前記階層構造を符号化するために特別なフィルタが用いられる、
請求項４に記載の方法。
【請求項６】
前記第２のストリームベースのシリアル化サブプロセスが文字ベースのライタ・チェーンを用い、
各ライタが、第１のストリームベースのシリアル化サブプロセスの終わりに生成された前記受信された文字情報に関して一定の圧縮または文字符号化戦略を実行する、
請求項２に記載の方法。
【請求項７】
前記文字ベースのライタ・チェーンの終わりに、前記圧縮された文字情報をポータル・ページの前記割り当てられたＵＲＬまたはヘッダ中に直接的に流す特別なライタが用いられる、
請求項６に記載の方法。
【請求項８】
ポータルにおけるナビゲーション状態を効率的にシリアル化するためのシステムであって、
前記ポータルは、前記システム中で走っており、
前記システムは、通信チャネルを介した前記ポータルとクライアントのブラウザとの間の通信を可能にする通信コンポーネントを含み、
前記ポータルは、
要求されたポータル・ページのレイアウトを決定し、
前記ポータル・ページに属する種々のページ要素のレンダリングを呼び出し、
前記ポータル・ページを表示用に前記クライアントのブラウザに伝送し、
前記ポータル・ページの少なくとも１つのページ要素が、前記ポータルによる新しいページまたは新しいページ要素のレンダリングを起動するためのリンク機能性を提供し、
前記ページ要素において前記リンクをクリックした場合に各ユーザ対話についての新しいナビゲーション状態を生成するナビゲーション状態管理コンポーネントを含み、
前記ナビゲーション状態は、特定のクライアントのすべての以前のナビゲーション対話の結果として前記ポータルの現在のビューを記述し、
前記ナビゲーション状態管理コンポーネントが、新しいポータル・ページについてのクライアント要求に応答して、前記ナビゲーション状態を、シリアル化された形で各ＵＲＬ中または前記新しいポータル・ページのヘッダ中あるいはその両方に符号化し、
以下のさらなる機能コンポーネント：
（１）前記ナビゲーション状態の階層型オブジェクト表現を用いこれを一連のイベントに変換する階層指向である第１のストリームベースのシリアル化サブプロセスを提供する機能コンポーネントであって、
前記イベントは、これらのイベントに関連付けられた情報を圧縮するための様々な戦略のための入力として働き、
当該サブプロセスの終わりに、
受信されたイベントにより運ばれた圧縮ナビゲーション状態情報が、文字ベースの表現に変換され、
前記ナビゲーション状態の階層構造が、前記受信されたイベントの順序から導き出されて付加的な文字ベースの表現に変換され、
前記文字ベースの表現および前記付加的な文字ベースの表現の何れもが、もう一方のサブプロセスに直接的に流される、
機能コンポーネントと、
（２）  前記第１のサブプロセスの結果を用い、
さらなる圧縮および文字符号化戦略を適用し、
最終的に圧縮および文字符号化された情報を前記新しいポータル・ページのＵＲＬまたはヘッダ中に流す、
階層に依存しない第２のストリームベースのシリアル化サブプロセスを提供する機能コンポーネントと、
を備え、両方の機能コンポーネントにより提供される両方のサブプロセスが、共にシームレスにリンクされる、
システム。
【請求項９】
前記機能コンポーネントが、前記ナビゲーション状態管理コンポーネントの一体型部分である、
請求項８に記載のシステム。
【請求項１０】
前記ナビゲーション状態管理コンポーネントが、前記ポータルの一部である、
請求項９に記載のシステム。
【請求項１１】
第１のサブプロセスを提供する前記機能コンポーネントが、
ナビゲーション状態の階層型オブジェクト表現を横断することによりイベントベースのフィルタ・チェーンのための前記イベントのストリームを生成し、
前記オブジェクト表現の各訪ねられたノードについて、ノード名ならびにノード属性が格納されたｓｔａｒｔＮｏｄｅイベント、ノード値が格納されたｎｏｄｅＶａｌｕｅイベント、および前記ノードの終わりを示すｅｎｄＮｏｄｅイベントを生成し、
前記生成されたｓｔａｒｔＮｏｄｅ、ｎｏｄｅＶａｌｕｅ、およびｅｎｄＮｏｄｅイベントが、ナビゲーション状態オブジェクト表現の階層型樹状構造を反映する順序で生成され、
前記ｅｎｄＮｏｄｅイベントが、前記それぞれのノードの完全なサブツリーが処理されて初めて生成され、
前記イベントベースのフィルタ・チェーンの終わりに、前記受信されたイベントの順序および前記受信されたｓｔａｒｔＮｏｄｅイベントのネスティングで設定される前記階層構造を符号化するために特別なフィルタが用いられる、
請求項８に記載のシステム。
【請求項１２】
請求項１〜７に記載の方法を実行するためのコンピュータ実行可能命令を含む、コンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ポータル・アプリケーションにおけるナビゲーション状態（navigationalstate）を効率的にシリアル化（serialize）するための方法、システム、およびコンピュータ・プログラムに関し、特にポータル・ページ（Portalpage）のマークアップ・サイズを低減すること、ＵＲＬ長さを低減すること、およびポータル・ページの一部であるＵＲＬを生成するために必要な処理時間を低減することに関する。
【０００２】
本発明により用いられるようなナビゲーション状態は、「特定のクライアントのすべてのナビゲーション対話の結果であるポータルの現在のビュー」を記述する。クライアントは、ポータル・ページと対話することにより、例えば、新しいページにナビゲートすることにより、異なるビューを要求（紹介）することができる。このタイプのユーザ対話は、サーバ側状態を変えず、単にサーバの新しいビューを供給するだけであり、従ってそれは、ＨＴＴＰの観点から言えば「安全な（safe）」操作である。このユーザ対話の性格は、クライアントが、自分のブラウザの戻るおよび進むボタンを用いてその最近のビューを介して後方および前方にナビゲートでき、クライアントがビューをブックマークでき、ブラウザ・ブックマークを呼び出すことにより後の時点でそれらのビューに戻ることができるものである。
【０００３】
ＨＴＴＰの主な特徴の１つは、ＨＴＰがステートレス・プロトコル（statelessprotocol）であること、すなわち、複数の要求／応答対話にまたがるセッションの概念が、ＨＴＴＰ中に存在しないことである。しかしながら、ほとんどすべてのアプリケーション・シナリオが、複数の要求全体にわたるそれらの状態を保存するための何らかの機構を必要とするので、（論理的）ステートフル・セッション（statefulsession）を作成することを考慮し、現在では最新技術であると確かに見なされ得るいくつかの機構が現れている。２つの最も普及している状態保存機構は、クッキー（Cookie）（ＲＦＣ  ２１０９）および隠し入力フィールド（HiddenInput Field）である。
【０００４】
しかしながら、どちらの方法にも、ブックマーク可能性（bookmarkability）、キャッシング（caching）、戻る／進むボタン（back/forwardbutton）、およびサーチ・エンジンによる索引付け（「クローラビリティ（crawlability）」）に関していくつかの大きな欠点がある。従って、ナビゲーション状態をＵＲＬ中に符号化する新しいナビゲーション状態保存方法が出現している。異なるナビゲーション状態は、異なるＵＲＬという結果になる。以前はフォームベースのアプリケーションにすぎなかったが、今日のウェブ・アプリケーションは、特に、多くのコンポーネント（ポートレット（ポートレット））が１つのより大きなポータル・アプリケーションに結合されるポータル環境において、ますます複雑になりつつある。
【０００５】
これは、ポータルのある一定のビューを「記述する（describing）」ナビゲーション状態が、かなりかさばるという問題につながる。なぜならば、ポータルは、ユーザが対話したすべてのポートレットのナビゲーション状態を集約しなければならないからである。従って、ナビゲーション状態をＵＲＬへ効率的に（それぞれ）シリアル化する（および逆シリアル化する（de-serialize））機能は、リリースのたびに押し上げられている今日の性能要件（「より速く！」、「より少ないメモリで！」）を満たすための重要な機能と考えられなければならない。
【背景技術】
【０００６】
ポータル・アプリケーションにおいて、ナビゲーション状態は一般に、現在のナビゲーション状態を記述する情報全体を含む階層型樹状ドキュメントとして表される。階層型ドキュメントの有効な構造は、状態モデル（典型的には、ドキュメント・タイプ定義（ＤＴＤ）またはＸＭＬスキーマ定義（ＸＳＤ））中で定義される。ナビゲーション状態を、ＵＲＬまたは新しいポータル・ページのヘッダ（例えば、ＨＴＭＬベースのタグ中の）に符号化できるためには、この階層型状態キュメントをシリアル化することが必要である。
【０００７】
階層型オブジェクト構造をシリアル化するための従来技術の手法は典型的には、ＸＭＬシリアル化手法かＪａｖａ（登録商標）オブジェクト・シリアル化に一般に基づく。ポータルの分野において、これらの手法は十分ではない。なぜならば、それらの手法は、ポータル固有のナビゲーション状態の特性を考慮しないからである。ポータルは、いくつかのアプリケーション、いわゆるポートレットをより大きいポータル・アプリケーションに結合する。従って、ポータルは、すべてのそれらのポートレットのナビゲーション状態も同様に管理する必要がある。言い換えれば、特定のポータル・ビューを記述するナビゲーション状態は、すべてのポートレットのナビゲーション状態を含む必要がある。ポートレットのナビゲーション状態は典型的には、ポートレット・プログラマにより定義されるいわゆるレンダ・パラメータ（render parameter）によって表現される。従って、ポータルは、ポートレットのナビゲーション状態を制御することができない。ポートレット・プログラマは、自分が必要とするだけいくらでも多くのまたいくらでも複雑なレンダ・パラメータを自由に任意に定義することができる。ナビゲーション状態シリアル化中にこの事実を無視することは、２ＫＢのＨＴＴＰ固有のＵＲＬ長さ限界を超えさえする長いＵＲＬという結果になる可能性が最も高い。ポートレット固有の状態に加え、ポータルのナビゲーション状態は、ページ・ナビゲーション制御、管理ツールバー、およびポータル・ユーザ・インタフェースのその他の要素の状態も含まなければならない。従って、ある特定のポータル・ビューのナビゲーション状態は、異常に複雑になる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
既存の従来技術の欠点を回避しつつ、ポータルのナビゲーション状態を効率的にシリアル化するための方法、システム、およびコンピュータ・プログラムを提供することが本発明の目的である。
【課題を解決するための手段】
【０００９】
本発明は、ナビゲーション状態の階層型オブジェクト表現（入力）を、最小長さの文字ベースの表現（出力）に変換する完全にストリームベースのシリアル化を用いる。基本的に、本発明は、ストリームベースのシリアル化を２つのサブプロセスに分割する。
【００１０】
階層指向である第１のストリームベースのシリアル化サブプロセスは、ナビゲーション状態の階層型オブジェクト表現を用い、これを一連のイベントに変換する。イベントは、これらのイベントに関連付けられた情報を圧縮するための様々な戦略のための入力として働く。サブプロセスの終わりに、受信されたイベントにより運ばれた圧縮ナビゲーション状態情報が、文字ベースの表現に変換され、ナビゲーション状態の階層構造が、受信されたイベントの順序から導き出されて付加的な文字ベースの表現に変換され、両方とも第２のサブプロセスに直接的に流される。
【００１１】
階層に依存しない第２のストリームベースのシリアル化サブプロセスは、第１のサブプロセスの結果を用い、圧縮および文字符号化された情報をＵＲＬまたは前記新しいポータル・ページのヘッダ中に流す前に、さらなる圧縮および文字符号化戦略を適用する。両方のサブプロセスは、共にシームレスにリンクされる。
【００１２】
本発明のストリームベースのシリアル化は、ＵＲＬを生成するために必要な全体的な処理時間を最小限にするので効率的であり、さらにＵＲＬ長さおよびマークアップ・サイズに関する要件を満たすためにシリアル化結果ができるだけ短くなることを保証するので効果的でもある。
【００１３】
本発明の好ましい実施形態において、階層指向の第１のサブプロセスは、ナビゲーション状態情報の言及された圧縮をつかさどるイベントベースのフィルタ・チェーンに基づく。これらのフィルタの各々は、このサブプロセスの冒頭で生成された受信イベントに対して一定の戦略を適用する。イベントを処理した後、フィルタは、関連付けられた（現在は圧縮されている）状態情報を含むイベントを、フィルタ・チェーンの一部である次のフィルタに渡す。
【００１４】
階層に依存しない第２のサブプロセスは、好ましくは、文字ベースのライタ・チェーンを用いて実現される。これは、受信情報を直ちに圧縮するために、第１のシリアル化サブプロセスの範囲で圧縮された状態情報を、そのライタ・チェーンに直接的に流すことを考慮している。
【００１５】
本発明のシリアル化方法は、任意の戦略を加えることを考慮しており、イベントベースのフィルタ・チェーンまたはライタに含まれるどちらのフィルタも、文字ベースのライタ・チェーンに含まれる。
【００１６】
本発明の好ましい実施形態において、イベントベースのフィルタ・チェーンは、以下の２つの戦略を実施する２つのフィルタを含む：
【００１７】
いわゆるレンダ・パラメータ・マッピング戦略は、ポートレットのナビゲーション状態、特にポートレットのレンダ・パラメータに注目する。レンダ・パラメータ・マッピング戦略は、パラメータ名および値の長さについて特定のポートレットのレンダ・パラメータを監視する。もしパラメータ名または値が、一定の所定の閾値を超えれば、戦略は、完全なパラメータを、１文字のみから成る短いキーにマッピングする。この戦略は、レンダ・パラメータを表すイベントをフィルタリングし、それに応じてそれらのイベントを処理することにより実施に移される。
【００１８】
いわゆるトークン・マッピング戦略は、ナビゲーション状態モデル（言及されたＤＴＤかＸＳＤ）から直接導き出され得る所定のポータル固有の状態トークン（名称、状態値）の取り扱いを担当する。この戦略は、すべてのそれらの名称および値を、短い１文字表現にマッピングする。この戦略は、イベントをどれもこれも全部フィルタリングし、その後それに応じて関連付けられた情報（上述の名称および値）を処理することによって実行に移される。
【発明を実施するための最良の形態】
【００１９】
本発明の上記の特徴および利点、ならびに付加的な目的が、以下の詳細な説明において明らかになるであろう。
【００２０】
本発明の新規な特徴は、特許請求の範囲において述べられる。しかしながら、本発明自体、ならびに本発明の好ましい使用方法、さらなる目的、および利点は、添付図面と併せて読んだ場合に、例示的な実施形態の以下の詳細な説明を参照することにより最もよく理解されるであろう。
【００２１】
本発明のストリームベースのシリアル化方法が図１に示してある。
【００２２】
このシリアル化方法は、どちらもストリームベースである２つのサブプロセスに分割される。階層指向である第１のストリームベースのシリアル化サブプロセスは、ナビゲーション状態の階層型オブジェクト表現を用い、これを一連のイベントに変換し、イベントは、これらのイベントに関連付けられた情報を圧縮するための様々な戦略のための入力として働き、前記サブプロセスの終わりに、受信されたイベントにより運ばれた圧縮ナビゲーション状態情報が、文字ベースの表現に変換され、前記ナビゲーション状態の階層構造が、受信されたイベントの順序から導き出されて付加的な文字ベースの表現に変換され、両方とも前記第２のサブプロセスに直接的に流される。
【００２３】
階層に依存しない第２のストリームベースのシリアル化サブプロセスは、前記第１のサブプロセスの結果を用い、圧縮および文字符号化された情報を前記新しいポータル・ページのＵＲＬまたはヘッダ中に流す前に、さらなる圧縮および文字符号化戦略を適用する。
【００２４】
両方のサブプロセスは、共にシームレスにリンクされる。
【００２５】
好ましい実施形態において、第１の階層指向サブプロセスは、シリアル化されるべき階層型オブジェクト表現に含まれる状態情報の圧縮を担当する１組のフィルタＦ１．．．Ｆｎから成るイベントベースのフィルタ・チェーンを用いて実現される。各フィルタＦｉは、この目的の実現に寄与する一定の戦略を実施する。
【００２６】
フィルタ・チェーンは、入力ナビゲーション状態の階層構造を反映する一連のイベントを取得する。各イベントは、階層構造中の特定のノードの具体的な状態情報、すなわち、ノードの名称、値、および属性を伝える。従って、フィルタは、それぞれのイベントから取り出された状態情報を試験し、それに応じて対処することができる。典型的には、フィルタは、状態情報の１つの特定の側面、例えば、ポートレット固有のナビゲーション状態に集中する。言い換えれば、フィルタは、そのフィルタが関心を持っているイベント（例えば、それらの名称により）を傍受し、それに応じてこれらのイベントを処理し、次に、それらのイベントをチェーン中の次のフィルタに渡す。必要とされる基準に一致しないすべての他のイベントは、次のフィルタに元のまま委ねられる。
【００２７】
フィルタ・チェーンを実行する前に、シリアル化コンポーネントは、シリアル化されるべき所与の階層型オブジェクト表現に対応する一連のイベントを生成しなければならない。この翻訳ステップを担当するコンポーネントは、いわゆるシリアル化メディエータである（図１参照）。
【００２８】
図２に示されるように、シリアル化メディエータは、イベント・ストリームを開始するために、階層状態ドキュメントを（破線矢印により例示されるような幅優先検索アルゴリズムを用いて）横断する。各訪ねられたノードについて、シリアル化メディエータは、ノード名ならびに（もしあれば）ノード属性が格納されたｓｔａｒｔＮｏｄｅイベント、（もしあれば）ノード値が格納されたｎｏｄｅＶａｌｕｅイベント、およびノードの処理が完了したことを示すためのｅｎｄＮｏｄｅイベントを作成する。生成されたイベントの順序、特にｓｔａｒｔＮｏｄｅイベントのネスティングが、入力ドキュメントの階層を反映することに留意されたい。
【００２９】
イベントの作成後、シリアル化メディエータは、そのイベントをチェーン中の第１のイベント処理フィルタＦ１に送る。図２は、描かれた代表的なナビゲーション状態ドキュメントに対応するイベント・ストリームも示す。様々なイベントを示すために用いられる名称は、ＸＭＬ処理技術（例えば、ＪａｖａＳＡＸ ＡＰＩ）に関する用語にさかのぼる。
【００３０】
あるイベントに関連付けられている情報（例えば、ｓｔａｒｔＮｏｄｅイベントと共に伝送されるノード名）によって、各フィルタは、そのフィルタが関心のあるイベントの種類を傍受し、そのイベントを次のフィルタに渡す前に、運ばれる情報（例えば、ノード値またはノード名さえ）を修正することができる。
【００３１】
あるイベントがすべてのフィルタを通過した後、そのイベントは、圧縮された状態情報を運ぶ受信イベントをフラットな文字表現に変換することを担当するいわゆるシリアル化ハンドラ（図２参照）に達する。それを達成するために、シリアル化ハンドラは、名称、値、および属性を文字ベースの表現の後ろに徐々に追加し、次に、結果として生じる文字列をさらなる圧縮および文字符号化のために第２のシリアル化サブプロセスに渡す。すべてのイベントが処理された後、シリアル化ハンドラは、ナビゲーション状態ドキュメントの階層を反映する１つの付加的情報を渡す。この情報は、後に逆シリアル化の間に状態ドキュメントの階層を復元させるために必要である。階層情報を符号化するために、シリアル化ハンドラは、以前処理されたｓｔａｒｔＮｏｄｅイベントのテスティングに対応するビット表現を単に符号化する。
【００３２】
第２のサブプロセスは、これもまた完全にストリームベースであり、言及された文字ベースのライタ・チェーンＷ１．．．Ｗｎにより、受信された文字列を処理する（図１参照）。各ライタは、受信された文字列をチェーン中の次のライタに渡す前に、特定の圧縮または文字符号化戦略をそれらの文字列に適用する。これらのライタが、受信された文字列についても、含まれている情報の意味論についても、その内部構造についても、どのような仮定もできないことに留意されたい。従って、これらのライタは、一般的な文字圧縮および符号化技法、例えば、ＧＺＩＰのような最先端の圧縮技法を適用できるだけである。様々なライタがそれらの圧縮（例えば、ＧＺＩＰ）および文字符号化（例えば、ＵＴＦ−８）戦略を適用した後、結果として生じる文字表現は、一定のデータ・シンクに書き込まれる。データ・シンクは一般に、ナビゲーション状態のシリアル化された形態を次に運ぶＵＲＬである。そのようなＵＲＬをクリックすると、ナビゲーション状態部分は、状態逆シリアル化のためにそのＵＲＬから取り出される必要がある。逆シリアル化の間、すべてのシリアル化戦略は、以下のセクションで説明されるように取り消される必要がある。
【００３３】
イベントベースのフィルタ・チェーンおよび文字ベースのライタ・チェーンの好ましい実施形態が図２に示してある。色勾配は、左側のイベントベースのフィルタ・チェーンから右側の文字ベースのライタ・チェーンへのシームレスな移行を強調している。
【００３４】
例示されるように、イベントベースのフィルタ・チェーンは、（システム固有のシリアル化メディエータおよびシリアル化ハンドラに加え）発明の要旨において概説された２つのフィルタから成る。第１のイベント処理フィルタがポートレット・レンダ・パラメータ・マッピング戦略を実施するのに対して、第２のフィルタは、ナビゲーション状態ドキュメント中に含まれているすべての所定のトークン（名称および値）の一般的なマッピングを適用する。これらの具体的なフィルタの詳細については、逆シリアル化セクションに続くセクションを参照されたい。文字ベースのライタ・チェーンは、（結果を特定のデータ・シンクに単に流すシンク・ライタに加え）ＧＺＩＰ圧縮を実行するライタおよびｂａｓｅ６４文字符号化を実行する別のライタから成る。
【００３５】
相当する逆シリアル化プロセスは、ナビゲーション状態のフラットな文字表現を、ナビゲーション状態の元の階層型樹状オブジェクト表現に戻す変換を担当する。逆シリアル化プロセスは、図４に示してある。
【００３６】
例示されるように、本発明の逆シリアル化方法により処理された入力データは、最小長さのフラットな文字表現である。逆シリアル化結果は、ナビゲーション状態をシリアル化する前のナビゲーション状態に相当するナビゲーション状態の階層型オブジェクト表現である。シリアル化に相当するものなので、逆シリアル化プロセスも、２つのサブプロセスに分割される。最初に、文字ベースのリーダ・チェーンが、相当する伸張および文字復号技法Ｒ’ｎ．．．Ｒ’１を適用することにより、シリアル化の間に適用された圧縮および文字符号化戦略を取り消す。そのサブプロセスの後、ナビゲーション状態ドキュメントの階層は、シリアル化の間になされた情報圧縮戦略を取り消すためにイベントベースのフィルタ・チェーンＦ’ｎ．．．Ｆ’１を再度適用する前に復元される。Ｆ’ｉは、フィルタＦｉに対応する逆の戦略を適用するフィルタを示すことに留意されたい。以下の段落は、図４に示されるような逆シリアル化を詳細に説明する。
【００３７】
逆シリアル化に関係している第１のコンポーネントは、いわゆるソース・リーダである。ソース・リーダは、所与のデータ・ソースを処理する文字リーダである。本発明者らの場合、ソース・リーダは、シリアル化されたナビゲーション状態をＵＲＬから読み取り、読み取られた文字列をリーダ・チェーンＲ’ｎ．．．Ｒ’１に送信する。リーダ・チェーンは、対応する文字復号および伸張技法を適用することにより、シリアル化の間に実行された文字符号化および圧縮を取り消す。文字ベースのリーダ・チェーンとイベントベースのフィルタ・チェーンとの間でアダプタとして作動する時、シリアル化パーザは、最終的に受信文字列をシリアル化の間のイベント・ストリームに等しい一連のイベントに変換して戻すために、受信文字列をバッファする。それを達成するためには、シリアル化パーザは、正しいネスティングを有する正しい順序でイベントを生成するために、符号化された階層情報を考慮に入れる必要がある。シリアル化パーザは、このタスクを容易に実行できることに留意されたい。なぜならば、シリアル化パーザは、前記シリアル化ハンドラの対応コンポーネントであり、従って、シリアル化された階層情報をどのように解釈するかに関する必要な知識を有しているからである。
【００３８】
その後、イベントのストリームは、シリアル化の間になされた情報圧縮を反転するイベントベースのフィルタ・チェーンＦ’ｎ．．．Ｆ’１を通過する。イベントベースのフィルタ・チェーンの終わりに、いわゆる逆シリアル化メディエータ（シリアル化メディエータに対応するコンポーネント）は、ノードを作成しそれらのノードを互いに互いに接続することによって階層型オブジェクト表現を復元するために、受信されたイベントをコントローラ操作に直接的にマッピングする。結局、元のナビゲーション状態ドキュメント全体が復元された。このステップにより、逆シリアル化プロセスが終結される。
【００３９】
レンダ・パラメータ・マッピング・フィルタ
レンダ・パラメータ・マッピング・フィルタは、ポートレットのナビゲーション状態、特にポートレットのレンダ・パラメータに注目する。このフィルタにより実施される戦略は、パラメータ名の長さおよび値について、特定のポートレットのレンダ・パラメータの複雑度を監視する。もしパラメータ名または値が一定の所定閾値を超えれば、戦略は、完全なパラメータを表すイベントを、１文字のみから成る短いキーを運ぶイベントにマッピングするのに対し、具体的なパラメータ名および値は、ユーザのＨＴＴＰセッション中にシリアル化される。
【００４０】
図５は、状態シリアル化の間に用いられるレンダ・パラメータ・フィルタの内部構造を示す（逆シリアル化時に必要な逆フィルタは、後に論じられる）。
【００４１】
最初に、フィルタは、受信されたｓｔａｒｔＮｏｄｅイベントが（ノード名「パラメータ」によって）ポートレット・レンダ・パラメータを示しているかどうかをチェックする。もしフィルタがそのようなイベントを検出すれば（「はい」分岐）、フィルタは、そのイベントを、複雑度チェックを実行する内部パラメータ・マッパコンポーネントに渡す。そうでなければ（「いいえ」分岐）、フィルタは、そのイベントをフィルタ・チェーン中の次のフィルタにイベントを委ねる。
【００４２】
パラメータ・マッパは、レンダ・パラメータをそれらの名称および値について評価することにより、複雑度チェックを実行する。もし設定された長さ閾値が超過されれば、パラメータ・マッパは、パラメータを短いキー（１文字）にマッピングし、このキーを運ぶイベントのみを次のフィルタに送る。実際のレンダ・パラメータならびに生成されたキーは、ＨＴＴＰセッションにシリアル化される。この手順は、大きすぎるＨＴＴＰセッションの危険を冒すことに留意されたい。従って、キーパラメータ・マッピングは、格納されたマッピングを最低使用頻度（ＬＲＵ）戦略で追いたてる満了方針を用いて管理される必要がある。
【００４３】
図６は、逆シリアル化の間にこのマッピングを取り消す、対応するフィルタの内部構造を示す。その場合、フィルタは、そのようなキーのみを表しているイベントを傍受する。もしそのようなイベントが検出されたら、フィルタは、そのキー・イベントを、ＨＴＴＰセッションにおいて具体的なパラメータ名および値を探すために受信されたキーを用いる内部パラメータ・マッパコンポーネントに再ルーティングする。実際のレンダ・パラメータを運んでいるイベントが復元されるとすぐに、そのイベントはチェーン中の次のフィルタに渡される。
【００４４】
トークン・マッピング・フィルタ
トークン・マッピング・フィルタは、できるだけ多くのトークンを圧縮することを目的とする一般的戦略を実施する。従って、トークン・マッピング・フィルタは、一定の基準（例えば、特定のノード名）と一致するイベントを傍受しないが、すべてのトークン、すなわち、各受信されたイベントの名称、値、および属性のマッピングを試みる。このマッピングを実行するために、トークン・マッピング・フィルタは、状態モデル定義から取り出された情報を再利用する。すでに以前言及されたように、状態モデル定義は、ナビゲーション状態ドキュメントの有効な構造（すなわち、ノード名ならびにノード値のデータ・タイプと属性値との間の関係）を規定し、典型的にはＤＴＤまたはＸＳＤファイルにおいて記述される。その定義に基づき、トークン・マッピング・フィルタは、含まれている各あらかじめ定義されたトークンに１文字代入を割り当てるマッピング・テーブルを導き出す。あらかじめ定義されたトークンは、（状態モデル定義において完全に規定される）ノードおよび属性の名称ならびに状態モデル定義中で明示的に規定されるすべてのノードおよび属性値を含む。
【００４５】
図７は、トークン・マッピング・テーブルを含むＤＴＤ類似構文を用いる状態モデル定義の例を示し、トークン・マッピング・テーブルは、その定義から導き出される。示されるマッピング・テーブルはフラット、すなわち、状態モデルの階層を反映していない。状態モデルがずっと複雑な典型的なシナリオにおいて、状態モデルの階層も利用することが推奨される。その場合、いわゆるマッピング・ツリーは、フラットなマッピング・テーブルではなく、ＤＴＤから導き出される。マッピング・ツリーにおいて、マッピングは、一定のツリー・レベルのみの範囲において一意である必要がある。
【００４６】
図８は、フラットなマッピング・テーブルがイベントのストリームの例にどのように適用されるかを示している。トークン・マッピング・フィルタが、イベントベースのフィルタ・チェーン中の最後のフィルタでなければならないことに留意されたい。なぜならば、トークン・マッピング・フィルタは、典型的には他のフィルタのフィルタ基準として働くドキュメント・ノードの名称を修正するからである（さもなければ、トークン・マッピング・フィルタの後に実行される他のすべてのフィルタは、マッピング・テーブルを知る必要があろう）。
【００４７】
状態モデル定義中で規定されないすべてのノードおよび属性値は、短い１文字表現にマッピングされ得ない。これは特に、ポートレット・レンダ・パラメータの名称および値に当てはまる。
【００４８】
図９は、本発明を実施するポータル構造を示す。
【００４９】
ポータル構造は好ましくは、すでに各従来技術のポータルの一部である機能コンポーネントおよび本発明の機能性を提供するために新たに加えられるコンポーネントを含む。
【００５０】
各ポータルの一部である従来技術の機能コンポーネントは、以下のものである。
【００５１】
サーブレット１０
サーブレット１０は、到来するＨＴＴＰ要求を受信するフロント・コントローラである。このサーブレット１０は一般的に、関与するコンポーネントを初期化することにより、受信されたＨＴＴＰ要求を処理するために要求処理エンジン２０を準備する。その後、サーブレット１０は、要求の処理を要求処理エンジン２０に委ねる。
【００５２】
要求処理エンジン２０
要求処理エンジン２０も、到来する要求の処理の制御を担当するフロント・コントローラの一部である。一般的に、要求処理エンジン２０は、いくつかの要求処理段階により構成される要求処理寿命を定義する。１つのポータルにおいて、１つの要求は４つの段階を通り抜ける必要がある。第１に、初期化段階は、要求固有の初期化タスクを実行し、これには、認証および動作実行を担当する動作段階が続く（ポートレット動作ならびにコマンド）。動作段階後、レンダ段階が、アグリゲーション・プロセスを呼び出すことによって実行される。終末段階は、要求固有のクリーンナップ・タスクを実行することによって、四級処理を終える。
【００５３】
アグリゲーション・コンポーネント６０
アグリゲーション・コンポーネント６０は、要求処理寿命のレンダ段階の間に呼び出される。アグリゲーション・コンポーネント６０は、要求されたページのレイアウト・モデル（ポートレットがページ上でどのように配置されるかを記載する）をプレゼンテーション・ツリーに変換すること、ならびにこのプレゼンテーション・ツリーに対応するマークアップを応答に書き込むことを担当する。
【００５４】
認証コンポーネント５０
認証コンポーネント５０は、ユーザの同一性を検証することを担当する。各到来する要求は、認証に通る必要がある。ポータル２は、ユーザがアクセスすることを承認される内容ならびに実行すべきコマンドを決定するために、ユーザ同一性を用いる。
【００５５】
ポートレット・コンテナ３０
ポートレット・コンテナ３０は、ポートレットへの統一されたアクセスを提供する。特に、ポートレット・コンテナ３０は、一定のポートレットのマークアップを集めることまたはポートレット動作を実行することを考慮する。ポートレット・コンテナは、ポートレットＡＰＩによってポートレットを呼び出す。
【００５６】
コマンドＡＰＩ４０
コマンドＡＰＩ４０（アプリケーション・プログラミング・インタフェース）は、抽象化層をポータル固有のコマンドに提供する。特に、コマンドＡＰＩ４０は、統一されたインタフェースを介してコマンドを実行することを考慮する。コマンドは、ポータル・ページの作成または削除あるいはその両方、ポータル・ページへのポートレットの追加またはそれからの除去あるいはその両方、既存ページ上でのポートレットの配置等の管理タスクを実行するために用いられ得る。
【００５７】
ナビゲーション状態管理コンポーネント７０
ナビゲーション状態管理７０コンポーネントは、以下の責任を有する：
ナビゲーション状態のための寿命を定義すること、ならびに要求処理エンジン２０が定義された状態処理職務を全体的な要求処理寿命に組み入れることを可能にするインタフェースを提供すること、
ナビゲーション状態を表すオブジェクト・モデルを定義すること、ならびにナビゲーション状態の読み取りおよび書き込み／修正を考慮するアプリケーション・プログラミング・インタフェース（ＡＰＩ）を提供すること、
ナビゲーション状態のオブジェクト表現をＵＲＬに効率的にシリアル化することならびに内部オブジェクト表現を復元するために（到来する）ＵＲＬからナビゲーション状態を逆シリアル化することを考慮するフレームワークを提供すること。フレームワークは、ナビゲーション状態を運ぶＵＲＬを作成するためにＵＲＬ生成コンポーネントに呼び出される得るインタフェースを含む必要がある、
【００５８】
ＵＲＬ生成ＡＰＩ８０
ＵＲＬ生成ＡＰＩ８０は、その名称が示すように、多様なユーザ・ケースについてＵＲＬを作成することを考慮するＡＰＩを提供する。ＵＲＬ生成ＡＰＩ８０は、プログラマが、ナビゲーション状態を生成されたＵＲＬと関連付けることならびにＵＲＬを所与の宛先ストリームに書き込むことができるようにする。この書き込み操作は、作成されたＵＲＬと関連付けられたナビゲーション状態をシリアル化することを伴う。ＵＲＬをプログラム的に作成することに加え、ＵＲＬ生成ＡＰＩは一般に、ＪＳＰ内でＵＲＬを作成するためにいくつかのＵＲＬタグを提供する。
【００５９】
既定値によって、作成されたＵＲＬは、前の対話のナビゲーション状態が行方不明にならないことを確実にするために、要求固有のナビゲーション状態で初期化される。ＵＲＬの特定の意味論を決定するために、このナビゲーション状態は、この特定のＵＲＬのみついて変更され得る。本発明の機能性を提供する新たに加えられた機能コンポーネントは、ナビゲーション状態管理コンポーネント７０を改良する。
【００６０】
状態シリアル化フレームワーク７０Ａ
状態シリアル化フレームワーク７０Ａは、本発明のストリームベースのシリアル化方法を置くナビゲーション状態管理コンポーネント７０のサブコンポーネントである。状態シリアル化フレームワーク７０Ａは特に、
前記ナビゲーション状態の階層型オブジェクト表現を用いこれを一連のイベントに変換する階層指向である第１のストリームベースのシリアル化サブプロセスであって、前記イベントは、これらのイベントに関連付けられた情報を圧縮するための様々な戦略のための入力として働き、前記サブプロセスの終わりに、前記受信されたイベントにより運ばれた圧縮ナビゲーション状態情報が、文字ベースの表現に変換され、前記ナビゲーション状態の階層構造が、前記受信されたイベントの順序から導き出されて付加的な文字ベースの表現に変換され、両方とも前記第２のサブプロセスに直接的に流される、第１のストリームベースのシリアル化サブプロセスと、
前記第１のサブプロセスの結果を用い、さらなる圧縮および文字符号化戦略を適用し、最終的に圧縮および文字符号化された情報を前記新しいポータル・ページのＵＲＬまたはヘッダ中に流す、階層に依存しない第２のストリームベースのシリアル化サブプロセスと、を提供し、両方のサブプロセスは、共にシームレスにリンクされて、複数のシリアル化戦略（ならびに対応する逆シリアル化戦略）を（逆）シリアル化チェーンに組み立てること、
将来、さらなる戦略においてプラグインするプラグ・ポイントを提供すること、
組み立てられたシリアル化チェーンをＵＲＬ生成時に実行することならびに逆シリアル化チェーンをＵＲＬ復号時に実行することを考慮するアプリケーション・プログラミング・インタフェース（ＡＰＩ）を提供すること、を担当する。
【００６１】
コンポーネントの入力データは、シリアル化のための階層型ナビゲーション状態ドキュメントか、逆シリアル化のためのナビゲーション状態のシリアル化された文字表現のどちらか一方である。
【図面の簡単な説明】
【００６２】
【図１】本発明のストリームベースのシリアル化方法を簡略化された方法で示し、特に、階層型ナビゲーション状態ドキュメントをフラットな文字ベースの表現に変換し、その後その文字ベースの表現をさらに圧縮する２段階方式を例示する。
【図２】本発明による代表的なナビゲーション状態ドキュメントによる、所与の階層型ナビゲーション状態ドキュメントの一連のイベントへの変換を示す。
【図３】２段階シリアル化方式の好ましい実施形態、特に本発明によるイベントベースのフィルタ・チェーンおよび文字ベースのライタ・チェーンの具体的な実施形態を示す。
【図４】図１に示されるようなシリアル化プロセスの相当物（counterpart）である本発明の逆シリアル化プロセスを示し、特にフラットな文字ベースの表現を復元し、その後そのフラットな表現を元の階層性型オブジェクト表現に戻す好ましい２段階方式を例示する。
【図５】本発明により好適に用いられる、状態シリアル化の間に実行される内部対話を含むレンダ・パラメータ・フィルタの内部構造を示す。
【図６】本発明により好適に用いられる、状態逆シリアル化の間に実行される内部対話を含むレンダ・パラメータ・フィルタの内部構造を示す。
【図７】本発明により好適に用いられる、ＤＴＤ構文およびそれから導きだされ得るマッピング・テーブルを用いる代表的な状態モデル定義を示す。
【図８】本発明により好適に用いられる、状態シリアル化の間にすべての所定のトークンを短い１文字表現にマッピングするためのマッピング・テーブルを用いるトークン・マッピング・テーブルを示す。
【図９】本発明を実施するポータルを示す。
【図１】
2009519519.tif 000003
【図２】
2009519519.tif 000004
【図３】
2009519519.tif 000005
【図４】
2009519519.tif 000006
【図５】
2009519519.tif 000007
【図６】
2009519519.tif 000008
【図７】
2009519519.tif 000009
【図８】
2009519519.tif 000010
【図９】
2009519519.tif 000011
【手続補正書】
【提出日】平成21年2月17日(2009.2.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ポータルにおけるナビゲーション状態を効率的にシリアル化するための方法であって、
前記ポータルは、サーバ・システム中で稼動しており、
前記サーバ・システムは、通信チャネルを介した前記ポータルとクライアントのブラウザとの間の通信を可能にする通信コンポーネントを含み、
前記ポータルは、
要求されたポータル・ページのレイアウトを決定し、
前記ポータル・ページに属する種々のページ要素のレンダリングを呼び出し、
前記ポータル・ページを表示用に前記クライアントのブラウザに伝送し、
前記ポータル・ページの少なくとも１つのページ要素が、前記ポータルによる新しいページまたは新しいページ要素のレンダリングを起動するためのリンク機能性を提供し、
前記ページ要素において前記リンクをクリックすることによる各ユーザ対話が、前記ポータル側における新しいナビゲーション状態を生成し、
前記ナビゲーション状態は、特定のクライアントのすべての以前のナビゲーション対話の結果として前記ポータルの現在のビューを記述し、
新しいポータル・ページについてのクライアント要求に応答して、前記ナビゲーション状態が、シリアル化された形で各ＵＲＬ中または前記新しいポータル・ページのヘッダ中あるいはその両方に符号化され、
以下の２つのサブプロセス：
（１）前記ナビゲーション状態の階層型オブジェクト表現を用いこれを一連のイベントに変換する階層指向である、第１のストリームベースのシリアル化サブプロセスであって、
前記イベントは、これらのイベントに関連付けられた情報を圧縮するための様々な戦略のための入力として働き、
当該サブプロセスの終わりに、
前記受信されたイベントにより運ばれた圧縮ナビゲーション状態情報が、文字ベースの表現に変換され、
前記ナビゲーション状態の階層構造が、前記受信されたイベントの順序から導き出されて付加的な文字ベースの表現に変換され、
前記文字ベースの表現および前記付加的な文字ベースの表現の何れもが、もう一方のサブプロセスに直接的に流される、
第１のストリームベースのシリアル化サブプロセスと、
（２）  前記第１のストリームベースのシリアル化サブプロセスの結果を用い、
さらなる圧縮および文字符号化戦略を適用し、
最終的に圧縮および文字符号化された情報を前記新しいポータル・ページのＵＲＬまたはヘッダ中に流す、
階層に依存しない第２のストリームベースのシリアル化サブプロセスと、
を含み、両方のサブプロセスが、共にシームレスにリンクされる、
方法。
【請求項２】
前記第１のストリームベースのシリアル化サブプロセスがイベントベースのフィルタ・チェーンに基づき、
各フィルタは、特に割り当てられたイベントのサブセットに関して動作し、
前記イベントに関連付けられている前記ナビゲーション状態情報を圧縮するための一定の戦略を適用する、
請求項１に記載の方法。
【請求項３】
第１のストリームベースのシリアル化サブプロセスが、
ナビゲーション状態の階層型オブジェクト表現を横断することにより前記イベントベースのフィルタ・チェーンのための前記イベントのストリームを生成し、
前記オブジェクト表現の各訪ねられたノードについて、ノード名ならびにノード属性が格納されたｓｔａｒｔＮｏｄｅイベント、ノード値が格納されたｎｏｄｅＶａｌｕｅイベント、および前記ノードの終わりを示すｅｎｄＮｏｄｅイベントを生成する、
請求項２に記載の方法。
【請求項４】
前記生成されたｓｔａｒｔＮｏｄｅ、ｎｏｄｅＶａｌｕｅ、およびｅｎｄＮｏｄｅイベントが、ナビゲーション状態オブジェクト表現の階層型樹状構造を反映する順序で生成され、
前記ｅｎｄＮｏｄｅイベントが、前記それぞれのノードの完全なサブツリーが処理されて初めて生成される、
請求項３に記載の方法。
【請求項５】
前記イベントベースのフィルタ・チェーンの終わりに、前記受信されたイベントの順序および前記受信されたｓｔａｒｔＮｏｄｅイベントのネスティングで設定される前記階層構造を符号化するために特別なフィルタが用いられる、
請求項４に記載の方法。
【請求項６】
前記第２のストリームベースのシリアル化サブプロセスが文字ベースのライタ・チェーンを用い、
各ライタが、第１のストリームベースのシリアル化サブプロセスの終わりに生成された前記受信された文字情報に関して一定の圧縮または文字符号化戦略を実行する、
請求項２に記載の方法。
【請求項７】
前記文字ベースのライタ・チェーンの終わりに、前記圧縮された文字情報をポータル・ページの前記割り当てられたＵＲＬまたはヘッダ中に直接的に流す特別なライタが用いられる、
請求項６に記載の方法。
【請求項８】
ポータルにおけるナビゲーション状態を効率的にシリアル化するためのシステムであって、
前記ポータルは、前記システム中で走っており、
前記システムは、通信チャネルを介した前記ポータルとクライアントのブラウザとの間の通信を可能にする通信コンポーネントを含み、
前記ポータルは、
要求されたポータル・ページのレイアウトを決定し、
前記ポータル・ページに属する種々のページ要素のレンダリングを呼び出し、
前記ポータル・ページを表示用に前記クライアントのブラウザに伝送し、
前記ポータル・ページの少なくとも１つのページ要素が、前記ポータルによる新しいページまたは新しいページ要素のレンダリングを起動するためのリンク機能性を提供し、
前記ページ要素において前記リンクをクリックした場合に各ユーザ対話についての新しいナビゲーション状態を生成するナビゲーション状態管理コンポーネントを含み、
前記ナビゲーション状態は、特定のクライアントのすべての以前のナビゲーション対話の結果として前記ポータルの現在のビューを記述し、
前記ナビゲーション状態管理コンポーネントが、新しいポータル・ページについてのクライアント要求に応答して、前記ナビゲーション状態を、シリアル化された形で各ＵＲＬ中または前記新しいポータル・ページのヘッダ中あるいはその両方に符号化し、
以下のさらなる機能コンポーネント：
（１）前記ナビゲーション状態の階層型オブジェクト表現を用いこれを一連のイベントに変換する階層指向である第１のストリームベースのシリアル化サブプロセスを提供する機能コンポーネントであって、
前記イベントは、これらのイベントに関連付けられた情報を圧縮するための様々な戦略のための入力として働き、
当該サブプロセスの終わりに、
受信されたイベントにより運ばれた圧縮ナビゲーション状態情報が、文字ベースの表現に変換され、
前記ナビゲーション状態の階層構造が、前記受信されたイベントの順序から導き出されて付加的な文字ベースの表現に変換され、
前記文字ベースの表現および前記付加的な文字ベースの表現の何れもが、もう一方のサブプロセスに直接的に流される、
機能コンポーネントと、
（２）  前記第１のサブプロセスの結果を用い、
さらなる圧縮および文字符号化戦略を適用し、
最終的に圧縮および文字符号化された情報を前記新しいポータル・ページのＵＲＬまたはヘッダ中に流す、
階層に依存しない第２のストリームベースのシリアル化サブプロセスを提供する機能コンポーネントと、
を備え、両方の機能コンポーネントにより提供される両方のサブプロセスが、共にシームレスにリンクされる、
システム。
【請求項９】
前記機能コンポーネントが、前記ナビゲーション状態管理コンポーネントの一体型部分である、
請求項８に記載のシステム。
【請求項１０】
前記ナビゲーション状態管理コンポーネントが、前記ポータルの一部である、
請求項９に記載のシステム。
【請求項１１】
第１のサブプロセスを提供する前記機能コンポーネントが、
ナビゲーション状態の階層型オブジェクト表現を横断することによりイベントベースのフィルタ・チェーンのための前記イベントのストリームを生成し、
前記オブジェクト表現の各訪ねられたノードについて、ノード名ならびにノード属性が格納されたｓｔａｒｔＮｏｄｅイベント、ノード値が格納されたｎｏｄｅＶａｌｕｅイベント、および前記ノードの終わりを示すｅｎｄＮｏｄｅイベントを生成し、
前記生成されたｓｔａｒｔＮｏｄｅ、ｎｏｄｅＶａｌｕｅ、およびｅｎｄＮｏｄｅイベントが、ナビゲーション状態オブジェクト表現の階層型樹状構造を反映する順序で生成され、
前記ｅｎｄＮｏｄｅイベントが、前記それぞれのノードの完全なサブツリーが処理されて初めて生成され、
前記イベントベースのフィルタ・チェーンの終わりに、前記受信されたイベントの順序および前記受信されたｓｔａｒｔＮｏｄｅイベントのネスティングで設定される前記階層構造を符号化するために特別なフィルタが用いられる、
請求項８に記載のシステム。
【請求項１２】
コンピュータによって実行可能な命令を含むコンピュータ・プログラムであって、
請求項１〜７に記載の方法を前記コンピュータに実行させるための、コンピュータ・プログラム。
【国際調査報告】
2009519519.tif 000012
2009519519.tif 000013