(57)【要約】  グリッドベースアプリケーションにおけるクライアント上でのマルチレベル・アンドゥのアーキテクチャが提供される。このアーキテクチャは、変更のトラッキングが、非同期な（および同期的な）シナリオで切れ目なく機能する、制御駆動の変更をカスケードするシステムである。クライアントアプリケーションは、グリッドオブジェクトに関連付けられ、グリッドオブジェクトをインスタンス化しかつ構成する。アプリケーションは、グリッド内のデータに対する変更を、開始することが可能であり、および／または、ユーザが、グリッド内のデータを直接編集することが可能である。変更の結果は、アプリケーションへの通知となり、通知にはオーダキーが含まれる。アプリケーションは、通知をコンシュームして、次に、オーダキーを使用して更新機能を呼び出すことにより、同期または非同期の計算に基づき、新しい変更を付け加えることができる。アプリケーションは、キーを使用して、アンドゥ／リドゥのために適切に収集される更なる更新を加える。
2011509489.tif 000002
【特許請求の範囲】
【請求項１】
ウェブアプリケーションを介するデータへの非同期の変更をトラッキングするための変更コンポーネント（１０２）と、
データ変更を前の状態にするリバース操作を実行するためのリバースコンポーネント（１０８）とを備えることを特徴とするコンピュータに実装されるアンドゥシステム（１００）。
【請求項２】
前記データ変更がウェブページに関連付けられることを特徴とする請求項１に記載のシステム。
【請求項３】
前記ウェブアプリケーションは、ブラウザアプリケーションであることを特徴とする請求項１に記載のシステム。
【請求項４】
前記データ変更は、クライアントベースのデータグリッドを介して行われることを特徴とする請求項１に記載のシステム。
【請求項５】
前記データ変更は、グリッドを介して手動またはプログラムで行われることを特徴とする請求項４に記載のシステム。
【請求項６】
前記リバース操作は、少なくとも２つの前の変更に従ってデータを存在した状態に復元することを特徴とする請求項１に記載のシステム。
【請求項７】
前記ウェブアプリケーションは、変更の通知であって、他の変更に関する変更をドキュメントで記録するオーダキーを含む通知、を受け取ることを特徴とする請求項１に記載のシステム。
【請求項８】
前記変更は、サーバドキュメントに関連付けられ、クライアントベースのリバース操作のためのアンドゥスタックに入力され、クライアントベースの変更トラッカにおいてトラッキングされることを特徴とする請求項１に記載のシステム。
【請求項９】
サーバのサーバドキュメント内のデータ変更をクライアントベースのグリッドを介して検出するステップ（１０００）と、
オーダキーを変更通知内の変更に割り当てるステップ（１００２）と、
前記変更通知を認証のためにサーバに送るステップ（１００４）と、
非同期の認証情報を前記通知に基づきサーバから受け取るステップ（１００６）と、
認証情報をオーダキーに従ってグリッド内に順序づけるステップ（１００８）と、
サーバドキュメントにおけるアンドゥ／リドゥ操作をオーダキーに基づき管理するステップ（１０１０）とを備えることを特徴とするデータのリバース操作を提供する、コンピュータに実装される方法。
【請求項１０】
前記グリッドにおける変更に基づきアンドゥスタックおよび変更トラッカを介して変更をカスケードするステップをさらに備えることを特徴とする請求項９に記載の方法。
【請求項１１】
アンドゥスタック内の変更を記憶し、アンドゥ／リドゥ操作の一部として第１の明示的な変更に到達するまで変更を戻すステップをさらに備えることを特徴とする請求項９に記載の方法。
【請求項１２】
明示的な変更を変更トラッカデータ構造内に記憶するステップをさらに備えることを特徴とする請求項９に記載の方法。
【請求項１３】
全ての黙示的な変更を次の明示的な動作の前まで戻し、そして、次の明示的な動作を取り消すステップをさらに備えることを特徴とする請求項９に記載の方法。
【請求項１４】
クライアントウェブアプリケーションを介して、サーバのウェブドキュメントに対するデータ変更を開始するステップ（１２００）と、
順序立てられた変更の履歴として前記変更をクライアントアンドゥスタック内に記憶し、変更エントリをクライアント変更トラッカに記憶するステップ（１２０２）と、
前記変更をサーバにおいて認証するステップ（１２０４）と、
認証情報を、非同期にサーバからウェブアプリケーションに受け取るステップ（１２０６）と、
前記アンドゥスタック内の順序立てられた変更の履歴および前記変更トラッカ内の変更のエントリに基づき、ウェブドキュメントにおけるアンドゥ／リドゥ操作を管理するステップ（１２０８）とを備えることを特徴とするデータのリバース操作を提供する、コンピュータに実装される方法。
【請求項１５】
前記データ変更を顕在化させ、クライアントのデータグリッドを介して、前記データ変更を可視化するステップをさらに備えることを特徴とする請求項１４に記載の方法。
【請求項１６】
ウェブアプリケーションにおいて実行される保存操作の前に起こった、ウェブドキュメントにおける変更をアンドゥするステップをさらに備えることを特徴とする請求項１４に記載の方法。
【請求項１７】
保存操作に応答して、変更を変更トラッカから読み出し、前記変更をデータソースにコミットし、変更トラッカをクリアするステップをさらに備えることを特徴とする請求項１４に記載の方法。
【請求項１８】
順序立てられた変更の履歴は、各変更に割り当てられた変更キーに基づくことを特徴とする請求項１４に記載の方法。
【請求項１９】
黙示的な変更情報および明示的な変更情報を、黙示的および明示的変更のアンドゥを実行する機能と共に、アンドゥスタック内に記憶するステップをさらに備えることを特徴とする請求項１４に記載の方法。
【請求項２０】
明在化された変更をセルレベルの変更の集合としてエクスポートするステップをさらに備えることを特徴とする請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
デスクトップクライアントアプリケーションと「シン」ウェブアプリケーションとの間の主な差別化要因の１つに、編集実績の豊富さがある。従来、ウェブアプリケーションでは、ユーザがアプリケーションをナビゲートする際にサーバにデータをコミットする個々のポストバックに従って、サーバとの間でデータが処理される。ユーザの動作をアンドゥする（取り消す）ことは、ユーザが一旦ウェブページのナビゲートをやめてしまうと、多くの場合、不可能である。逆に、ユーザは、クライアントアプリケーションとはより流動的に対話可能であるが、ユーザがデータを保存しようとするときに保存できるだけである。さらに、ユーザがクライアントアプリケーションで作業中に編集で間違いをした場合、ユーザは、１回または複数回「アンドゥ」を選択して、保存されているファイルには影響を与えずに変更を元に戻すことができる。
【背景技術】
【０００２】
今日、多くのソフトウェア技術において、ウェブ型のアプリケーションを介して企業のサーバ上でデータと対話する従業員を必要としている。例えば、プロジェクトサーバ内に通常見られる、構造化されたタスクデータの編集（例えば、追加／削除タスク、リソースの割り当て、スケジュールデータの変更等）を、ウェブページを介して行う場合を考える。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
マルチレベル・アンドゥの能力が無いと、ユーザが動作をアンドゥできないため、これは危険の高いものとなる。ユーザは、頻繁に保存を行うことができるが、そのようなデータセットをサーバに保存することは時間のかかる処理である。従って、効果的な編集性能は、複雑なデータをウェブページにタイプするためのユーザの快適性に比例して減少する。
【課題を解決するための手段】
【０００４】
以下では、本明細書に記載されるいくつかの新規な実施形態の、基本的な理解を提供するために、簡素化された要約を示す。この要約は、広範囲な概要ではなく、かつ、重要／決定的な要素を確認することまたはその範囲を明確にすること、を意図していない。その唯一の目的は、後に示されるさらに詳細な記載の前置きとして、いくつかの概念を簡素化された形式で示すことである。
【０００５】
開示されるマルチレベル・アンドゥアーキテクチャは、変更のトラッキングが、非同期な（および同期的な）シナリオで切れ目なく機能する、制御駆動の変更をカスケードするシステムである。さらに、アンドゥでは、保存動作を超えて、黙示的変更と明示的変更との間の違いを理解し、これらの変更を処理し、それに従ってアンドゥのためのコンテキストが提供される。
【０００６】
クライアントアプリケーションは、アプリケーションのデータを、テーブル状に表現するグリッドオブジェクトに関連付けられ、それによって、編集および可視化をサポートする。アプリケーションは、部分的には、グリッドオブジェクトをインスタンス化し構成する。アプリケーションは、グリッド内のデータに対する変更を、プログラムで開始することが可能であり、および／または、ユーザが、グリッド内のデータを直接編集することが可能である。変更の結果は、アプリケーションへの通知となり、通知にはオーダキーが含まれる。アプリケーションは、通知をコンシューム（消費）して、次に、オーダキーを使用して更新機能を呼び出すことにより、同期または非同期の計算（例えば、スケジューリング）に基づき、新しい変更を付け加えることができる。アプリケーションは、未来の任意の時点においてキーを使用して、この変更にさらなる更新を加えることができる。更新は、アンドゥ／リドゥのために、適切に収集される。
【０００７】
前述のおよび関連する目的を達成するため、ある例示的態様が以下の記載および添付の図面と関連して本明細書において記載される。これらの態様は、本明細書に開示される原理を採用することが可能である種々の方法のうちのわずかを示し、全てのそのような態様およびその等価物を含むことを意図する。他の利点および新規の特徴は、図面と併せて考察されるときに以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【０００８】
【図１】コンピュータに実装されるアンドゥシステムを例示する図である。
【図２】マルチレベルのデータ変更のリバース操作を提供するクライアント・サーバシステムの実装を例示する図である。
【図３】データへの非同期のアンドゥ／リドゥ操作の例を例示する図である。
【図４】非同期の順不同変更の処理に対処する変更キーの使用に基づく、最終的なデータ更新を例示する図である。
【図５】変更コンポーネントの一部として変更トラッカ、および、リバースコンポーネントの一部としてアンドゥスタック、を例示する図である。
【図６】グリッド内のデータの初期のグリッド状態、アンドゥスタックのスタック状態、および変更トラッカのトラッカ状態、を例示する図である。
【図７】黙示的変更と、スタック状態およびトラッカ状態への影響と、を例示する図である。
【図８】グリッドデータのタスク名の変更と、アンドゥスタックおよび変更トラッカへの影響と、を例示する図である。
【図９】アンドゥ操作の実行を例示する図である。
【図１０】データのリバース操作を提供する、コンピュータに実装される方法を例示する図である。
【図１１】明示的／黙示的変更を処理するための方法を例示する図である。
【図１２】データのリバース操作を提供する、コンピュータに実装される方法を例示する図である。
【図１３】開示されるアーキテクチャに従ってマルチレベル・アンドゥを実行すべく作動可能なコンピュータシステムのブロック図である。
【図１４】マルチレベル・アンドゥ処理のための例示のクライアント・サーバコンピュータ環境の概略ブロック図である。
【発明を実施するための形態】
【０００９】
開示されるアーキテクチャでは、グリッドベースアプリケーションにおいてクライアント上でマルチレベル・アンドゥをサポートすることにより、「シン」ウェブアプリケーションの編集経験における大きなギャップが埋められる。この特徴は多くのオンライン編集経験にも同様に有用である。例えば、マルチレベル・アンドゥにより、ユーザは、一度により多くのデータを編集する際に、より快適に感じることができ、また、アプリケーションの有益な性能をユーザはより認知することができる。さらに、オンラインバージョンのアプリケーションでも、レコード内の複数の変更をアンドゥおよびリドゥすることができ、ユーザが編集について全体的に制御できる、という利点がある。
【００１０】
ここで図面を参照すると、全体を通して、同様の参照番号が同様の要素の参照に使用される。以下の記載では、説明の目的で、多数の特定の詳細が、その全体的な理解のために記載される。しかし、新規な実施形態が、これらの特定の詳細が無くとも実践可能であることは明らかである。他の例において、周知の構造およびデバイスが、その説明を容易にするために、ブロック図の形式で示される。
【００１１】
図１は、コンピュータに実装されるアンドゥシステム１００を例示する。システム１００には、ウェブアプリケーション１０６を介するデータ１０４に対する非同期の変更をトラッキングする変更コンポーネント１０２が含まれる。システム１００には、データ１０４に対するデータ変更を前の状態にするリバース操作（例えば、アンドゥ，リドゥ）を実行するための、リバースコンポーネント１０８がさらに含まれる。データ１０４に対する変更は、データグリッド１１０を介して行うことができる。データ１０４に対する変更は、手動またはプログラムで、グリッド１１０を介して行うことができる。
【００１２】
アプリケーション１０６は、グリッド１１０をインスタンス化し、かつ構成する。グリッド１１０は、アプリケーション１０６に記憶されるデータをテーブル状に表現したものであり、編集と可視化をサポートする。変更とは、前と後のセルのデータ、加えて，セルの値を変化させるのに要した動作をいう。
【００１３】
一実施形態において、ウェブアプリケーション１０６は、ブラウザアプリケーションであり、これを介して、サーバによりホストされるウェブページに対して変更がなされる。そして、ユーザは、ウェブページドキュメントに対してなされる変更に、マルチレベル・アンドゥ／リドゥのリバース操作を行うことができる。別の実装において、ウェブアプリケーション１０６は、ユーザがネットワークデータよりむしろローカルデータと対話し、かつ、マルチレベル・アンドゥ／リドゥ等のリバース操作を行うことを可能にする、ブラウザである。
【００１４】
図２は、マルチレベルのデータ変更のリバース操作を提供するクライアント・サーバシステム２００の実装を例示する。システム２００は、図１のシステム１００を示し、ウェブアプリケーション１０６を介するデータ１０４に対する非同期の変更をトラッキングする変更コンポーネント１０２と、データ変更を前の状態にするリバース操作（例えば、アンドゥ，リドゥ）を実行するためのリバースコンポーネント１０８と、がある。データ変更は、手動および／またはプログラムでデータグリッド１１０を介して行うことができる。ここで、データ変更が、ウェブサーバ２０２のウェブドキュメント（例えば、ウェブページ）２００に加えられる。グリッド１１０に編集が通ると，変更通知が非同期の認証のためにアプリケーション１０６を介してサーバ２０２に送られる。一度認証されると、変更は、データ１０４に対する更新として、アプリケーション１０６を介してグリッド１１０に戻される。
【００１５】
図３は、データへの非同期のアンドゥ／リドゥ操作の例３００を例示する。非同期の変更は、任意の数の非同期の認証または増加を必要とする変更である。エンティティがグリッドデータに対して変更を加えると、この変更の結果がアプリケーション１０６への通知となる。この通知に含まれるものは、オーダ（または変更）キーである。アプリケーション１０６では、通知をコンシュームして、次に、そのオーダキーで更新機能を呼び出すことにより、いくつかの同期または非同期の計算（例えば、スケジューリング）に基づき、新しい変更を付け加えることができる。アプリケーション１０６は、未来の任意の時点においてオーダキーを自由に使用して、この変更にさらなる更新を加える。これらの更新は、アンドゥ／リドゥのために、適切に収集される。
【００１６】
ここで、非同期の認証を必要とする、ＡおよびＢで示される２つの変更が、グリッド１１０に入力される。編集が行われると、変更はグリッド１１０により順番にキャプチャされる。各変更は、オーダキーでタグ付けされる。例えば、変更Ａは、オーダキーＡでタグ付けされ（また、変更キーＡでも示される）、第２の変更Ｂ（時間的に変更Ａよりも後）が変更キーＢで示される。データ変更が行われると、グリッド１１０はこれを検出し、通知をアプリケーション１０６（例えば、ブラウザ）に送り、アプリケーション１０６が今度はその通知を認証のためにサーバ２０２に送る。サーバ２０２における認証処理は、順不同で発生させることが可能であり、または一旦認証が完了すると、サーバは前に指示された認証を順不同で送ることができる。従って、オーダキーにより、グリッド１１０における変更の指示が容易にされる。
【００１７】
本例において、第１の変更通知要求３０２が、グリッド１１０からアプリケーション１０６へ送られて、第２の行の、「期間」とラベル付けされるフィールドを有する列に対して行われた、期間の新しい値が５日間と設定されるデータ変更Ａを報告する。それに続くデータ編集では、グリッド１１０は、第２の変更通知要求３０４をアプリケーション１０６に送り、第３の行の、「期間」とラベル付けされるフィールドを有する列に対して行われた、期間の新しい値が７日間と設定されるデータ変更Ｂを報告する。変更通知要求（３０２および３０４）は、アプリケーション１０６に順番に送られる（例えば、変更Ａの次に変更Ｂ）。アプリケーション１０６は次に、通知要求（３０２および３０４）をサーバ２０２に転送し、サーバ２０２は、変更要求（３０２および３０４）を非同期に認証し、認証をアプリケーション１０６に戻す。
【００１８】
ここで、サーバ２０２は、第１の変更通知要求３０２に対する第１の認証処理３０６を開始する。次に、サーバ２０２は、第２の変更通知要求３０４に対する第２の認証処理３０８を受け取り、開始する。サーバ２０２は、第１の認証処理３０６の前に第２の認証処理３０８を完了する。従って、第２の更新応答３１０が、関連するデータを更新するために、サーバ２０２からアプリケーション１０６を介してグリッド１１０に送られる。第２の更新応答３１０には、データ変更が第１のデータ変更Ａに対応して行われた順番を示すオーダキーＢが含まれる。第２の更新応答３１０にはまた、変更が、第３の行の、「終了日」とラベル付けされるフィールドで行われ、終了日の新しい値が５／２７である、ということも含まれる。これは、第２の変更通知要求３０４内の新しい値７日間に対応する。
【００１９】
サーバ２０２は、次に、第１の認証処理３０６を完了し、関連するデータを更新するために、第１の更新応答３１２を、アプリケーション１０６を介してグリッド１１０に送る。第１の更新応答３１２には、データ変更が第２のデータ変更Ｂに対応して行われた順番を示すオーダキーＡが含まれる。第１の更新応答３１２にはまた、変更が、第２の行の、「終了日」とラベル付けされるフィールドで行われ、終了日の新しい値が５／２５である、ということも含まれる。これは、第１の変更通知要求３０２内の新しい値５日間に対応する。従って、変更は、順不同で認証から戻される（変更Ｂの後にＡ）。
【００２０】
図４は、非同期の順不同変更処理に対処する変更キーに基づく、最終的なデータ更新を例示する。最後の保存操作後に起こったデータ変更への要求の結果４００を示す。結果は、サーバ２０２から戻されると、実際に事象が起こった順番（変更Ｂの後に変更Ａ）ではなく、変更（またはオーダ）キーが指示する論理的順番（変更Ａの後に変更Ｂ）で配置され、記憶される。従って、変更Ａに関する変更４０２が、一緒に記憶され、変更Ｂの前に起こるものとして示される。同様に、変更Ｂに関する変更４０４が、一緒に記憶され、変更Ａの後に起こるものとして示される。
【００２１】
アンドゥおよびリドゥのリバース操作は、このように操作もされる。従って、ユーザがアンドゥを選択した場合、変更Ｂに関連する両方の変更（期間および終了日）は、それが変更キーＢにより示されるようにユーザが行った最後の変更であるため、たとえ、変更Ａに対する更新が、グリッドが遭遇した最後の事象であったとしても、アンドゥされるであろう。
【００２２】
エンティティ（例えば、ユーザまたはシステム）は、グリッドと対話して、明示的または黙示的に、グリッド内のデータに対して変更を行う。明示的な変更は、データに直接影響するグリッドに対して行われる変更である（例えば、タスクの開始日を変更する）。黙示的な変更は、データに影響を与えないグリッドに対して行われる変更である（例えば、列のサイズを変更する）。
【００２３】
図５は、変更コンポーネント１０２の一部として変更トラッカ５００、および、リバースコンポーネント１０８の一部としてアンドゥスタック５０２、を例示する。エンティティがグリッドデータに対して変更を行うと、各変更の型が記録され、実行およびアンドゥするための機能がアンドゥスタック５０２に配置される。アンドゥスタック５０２は、動作の最後の組の順序立てられた履歴が記憶されるデータ構造である。アンドゥ事象が起こると、動作がアンドゥスタック５０２から取り除かれ、第１の明示的な変更に遭遇するまで戻される。第１の明示的な変更は、戻された後の最後の動作である。この時点で、アンドゥ操作が、終了する。これに続くアンドゥ操作は、同じ方法で処理される。アンドゥ命令では、次の明示的な動作の前の全ての黙示的な動作を取り消し、そして、明示的な動作を取り消す。
【００２４】
このシステムの効果は、アンドゥ操作の後、グリッドの視覚的状態が、アンドゥされた動作の前まで復元されることである。全ての明示的な変更は、アンドゥスタック５０２から別個の構造（変更トラッカ５００）に記憶される。この変更トラッカ５００を、セルレベルの変更の集合としてエクスポートすることができる。
【００２５】
アンドゥスタック５０２および変更トラッカ５００は、独立した構造である。変更が起こると、その変更は、アンドゥスタック５０２に押し入れられ、変更が明示的である場合は、その変更のエントリが変更トラッカ５００に作成される。変更が黙示的である場合、変更は、変更トラッカ５００にログをとられる。
【００２６】
アンドゥ事象が起こると、変更は、アンドゥスタック５０２および変更トラッカ５００から取り除かれ、新しい値が、変更トラッカ５００に記録される。変更が変更トラッカ５００に存在する場合、その変更は取り除かれる。変更が変更トラッカ５００に存在しない場合、変更を取り消す動作（これそのものが変更である）が変更ログに追加される。保存操作が起こると、変更は、変更トラッカ５００から読みだされ、データソースにコミットされて、変更トラッカ５００がクリアされる。
【００２７】
このシステムの効果は、変更をアンドゥするのに必要な情報が、アンドゥスタック５０２に記憶されるため、エンティティが、保存事象の前に起こった動作をアンドゥすることが可能であることである。同様に、変更トラッカ５００は、アンドゥスタック５０２が無い場合に機能することが可能である。
【００２８】
図６から９は、グリッドデータ、アンドゥスタック、および変更トラッカの状態で起こる変更を例証するための一連の図を例示する。図６は、グリッド内のデータの初期のグリッド状態６００、アンドゥスタックのスタック状態６０２、および、変更トラッカのトラッカ状態６０４を示す。変更は、グリッドデータの行２および３で起こる。
【００２９】
エンティティは次に、フェンスのペンキ塗りには、１日ではなく２日かかると決めることにより明示的な変更を行う。変更グリッド状態６０６には、期間の列の第２の行を２日間とする、変更が含まれる。プロジェクト管理アプリケーションの一部としてのプロジェクトの場合、例えば、期間の変更は、「終了」とも称する終了日の変更を引き起こす（カスケード変更）。カスケードトランザクションが、両方の変更を包含して作成される。従って、終了の列の第２の行のフィールド情報が、変更後のグリッド状態６０６に示すように、５／２１／ｘｘ月曜日から５／２２／ｘｘ火曜日に変更される。
【００３０】
これらの期間および終了の変更は、スタック状態６０８に示すように、アンドゥスタックに押し入れられる。加えて、トラッカ状態６１０には、変更が反映される。図７は、黙示的変更と、スタック状態およびトラッカ状態への影響と、を示す。ここで、エンティティは、終了の列を非表示にし、これにより、グリッド状態６１２に変わり、このことで、変更がアンドゥスタックに押しいれられ、スタック状態６１４に変わるが、変更トラッカのトラッカ状態６１０は変わらない。エンティティは、プロジェクトを保存し、このことで、変更トラッカのトラッカ状態６１０がクリアされてスタック状態６１６になり、グリッドのデータはここでサーバデータと一致する。
【００３１】
図８は、グリッドデータのタスク名の変更と、アンドゥスタックおよび変更トラッカへの影響と、を例示する。エンティティが、行３のタスク名を「道具の後片付け」から「プロジェクトの後片付け」に変更したことに基づき、グリッド状態６１８を変更する。スタック状態６２０には、スタックに押し入れられた変更が反映され、トラッカにはトラッカ状態６２２が反映される。
【００３２】
図９は、アンドゥ操作の実行を例示する。スタック状態６２２およびトラッカ状態６２６（前回からの変更無し）に示すように、アンドゥでは、アンドゥスタックおよび変更トラッカから変更をポッピングすることにより、最後の明示的な変更を取り消す。エンティティは次に、アンドゥをもう一度実行し、これにより黙示的変更および残っている明示的変更の両方が取り消される。このカスケード効果により、変更がアンドゥスタックから取り除かれてスタック状態６２８になり、逆の変更が変更トラッカに加えられトラッカ状態６３０になり、グリッド状態がグリッド状態６３２に戻されて，図６のグリッド状態６００と同じものになる。
【００３３】
次のものは、開示されるアーキテクチャの新規な態様を実行するための例示の方法論を代表して表す一連のフローチャートである。説明を容易にする目的で、例えば、フローチャートまたはフロー図の形式で本明細書に示される１つまたは複数の方法論が、一連の動作として示され説明されるが、方法論は動作の順番により制限されず、ある動作は、その方法論に従って、本明細書に示され説明されるものとは異なる順番および／またはその他の動作と同時に起こる、ことを理解および認識すべきである。例えば、当業者は、あるいは方法論が、状態図におけるもののように、一連の相互に関連する状態および事象として表されることを理解および認識するであろう。さらに、方法論において例示される全ての動作が、新規な実装のために必要であるわけではない。
【００３４】
図１０は、データのリバース操作を提供する、コンピュータに実装される方法を例示する。１０００にて、サーバのサーバドキュメントにおけるデータ変更が、クライアントベースのグリッドを介して検出される。１００２にて、オーダキーが、変更通知内の変更に割り当てられる。１００４にて、変更通知が認証のためにサーバに送られる。１００６にて、非同期の認証情報が、通知に基づきサーバから受け取られる。１００８にて、認証情報が、オーダキーに従ってグリッド内に順序づけされる。１０１０にて、サーバドキュメントにおけるアンドゥ／リドゥ操作が、オーダキーに基づき管理される。
【００３５】
図１１は、明示的／黙示的変更を処理する方法を例示する。１１００にて、データの変更は、グリッドを介して受け取られる。１１０２にて、変更の型、および、変更をアンドゥ／リドゥする機能が、アンドゥスタックに記憶される。１１０４にて、リバース操作（例えば、リドゥ、アンドゥ）が受け取られる。１１０６にて、アンドゥ操作が、スタックから取り除かれ、第１の明示的な変更（取り消される最後の動作）に遭遇するまで戻される。
【００３６】
図１２は、データのリバース操作を提供する、コンピュータに実装される方法を例示する。１２００にて、データ変更が、クライアントウェブアプリケーションを介してサーバのウェブドキュメントに対して開始される。１２０２にて、変更は、順序立てられた変更の履歴としてクライアントのアンドゥスタックに記憶され、変更のエントリがクライアントの変更トラッカに記憶される。１２０４にて、変更は、サーバで認証される。１２０６にて、認証情報は、非同期にサーバからウェブアプリケーションに受け取られる。１２０８にて、ウェブドキュメントにおけるアンドゥ／リドゥ操作は、アンドゥスタック内の順序立てられた変更の履歴および変更トラッカ内の変更のエントリに基づき、クライアントにて管理される。
【００３７】
本用途において使用されるとき、用語「コンポーネント」および「システム」は、コンピュータ関連のエンティティ、すなわち、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアのいずれかを参照することを意図する。例えば、コンポーネントは、プロセッサ上で稼働中の処理、プロセッサ、ハードディスクドライブ、（光および／または磁気記憶媒体の）複数の記憶ドライブ、オブジェクト、実行ファイル、実行のスレッド、プログラム、および／または、コンピュータとすることができるが、これに限定されない。例示の目的で、サーバ上で稼働するアプリケーションおよびサーバの両方を、１つのコンポーネントとすることができる。１つまたは複数のコンポーネントは、処理および／または実行のスレッド内に存在させることができ、１コンポーネントは、１つのコンピュータ上に配置すること、および／または、２つまたはそれ以上のコンピュータ間に分散させること、が可能である。
【００３８】
ここで図１３を参照すると、開示されるアーキテクチャに従ってマルチレベル・アンドゥを実行すべく作動可能なコンピュータシステム１３００のブロック図が例示される。その種々の態様の追加のコンテキストを提供するために、図１３および以下の検討では、種々の態様を実装可能な適切なコンピュータシステム１３００の、簡単な、一般的な説明を提供することが意図される。上記の説明は、１つまたは複数のコンピュータ上で稼働することができるコンピュータ実行可能命令の一般的コンテキストでなされたが、当業者は、新規な実施形態はまた、他のプログラムモジュールの組み合わせで、および／または、ハードウェアとソフトウェアとの組み合わせとして、実装することが可能であることを認識するであろう。
【００３９】
一般に、プログラムモジュールには、特定のタスクを実行する、または、特定の抽象データ型を実装する、ルーチン、プログラム、コンポーネント、データ構造等が含まれる。さらに、当業者は、理解するであろうが、発明の方法は、シングルプロセッサコンピュータシステムまたはマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、および、パーソナルコンピュータ、ハンドヘルドコンピュータデバイス、マイクロプロセッサベースまたはプログラム可能な家庭用電化製品等の、それぞれが１つまたは複数の関連するデバイスに動作可能に連結することができるもの、を含む、他のコンピュータシステム構成と共に実践可能である。
【００４０】
例示される態様はまた、特定のタスクが通信ネットワークを介してリンクされるリモート処理装置により実行される、分散コンピュータ環境において実践可能である。分散コンピュータ環境において、プログラムモジュールは、ローカルおよびリモートのメモリ記憶装置の両方に配置することができる。
【００４１】
コンピュータには、典型的には、様々なコンピュータ可読媒体が含まれる。コンピュータ可読媒体は、コンピュータによりアクセス可能であり、揮発性媒体および不揮発性媒体、着脱可能媒体および着脱不可能媒体を含む、任意の利用可能な媒体とすることができる。制限ではなく例として、コンピュータ可読媒体には、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体には、任意の方法、または、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータ等の情報を記憶するための技術により実装される、揮発性および不揮発性、着脱可能および着脱不可能な媒体が含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）もしくは他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または、所望の情報を記憶するのに使用可能な、かつ、コンピュータによりアクセス可能な、任意の他の媒体、が含まれるが、それに限定されない。
【００４２】
再度図１３を参照すると、種々の態様を実装するための例示のコンピュータシステム１３００には、プロセシングユニット１３０４、システムメモリ１３０６、およびシステムバス１３０８を有するコンピュータ１３０２が含まれる。システムバス１３０８により、システムメモリ１３０６を含むがこれに限定されないシステムコンポーネントのためのインターフェースがプロセシングユニット１３０４に提供される。プロセシングユニット１３０４は、任意の種々の市販のプロセッサとすることができる。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャも、プロセシングユニット１３０４として採用することができる。
【００４３】
システムバス１３０８は、メモリバス（メモリコントローラを用いてまたは用いずに）、周辺機器用バス、および、任意の様々な市販のバスアーキテクチャを使用するローカルバスに、さらに相互接続され得る、任意のいくつかのタイプのバス構造とすることができる。システムメモリ１３０６には、不揮発性メモリ（ＮＯＮ−ＶＯＬ）１３１０および／または揮発性メモリ１３１２（例えば、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ））を含むことができる。基本入出力システム（ＢＩＯＳ）は、不揮発性メモリ１３１０（例えば、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ等）に記憶することが可能であり、ＢＩＯＳは、起動中などにコンピュータ１３０２内の要素間の情報の転送を支援する基本ルーチンを記憶する。揮発性メモリ１３１２にはまた、データをキャッシュするためのスタティックＲＡＭ等の高速ＲＡＭを含み事ができる。
【００４４】
コンピュータ１３０２には、内部ハードディスクドライブ（ＨＤＤ）１３１４（例えば、ＥＩＤＥ、ＳＡＴＡ）がさらに含まれ、内部ＨＤＤ１３１４はまた、適切な筐体、磁気フロッピーディスクドライブ（ＦＤＤ）１３１６、（例えば、着脱可能ディスケット１３１８への読み書きのため）および光ディスクドライブ１３２０、（例えば、ＣＤ−ＲＯＭディスク１３２２を読み込み、またはＤＶＤ等の他の大容量光媒体への読み書きのため）における、外部使用のために構成することができる。ＨＤＤ１３１４，ＦＤＤ１３１６、および光ディスクドライブ１３２０は、それぞれＨＤＤインターフェース１３２４、ＦＤＤインターフェース１３２６、および光ドライブインターフェース１３２８により、システムバス１３０８に接続させることができる。外部ドライブ実装のためのＨＤＤインターフェース１３２４には、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）およびＩＥＥＥ１３９４インターフェース技術の少なくとも一方または両方を含むことができる。
【００４５】
ドライブおよび関連するコンピュータ可読媒体は、データの不揮発性記憶、データ構造、コンピュータ実行可能命令等を提供する。コンピュータ１３０２では、ドライブおよび媒体が適切なデジタルフォーマットで任意のデータの記憶を受け入れる。コンピュータ可読媒体の上記の説明では、ＨＤＤ、着脱可能磁気ディスケット（例えば、ＦＤＤ）、およびＣＤまたはＤＶＤ等の着脱可能な光媒体に言及したが、コンピュータが可読の、ＺＩＰドライブ、磁気カセット、フラッシュメモリカード、カートリッジ等の他のタイプの媒体もまた例示の操作環境において使用することができること、およびさらに、任意のそのような媒体に、開示されるアーキテクチャの新規の方法を実行するためのコンピュータ実行可能命令を含むことが可能であることは、当業者には理解されるであろう。
【００４６】
オペレーティングシステム１３３０、１つまたは複数のアプリケーションプログラム１３３２、他のプログラムモジュール１３３４、およびプログラムデータ１３３６を含む、多数のプログラムモジュールを、ドライブおよび揮発性メモリ１３１２に記憶することができる。１つまたは複数のアプリケーションプログラム１３３２、他のプログラムモジュール１３３４、およびプログラムデータ１３３６には、例えば、変更コンポーネント１０２、データ１０４、ウェブアプリケーション１０６、リバースコンポーネント１０８、データグリッド１１０、変更通知（３０２および３０４）、更新応答（３１０および３１２）、変更トラッカ５００、アンドゥスタック５０２、グリッド状態（６００、６０６、６１２、６１８、および６３２）、スタック状態（６０２、６０８、６１４、６２０、６２４および６２８）、およびトラッカ状態（６０４、６１０、６１６、６２２、６２６および６３０）を含むことができる。
【００４７】
オペレーティングシステム、アプリケーション、モジュール、および／またはデータの全てまたは一部はまた、揮発性メモリ１３１２にキャッシュすることができる。開示されるアーキテクチャは、種々の市販のオペレーティングシステムまたはオペレーティングシステムの組み合わせを用いて実装可能であることは理解されるであろう。
【００４８】
ユーザは、コマンドおよび情報を、１つまたは複数の有線／無線の入力デバイス、例えば、キーボード１３３８およびマウス１３４０等のポインティングデバイスを介して、コンピュータ１３０２に入力することができる。他の入力デバイス（図示せず）には、マイクロフォン、ＩＲリモートコントロール、ジョイスティック、ゲームパッド、スタイラスペン、タッチスクリーン等を含むことができる。これらおよび他の入力デバイスは、システムバス１３０８に連結される入力デバイスインターフェース１３４２を介してプロセシングユニット１３０４に接続されることが多いが、パラレルポート、ＩＥＥＥ１３９４シリアルポート、ゲームポート、ＵＳＢポート、ＩＲインターフェース等の他のインターフェースにより接続することができる。
【００４９】
モニタ１３４４または他のタイプのディスプレイデバイスも、ビデオアダプタ１３４６等のインターフェースを介してシステムバス１３０８に接続される。モニタ１３４４に加えて、コンピュータは典型的には、スピーカ、プリンタ等の他の周辺出力デバイス（図示せず）が含まれる。
【００５０】
コンピュータ１３０２は、有線および／または無線の通信を介したリモートコンピュータ（群）１３４８等の１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化環境において作動することができる。リモートコンピュータ（群）１３４８は、ワークステーション、サーバコンピュータ、ルータ、パーソナルコンピュータ、携帯用コンピュータ、マイクロプロセッサベースの娯楽用電化製品、ピアデバイス、または他の共通ネットワークノードとすることが可能であり、かつ、典型的には、コンピュータ１３０２に関して説明した要素の多くまたは全てを含むが、簡潔にするため、メモリ／記憶装置１３５０のみが例示される。示される論理接続には、ローカルエリアネットワーク（ＬＡＮ）１３５２および／またはより大きなネットワーク、例えば、ワイドエリアネットワーク（ＷＡＮ）１３５４への有線／無線接続性が含まれる。そのようなＬＡＮおよびＷＡＮネットワーク環境は、オフィスおよび企業においては一般的なものであり、イントラネット等の企業規模のコンピュータネットワークを容易にするものであるが、それらの全てがグローバル通信ネットワーク、例えば、インターネットに接続することができる。
【００５１】
ＬＡＮネットワーク環境において使用されるとき、コンピュータ１３０２は、有線および／または無線通信ネットワークインターフェースまたはアダプタ１３５６を介してＬＡＮ１３５２に接続される。アダプタ１３５６は、ＬＡＮ１３５２への有線および／または無線通信を容易にすることが可能であり、ＬＡＮ１３５２にはまた、アダプタ１３５６の無線機能性と通信するための、無線アクセスポイントを配設することができる。
【００５２】
ＷＡＮネットワーク環境において使用されるとき、コンピュータ１３０２は、モデム１３５８を含むことが可能であり、または、ＷＡＮ１３５４上の通信サーバに接続され、または、インターネット等によりＷＡＮ１３５４上の通信を確立するための他の手段を有する。モデム１３５８は、内部的または外部的であり、および有線および／または無線のデバイスであり、入力デバイスインターフェース１３４２を介してシステムバス１３０８に接続される。ネットワーク化環境において、コンピュータ１３０２に関連して示されるプログラムモジュール、またはその一部分は、リモートメモリ／記憶装置１３５０に記憶することが可能である。示されるネットワーク接続は、例示のものであり、コンピュータ間の通信リンクを確立する他の手段が使用可能であることは、理解されるであろう。
【００５３】
コンピュータ１３０２は、例えば、プリンタ、スキャナ、デスクトップおよび／または携帯用コンピュータ、ＰＤＡ（携帯情報端末）、通信衛星、無線で検出可能なタグが関連づけられる任意の設備または場所（例えば、売店、新聞売店、トイレ）、および電話、との無線通信（例えば、ＩＥＥＥ８０２．１１無線変調技術）において作動可能に配置される、無線デバイス等の、ＩＥＥＥ８０２系の規格を使用して、有線および無線デバイスまたはエンティティと通信すべく作動可能である。これには、少なくともＷｉ−Ｆｉ（またはワイヤレス・フィディリティ）、ワイマックス、およびブルートゥース（登録商標）無線技術が含まれる。従って、通信は、従来のネットワークまたは少なくとも２つのデバイス間の単なるアドホック通信を用いるような、所定の構造とすることができる。Ｗｉ−Ｆｉネットワークは、ＩＥＥＥ８０２．１１ｘ（ａ、ｂ、ｇ等）と呼ばれる無線技術を使用して、セキュアな、信頼性のある、速い無線接続性を提供する。Ｗｉ−Ｆｉネットワークを使用して、コンピュータをお互いに、インターネットに、および有線ネットワーク（ＩＥＥＥ８０２．３関連の媒体および機能を使用する）に接続することが可能である。
【００５４】
ここで図１４を参照すると、マルチレベル・アンドゥ処理のための例示のクライアント・サーバコンピュータ環境１４００の概略ブロック図が例示される。環境１４００には、１つまたは複数のクライアント（群）１４０２が含まれる。クライアント（群）１４０２は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピュータデバイス）とすることができる。クライアント（群）１４０２は、例えば、クッキーおよび／または関連する状況的情報を収容することができる。
【００５５】
環境１４００にはまた、１つまたは複数のサーバ（群）１４０４が含まれる。サーバ（群）１４０４はまた、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピュータデバイス）とすることができる。サーバ１４０４は、スレッドを収容して、例えば、アーキテクチャを採用して変換を行うことができる。クライアント１４０２とサーバ１４０４との間の１つの可能な通信は、２つまたはそれ以上のコンピュータプロセス間で伝送されるよう適合されるデータパケットの形式とすることができる。データパケットは、例えば、クッキーおよび／または関連する状況的情報を収容することができる。環境１４００には、クライアント（群）１４０２とサーバ（群）１４０４との間の通信を容易にするために採用することが可能な通信フレームワーク１４０６（例えば、インターネット等のグローバル通信ネットワーク）が含まれる。
【００５６】
通信は、有線（光ファイバを含む）および／または無線技術を介して容易にすることが可能である。クライアント（群）１４０２は、クライアント（群）１４０２にローカルな情報（例えば、クッキーおよび／または関連する状況的情報）を記憶するよう採用され得る１つまたは複数のクライアントデータストア（群）１４０８に作動可能に接続される。同様に、サーバ（群）１４０４は、サーバ１４０４にローカルな情報を記憶するよう採用され得る１つまたは複数のサーバデータストア１４１０に作動可能に接続される。
【００５７】
クライアント（群）１４０２には、ウェブアプリケーション１０６を含むことが可能であり、クライアントデータストア（群）１４０８には、データ１０４を含むことが可能である。サーバ（群）１４０４には、サーバ２０２および非同期の認証処理（３０６および３０８）を含むことが可能であり、サーバデータストア１４１０には、ドキュメント２００を含むことが可能である。
【００５８】
上記で説明したものには、開示されるアーキテクチャの例が含まれる。もちろん、コンポーネントおよび／または方法論の全ての考え得る組み合わせを説明することはできないが、当業者は、多くのさらなる組み合わせおよび置換えが可能であることを認識するであろう。従って、新規なアーキテクチャが、添付の請求項の精神および範囲にある全てのそのような代替、修正、および変動を包含することが意図される。さらに、用語「含む」が、発明を実施するための形態または特許請求の範囲において使用される限りにおいて、そのような用語は、用語「備える」が特許請求の範囲において遷移語として採用される際に解釈されるように、「備える」と同様に包括的であることが意図される。
【図１】
2011509489.tif 000003
【図２】
2011509489.tif 000004
【図３】
2011509489.tif 000005
【図４】
2011509489.tif 000006
【図５】
2011509489.tif 000007
【図６】
2011509489.tif 000008
【図７】
2011509489.tif 000009
【図８】
2011509489.tif 000010
【図９】
2011509489.tif 000011
【図１０】
2011509489.tif 000012
【図１１】
2011509489.tif 000013
【図１２】
2011509489.tif 000014
【図１３】
2011509489.tif 000015
【図１４】
2011509489.tif 000016
【国際調査報告】
2011509489.tif 000017
2011509489.tif 000018