(57)【要約】  階層表示の表示操作を介して階層データセットを知的に呼び出す（切り分ける）能力を提供するアーキテクチャ。これは、全てのレコードセットをクライアントに送信することなく又は全てのレコードセットをサーバに受信しなおすことなく、階層表示に追加し／階層表示から削除し、そして、表示レコードの親／子関係を管理することができる能力を提供し、階層データセットの動作性能を最適化する。
2011524047.tif 000002
【特許請求の範囲】
【請求項１】
クライアントビューセットの１つ以上の列１０８に対する列動作に基づいて、階層データセットを呼び出す呼出要素（１０２）と、
列変更動作に応答して、前記クライアントビューセットを更新する更新要素（１１２）とを含み、
前記クライアントビューセットに対する当該更新は、呼び出された前記階層データセットに関連付けられた列キーに基づいていること特徴とするコンピュータ実装データ処理システム（１００）。
【請求項２】
前記呼出要素は前記クライアントビューセットにおける列の親子供関係を管理し、前記列は前記列動作に関連していることを特徴とする請求項１に記載のシステム。
【請求項３】
前記呼出要素は、列キー及び親キーの順序付けられたマッピングによって定義された階層構造インデックスを作成し、前記インデックスは、前記クライアントビューセットの前記列動作に応答して、クライアントに送信されることを特徴とする請求項１に記載のシステム。
【請求項４】
前記列動作は、前記階層表示の列を折りたたまれた列に折りたたみ、折りたたまれた列を拡大して、１つ以上の新規列を前記階層表示に表示し、前記クライアントビューセットのスクローリングに基づいて、列を追加し又は削除する読取動作であることを特徴とする請求項１に記載のシステム。
【請求項５】
前記列動作は、前記クライアントビューセットにおける列の挿入、列の削除、列のインデント、又は、列のアウトデント編集動作であることを特徴とする請求項１に記載のシステム。
【請求項６】
前記呼出要素は、フィルタ処理、ソート、列の拡大、及び列の折りたたみに基づいて、前記列動作に関連する列に対して前記階層データセットを呼び出すことを特徴とする請求項１に記載のシステム。
【請求項７】
前記更新要素は、編集モードに関連付けられた列動作に基づいて、フィルタ処理されていない階層構造を更新することを特徴とする請求項１に記載のシステム。
【請求項８】
前記呼出要素は前記列変更動作に基づいて非同期に前記階層データセットを呼び出すことを特徴とする請求項１に記載のシステム。
【請求項９】
クライアントのクライアントビューセットにおける列動作に応答して、階層データセットの１ページを取得するサーバの呼出要素（１０２）と、
列変更動作に応じて前記クライアントビューセットを更新する前記サーバの更新要素（１１２）と、を含み、
前記１ページは、前記列変更動作に関連する列のみを含むことを特徴とするコンピュータ実装データ処理システム（２００）。
【請求項１０】
前記呼出要素は、前記クライアントビューセットにおける列の親子供関係を管理することを特徴とする請求項９に記載のシステム。
【請求項１１】
前記呼出要素は、列キー及び親キーの順序付けられたマッピングによって定義された階層構造インデックスを作成し、編集列動作に基づいて、前記インデックスを前記更新されたクライアントビューセットを有する前記クライアントに送信することを特徴とする請求項９に記載のシステム。
【請求項１２】
前記列動作は、読取動作であり、前記読取動作は、前記クライアントビューセットの列を折りたたまれた列に折りたたむこと、前記クライアントビューセットにおける１つ以上の新規列を表示するために列を拡大すること、又は、前記クライアントビューセットのスクローリングに基づいて列を追加しおよび削除することに関連付けられていることを特徴とする請求項９に記載のシステム。
【請求項１３】
前記列動作は、前記クライアントビューセットにおける列の挿入、列の削除、列のインデント、又は列のアウトデントに関連付けられた編集動作であることを特徴とする請求項９に記載のシステム。
【請求項１４】
クライアント列動作に基づいて、関連データがクライアントビューセットに表示されるように、クライアントからの要求を受信するステップ（５００）と、
前記要求に応答して、前記関連データに対する階層データセットの１ページを取得するステップ（５０２）と、
前記クライアントビューセットの更新のために、前記関連データを前記クライアントに送信するステップ（５０４）と、を含むデータを処理するコンピュータ実装方法。
【請求項１５】
前記列動作に基づいて親子関係を管理するステップをさらに含む請求項１４に記載の方法。
【請求項１６】
クライアントビューセットの列を折りたたまれた列に折りたたみ、折りたたまれた列を拡大して、１つ以上の子供列を前記クライアントビューセットに表示し、前記クライアントビューセットのスクローリングに基づいて列を表示し／隠す読取動作に応答して、前記階層データセットを呼び出すステップをさらに含む請求項１４に記載の方法。
【請求項１７】
前記クライアントビューセットにおける列の挿入、列の削除、列のインデント、又は列のアウトデントに関連付けられた編集動作に応じて、前記階層データセットの１ページを取得するステップをさらに含む請求項１４に記載の方法。
【請求項１８】
フィルタ処理、ソート、若しくはグループ化のうちの１つ以上を適用して、前記関連データを受信するステップをさらに含む請求項１４に記載の方法。
【請求項１９】
列の親子関係、列アウトラインレベル、子供列、及びインデント／アウトデント動作に関連した前記関連データを定義するフィルタ処理されていない階層構造を作成するステップをさらに含む請求項１４に記載の方法。
【請求項２０】
前記階層データセットの前記ページは前記要求に基づいて非同期に取得されることを特徴とする請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は階層データの呼び出しに関する。
【背景技術】
【０００２】
ネットワーク及びデータシステムのユビキタス特性は大量データに対して広範囲なアクセスを促進する。企業は、例えば、現在、ローカルデータシステムと同様に分散化されたデータシステムをサポートしている。そのローカルデータシステムは、例えば、金融、売上、製品、プロジェクト管理、人的資源等に関連するすべての種類のデータを記憶する。したがって、ユーザがサーバシステムからデータにアクセスする能力は、サーバ、ネットワーク、及びクライアントシステムの性能に影響を与える。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
従来のデータシステムは、大なるデータセットのクエリ及び検索を通常必要とする。クライアント／サーバシステムにおける大なる階層データセットに関して双方向性表示及び編集を、積極的なユーザ経験を促進するようにサポートすることは、困難である。ソート、グループ化、データセットの全てを必要とする他の表示動作は、リソースが極めて集中してしまい、ユーザの数が増大するのに従って、サーバ上で十分にスケール（比例）しない。その上、レコードが階層構造のレベルに追加されるので、これらレコードは、上記動作において説明される必要もある。これら制約が階層データセット（例えば、複数のレベルのタスクを含むプロジェクト）の複雑性に付加されて合わされると、問題に関する複雑性が増大し、クライアント及び／又はサーバの性能はダメージを受けてしまう。
【課題を解決するための手段】
【０００４】
本明細書に記載されたいくつかの新規な実施形態を基礎的に理解せしめるために、以下に簡単な概要を示す。この概要は、本発明の広範なる概括ではなく、鍵となる要素／重要な要素を特定し又は本発明の範囲を画定することを意図してない。その唯一の目的は、後に示される詳細な説明に対する前置きとして、簡易化された態様のいくつかの概念を提示することである。
【０００５】
開示されたアーキテクチャは、階層データセットを読み取り又は編集する際に、クライアント及びサーバ間で送信されたデータ量を最小化することによって、クライアント／サーバ環境において階層データセットの動作性能を最適化する。アーキテクチャは、表示操作（例えば、ソート、フィルタ、グループ化）を介して階層データセットを知的に呼び出す能力を、全てのレコードセットをクライアントに送信することなく又は全てのレコードセットをサーバに送信しなおすことなく、円滑にせしめる。制御により、読取り動作に対して最適化されるものの、また、編集動作中に処理されたデータも最小化される。
【０００６】
上述の目標及び関連の目標を達成するために、特定の例示的態様が以下の説明及び添付図面と共に本明細書に記載されている。これらの態様は、本明細書に開示された原理が実施可能な種々の手法を示唆しており、その全ての態様及び均等物が、特許請求の範囲に記載された発明の範囲内にあることが意図されている。他の利点及び新規な特徴は、添付図面と供に考察すると、以下の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【０００７】
【図１】開示されたアーキテクチャに係るコンピュータ実装データ処理システムを示す図である。
【図２】階層データを呼び出すクライアントサーバシステムを示す図である。
【図３】階層表示上で実行される動作と協同して、クライアント上で使用される追跡メカニズムを図示する図である。
【図４】位置コンバータインデックスと折りたたまれたセットリスト内の列及び追跡情報の拡大表示及び折りたたまれた表示を示す図である。
【図５】データを処理する方法を示す図である。
【図６】クライアントサイド画面操作を追跡する方法を示す図である。
【図７】開示されたアーキテクチャ係る呼び出し処理及び表示処理を実行可能なコンピュータシステムのブロック図である。
【図８】呼出処理及び表示処理を実行する例示的コンピューティング環境の概略ブロック図を図示する図である。
【発明を実施するための形態】
【０００８】
開示されたアーキテクチャは、クライアントサーバインプリメンテーションである。クライアントサーバインプリメンテーションは、クライアント上の階層表示の表示動作を介して、階層データセットを知的に呼び出す（page, 切り分ける）能力を提供する。これは、クライアント上の階層表示に追加し／クライアント上の階層表示から削除し、かつ、全てのレコードセットをクライアントに送信することなく又は全てのレコードセットをサーバに受信し戻すことなく、表示記録の親／子関係を管理する能力をさらに提供し、その結果、階層データセットの動作性能を最適化する。アーキテクチャは呼び出されるデータ量を最小化し、かつ、呼び出されないデータ量を最小化する。
【０００９】
「表示」に関連する以下の専門用語が、説明文中で使用されている。データセット表示は、フィールドの下位集合、列の下位集合、列フィルタ基準、グループ基準、ソート基準によって定義された大なるデータセットの下位集合であり、データセット表示はサーバ上にのみ存在する。列表示は、まさしくデータセット表示に記載された列の下位集合である。列のこのリストは、ほかの場所で参照された「完全に拡大された」リストである。このリストに対するインデックスは、ほかの場所における「データ位置」として参照されるものである。列表示はサーバ及びクライアント上に存在する。
【００１０】
クライアント表示は、折りたたまれた列の子を含まない列表示の下位集合である。このリストに対するインデックスは、ほかの場所において「表示位置」として参照されるものである。クライアントビューセットは、クライアント表示の下位集合であり、かつ、ユーザが所定の時間にクライアント上で物理的に見ることができるものである。すなわち、クライアント表示が１００の列を含み、その列のうちの３０がクライアントにダウンロードされているものの、最初の１０の列だけがスクロールすることなくスクリーン上で目に見える場合には、クライアントビューセットは１０のサイズを有する。
【００１１】
図面を参照すると、これら図面において、同様の参照符号を同様の要素に付してある。以下の説明においては、説明を目的として、多数の特定の実施例について、十分に理解せしめるために、詳しく説明されている。しかしながら、これら特定の詳細な説明がなくとも新規な実施形態を実施可能であることが明確であろう。他の実施例においては、説明を容易にするために、公知の構造及びデバイスがブロック図に示されている。特許請求の範囲に記載された発明の精神及び範囲内にあるすべての変更、均等物及び代替を含むよう意図されている。
【００１２】
図１は、開示されたアーキテクチャに係るコンピュータ実装データ処理システム１００を示している。システム１００は、階層型クライアントビューセット１１０における１つ以上の列１０８に対する動作（列動作）１０６に基づいて、階層データセット１０４を呼び出す（サブセットを取得する）呼出要素（１０２）を含む。また、システム１００は、列変更動作１１４に応じて、前記階層型クライアントビューセット１１０を更新する更新要素１１２を含む。クライアントビューセット１１０に対する更新は、列画面に関する列キーに基づくことができ、列キーは、階層データセット１０４のページに関連付けられている。呼出要素１０２は列変更動作１１４に基づいて非同期に階層データセット１０４を呼び出す。
【００１３】
尚、列変更動作１１４は、データセット表示２０６に存在する階層構造に関して編集特性がある列動作である。列変更動作１１４は、列の挿入、列の削除、又は、列のインデント若しくはアウトデントである。例えば、列の削除の結果として表示にスクロールした列を用いてクライアントビューセット１１０を更新することが必要になる場合には、列変更動作１１４は、後続の列動作１０６を生じせしめる。
【００１４】
システム１００は、全ての列表示を再計算するというより、列表示における関連列のみを処理することによって取り扱われたデータ量を最小化する。そのために、前記列動作１０６は、読取動作であり、その読取動作は、階層型クライアントビューセット１１０の派生列を折りたたまれた列に折りたたみ、折りたたまれた列を拡大して、階層型クライアントビューセット１１０における１つ以上の新規派生列を表示し、階層型クライアントビューセット１１０のスクローリングに基づいて、列を追加し又は削除する。読取動作は、読取モード中に実行される。読取モードにおいて、階層データが、読み取るだけのクライアントに送信される。このモードにおいては、編集は許可されておらず、このため、グリッドは、グリッドがクライアントに送信し呼び出されていないデータ（例えば、フィルタ処理されていない階層構造）のボリュームに関して、より節約することができる。グリッドは、ローカルデータシステム及び／又は分散化されたデータシステムの大量データを公開するコンピューティングフレームワークである。
【００１５】
スクローリングによって、列がクライアントビューセット１１０に付加され、又はクライアントビューセット１１０から削除される。例えば、スクロールアップする際、列は最上部に追加され、クライアントビューセット１１０の下部から削除される。列がクライアントビューセット１１０の上部に追加されると、所望の新規列に対してデータセット１０４を呼び出すために、新規クエリ（又は要求）が呼出要素１０２に送信される。
【００１６】
列動作は、階層型クライアントビューセット１１０における列の挿入、列の削除、列のインデント、及び／又は列のアウトデントに関連付けられた編集動作である。編集モード中に、編集動作は実行される。編集モードにおいて、階層データが、列に対する編集動作をサポートするフォーマットで、クライアントに送信される。インデントは、列のアウトラインレベルを増大せしめて、列に別の列の子供を作成する動作である。アウトデントは、列のアウトラインレベルを減少せしめて、列をその親の列のピアにせしめる動作である。
【００１７】
呼出要素１０２は、例えば、フィルタ処理、ソート、列の拡大、及び列の折りたたみに基づいて、列動作に関連する列に対して階層データセット１０４を呼び出す。
【００１８】
図２は、階層データを呼び出すクライアントサーバシステム２００を示している。システム２００は、サーバシステムの階層データセット１０４を呼び出すサーバシステム２０２の一部として呼出要素１０２及び更新要素１１２、並びに、クライアント２０４に生じる階層型クライアントビューセット１１０，表示列１０８，列動作１０６，及び列変更動作１１４を統合している。更新要素１１２は、編集モードに関連付けられた列動作に基づいて、フィルタ処理されていない階層構造を更新する。
【００１９】
システム２００は、クライアント２０４とサーバ２０２の各々で生成され且つ記憶されたデータについてさらに図示している。呼出要素１０２は、データセット表示２０６及びサーバサイドの列表示２０８を作成する。そして、列表示２０８のコピーが、クライアントサイド列表示２１０としてクライアント２０４に送信されて、サーバ２０２とクライアント２０４との間で送信される必要のあるデータの量を最小化する。そして、クライアント表示２１２が、クライアントサイド列表示２１０から取得される。
【００２０】
呼出要素１０２は、列動作１０６及び／又は列変更動作１１４に関連するクライアントビューセット１１０における列の親子供関係を管理する。また、呼出要素１０２は、列キー及び親キーの順序付けられたマッピングによって定義された階層構造インデックス（サーバサイドの列表示２０８）を作成する。そして、そのインデックスが、階層型クライアントビューセット１１０の列動作（例えば、列動作１０６，列変更動作１１４）に基づいて、クライアント２０４に送信される。これら態様及び他の態様は以下の本明細書において詳細に記載されている。
【００２１】
図３は、階層型クライアントビューセット１１０上で実行された動作と協同したクライアント上で使用される追跡メカニズムを図示している。ここで、異なるタイプの列動作３００（例えば、読取専用、編集）が、クライアントビューセット１１０の（複数の）列１０８に対して実行される。クライアントベースのクライアントビューセット１１０における列動作を追跡するために、位置コンバータインデックス３０２及び折りたたまれたセットリスト３０４が採用される。位置コンバータインデックス３０２は、列の順序付けられたインデックスである。その順序付けられたインデックスは、階層クライアントビューセット１１０の拡大された状態／折りたたまれた状態を追跡し、且つ、表示位置とデータ位置との間において翻訳するのに使用される。この表示位置は、拡大され／折りたたまれた列に関する、クライアントビューセット１１０内の列の順序を示す位置である。（列インデックスと呼ばれる）データ位置は、クライアントビューセット１１０内の列の順序位置である。そのクライアントビューセット１１０は、列が拡大されるかどうかにかかわらずすべての列を含む。折りたたまれたセットリスト３０４は、グリッドに列が折りたたまれるのか又は拡大されるのかを知らしめることを可能にする折りたたまれた列のリストである。折りたたまれたセットリスト３０４は、最初は空であるが、列がクライアント１０６で拡大され／折りたたまれると、このリスト３０４は更新される。
【００２２】
図４は、位置コンバータインデックスと折りたたまれたセットリスト内の列及び追跡情報の拡大表示４００と折りたたまれた表示４０２を図示している。アーキテクチャは、階層データセットを読み取り又は編集する際に、クライアント及びサーバ間で送信されるデータ量を最小化する。図示された実施例は読取動作を表しているが、編集動作中に処理されたデータも最小化される。読取り動作及び編集動作の双方が、グリッドに表示されるべきデータに関してサーバに対するクライアントの要求から始まる。サーバはデータベースにクエリを実行し、クライアントによって定義されたソート、フィルタ処理、グループ化の１つ以上を適用して、列の集合を作成する。そして、列の集合は、クライアントに送信するためのデータセットを生成するために処理される。
【００２３】
フィルタ処理されていない階層構造は、整列された列キー及び親キーのマッピングとして機能する完全な階層構造である。「フィルタ処理されていない」という修飾語により意味されることに関して理解するために、Ａ、Ｂ、及びＣから成る３列の実施例について考察する。ＢはＡの子供であり、ＣはＢの子供である。列フィルタ処理の間に、Ｂが列表示に含まれていないということがある。そして、その結果、Ｃは列表示において親（直近の先祖）を有していない。フィルタ処理されていない階層構造はＡ、Ｂ、及びＣの間の階層関係である。スクロール／拡大／折りたたみの際に、Ｃの親を決定する必要が全くないが、インデント／アウトデント／挿入／削除の際には、これが必要である。したがって、編集動作中に、フィルタ処理されていない階層構造は使用されない。これは、所望の情報が、それぞれの列表示レコードの親識別子を照合することから構成され得ないからである。
【００２４】
フィルタ処理されていない階層構造は、編集中にクライアントに送信されるだけであり、必要に応じて列のアウトラインレベルを含むクライアント上の列に関する質問に返答するのに使用されて、インデント／アウトデントをサポートする。その列に関する質問は、列が親であるかどうか、どの列が子供の列であるのか、どの列がこの列の前の兄弟であるのか、というものである。編集モードでは、階層構造は、呼び出しを行うことなくクライアントに送信される。全体の階層構造は、階層構造に影響する動作（例えば、列のインデント／アウトデント、挿入、又は削除）をサポートするように表出されている。
【００２５】
列は、列キー及び関連データの呼び出されたセット（プロジェクトの場合では、これはＩＤによるタスクの集合である）である。以下に説明するように、これは、以下のフィールドを含む。アウトラインレベル：読取専用モードでは、このフィールドだけが、フィルタ処理されていない階層構造を有する必要性を軽減する。編集モードでは、システムはフィルタ処理されていない階層構造を使用する。親列キー：読取専用モードでは、このフィールドだけが、フィルタ処理されていない階層構造を有する必要性を軽減する。編集モードでは、システムはフィルタ処理されていない階層構造を使用する。派生カウント：読取専用モードでは、これをサーバ上で計算され、クライアントに送信される。編集モードでは、フィルタ処理されていない階層構造及び列表示は、派生カウントを計算するのに使用される。また、システムの有益であると考えられるような他のデータフィールドが使用される。
【００２６】
尚、全体の階層データセットは上記リストに含まれていない。列の全リストはクライアントに送信されない。フィルタリング、ソーティング、及び拡大され／折りたたまれた階層構造に関するクライアントビューセットにおいて必要された関連列のみが、クライアントに送信される。
【００２７】
図示されているように、拡大表示４００は、識別子（ＩＤ）、名前、アウトラインレベル、表示位置、データ位置、および派生カウントのためのカラムを含む。派生カウントは、現行の列表示に関して目に見える子供列の総数である。言い換えると、フィルタの後に、これは、クライアントに恐らくは送信される子供、孫等の列のカウントとなる。サマリー列は子供を有する階層構造内の列である。拡大表示４００において、Ｔｌは、子供列（子供Ａと子供Ｂ）を有するので、サマリー列である。表示４００及び表示４０２はともに、単一の列を折りたたむ実施例におけるスナップショットの前後のクライアント表示であることが理解されるべきである。表示４００が、正確な列のセットを含み、正確な列のセットが列表示を含むことが偶然としてあり得る。
【００２８】
先に示したように、表示位置（表示ＰＯＳ）は、拡大され／折りたたまれた列に関する現行の拡大された表示４００内の列の順序位置であり、表示位置（データＰＯＳ）は、列が拡大されるかどうかにかかわらずすべての列を含む現行の表示４００内の列の順序位置である。アウトラインレベルは、レベル（例えば、１，２，３）に応じて定義される。ここで、ＴＩ名は１の左端のアウトラインレベルであり、子供Ａはアウトラインレベル２と指定され、さらに、子供Ｃ１は３のアウトラインレベルにインデントされている。拡大表示４００には８つの列があるので、表示位置番号１−８は対応するＩＤ１−８に割り当てられている。データ位置番号は、列に割り当てられており、拡大されているのか又は折りたたまれているのかにかかわらず列に従う。尚、Ｔｌをどのように折りたたむかによって、表示位置が変更されるが、列に対するデータ位置は変更のないままである。
【００２９】
列ＩＤ１に対する派生カウントは、２つの子供列（ＩＤ２及びＩＤ３）を有する列ＩＤ１に帰属して、２である。子供列（ＩＤ２及びＩＤ３）は子供列を有していないので、派生カウントはこれら列（ＩＤ２とＩＤ３）の各々に対してゼロである。
【００３０】
位置コンバータインデックス４０４及び折りたたまれたセットリスト４０６は、クライアント上で効率的に維持される。位置コンバータインデックス４０４は、列に関して順序付けられたインデックスである。そのインデックスは、階層構造の拡大された状態／折りたたまれた状態を追跡し、且つ、表示位置とデータ位置との間で翻訳するのに使用される。位置コンバータインデックス４０４は、データベースの列を特定するＧＵＩＤ（グローバルに固有なＩＤ）である列キーフィールドと、拡大され／折りたたまれたすべての列に関して表示の最上部からのこの列の位置である表示位置フィールドと、及び、（折りたたまれた列を無視する）表示の最上部からのこの列の絶対位置であるデータ位置と、を含む。位置コンバータインデックス４０４は、表示位置とデータ位置の間の迅速な変換を可能にするので、クライアントビューセット内にない列のみが、サーバから取り出され、列は視覚的に正しい順序で配置される。列が折りたたまれているとき、このデータ構造は、実行時にクライアント上で作成され、かつ、付加される。階層構造がデフォルトにより拡大されるので、このテーブルの初期状態は列がない状態である。
【００３１】
折りたたまれたセットリスト４０６は、折りたたまれた列のリストである。そのリストによって、グリッドは、列が折りたたまれるのか又は拡大されるのかを知ることができる。このリスト４０６は、最初は空であるが、列がクライアント上で拡大され／折りたたまれると、このリストは更新される。
【００３２】
この例においては、位置コンバータインデックス４０８と折りたたまれたセットリスト４１０において対応する値は、拡大された表示４００を追跡するので、列キー（ＩＤ）は１−８であり、表示位置は１−８であり、そして、データ位置は１−８である。拡大表示４００には（完全に）折りたたまれた列がないので、折りたたまれたセットリストは、空である。
【００３３】
折りたたまれた表示４０２について引き続きの見てみると、（「＋」の記号で示されているように）列ＩＤ１は現在、折りたたまれている。位置コンバータインデックス４０８及び折りたたまれたセットリスト４１０において対応する値は折りたたまれた表示４０２を追跡する。子供列（ＩＤ２及びＩＤ３）の折りたたみによって、列キー（ＩＤ）のコンバータ値は１−８となり、表示位置においては、列キーＩＤ２及び３が子供列が折りたたむ列ＩＤ１にマッピングされ、また、残りの列キーＩＤが他の表示位置を現行の表示位置にマッピングされる。データ位置は、もとのとおりの１−８である。現在、表示４０２には折りたたまれた列があるので、折りたたまれたセットリスト４１０は、列ＩＤ１を折りたたまれた列として、列挙している。
【００３４】
これら集合の内のいくつか若しくは全てがクライアントに送信される。読取モードでは、他の列に対する階層関係を定義するために３つの付加的なフィールドを含む列の列表示及び／又は呼び出された下位集合が、送信され。編集モードでは、（これらフィールドが与える情報がフィルタ処理されていない階層構造から取得され得ないので、他の列に階層関係を定義するために３つの付加的なフィールドを含んでいない）列のフィルタ処理されていない階層構造、列表示、及び／又は、呼び出された下位集合。
【００３５】
そして、クライアントは、以下の読取モード及び編集モードのイベントにおいてクライアントビューセットを満たすように、サーバから要求するための列がどれなのかを判定する。編読取モードにおいて、折りたたみに関して、折りたたまれたセットは、示された列キーを含むように更新され、そして、位置コンバータは、新しい表示位置を含むように更新される。読取モードにおいて、拡大に関して、拡大された列は、折りたたまれたセットから削除され、それに続いて、位置コンバータは新規な表示位置を含むように更新する。そして、クライアントは、クライアントが有してない列を、クライアントビューセットから要求する。ノードが折りたたまれており、ノードが１つ以上の折りたたまれた子供を含むとき、折りたたまれたセットにおけるこれら折りたたまれた列のエントリは、折りたたまれたセットにおいて新規に折りたたまれた列のエントリに付加される。読取モードにおいて、（上下の）スクロールに関して、グリッドはクライアントビューセットにおいて要求された位置を使用して、呼び出されたセットの列をクライアントから要求する。
【００３６】
編集モードでは、挿入に関して、フィルタ処理されていない階層構造は、示された位置に新規列を含むように更新される、新規な列、適切な親ＩＤ、及び兄弟内の順序を与える。位置コンバータは更新されて、すべての次の表示位置が１つだけ増加される。そして、グリッドはサーバに対する変更をセーブする。クライアントバージョンは、サーバがフィルタ処理されていない階層構造として保持するもの（付加されたものを含む）と一致するので、サーバは、フィルタ処理されていない階層構造の更新を送信する必要はない。
【００３７】
編集モードでは、削除に関して、フィルタ処理されていない階層構造は、示された列を削除するように更新される。位置のコンバータは、更新されて、すべての次の表示位置が１つだけ減少する。上記したように、クライアント上でフィルタ処理されていない階層構造は正確である。編集モードでは、インデントに関して、フィルタ処理されていない階層構造がツリーであるので、グリッドは、示された列を調べ、列をツリーの正しい場所に移行させる。表示位置が変化しないので、位置コンバータを更新する必要は全くない。尚、派生カウントが、必要とされる基準に応じて評価され、グリッドは、子供を計数するように列に要求し、データをキャッシュするので、次に情報が必要とされ際には、索引が容易に利用可能である。編集モードでは、アウトデントに関して、フィルタ処理されていない階層構造はツリーであるので、グリッドは、示された列を索引し、列をツリーの正しい場所に移行せしめる。
【００３８】
グループ化は階層構造の特殊ケースである。グループ化するために、サーバは、すべてのデータをソートし、擬似階層構造を作成し、ヘッダーをグループ化する仮想的なサマリー列を挿入する。新規列表示は、あらゆる他の表示としてクライアントに送信される。グループ化された表示において、アウトラインレベルは節を分類するカウントに等しい。
【００３９】
以下には、開示されたアーキテクチャの新規な態様を実行する例示的な方法を表す一連のフローチャートである。説明を単純化させるために、例えば、フローチャート又はフロー図の形態で本明細書に示された１つ以上の方法が、一連の動作として示され、かつ、記述されているものの、方法は動作の順序によって限定されず、その方法に応じて、いくつかの動作が、本明細書に図示され且つ記載された動作とは異なる順序で生じ、そして／又は、他の動作と共に同時に生じてもよいことが十分に理解されるできである。例えば、当業者であれば、あるいは、方法は、状態図等の一連の相関的状態又は事象として表されるであろうことを理解し且つ認識するであろう。さらに、方法において図示されたすべての動作を、新規な実装では必要としない。
【００４０】
図５は、データを処理する方法を図示する図である。５００において、要求が関連データに対するクライアントから受信されて、クライアント列動作に基づいて階層型クライアントビューセットに表示される。５０２において、階層データセットは、要求に基づいて関連するデータに対して呼び出される。５０４において、階層クライアントビューセットの更新のために、関連データはクライアントに送信される。階層データセットは、要求に基づいて非同期に呼び出される。
【００４１】
その上、方法は、列動作に基づいて親子関係を管理するステップをさらに含む。階層データセットの呼出は、読取動作に応答する。その読取動作は、階層型クライアントビューセットの列を折りたたまれた列に折りたたみ、折りたたまれた列を拡大して、１つ以上の新規な列を階層型クライアントビューセットに表示し、階層型クライアントビューセットのスクローリングに基づいて、列を追加し又は削除する。あるいは、階層データセットの呼出は編集動作に応答する。その編集動作は、階層列表示における列の挿入、列の削除、列のインデント、または列のアウトデントに関連付けられている。
【００４２】
方法は、フィルタ処理されていない階層構造を作成するステップを含む。フィルタ処理されていない階層構造は、列の親子関係、列アウトラインレベル、子供列、及びインデント／アウトデント動作に関連した関連データを定義する。方法は、フィルタ処理、ソート、若しくはグルーピングのうちの１つ以上を適用して、関連データを受信するステップも含む。
【００４３】
図６はクライアントサイド画面操作を追跡する方法を示す。６００において、クライアントは、階層型クライアントビューセットにおける列の編集に関連するサーバに要求を送信する。６０２において、フィルタ処理されていない階層構造は、サーバから受信される。６０４において、クライアントは、位置コンバータインデックスを使用して階層構造への変更に基づいて、列キー情報、表示位置情報、及びデータ位置情報を追跡する。６０６において、クライアントは、折りたたまれたセットリストを使用して階層構造への変更に基づいて、列折りたたみ動作を追跡する。６０８において、クライアントは、位置コンバータインデックス及び折りたたまれたセットリストを処理して、階層データセットから列動作に対する関連列だけを要求する。
【００４４】
本出願において使用されているように、「要素」及び「システム」という用語は、コンピュータ関連のエンティティ、すなわち、ハードウェア、ハードウェア及びソフトウェアの組み合わせ、ソフトウェア、又は実行中のソフトウェアのうち一つを示していることが意図されている。例えば、要素は、プロセッサで起動する処理、プロセッサ、ハードディスクドライブ、（光学記憶装置媒体及び／又は磁気記憶媒体の）複数の記憶ドライブ、オブジェクト、実行ファイル、実行のスレッド、プログラム、及び／又は、コンピュータであってもよいが、これらに限定されない。説明として、サーバ上で起動するアプリケーションとサーバの双方が要素である。１つ以上の要素が実行プロセス及び／又は実行スレッド内に存在してもよいし、要素は、１つのコンピュータに局在化され、そして／又は、２つ以上のコンピュータ間に分散される。「例示的」という用語は、実施例、例、又は例示として機能することを意味するように本明細書に使用される。「例示的」として本明細書において記載されたすべての態様及びデザインは、必ず他の態様若しくはデザインに対して好ましいか又は有利なものとして、必ずしも解釈されるべきでない。
【００４５】
図７を参照すると、開示されたアーキテクチャ係る呼び出し処理及び表示処理を実行可能なコンピュータシステム７００のブロック図が、追加コンテクストをその種々な態様に提供するために、示されている。図７及び対応する説明は、種々の態様を実装可能な適切なコンピューティングシステム７００について簡潔で且つ一般的な説明を提供することを目的としている。上記説明により、１つ以上のコンピュータで実行可能なコンピュータ実行命令に関する一般的内容においてなされているものの、当業者であれば、新規な実施形態は、他のプログラムモジュールと組み合わせても実装され、そして／又はハードウェア及びソフトウェアの組合せとしても実装されることを当業者は認識するであろう。
【００４６】
一般に、プログラムモジュールは、特定のタスクを実行するか又は特定の抽象型データを実装するルーチン、プログラム、要素、データ構造等を含む。その上、当業者であれば、本発明に係る方法は、他のコンピュータシステム構成により実施可能なことを十分理解するであろう。他のコンピュータシステム構成とは、単一プロセッサのコンピュータシステム又は複数プロセッサのコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、パーソナルコンピュータ、携帯型コンピューターデバイス、マイクロプロセッサベースの家庭用電化製品若しくはプログラム可能な家庭用電化製品等であり、その各々は、１つ以上の関連デバイスに対して動作可能となるように接続される。
【００４７】
図示された態様は、分散コンピュータ環境においても実施される。その分散コンピュータ環境において、特定のタスクは通信ネットワークを介してリンクされた遠隔処理デバイスによって実行される。分散コンピュータ環境においては、プログラムモジュールはローカル記憶デバイス及びリモートメモリ記憶デバイスの双方に設けられる。
【００４８】
コンピュータ、種々のコンピュータ読取可能媒体を通常含む。コンピュータ読取可能媒体は、コンピュータによりアクセス可能な全ての利用可能な媒体とすることができ、揮発性媒体及び不揮発性媒体、脱着可能媒体及び脱着不可能媒体を含む。限定ではなく、例として、コンピュータ読取可能媒体はコンピュータ記憶媒体及び通信媒体を含む。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、若しくは他のデータ等の情報を記憶する全ての方法若しくは技術において実装された揮発性であり且つ不揮発性である脱着可能媒体及び脱着不可能媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ若しくは他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）若しくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気記憶装置、又は所望の情報を記憶するのに使用され且つコンピュータからアクセス可能なすべての他の媒体を含むがこれらに限定されてない。
【００４９】
再び、図７を参照すると、種々態様を実装する例示的コンピュータシステム７００は、処理ユニット７０４，システムメモリ７０６，及びシステムバス７０８を有するコンピュータ７０２を含む。システムバス７０８はインターフェイスをシステム要素に提供し、処理ユニット７０４に対するシステムメモリ７０６を含むがこれらに限定されない。処理ユニット７０４は、多種の市販利用可能なプロセッサのいずれとすることできる。デュアルマイクロプロセッサアーキテクチャ及び他のマルチプロセッサアーキテクチャも処理ユニット７０４として使用可能である。
【００５０】
システムバス７０８は、（メモリコントローラを有するか若しくは有しない）メモリバス、周辺バス、及び種々のバスアーカテクチャのいずれをも使用するローカルバスにさらに相互接続するいくつかのタイプのバス構造のいずれであってもよい。システムメモリ７０６は不揮発性メモリ（ＮＯＮ−ＶＯＬ）７１０，及び／又は、揮発性メモリ７１２（例えば、ランダムアクセスメモリ（ＲＡＭ））を含む。基本入出力システム（ＢＩＯＳ）は、不揮発性メモリ７１０（例えば、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭなど）に記憶され、そのＢＩＯＳは、例えば、スタートアップ時に、コンピュータ７０２内の要素間の情報を転送するのに役立つ基本的なルーチンである。また、揮発性メモリ７１２は、データをキャッシュする静的ＲＡＭ等の高速ＲＡＭを含む。
【００５１】
コンピュータ７０２はさらに、適切なシャーシ内での外部使用のために構成されてもいる内部ハードディスクドライブ（ＨＤＤ）７１４（例えば、ＥＩＤＥ、ＳＡＴＡ）、（例えば、脱着可能なディスケット７１８から読み取るか又は脱着可能なディスケット７１８に書き込む）磁気フロッピーディスクドライブ（ＦＤＤ）７１６、及び、（例えば、ＣＤ−ＲＯＭディスク７２２を読み取り、又は、ＤＶＤ等の他の高容量光学媒体に読み込む）光ディスクドライブ７２０を含む。ＨＤＤ７１４，ＦＤＤ７１６，及び光ディスクドライブ７２０は、ＨＤＤインターフェイス７２４，ＦＤＤインターフェイス７２６，及び光ドライブインタフェース７２８によってそれぞれシステムバス７０８に接続される。外部ドライブの実装のためのＨＤＤインターフェイス７２４は、ユニバーサルシリアルバス（ＵＳＢ）とＩＥＥＥ１３９４インターフェイス技術のうちの少なくとも１つ又はそれら双方を含む。
【００５２】
ドライブ及び関連コンピュータ読取可能媒体は、データ、データ構造、コンピュータ実行可能命令等の不揮発データ記憶を提供する。コンピュータ７０２に対しては、ドライブ及び媒体は適切なディジタル形式のいかなるデータの記憶装置をも収容する。上記コンピュータ読取可能媒体の説明は、ＨＤＤ、脱着可能な磁気ディスケット（例えば、ＦＤＤ）、及びＣＤ若しくはＤＶＤ等の脱着可能な光学媒体を意味し、当業者であれば、ｚｉｐドライバ、磁気カセット、フラッシュメモリカード、カートリッジ等コンピュータによって読み取り可能である他のタイプの媒体が例示的な動作環境においても使用可能であり、かかるいかなる媒体も開示されたアーキテクチャの新規な方法を実行するコンピュータ実行可能命令を含むことを容易に理解できるであろう。
【００５３】
多数のプログラムモジュールは、オペレーティングシステム７３０，１つ以上のアプリケーションプログラム７３２，他のプログラムモジュール７３４，及びプログラムデータ７３６を含み、ドライブ及び揮発性メモリ７１２内に記憶される。クライアントコンピュータシステムとして、１つ以上のアプリケーションプログラム７３２、他のプログラムモジュール７３４、及びプログラムデータ７３６は、階層型クライアントビューセット１１０、列１０８、列動作１０６、列変更動作１１４、クライアント２０４、列表示２１０、クライアント表示２１２、列動作３００、位置コンバータインデックス３０２、折りたたまれたセットリスト３０４、拡大表示４００、折りたたまれた表示４０２、位置コンバータインデックス（４０４及び４０８）、折りたたまれたセットリスト（４０６及び４１０）、及び、例えば、図６の方法を含む。コンピュータ７０２は、サーバシステム、１つ以上のアプリケーションプログラム７３２、他のプログラムモジュール７３４として使用され、プログラムデータ７３６は、呼出要素１０２、更新要素１１２、階層データセット１０４、サーバ２０２、データセット表示２０６、列表示２０８、例えば、図５の方法を含む。
【００５４】
また、オペレーティングシステム、アプリケーション、モジュール、及び／若しくは、データのすべて又は一部が揮発性メモリ７１２内にキャッシュされる。開示されたアーキテクチャは、種々の市販利用可能なオペレーティングシステム又はオペレーティングシステムの組合せにより実装可能であることを十分理解されたい。
【００５５】
ユーザは、例えば、キーボード７３８及びマウス７４０等のポインティングデバイスを等の１つ以上の有線／無線入力装置を介して、コマンド及び情報をコンピュータ７０２に入力する。他の入力装置（図示せず）は、マイクロホン、ＩＲリモートコントロール、ジョイスティック、ゲームパッド、スタイラスペン、タッチスクリーン等を含む。これら入力装置及び他の入力装置は、多くの場合、システムバス７０８に接続されたユーザ入力インターフェイス７４２を介して処理ユニット７０４に接続されるものの、パラレルポート、ＩＥＥＥ１３９４シリアルポート、ゲームポート、ＵＳＢポート、ＩＲインターフェイス等の他のインターフェイスにより接続される。
【００５６】
また、モニタ７４４又は他のタイプの表示デバイスがビデオインターフェース７４６等のインターフェイスを介してシステムバス７０８に接続されている。モニタ７４４に加えて、コンピュータは、スピーカ、プリンタ等の他の周辺出力装置（図示せず）を通常含む。
【００５７】
コンピュータ７０２は、（複数の）リモートコンピュータ７４８等の１つ以上のリモートコンピュータに対する有線通信及び／又は無線通信を介した論理接続を使用して、ネットワークでつながれた環境において動作する。簡潔にするために、メモリ／記憶装置７５０のみが図示されているものの、リモートコンピュータ７４８は、ワークステーション、サーバーコンピュータ、ルータ、パーソナルコンピュータ、ポータブルコンピュータ、マイクロプロセッサベースのエンターテイメントアプリケーション、ピアデバイス、又は、他の共通ネットワークノードであり、コンピュータ７０２に対して上述した要素の多く又はすべてを通常含む。示された論理接続は、ローカルエリアネットワーク（ＬＡＮ）７５２及び／又は大ネットワーク、例えば、広域ネットワーク（ＷＡＮ）７５４への有線／無線接続を含む。かかるＬＡＮ及びＷＡＮネットワーク環境は、職場及び会社内では一般的であり、イントラネット等の企業全体のコンピュータネットワークを円滑にし、そのすべてがグローバル通信ネットワーク、例えば、インターネットに接続する。
【００５８】
ＬＡＮネットワーク環境において用いられると、コンピュータ７０２は、有線及び／若しくは無線通信ネットワークインタフェース又はアダプター７５６を介してＬＡＮ７５２に接続される。アダプター７５６は、アダプター７５６の無線機能と通信するために配置された無線アクセスポイントを含むＬＡＮ７５２への有線及び／又は無線通信を容易にせしめる。
【００５９】
ＷＡＮネットワーク環境において用いられると、コンピュータ７０２はモデム７５８を含み、又は、ＷＡＮ７５４上の通信サーバに接続され、又は、インターネット等を介したＷＡＮ７５４上で通信を確立する他の手段を有する。モデム７５８は、内部であり又は外部であり、有線デバイス及び／又は無線デバイスであり、入力装置インターフェイス７４２を介してシステムバス７０８に接続される。ネットワーク化された環境においては、コンピュータ７０２に対して示されたプログラムモジュール又はその部分は、リモートメモリ／記憶装置７５０に記憶される。図示されたネットワーク接続は例示であり、コンピュータ間の通信リンクを確立する他の手段を使用可能であることが十分理解されるであろう。
【００６０】
コンピュータ７０２は、例えば、プリンタ、スキャナ、デスクトップコンピュータ及び／又はポータブルコンピュータ、携帯情報端末（ＰＤＡ）、通信衛星、無線で検出可能なタグに関連付けられた設備又は場所のあらゆる一部（例えば、売店、ニューススタンド、トイレ）及び電話とともに、無線通信（例えば、ＩＥＥＥ８０２．１１無線変調技術）において動作するように配置された無線デバイス等の標準規格のＩＥＥＥ８０２ファミリーを使用して、有線デバイス若しくはエンティティ及び無線デバイス若しくはエンティティと通信するように動作可能である。これは、少なくともＷｉ−Ｆｉ（又は無線のフィデリティ）、ＷｉＭａｘ、及びブルートゥースＴＭ無線技術を含む。したがって、通信は、従来のネットワークと同様に、事前に定義された構築であり、又は、単に少なくとも２つのデバイスの間の臨時の通信とすることもできる。Ｗｉ−Ｆｉネットワークは、呼出のＩＥＥＥ８０２．１Ｉｘ（ａ、ｂ、ｇ、等）と呼ばれる無線技術を使用して、安全で、信頼性があり、高速な無線接続性を提供する。Ｗｉ−Ｆｉネットワークがコンピュータを互いに接続せしめ、インターネットに接続せしめ、そして、（ＩＥＥＥの８０２．３関連の媒体及び機能を使用する）有線ネットワークに接続せしめるように使用される。
【００６１】
図８を参照すると、呼出処理及び表示処理を実行する例示的コンピューティング環境８００の概略ブロック図を示している。環境８００は、１つ以上のクライアント８０２を含む。クライアント８０２は、ハードウェア及び／又はソフトウェア（例えば、スレッド、プロセス、コンピューターデバイス）である。（複数の）クライアント８０２は、例えば、（複数の）クッキ及び／又は関連コンテクスト情報を収容する。
【００６２】
また、環境８００は、１つ以上のサーバ８０４を含む。また、（複数の）サーバ８０４は、ハードウェア及び／又はソフトウェア（例えば、スレッド、プロセス、コンピューターデバイス）である。サーバ８０４は、例えばアーキテクチャを使うことによって変換を実行するためのスレッドを収容する。クライアント８０２とサーバ８０４との間において考えられる通信は、データパケットの形態において可能であり、２つ以上のコンピュータプロセス間において送信されるように適合されている。データパケットは、例えば、クッキ及び／又は関連コンテクスト情報を含む。環境８００は、（複数の）クライアント８０２と（複数の）サーバ８０４との間の通信を容易にするのに利用される通信フレームワーク８０６（例えば、インターネット等のグローバルコミュニケーションネットワーク）を含む。
【００６３】
通信は、（光ファイバを含む）有線技術及び／又は無線技術を介して促進される。（複数の）クライアント８０２は、（複数の）クライアント８０２でしか使えない情報（例えば、（複数の）クッキ及び／又は関連コンテクスト情報）を記憶するのに利用される１つ以上の（複数の）クライアントデータストア８０８に接続されている。同様に、（複数の）サーバ８０４は、サーバ８０４に局在する情報を記憶するのに利用される１つ以上の（複数の）サーバデータストア８１０に動作可能となるように接続されており。
【００６４】
（複数の）クライアント８０２は、クライアント２０４及び図６の方法を含み、（複数の）サーバは、サーバ２０２及び図５の方法を含む。
【００６５】
上述したことは、開示されたアーキテクチャの実施例を含む。考えられる要素又は方法のあらゆる組合せについて説明するのは、もちろん可能でないが、当業者であれば、更に多くの組合せ及び置換が可能であることを認識するであろう。従って、新規なアーキテクチャが、添付された特許請求の範囲内にあるすべての代替、修正、変更を包含することが意図されている。その上、「含む」という用語が詳細な説明又は特許請求の範囲の一方において使用されている程度において、伝統的な単語として特許請求の範囲において用いられる場合には、かかる用語は、「含む」という用語と同様に包括的であることを意図している。
【図１】
2011524047.tif 000003
【図２】
2011524047.tif 000004
【図３】
2011524047.tif 000005
【図４】
2011524047.tif 000006
【図５】
2011524047.tif 000007
【図６】
2011524047.tif 000008
【図７】
2011524047.tif 000009
【図８】
2011524047.tif 000010
【国際調査報告】
2011524047.tif 000011
2011524047.tif 000012