(57)【要約】  アプリケーション中で隔離されたデータを維持するための方法およびシステムが開示される。データは、変更をコミットすること、または放棄することをデータクライアントが指示するまで、選択的に隔離される。局所化されたデータ隔離が可能なアプリケーションを構築するためのコンピュータ可読媒体も開示される。アプリケーション仕様を用いて、どのデータエンティティを隔離すべきかが決定され、隔離すべき各データエンティティにつき、１つまたは複数のトランザクショントランスフォームが実装される。
2008539515.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーション中で隔離されたデータを維持するためのコンピュータ実施方法であって、
データを受け取ること、
前記データに関する制御操作の実施要求を受け取ること、
前記制御操作を実施すること、および
ステータス情報を更新することを含むことを特徴とするコンピュータ実施方法。
【請求項２】
前記制御操作は、コミットであることを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項３】
前記制御操作を実施することは、修正２相同時実行モデルを使用して前記データをコミットすることをさらに含むことを特徴とする請求項２に記載のコンピュータ実施方法。
【請求項４】
前記制御操作は、リフレッシュであることを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項５】
バッファ中のデータをリフレッシュすることをさらに含むことを特徴とする請求項４に記載のコンピュータ実施方法。
【請求項６】
前記制御操作は、同期であることを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項７】
バッファ中のデータに対する１つまたは複数の変更を保存すること、
バッファ中の前記データをリフレッシュすること、および
バッファ中のデータに対する前記１つまたは複数の変更をマージすることをさらに含むことを特徴とする請求項６に記載のコンピュータ実施方法。
【請求項８】
前記データ及び前記制御操作の実施要求は、データクライアントから受け取られることを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項９】
前記データクライアントは、データ入力ダイアログボックスであることを特徴とする請求項８に記載のコンピュータ実施方法。
【請求項１０】
前記データクライアントは、データビューであることを特徴とする請求項８に記載のコンピュータ実施方法。
【請求項１１】
局所化されたデータ隔離が可能なアプリケーションを構築するためのコンピュータプログラムを符号化した、コンピューティングシステムからアクセス可能なコンピュータ可読媒体であって、
アプリケーション仕様を受け取ること、
隔離を必要とするデータエンティティを識別すること、および
１つまたは複数のトランザクショントランスフォームを実装することを含むことを特徴とするコンピュータ可読媒体。
【請求項１２】
前記コンピュータプログラムは、ＸＡＦ環境において実装されることを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
段階および領域の制約モデルを使用して、操作の順序を保存することをさらに含むことを特徴とする請求項１２に記載のコンピュータ可読媒体。
【請求項１４】
前記１つまたは複数のトランザクショントランスフォームのそれぞれにつき、特定の一貫性プロトコルを選択することをさらに含むことを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１５】
複数のトランザクショントランスフォームに、複数のデータトランスフォームを存在させることができることを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１６】
１つまたは複数のデータ変換の結果は、トランザクショントランスフォーム内に記憶されることを特徴とする請求項１５に記載のコンピュータ可読媒体。
【請求項１７】
アプリケーション中のデータ隔離のためのシステムであって、
制御操作を実施するための制御モジュールと、
バッファリング済みデータを記憶し、前記バッファリング済みデータと前記制御操作とに関するステータス情報を維持するためのバッファモジュールとを備えることを特徴とするシステム。
【請求項１８】
データ変換を実施するためのデータ変換モジュールをさらに備えることを特徴とする請求項１７に記載のシステム。
【請求項１９】
１つまたは複数の制御操作ポリシーを制御するためのポリシーモジュールをさらに備えることを特徴とする請求項１７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、ソフトウェアに関し、より詳細には、アプリケーション中で隔離されたデータを維持するための方法およびシステムに関する。
【背景技術】
【０００２】
アプリケーションを構築するとき、ソフトウェア開発者は通常、Ｃ＃などの開発言語を使用して「命令型コード」を書くことによってソフトウェアコンポーネントを作成する。命令型コードを作成する際、すなわちソフトウェアコンポーネントにその機能を与えるソフトウェアコードを作成する際、ソフトウェア開発者は、呼出しまたは他の構造を介して、すべてのコンポーネント間にリンクを作成しなければならない。アプリケーションによって提供される任意の機能について、開発者は一般に、アプリケーション特有の機能を実施する種々のソフトウェアコンポーネントすべてのためのコードを作成し、相互に依拠してタスクを完了するこれらのソフトウェアコンポーネント間の相互接続を手作業でコード化する。ソフトウェア開発者は、ユーザインタフェース、データ構造、および、ユーザとアプリケーションとの間の対話に必要なすべての操作を作成する。
【０００３】
ほとんどのアプリケーションでは、ユーザインタフェース、操作（operations）、およびデータ構造はアプリケーション特有である。したがって、アプリケーションを作成するために、ソフトウェア開発者は通常、かなりの量のコードを作成して、特定のユーザインタフェース、操作、および／またはその他の構造を実装する。加えて、ソフトウェア開発者は一般に、種々のソフトウェア間のすべての相互関係を構成および作成する。この結果、どんなアプリケーションを作成するにも、ソフトウェア開発者は、アプリケーションの作成に使用される基礎をなす言語の使用にかなり熟練していなければならない。
【０００４】
特に複雑なアプリケーション開発問題が、トランザクションを扱う際に生じる。トランザクションは、クライアントとサーバとの間、または本明細書で企図されるようにデータクライアントとデータストアとの間の、通信（および典型的にはデータの転送）に関係する。データクライアントは、１つまたは複数のデータストア中のデータへのアクセスを可能にするＵＩ要素である。トランザクションを介してこのようなデータを操作するためのアプリケーションは、しばしば「アトミック（原子）」トランザクションを利用する。アトミックトランザクションは、「すべてか無か」の原理に従う操作のセットであり、この原理では、すべての操作がうまく実行されるか、どの操作も実行されないかのいずれかとなる。例えば、金銭の振替を実施するためのシステムでは、情報が完全に更新されていることが保証されなければならない。資金が２つの口座間で振り替えられる場合、一方の口座は、他方の口座から同額が出金されなければ、入金されることができない。したがって、入金（credit）を記録することおよび対応する出金（debit）を記録することは、原子的な「すべてか無か」の操作コミットを必要とする。
【０００５】
【特許文献１】米国特許出願第１１／３６０４５５号
【特許文献２】米国特許出願第１１／３６０４５４号
【特許文献３】米国特許出願第１１／３６０４５７号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
これまで、アトミックトランザクションを実施するために、通常のアプリケーションは２相コミットモデルに依拠していた。このような場合、データはコミットに向けて一時的に保持／バッファリングされる。第１相の間、バッファリング済みデータを保持するすべてのデータストアに、このデータを原子的にコミットできることの保証が要求される。第２相で、保証が受け取られた場合は、このデータを保持するすべてのデータストアは変更をコミットすることになる。１つまたは複数のデータストアがコミットできない場合は、操作は中止され、データビュー中の更新は失われる。データビューは、データベース中のデータへの読取りおよび／または書込みアクセスを提供するデータクライアントの一種である。このようなデータを失うと、ユーザはデータの再入力を余儀なくされ、時間および資源を無駄にする。
【０００７】
本発明は、これらおよびその他の考慮に関してなされたものである。
【課題を解決するための手段】
【０００８】
以下の説明は、発明を実施するための最良の形態でさらに詳述する概念を、単純化した形で紹介するために提供する。この説明は、特許請求される主題の鍵となる特徴または本質的な特徴を識別するものではない。
【０００９】
本発明によれば、アプリケーション中で隔離されたデータを維持するためのコンピュータ実施方法（computer-implemented method）が提供される。データに関する制御操作の実施要求と共に、データが受け取られる。制御操作が実施され、データと制御操作とに関するステータス情報が更新される。
【００１０】
他の態様によれば、本発明は、コンピューティングシステムからアクセス可能なコンピュータ可読媒体であって、局所化されたデータ隔離が可能なアプリケーションを構築するためのコンピュータプログラムを符号化したコンピュータ可読媒体に関する。アプリケーション仕様が受け取られ、隔離を必要とする１つまたは複数のデータエンティティが識別され、各データエンティティにつき１つまたは複数のトランザクショントランスフォーム（transaction transform）が実装される。
【００１１】
さらに他の態様によれば、本発明は、アプリケーション中のデータ隔離のためのシステムに関する。制御モジュールが、様々な制御操作を実施する。バッファモジュールが、バッファリング済みデータを記憶し、バッファリング済みデータと制御操作とに関するステータス情報を維持する。任意選択でポリシーモジュール（policy module）が、バッファリング、および／または制御操作の性能を、さらに向上させることを可能にする。
【００１２】
本発明を特徴付けるこれらおよび様々な他の特徴ならびに利点は、後続の詳細な説明を読み、関連する図面を参照することによって明らかになるであろう。
【発明を実施するための最良の形態】
【００１３】
データクライアント中のデータは、１つまたは複数の「トランザクショントランスフォーム」の使用によってデータストアから選択的に隔離されることができる。図１に、トランザクショントランスフォーム１１４が実装されたアプリケーション環境の例を示す。トランザクショントランスフォーム１１４は、隔離されたデータと、このデータに関するステータス情報とを記憶するためのバッファリングモジュール１１６、及び制御モジュール１１８を備える。制御モジュール１１８は、２相コミットプロトコルをバッファモジュール１１６と共に使用し、それにより、失敗したコミットが結果的にデータ損失とならずに済むようにする。バッファリングモジュール１１６および制御モジュール１１８については、後でより詳細に説明する。
【００１４】
データストア１０２および１０４は、データベースサーバ上またはコンピュータ可読媒体上のデータを含む。データをデータストアから読み取ることができ、データストアに書き込むことができる。データストアへのデータ書込みが可能かどうか調べるために、チェックまたは他の何らかの要求を、所与のデータストアに接続されたエージェントから送ることができる。データの書込みが可能な場合は、肯定指示がエージェントに返される。同様に、データの書込みが不可能な場合、または可能だとわかっていない場合は、否定指示がエージェントに返される。
【００１５】
データコネクタ１０６および１０８は、データトランスフォーム１１０、１１２、および１１４をデータストア１０２および１０４に接続する。一実施形態では、１つまたは複数のタイプのデータストアに対処するために、プロトコルがデータコネクタ１０６および１０８内に実装される。各プロトコルは、特定のフォーマットを使用して符号化されたデータベースファイルなど、１つまたは複数のタイプのデータストアを扱う。データコネクタプロトコルは、データクライアント１２２および１２４から受け取ったデータ修正または変更を原子的にコミットする。
【００１６】
一実施形態では、データコネクタ１０６および１０８は、悲観的同時実行（pessimistic concurrency）によって原子性（atomicity）を達成する。悲観的同時実行は、データストアにおいてデータのサブセット（例えば、１つまたは複数のレコード）をロックして、クライアントが他のクライアントに影響を及ぼすような仕方でデータを修正するのを防止することを含む。悲観的同時実行モデルでは、ロックの適用を引き起こすアクションをクライアントが実施したとき、他のクライアントは、ロックを保有するクライアントがロックを解除するまで、ロックと競合することになるアクションを実施することができない。このモデルは、データに対する激しい競争があるかもしれない環境、および／または、データをロックで保護するコストが、同時実行競合が発生した場合にトランザクションをロールバックするコストよりも低い環境で有用である。悲観的同時実行は、プログラムによるレコード処理時など、ロック時間が短いことになるときに使用されるのが最もよい。
【００１７】
別の実施形態では、データコネクタ１０６および１０８は、補償アクション（compensation action）を伴う楽観的同時実行（optimistic concurrency）を使用して原子性を達成する。楽観的同時実行は、ロックを利用しない。第１のクライアントがレコードを更新する必要があるとき、プロトコルは、このレコードが第１のクライアントによって最後に読み取られてから別のクライアントがこのレコードを変更したかどうか判定する。楽観的同時実行は、データ競合がほとんどない環境で有用である。補償アクションは、トランザクションの結果を補償するアクションである。例えば、口座Ａから口座Ｂへの資金の銀行振替の結果を補償することは、同額の資金を口座Ｂから口座Ａに振り替えて戻すことである。同様に、ホテルの部屋を予約した場合の補償アクションは、予約のキャンセルになる。補償アクションにより、副作用または他の否定的な結果が残ることなく、トランザクションの「ロールバック」または取消しができる。補償アクションを使用して、２つのクライアント間の競合（例えば、第１のクライアントがデータ値を読み取り、次いで、第１のクライアントが値を修正しようとする前に第２のクライアントがこのデータ値を修正する）が発生したときにトランザクションをロールバックすることができる。一実施形態では、データコネクタ１０６および１０８は、それぞれデータストア１０２および１０４からのデータをキャッシュする。データクライアントから要求されたデータがデータコネクタによってキャッシュされている場合、対応するデータストアに要求のデータを照会する必要はない。データコネクタについては、後で図３を用いてより詳細に説明する。
【００１８】
データトランスフォーム１１０、１１２、１１４、および１２０は、事前定義済みの規則に従ってデータを符号化および／または復号する。データトランスフォーム１１０、１１２、１１４、および１２０は、任意の複雑さの処理を実施することのできる機能を実装する。データトランスフォーム１１２および１２０は、相互に直列である。このため、データトランスフォーム１１２によって実装された機能の結果は、データトランスフォーム１２０によって実装された機能への入力として使用される。また、この逆も同様である。一実施形態では、データトランスフォームは、直列に接続されて前のトランスフォームの結果をバッファリングすることができ、複雑な機能がより容易に、かつモジュール方式で実装できるようにする。同様に、ビュー内のデータのサブセットを、ビュー内の残りのデータに影響を及ぼさずにコミットまたはリフレッシュ（以下参照）することができる。
【００１９】
データトランスフォーム１１４は、トランザクショントランスフォームと呼ばれる特別な種類のデータトランスフォームであり、したがってバッファリングモジュール１１６および制御モジュール１１８を備える。一実施形態では、トランザクショントランスフォームにより、隔離されたデータを原子的に、かつデータストア間でデータが一貫するようにして、コミットすることができる。バッファリングモジュール１１６は、データクライアント１２２および１２４からの隔離されたデータを保持する。一例では、データクライアント１２２および１２４は、データストア１０４中のデータを編集するためのダイアログボックスである。データに加えられた編集は、編集が加えられたのとほぼ同時にバッファリングモジュール１１６に記憶することができる。別の実施形態では、トランザクショントランスフォームは、その出力に対する編集要求を、その１つまたは複数の入力に対する編集要求にマッピングし返す。この結果、編集が加えられたとき、入力／要求元エンティティは、そのような編集を完了として認識する。さらに、これらのトランザクショントランスフォームは、そのバッファ１１６を使用して、後で説明するように、そのような編集の、遅延され制御されたマッピングを可能にする。
【００２０】
トランザクショントランスフォームによって、いくつかのタイプの制御操作を実施することができる。ユーザがデータクライアント１２２またはデータクライアント１２４中のデータをコミットしたいとき（例えば、データクライアントに関連する「適用」ボタンがアクティブ化されたとき）、制御モジュール１１８は、コミット制御操作をデータクライアントから受け取り、後で図６を用いて説明する２相同時実行プロトコル（two-phase concurrency protocol）を使用してデータのコミットを試みる。一実施形態では、バッファリングモジュール１１６中のバッファリング済みデータは、うまくコミットされた後に削除することができる。ユーザがバッファ中のデータ（したがって、対応するデータクライアント中で表示されているデータ）をリフレッシュしたいとき、制御モジュール１１８は、リフレッシュ制御操作をデータクライアントから受け取り、バッファリングモジュール１１６中のデータをリフレッシュする。ユーザが更新済みデータにアクセスできるよう、リフレッシュされたデータはデータクライアントに伝搬される。後で図６を用いて説明するように、隔離されたデータをリフレッシュする能力は、従来の２相同時実行モデルにおけるコミット中止の代わりに使用することができる。
【００２１】
場合によっては、１人または複数のユーザが１つまたは複数のデータクライアントを使用して加えたコミットされていない変更を破壊することなく、バッファ中のデータを更新するのが有益なことがある。このような場合は、データクライアントによって同期制御操作（synchronize control operation）を発行することができる。制御モジュール１１８がデータクライアントから同期制御操作を受け取ると、バッファリングモジュール１１６中の隔離されたデータは、１つまたは複数のデータストア中の最新バージョンに基づいて更新され、隔離されたデータに対するコミットされていない変更は、更新済みデータとマージされる。データに対する変更の複数のセットを同期させるプロセスは、当技術分野でよく理解されており、同期は様々な状況で使用することができる。所与のコンテキストにおいてどのように同期を実施できるかについての詳細は、そのコンテキストに非常に特有である。例えば、製品データベースのコンテキストでは、データベース中の同系列の製品をマージすることは許容できるが、製品名に対する変更の２つのバージョンをマージすることは許容できない場合がある。他のコンテキストは他の同期規則を有する場合があり、これらはどれも本発明と共に使用することができる。競合の解決もまた知られている。競合の場合にどの更新が適用されるべきかについて、所定の規則を提供してそれに従うことができる。他の実施形態では、そのような競合を解決するよう、１人または複数のユーザにアラートすることができる。
【００２２】
バッファリングモジュール１１６は、現在進行中の操作のタイプに基づいて変わることがあるステータス情報を維持する。例えば、コミットが進行中である場合は、ステータス情報は、コミットが未決定か、成功したか、失敗したかを含むことができる。あるいは、リフレッシュが進行中である場合は、ステータス情報は、リフレッシュが未決定か完了したかを含むことができる。同期操作が進行中である場合は、ステータス情報は、同期が未決定か、成功したか、失敗したかを含むことができる。具体的な制御操作については、後で図５および６を用いてより詳細に説明する。
【００２３】
データクライアントからアクセス可能な一部のデータは、隔離を必要としない場合がある。例えば、金融データベース（銀行口座を追跡するのに使用されるものなど）に対する改変は、通常は即座にコミットされる。一実施形態では、所与のデータビューは、隔離されるデータと隔離されないデータとの両方を含むことができる。別の実施形態では、所与のデータクライアントは、データクライアント内では編集できない読取り専用データを含むことができる。
【００２４】
他の実施形態も考えられる。一実施形態では、本発明を段階および領域（phases and domains）と共に使用して、操作の順序付けを制約することができる。段階および領域は、特許文献１および２において説明されている。
【００２５】
本発明をコンピュータシステムとして実装する場合に、本発明の実施形態を実装することのできる適切なコンピューティングシステム環境の例を示すために図２を提供する。システム２００は、その最も基本的な構成では、少なくとも１つの処理ユニット２０２およびメモリ２０４を備える。コンピューティングデバイスの正確な構成およびタイプに応じて、メモリ２０４は、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭやフラッシュメモリなど）、またはこの２つの何らかの組合せとすることができる。この最も基本的な構成は、図２に破線２０６で示されている。
【００２６】
メモリ２０４に加えて、システムは、少なくとも１つの他の形のコンピュータ可読媒体を備えることができる。コンピュータ可読媒体は、システム２００によってアクセスできる任意の利用可能な媒体とすることができる。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。
【００２７】
コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実現された、揮発性および不揮発性、取外し可能および取外し不可能な媒体を含む。メモリ２０４、取外し可能な記憶装置２０８、および取外し不可能な記憶装置２１０はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、限定されないが、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイスを含み、あるいは、所望の情報を記憶するのに使用でき、システム２００によってアクセスできる他の任意の媒体を含む。このようなコンピュータ記憶媒体はいずれも、システム２００の一部とすることができる。
【００２８】
システム２００はまた、システムが他のデバイスと通信するのを可能にする１つまたは複数の通信接続２１２を備えることができる。１つまたは複数の通信接続２１２は、通信媒体の例である。通信媒体は通常、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、搬送波や他のトランスポート機構などの被変調データ信号に組み入れるものであり、任意の情報送達媒体を含む。用語「被変調データ信号」は、信号中の情報を符号化する形で１つまたは複数の特性が設定または変更される信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークや直接有線接続などの有線媒体と、音響、無線周波数、赤外線、および他の無線媒体などの無線媒体とを含む。コンピュータ可読媒体という用語は、本明細書では、記憶媒体と通信媒体の両方を含む。
【００２９】
一実施形態によれば、システム２００は、１つまたは複数の入力デバイス２１４、および／あるいは１つまたは複数の出力デバイス２１６など、周辺デバイスを備える。例示的な入力デバイス２１４は、限定ではないが、キーボード、コンピュータマウス、ペンまたはスタイラス、音声入力デバイス、触覚入力デバイスなどを含む。例示的な１つまたは複数の出力デバイス２１６は、限定ではないが、表示装置、スピーカ、およびプリンタなどのデバイスを含む。本発明では、表示装置が主要な出力デバイスである。これらの各デバイスは当技術分野で周知であり、したがって本明細書では詳細に述べない。
【００３０】
本発明の実施形態は、ＸＭＬアプリケーションフレームワーク（ＸＡＦ）環境で実現することができる。ＸＡＦフレームワークでは、アプリケーションの作成および修正が可能である（特許文献３参照）。図３は、本発明によりアプリケーションコンポーネントが１つまたは複数のＵＩおよび１つまたは複数のデータストアに接続された、ＸＡＦアプリケーションの例示的な一実施形態を示す機能図である。
【００３１】
図３には、例示的なＸＭＬアプリケーションフレームワーク（ＸＡＦ）３０２が示されている。ＸＡＦ３０２は、アプリケーション３０４などのアプリケーションを構築して、その実行を管理するように動作する。ＸＡＦ３０２内で実行されるアプリケーション３０４は、１つまたは複数のＵＩコネクタ３０６、１つまたは複数のアクション３０８、および１つまたは複数のデータコネクタ３１０を備える。いくつかの実施形態では、アプリケーション３０４はまた、１つまたは複数のアクセサ（accessor）３１２、あるいは１つまたは複数のデータトランスフォーム３１４および／または３１６も備える。アプリケーション３０４内のコンポーネントは、ＵＩイベントをデータ変更に、またデータ変更をＵＩイベントに変換（transform）するように動作する。したがって、ＵＩコネクタ３０６は、１つまたは複数のＵＩ３１８および／または３２０に結合される。加えて、データコネクタ３１０は、１つまたは複数のデータストア３２２および／または３２４に結合される。ＸＡＦ３０２内では、アプリケーション３０４中のデータイベントまたはデータ表現は、標準フォーマットをとる。例えば、データイベントおよびデータ表現はＸＭＬによる。
【００３２】
ＵＩコネクタ３０６は、アプリケーション３０４と１つまたは複数のＵＩ３１８および／または３２０との間の接続を提供する。一実施形態では、ＵＩ３１８および／または３２０は、ユーザに対して情報を表示するグラフィカルユーザインタフェースである。グラフィカルユーザインタフェースは、Ｍｉｃｒｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムなどのウィンドウシステムとすることができる。ＵＩコネクタ３０６は、アプリケーションユーザがＸＡＦ３０２内のデータを編集する能力を提示し、かつサポートする。ＵＩコネクタ３０６は、ＸＡＦデータ層（データコネクタ３１０、データトランスフォーム３１４および３１６、データストア３２２および／または３２４で表される）と、特定のＵＩ３１８および／または３２０との間で、データをマッピングする。加えて、ＵＩコネクタ３０６は、ＵＩ３１８および／または３２０からのＵＩイベントを、データコネクタ３１０内のデータ編集操作にマッピングする。
【００３３】
ＵＩコネクタ３０６は、ＵＩ３１８および／または３２０中のＵＩ要素のタイプに特有である。したがって、ＵＩ３１８および／または３２０内のデータ項目のＵＩ表現ごとに、対応するＵＩコネクタ３０６がある。一例では、スプレッドシート内のセル値など、ＵＩ３１８および／または３２０中で表示されるデータ要素は、そのデータ要素に結合された特定のＵＩコネクタ３０６を有することになり、この特定のＵＩコネクタ３０６は、データ要素に対するユーザ修正をＵＩイベントに変換し、アクション３０８にマッピングする。このように、ＵＩコネクタ３０６は、特定のＵＩイベントを、ＸＡＦアプリケーション３０４内で総称的に表されているＸＡＦアクション３０８に変換する。一実施形態では、アプリケーション３０４内のすべてのデータ変更は、ＸＭＬデータ変更として表される。別の例では、ユーザは、スクロールバーなどのユーザインタフェース制御を操作することができる。スクロールバーの変化は、ＵＩ３１８および／または３２０の状態に変化を生み出す。ＵＩの状態変化はまた、データの変化として表すことができる。このように、ＵＩコネクタ３０６は、ＵＩイベント、例えばスクロールバー操作を受け取ることができ、このＵＩイベントを、ＸＡＦデータ層に向けたＸＭＬデータ変更イベントに変換することができる。
【００３４】
ＵＩコネクタ３０６は、ＵＩイベントをアクション３０８に変換／マッピングする。アクション３０８は、ＸＡＦデータ層におけるデータ変更についての宣言ステートメントである。例えば、スクロールバーのユーザ操作は、「スクロールバーのクリック」イベントを生み出すことができる。ＵＩコネクタ３０６は、このＵＩイベントを変換し、「スクロールバーを１つ下の位置にインクリメントする」などのアクション３０８にマッピングする。一実施形態では、データ変更アクションはＸＭＬで表される。
【００３５】
データコネクタ３１０は、外部データストア３２２および／または３２４への、並びにこれらからのデータを整理する。ＵＩコネクタ３０６と同様、データコネクタ３１０は、内部ＸＡＦデータ表現と、種々のデータストア３２２および／または３２４中の外部データタイプとの間で変換する。したがって、外部データの各タイプにつき、データ特有のデータコネクタ３１０がある。データコネクタ３１０は、アクション３０８を受け取り、標準フォーマットのＸＡＦデータアクション３０８をデータストア特有のアクションに変換して、データストア３２２および／または３２４内のデータに影響を与える。一実施形態では、データコネクタ３１０は、ＸＭＬデータアクションをデータストア特有のアクションに変換する。例えば、標準フォーマットのＸＭＬステートメントで表されたスクロールバー操作は、インタフェース状態特有のデータ変更に変換されて、データストア３２２または３２４に送られ、データストア３２２または３２４は、特有のインタフェース状態データを記憶する。
【００３６】
加えて、データコネクタ３１０は、データストア３２２および／または３２４中の変更を、標準フォーマットのＸＡＦデータ表現に変換し、これらは、ＵＩコネクタ３０６に送られる。ＵＩコネクタ３０６は、標準フォーマットのＸＡＦデータ表現をＵＩイベントに変換し、これらは、ＵＩ３１８および／または３２０に送られる。このように、ＵＩ３１８および／または３２０内の任意の変更について、ＵＩコネクタ３０６は、ユーザインタフェースイベントをアクション３０８に変換／マッピングする。アクション３０８はデータコネクタ３１０に送られ、データコネクタ３１０は、アクション３０８をデータコネクタ３１０内のデータ特有の変更に変換する。データが変更されると、データコネクタ３１０は、データストア３２２および／または３２４中の変更済みデータを、標準フォーマットのＸＡＦデータ表現に変換する。データコネクタ３１０は、ＸＡＦデータ表現をＵＩコネクタ３０６に送り返し、ＵＩコネクタ３０６は、ＸＡＦデータ表現をＵＩ特有の表示イベントに変換する。ＵＩコネクタ３０６は、ＵＩ特有の表示イベントを、表示に向けてＵＩ３１８および／または３２０に送り、ＵＩ３１８および／または３２０は、ＵＩイベントから生み出された変更済みデータを表示する。
【００３７】
アプリケーション３０４は、アプリケーション３０４内で発生するあらゆるアクションについて、データとＵＩイベントとの間のこれらの循環的な変更を処理し続けることができる。いくつかの実施形態では、データストア３２２および／または３２４内のデータの変更はまた、ユーザイベントが発生しなくても、すなわちユーザがデータ要素を修正し、または変更した場合のイベントが発生しなくても、ＵＩ３１８および／または３２０中で変更を生じさせる。これは、ユーザの制御外にある別の操作からデータ変更が強いられるような場合である。
【００３８】
アプリケーション３０４内のいくつかの任意選択のコンポーネントは、アクセサ３１２と、データトランスフォーム３１４および／または３１６とを含むことができる。アクセサ３１２は、データコネクタ３１０中ならびにトランスフォーム３１４および３１６中で使用されるデータタイプと、データクライアントにとって有用なデータタイプとの間の、データクライアント側のマッピングを可能にする。あるデータストア３２２および／または３２４中の、あるタイプのデータにアクセスするために、アクション３０８は、このデータに使用するアクセサ３１２または「アクセスモデル」を指定することができる。アクセサ３１２により、アプリケーション３０４は、ＪＰＥＧやＭＰＥＧなど、同種でない特定のタイプのデータにアクセスすることができる。このように、データクライアントにとって有用なデータタイプと比較した場合のデータストア３２２および／または３２４内のデータのタイプにかかわらず、アプリケーション３０４はこのデータをインタフェースし、かつ変更することができる。アクセサ３１２により、データコネクタ３１０は、まだ考案されていない、または開発されていないデータタイプを含めて、どんなタイプのデータも確実に管理することができる。別の実施形態では、データクライアントは、他のアクセサタイプを登録することができ、データコネクタ３１０ならびにトランスフォーム３１４および３１６は、これらのタイプを認識している必要はない。
【００３９】
他の実施形態では、１つまたは複数のデータトランスフォーム３１４および／または３１６が、データコネクタ３１０とＵＩコネクタ３０６との間に介在する。データトランスフォーム３１４および／または３１６は、データコネクタ３１０から出力されたデータを、ＵＩコネクタ３０６が表示のために必要とするＵＩカスタマイズ済みフォーマットに変更する。例えば、ＵＩコネクタ３０６がリスト中のデータを必要とする場合、データトランスフォーム３１４および／または３１６は、単一のデータトランスフォーム３１４および／または３１６によってそれぞれが実施される１つまたは複数の単純な変更を介して、表形式のデータをデータのリストに修正することができる。このように、データコネクタ３１０によって出力された任意の形のデータを、１つまたは複数の正準データトランスフォーム３１４および／または３１６を介して、ＵＩコネクタ３０６によって受け入れられ、使用できる形に変換することができる。データコネクタおよびトランスフォームは、新しいデータタイプを導入することができる。このような拡張タイプは、これらの新しいデータタイプを意識して構築された下流のトランスフォームにとって有用なものである。
【００４０】
アプリケーション開発者からアプリケーション仕様を受け取るのに応答して、本発明の一実施形態は、アプリケーションのどの部分が隔離されたデータを必要とするかを識別し、必要に応じてトランザクショントランスフォームを実装する。図４に、これらの動作の動作フローを示す。
【００４１】
受領動作４０２において、アプリケーション仕様を受け取る。一実施形態では、アプリケーション仕様は、どのデータを隔離すべきかを含めて、ＸＡＦアプリケーションを指定する。識別動作４０４において、隔離されることになるアプリケーション内の対応するデータエンティティを識別してマークする。
【００４２】
実装動作４０６では、隔離されるデータエンティティとしてマークされた各データエンティティに対応する１つまたは複数のトランザクショントランスフォームを実装する。次いで、データトランスフォームとほぼ同様にして、トランザクショントランスフォームが接続され、アクティブ化される。
【００４３】
図５に、本発明の一実施形態によりどのように制御操作が実施されるかを示す。受領動作５０２において、データクライアントから制御操作要求を受け取る。一実施形態では、この要求は、ユーザがデータクライアントに関連するＵＩ制御をクリックすることによってトリガされる。判定動作５０４では、制御操作要求がコミット操作を要求しているかどうか判定する。制御操作要求がコミット操作に対するものである場合、フローは発行動作６０８に分岐する（図６）。制御操作要求がコミット操作に対するものでない場合、フローは判定動作５０６に分岐する。
【００４４】
判定動作５０６では、制御操作要求が同期操作を要求しているかどうかが判定される。制御操作要求が同期操作に対するものである場合、フローは保存動作５０８に分岐する。制御操作要求が同期操作に対するものでない場合、フローはリフレッシュ動作５１０に分岐する。
【００４５】
同期操作が要求された場合、保存動作５０８において、バッファリング済みデータに対するコミットされていない変更があれば、それを保存する。コミットされていない変更は、コンピュータ可読媒体上のファイル、揮発性もしくは不揮発性メモリ、または他の形のコンピュータ記憶装置に保存することができ、あるいは外部データベースや同様のサービスにコミットすることができる。次いで、フローはリフレッシュ動作５１０に進む。
【００４６】
リフレッシュ動作５１０では、データストア中に存在するバッファリング済みデータの最新のコピーを取り出し、これをトランザクショントランスフォームに関連するバッファ中に配置する。リフレッシュ動作５１０では、いくつかのデータストアに照会して、どのデータストアがデータの一番新しいコピーを含むかを決定することが必要な場合がある。別の実施形態では、リフレッシュ動作５１０では、別法としてまたは追加で、各データストアに関連するデータコネクタをチェックして、データコネクタがバッファリング済みデータのキャッシュ済みコピーを含むかどうかを調べてもよい。
【００４７】
判定動作５１２において、制御操作要求が同期操作を要求しているかどうか判定する。一実施形態では、判定動作５１２では単に、判定動作５０６の結果をチェックする。制御操作要求が同期操作に対するものである場合、フローはマージ動作５１４に分岐する。制御操作要求が同期操作に対するものでない場合、フローは終了する。
【００４８】
同期操作が要求された場合、マージ動作５１４において、保存動作５０８において保存されたバッファリング済みデータに対する変更を、リフレッシュ動作５１０においてリフレッシュされたバッファリング済みデータとマージする。データ本体の２つのバージョンをマージするための規則は、アプリケーションのコンテキストに基づいて変わる。いくつかの例示的な規則は、図１に関して提示されている。一実施形態では、異なるデータクライアントからの複数の変更を共にマージして、各データクライアント中の同期を達成することができる。
【００４９】
図６に、本発明の一実施形態によりどのようにコミット要求が処理されるかを示す。受領動作６０２において、データクライアントからデータを受け取る。一実施形態では、データクライアントは、アプリケーションユーザがデータを入力したダイアログボックスであり、データは、ダイアログボックスに関連するＵＩ制御がアクティブ化されたときに送られる。次いで、バッファリング動作６０４において、１つまたは複数のトランザクショントランスフォーム内に、あるいは１つまたは複数のトランザクショントランスフォームに関連するメモリ中に、データをバッファリングする。
【００５０】
受領動作６０６においてコミット操作に対する要求を受け取ると、修正２相コミットプロトコルが呼び出される。まず、発行動作６０８において、データストアに関連する複数のデータコネクタにコミット要求を発行する。一実施形態では、コミット要求は、コミットされるデータを含む。コミット要求は、データをキャッシュした１つまたは複数のデータコネクタによって、かつ／あるいはデータを保持する１つまたは複数のデータストアによって受け取られ、データを原子的にコミットできることの保証を求める要求として扱われる。受領動作６１０において、データを保持するデータコネクタおよび／またはデータストアからの応答を受け取る。すべてのデータ応答を受け取った後、判定動作６１２において、コミット要求のすべての受領側がコミットに同意したかどうかを判定する。すべての受領側が同意した場合は、フローは送出動作６１４に分岐する。すべての受領側が同意しなかった場合は、フローは送出動作６１６に分岐する。
【００５１】
すべての受領側がデータのコミットに同意した場合、送出動作６１４では、発行動作６０８において発行されたコミット要求のすべての受領側にコミットコマンドを送る。受領側はデータをコミットする（すなわち、それら自体のデータを変更で更新する）。
【００５２】
すべての受領側が同意したわけではなかった場合、送出動作６１６において、中止コマンドを受領側に送る。したがって受領側は、提案されたコミットが実施されないこと、およびコミットに関連するいずれかのデータが廃棄されるかもしれないことを認識する。一実施形態では、送出動作６１６では、データのコミットに同意した受領側のみに中止コマンドを送り、データのコミットに同意しなかった受領側は、明示的に指示されることなく自動的にデータを廃棄する。次に、リフレッシュ動作６１８において、リフレッシュ制御操作を実行して、バッファリング済みデータをリフレッシュする。一実施形態では、リフレッシュ動作６１８では代わりに、同期制御操作を実行して、バッファリング済みデータを同期させる。
【００５３】
本発明の他の実施形態も考えられる。一実施形態では、各トランザクショントランスフォームは、同期規則を施行するポリシーモジュールを含むことができる。別の実施形態では、ポリシーモジュールは、リフレッシュおよび同期のための同時実行ポリシーを設定する。例示的な同時実行ポリシーは、保守的同時実行（conservative concurrency）（すべてのバッファリング済みデータの完全なコピーが常に作成される）、および楽観的同時実行（データは必要に応じてのみバッファにコピーされる）を含む。ポリシーモジュールはまた、本明細書で論じられていない他のタイプの制御操作を扱うための、モジュラー方式のポリシー追加も可能にすることができる。
【００５４】
別の実施形態では、問合せ言語と共に、トランザクショントランスフォームを使用してデータに対するアクセスおよび操作を行うことができる。ＳＱＬ（Structured Query Language）は、広く使用されているこのような問合せ言語の１つである。ＸＱｕｅｒｙは、別のこのような問合せ言語である。本発明と共に他の問合せ言語を使用することも考えられる。
【００５５】
さらに別の実施形態では、データコネクタ３１０は、バッファ、例えば図１のバッファおよびロジック１１６の一部を提供し、ある程度まで管理することができる。このような場合、コネクタは、バッファリング済みデータに対するアクセスおよび／または操作を行うためのロジックを有し、それによりデータのリフレッシュおよび／または同期コンポーネントを制御する。
【００５６】
以上に述べた様々な実施形態は、例示として提供したに過ぎず、本発明を限定するものと解釈すべきではない。本明細書に図示し、かつ記述した例示的な実施形態および適用例に従うことなく、また、特許請求の範囲に示す本発明の真の趣旨および範囲を逸脱することなく、本発明に加えることのできる様々な修正および変更を、当業者なら容易に認識するであろう。
【図面の簡単な説明】
【００５７】
【図１】本発明の一実施形態が実装された、アプリケーション環境の例を示す図である。
【図２】本発明の一実施形態を実装することのできる適切なコンピューティングシステム環境の例を示す図である。
【図３】本発明の一実施形態による、アプリケーションコンポーネントが１つまたは複数のＵＩおよび１つまたは複数のデータストアに接続された、ＸＭＬアプリケーションフレームワーク（ＸＡＦ）アプリケーションの例示的な一実施形態を示す機能図である。
【図４】本発明の一実施形態で実施される動作の動作フローを示す図である。
【図５】本発明の一実施形態で実施される動作の動作フローを示す図である。
【図６】本発明の一実施形態で実施される動作の動作フローを示す図である。
【図１】
2008539515.tif 000003
【図２】
2008539515.tif 000004
【図３】
2008539515.tif 000005
【図４】
2008539515.tif 000006
【図５】
2008539515.tif 000007
【図６】
2008539515.tif 000008