(57)【要約】【課題】  データ構造についての協働的オペレーションのための方法、システム、およびプログラムを提供する。【解決手段】  システムはサーバとこのサーバに接続された複数のクライアントとを備えている。一実例では、サーバはドキュメント・オブジェクト・モデル（ＤＯＭ）がマークアップ・ファイルにアクセスして操作しうるように構成されかつ制御されている。クライアントはリモート・ワークステーションにおいてデータ構造についてオペレーションを実行し、コンテナを呼び出してデータ構造の変更に備え、データ構造についてのオペレーションをコンテナ中に封緘し、封緘した変更をサーバに送付するように構成されかつ制御されている。サーバはたとえばドキュメント・オブジェクト・モデル（ＤＯＭ）に従って変更をデータ構造に入力し、入力した変更をサーバに接続された他のクライアントに反映させるように構成されかつ制御されている。【選択図】          図２
2005071356.tif 000002
【特許請求の範囲】
【請求項１】
１台のサーバに格納された共用データ構造について複数のワークステーションが協働する方法であって、前記サーバは共用データ構造に複数のユーザがアクセスして操作しうるように構成されるとともに制御されており、
（ａ）前記共用データ構造にアクセスし、または前記共用データ構造を作成するために、アプリケーションを開くステップと、
（ｂ）前記サーバに接続するステップと、
（ｃ）リモート・ワークステーションにおいて前記共用データ構造についてオペレーションを実行するステップと、
（ｄ）前記共用データ構造に加える変更用のラッパを呼び出すステップと、
（ｅ）前記共用データ構造についての前記オペレーションを少なくとも１つのメッセージに封緘するステップと、
（ｆ）前記メッセージを前記サーバに送付するステップと、
（ｇ）前記サーバにおいて前記変更を前記共用データ構造に入力するステップと、
（ｈ）入力した前記変更を前記サーバに接続された他のクライアント・ワークステーションに反映させるステップと
を備えた
方法。
【請求項２】
前記方法をリアルタイムで実行する、
請求項１に記載の方法。
【請求項３】
前記共用データ構造が、会議用ホワイトボード、プレゼンテーション、アジェンダ、スプレッドシート、およびドキュメントから成る群から選択されている、
請求項１に記載の方法。
【請求項４】
前記サーバが、ドキュメント・オブジェクト・モデル（ＤＯＭ）に従って共用データ構造に複数のユーザがアクセスして操作しうるように構成されるとともに制御されている、
請求項１に記載の方法。
【請求項５】
少なくとも１つのＡＰＩによって前記サーバに接続するステップ
を備えた、
請求項１に記載の方法。
【請求項６】
前記サーバに接続し、前記共用データ構造に付随する前記サーバ上の名前空間に接続するステップ
を備えた、
請求項１に記載の方法。
【請求項７】
前記サーバが、前記ワークステーションにおいて前記共用データ構造についてのオペレーションをリアルタイムでモニタする、
請求項１に記載の方法。
【請求項８】
（ａ）クライアント・ワークステーションにおいてデータ構造中の変更を検出するステップと、
（ｂ）ラッパを呼び出し、前記オペレーションをエンコードするステップと
を備えた、
請求項７に記載の方法。
【請求項９】
ドキュメント・オブジェクト・モデル（ＤＯＭ）に従ってＸＭＬマークアップ言語ファイルを操作しモデル化するステップ
を備えた、
請求項１に記載の方法。
【請求項１０】
前記共用データ構造がＸＭＬデータ・モデルに準拠している、
請求項９に記載の方法。
【請求項１１】
データ構造を個別のクライアント・ワークステーションに同期させるステップ
を備えた、
請求項９に記載の方法。
【請求項１２】
ラップしたDOMImplementaionアプリケーションからＤＯＭオブジェクトを生成するステップ
を備えた、
請求項９に記載の方法。
【請求項１３】
複数のドキュメント変更を１つの原子ユニットとして適用するステップ
を備えた、
請求項９に記載の方法。
【請求項１４】
下にあるＤＯＭアプリケーションをラッパ中にノードとしてラップするステップ
を備えた、
請求項９に記載の方法。
【請求項１５】
各ノードがＤＯＭモデル中のオブジェクトである、
請求項１４に記載の方法。
【請求項１６】
サブノードが前記ノードから継承している、
請求項１５に記載の方法。
【請求項１７】
前記サブノードが、ドキュメント、ドキュメントの要素、および要素の属性から成る群から選択されている、
請求項１６に記載の方法。
【請求項１８】
ローカル・ワークステーションにおけるＤＯＭファイル中の各ノードが前記サーバにおける共用ノード中のオブジェクトに関連付けられている、
請求項１７に記載の方法。
【請求項１９】
共用ノードがローカル・ノードをラップしている、
請求項１８に記載の方法。
【請求項２０】
各ノードが一意のユーザＩＤ（ＵＩＤ）を備えている、
請求項１９に記載の方法。
【請求項２１】
前記共用ノードが親ノードのＩＤを知っている、
請求項２０に記載の方法。
【請求項２２】
前記共用ノードがドキュメントのＩＤを知っている、
請求項２０に記載の方法。
【請求項２３】
前記共用ノードが名前空間を知っている、
請求項２０に記載の方法。
【請求項２４】
共用ノードがローカル・ノードをラップしている、
請求項１９に記載の方法。
【請求項２５】
前記ローカル・ノードが前記共用ノードをオペレーション用の代行者として用いている、
請求項２１に記載の方法。
【請求項２６】
前記ＤＯＭモデルに適用することによって変更を検出するステップ
を備えた、
請求項１に記載の方法。
【請求項２７】
前記変更がラッパを呼び出す、
請求項２６に記載の方法。
【請求項２８】
ローカルＤＯＭモデルについての変更を検出するステップと、
検出した前記変更をエンコードするステップと
を備えた、
請求項２４に記載の方法。
【請求項２９】
クライアントにおいて検出した前記変更をエンコードするステップと、
検出した前記変更をサーバに送信するステップと、
サーバにおいて前記変更をインプリメントするステップと
を備えた、
請求項２８に記載の方法。
【請求項３０】
前記サーバにおいて前記変更を同期的に適用するステップと、
前記変更を前記クライアントに反映させるステップと
を備えた、
請求項２９に記載の方法。
【請求項３１】
１台のサーバに格納された共用データ構造について複数のワークステーションが協働するプログラムであって、前記サーバは共用データ構造に複数のユーザがアクセスして操作しうるように構成されるとともに制御されており、
コンピュータに、
（ａ）前記共用データ構造にアクセスし、または前記共用データ構造を作成するために、アプリケーションを開くステップと、
（ｂ）前記サーバに接続するステップと、
（ｃ）リモート・ワークステーションにおいて前記共用データ構造についてオペレーションを実行するステップと、
（ｄ）前記共用データ構造に加える変更用のラッパを呼び出すステップと、
（ｅ）前記共用データ構造についての前記オペレーションを少なくとも１つのメッセージに封緘するステップと、
（ｆ）前記メッセージを前記サーバに送付するステップと、
（ｇ）前記サーバにおいて前記変更を前記共用データ構造に入力するステップと、
（ｈ）入力した前記変更を前記サーバに接続された他のクライアント・ワークステーションに反映させるステップと
を実行させる
プログラム。
【請求項３２】
前記方法をリアルタイムで実行する、
請求項３１に記載のプログラム。
【請求項３３】
前記共用データ構造がマークアップ言語ファイルである、
請求項３１に記載のプログラム。
【請求項３４】
前記マークアップ言語ファイルがＸＭＬファイルである、
請求項３３に記載のプログラム。
【請求項３５】
前記マークアップ言語ファイルが、会議用ホワイトボード、プレゼンテーション、アジェンダ、スプレッドシート、およびドキュメントから成る群から選択されている、
請求項３３に記載のプログラム。
【請求項３６】
少なくとも１つのＡＰＩによって前記サーバに接続するステップ
を備えた、
請求項３１に記載のプログラム。
【請求項３７】
前記サーバに接続し、前記共用データ構造に付随する前記サーバ上の名前空間に接続するステップ
を備えた、
請求項３１に記載のプログラム。
【請求項３８】
前記サーバが、前記ワークステーションにおいて前記マークアップ言語ファイルについてのオペレーションをリアルタイムでモニタする、
請求項３１に記載のプログラム。
【請求項３９】
（ａ）クライアント・ワークステーションにおいてデータ構造中の変更を検出するステップと、
（ｂ）コンテナを呼び出し、前記オペレーションをエンコードするステップと
を備えた、
請求項３８に記載のプログラム。
【請求項４０】
ドキュメント・オブジェクト・モデル（ＤＯＭ）に従って前記共用データ構造を操作しモデル化するステップ
を備えた、
請求項３１に記載のプログラム。
【請求項４１】
データ構造を個別のクライアント・ワークステーションに同期させるステップ
を備えた、
請求項４０に記載のプログラム。
【請求項４２】
ラップしたDOMImplementaionアプリケーションからＤＯＭオブジェクトを生成するステップ
を備えた、
請求項４０に記載のプログラム。
【請求項４３】
複数のドキュメント変更を１つの原子ユニットとして適用するステップ
を備えた、
請求項４０に記載のプログラム。
【請求項４４】
下にあるＤＯＭアプリケーションをコンテナ中にノードとしてラップするステップ
を備えた、
請求項４０に記載のプログラム。
【請求項４５】
各ノードがＤＯＭモデル中のオブジェクトである、
請求項４４に記載のプログラム。
【請求項４６】
サブノードが前記ノードから継承している、
請求項４５に記載のプログラム。
【請求項４７】
前記サブノードが、ドキュメント、ドキュメントの要素、および要素の属性から成る群から選択されている、
請求項４６に記載のプログラム。
【請求項４８】
ローカル・ワークステーションにおけるＤＯＭファイル中の各ノードが前記サーバにおける共用ノード中のオブジェクトに関連付けられている、
請求項４７に記載のプログラム。
【請求項４９】
共用ノードがローカル・ノードを封緘している、
請求項４８に記載のプログラム。
【請求項５０】
各ノードが一意のユーザＩＤ（ＵＩＤ）を備えている、
請求項４９に記載のプログラム。
【請求項５１】
前記共用ノードが親ノードのＩＤを知っている、
請求項５０に記載のプログラム。
【請求項５２】
前記共用ノードがドキュメントのＩＤを知っている、
請求項５０に記載のプログラム。
【請求項５３】
前記共用ノードが名前空間を知っている、
請求項５０に記載のプログラム。
【請求項５４】
共用ノードがローカル・ノードをラップしている、
請求項５３に記載のプログラム。
【請求項５５】
前記ローカル・ノードが前記共用ノードをオペレーション用の代行者として用いている、
請求項５４に記載のプログラム。
【請求項５６】
前記ＤＯＭモデルに適用することによって変更を検出するステップ
を備えた、
請求項３１に記載のプログラム。
【請求項５７】
前記変更がラッパを呼び出す、
請求項５６に記載のプログラム。
【請求項５８】
ローカルＤＯＭモデルについての変更を検出するステップと、
検出した前記変更をエンコードするステップと
を備えた、
請求項５４に記載のプログラム。
【請求項５９】
クライアントにおいて検出した前記変更をエンコードするステップと、
検出した前記変更をサーバに送信するステップと、
サーバにおいて前記変更をインプリメントするステップと
を備えた、
請求項５８に記載のプログラム。
【請求項６０】
前記サーバにおいて前記変更を同期的に適用するステップと、
前記変更を前記クライアントに反映させるステップと
を備えた、
請求項５９に記載のプログラム。
【請求項６１】
１つのサーバおよび前記サーバに接続された複数のクライアントを備え、前記サーバに格納された共用データ構造について協働するシステムであって、
（ａ）前記サーバが、複数のユーザが共用データ構造にアクセスして操作しうるように構成されかつ制御されており、
（ｂ）前記クライアントが、
（ｉ）リモート・ワークステーションにおいて前記共用データ構造についてオペレーションを実行し、
（ｉｉ）ラッパを呼び出して前記共用データ構造の変更に備え、
（ｉｉｉ）前記共用データ構造についてのオペレーションを前記ラッパ中に封緘し、
（ｉｖ）封緘した前記変更を前記サーバに送付する
ように構成されかつ制御されており、
（ｃ）前記サーバが、
（ｉ）前記サーバにおいて前記変更を前記共用データ構造に入力し、
（ｉｉ）入力した前記変更を前記サーバに接続された他のクライアントに反映させる
ように構成されかつ制御されている
システム。
【請求項６２】
前記システムがリアルタイムで動作する、
請求項６１に記載のシステム。
【請求項６３】
前記共用データ構造がマークアップ言語ファイルである、
請求項６１に記載のシステム。
【請求項６４】
前記マークアップ言語ファイルがＸＭＬファイルである、
請求項６３に記載のシステム。
【請求項６５】
前記マークアップ言語ファイルが、前記クライアントにおける会議用ホワイトボード、プレゼンテーション、アジェンダ、スプレッドシート、およびドキュメントから成る群から選択されている、
請求項６３に記載のシステム。
【請求項６６】
前記サーバが、共用データ構造を名前空間に関連付けている、
請求項６１に記載のシステム。
【請求項６７】
前記サーバが、
（ａ）クライアントにおいて前記共用データ構造についてのオペレーションをリアルタイムでモニタしており、
（ｂ）前記クライアントにおいて前記共用データ構造中の変更を検出し、
（ｃ）ラッパを呼び出し、前記オペレーションをエンコードする、
請求項６１に記載のシステム。
【請求項６８】
前記サーバが、ドキュメント・オブジェクト・モデル（ＤＯＭ）に従って前記共用データ構造を操作しモデル化するように構成されかつ制御されている、
請求項６７に記載のシステム。
【請求項６９】
前記サーバが、データ構造を個別のクライアントに同期させるように構成されかつ制御されている、
請求項６８に記載のシステム。
【請求項７０】
前記システムが、ラップしたDOMImplementation アプリケーションからＤＯＭオブジェクトを生成するように構成されかつ制御されている、
請求項６８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数のユーザが複数のワークステーションで１台のサーバ（またはサーバ群）を用いて共用データを並行かつ協働して生成し変更して同期を容易にするシステム、方法、およびプログラムに関する。
【背景技術】
【０００２】
今日、様々な協働（collaboration)システムが存在する。その中には、Lotus Sametime(TM)、様々なウェブ会議ソリューション、および拡大インスタント・メッセージ・ソリューションなどが含まれる。様々な協働システムは多くの標準プロトコルと標準ＡＰＩを使用しているが、各協働システムは独自性のある製品である。また、それらにはすべて共通の技術上の問題点がいくつかあるが、それらは各々それ自身の課題を有するとともに他とは異なる（多くの場合、独自の）プログラミング・モデルを有する。これにより、開発コストが増大している。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
したがって、標準に準拠した共用データ構造の変更をサポートした共通かつ既存のプロトコルとＡＰＩを使用する協働システムが明白に求められている。
【課題を解決するための手段】
【０００４】
本発明の方法、システム、およびプログラムは共通かつ既存のプロトコルとＡＰＩを用いて標準準拠のデータ構造またはファイルの変更を実質的にリアルタイムでサポートする協働システムを提供する。特に、本発明の方法、システム、およびプログラムはデータおよびデータ構造についての協働的オペレーションを備えている。本発明に係るシステムは１つのサーバとこのサーバに接続された複数のクライアントとを備えている。データ構造は共用データ構造、たとえばサーバに格納された共用マークアップ言語ファイルである。サーバはドキュメント・オブジェクト・モデル（ＤＯＭ）が共用データ構造（たとえば共用マークアップ言語ファイル、遷移データ構造、格納データ構造）にアクセスして操作しうるように構成されかつ制御されている。クライアントはリモート・ワークステーションにおいてデータ構造（たとえばドキュメントまたは他のファイル）についてオペレーションを実行し、ラッパを呼び出してデータ構造に対する変更に備え、データ構造についてのオペレーションをラッパ中にラップまたは封緘し、ラップまたは封緘した変更をサーバに送付するように構成されかつ制御されている。サーバは標準のプロトコル（たとえばドキュメント・オブジェクト・モデル（ＤＯＭ））に従って変更をデータ構造に入力し、入力した変更をサーバに接続された他のクライアントに反映させるように構成されかつ制御されている。
【０００５】
本発明の方法、システム、およびプログラムは共通かつ既存のＡＰＩを用いてデータ構造の変更をサポートしている。アプリケーションの機能がＡＰＩを呼び出すと、変更は関連するすべてのファイルに通知される。様々なワークステーション上のデータとデータ構造の表現、共用データ構造とＤＯＭによって、本発明の方法、システム、およびプログラムは変更を均一な態様で同期させている。これはマルチポイント通信管理、同期データ転送、最適化データ転送、およびバージョン互換性によって達成している。
【０００６】
ＸＭＬドキュメントを用いて機能の共用特性を封緘することにより、新たなリアルタイム協働を生成することができる。
【０００７】
〔定義〕
ここで使用するＸＭＬ（Extensible Markup Language）はＷ３Ｃ（World Wide Web Consortium)が、共通の情報フォーマットを作成し当該フォーマットと日付をたとえばワールド・ワイド・ウェブ、イントラネット、および他の任意の場所で共用する柔軟な方法のために出した公式の勧告である。ＸＭＬ自体は今日のウェブ・ページの言語であるＨＴＭＬ（Hypertext Markup Language)に似ている。ＸＭＬとＨＴＭＬは両方ともページのコンテンツすなわちファイルを記述するマークアップ・シンボルを備えている。しかし、ＨＴＭＬが表示するとともに相互作用する方法の観点からのみウェブ・ページのコンテンツ（主としてテキストとグラフィック・イメージ）を記述するのに対して、ＸＭＬは記述するデータの内容の観点からコンテンツを記述する。たとえば、マークアップ・タグ中に配置された「phone ＿num 」なる語によって後に続くデータが電話番号であることを表わすことができる。このことが意味するのは、ＸＭＬファイルはプログラムによって純粋にデータとして処理することができる、あるいはＸＭＬファイルは同様のデータとともに別のコンピュータに格納することができる、あるいはＸＭＬファイルはＨＴＭＬファイルと同様に表示することができる、ということである。たとえば、受信中のコンピュータのアプリケーションが電話番号をどのように処理する必要があるのかに応じて、当該電話番号を格納し、表示し、あるいはダイヤルすることができる。ＸＭＬが「拡張可能（extensible）」であるのは、ＨＴＭＬとは異なりそのマークアップ・シンボルが無限であり自己定義性だからである。
【０００８】
ここで使用する「ＤＯＭ（Document Object Model)」はＷ３Ｃが開発したドキュメント・オブジェクト・モデル・プログラミング・インタフェース仕様を意味する。これはエンド・ユーザがＸＭＬファイルを作成しそれを変更するのを容易にするものである。ＸＭＬファイルはテキストとして格納されたＸＭＬドキュメントである。このようなドキュメントはプログラム・オブジェクトとして当該オブジェクト中にそのコンテンツとデータを含めることができる。また、このようなドキュメントは「メソッド」と呼ばれるオブジェクト指向プロシージャを担持することができる。ドキュメント・オブジェクト・モデル（ＤＯＭ）は２レベルのインタフェース・インプリメンテーション、すなわちＤＯＭコアとＤＯＭ  ＨＴＭＬを提供する。ＤＯＭコアはＸＭＬをサポートするとともに次レベルの基礎を成すものである。ＤＯＭ  ＨＴＭＬはモデルをＨＴＭＬドキュメントに拡張するものである。ＤＯＭ内では、任意のＨＴＭＬ要素またはＸＭＬ要素はプログラミングによって個別にアドレス可能である。ＤＯＭそのものは言語に依存しないから、汎用のインタフェース定義言語を用いて記述することができる。
【０００９】
ここで使用する「ラッパ（wrapper)」はオブジェクトをデータおよびメソッドとして格納し移動させ、オブジェクトにそのデータ型を変えることなく機能を付加するオブジェクト指向プログラミング構成体を意味する。ラッパは関数呼び出しをそれらが呼び出しているオブジェクトに委譲させる。
【００１０】
ここで使用する「マークアップ言語」はファイルを印刷または表示したときにそれがどのように見えるべきかを示すため、あるいはドキュメントの論理構造またはドキュメントのメタデータを記述するためにテキストすなわち文書処理ファイルのある場所に挿入されたキャラクタまたは他のシンボルから成る列を備えた言語を意味する。マークアップ・インジケータは「タグ」と呼ばれることが多い。
【００１１】
ここで使用する「協働ソフトウェア」はデータ、ドキュメント、およびファイルを同期をとって処理するソフトウェア、ならびに通常は分散ワークグループ、コミュニティ、および会社で他者とともにファイル、ドキュメント、タスク、プロジェクト、および意思決定をすべて実質的にリアルタイムで同期をとって処理するソフトウェアを意味する。
【発明を実施するための最良の形態】
【００１２】
ここで説明する方法、システム、およびプログラムはサーバ・ベースかつリアル・タイムの協働システムである。このシステムは開放ＡＰＩを使用する。
【００１３】
開放ＡＰＩをＤＯＭモデルとともに、そして任意実行事項として標準ベースのマークアップ言語とともに使用すると、アプリケーションは既存のＤＯＭメソッドを用いて分散クライアントの間でデータ・モデルを同期させることが可能になるとともに、これをリアルタイムで行なうことが可能になる。すなわち、開発者はＤＯＭがあたかもローカルでしかないようにそれを変更するが、変化はすべてのクライアントに「透過的に（transparently)」反映される。リアルタイム同期と組み合わされたリアルタイム協働は同期プロセスであり、「チェックアウト−チェックイン」システムではない。
【００１４】
分散システムの間におけるリアルタイム・マルチポイント通信の手段としのＤＯＭによって、協働的ＸＭＬオブジェクト（たとえばホワイトボード、プレゼンテーション、アジェンダ、スプレッドシート、ドキュメントなど）におけるリアルタイム協働が容易になる。このシステムによって、モデルはリアルタイムで変更される。これらの変更はユーザにリアルタイムで通知される。ユーザが変更を生成するとき、サーバは変更をモニタしている。
【００１５】
ＡＰＩはデータ構造（たとえばマークアップ言語ドキュメント）の変更をサポートしている。そして、複数のワークステーションが複数の場所で（仮想）データベースを共用している。ＤＯＭ  ＡＰＩを使用することにより、ＤＯＭモデルは複数のワークステーションを駆動することができる。これらのワークステーションは仮想サーバを含むサーバ群、およびサーバ・グループ中の特定のサーバに接続されている。サーバ上では、データ構造（たとえば共用データ構造）は特定の名前空間に対応付けられている。
【００１６】
上記データベースは複数のワークステーションに関するモデルを備えた共用（仮想）データベースである。ＸＭＬファイルに加えた変更は１台のワークステーションにおけるエンドユーザが共用ドキュメントを変更するときその中で処理する。これは（既定義の）ＡＰＩを用いてデータ構造を変更することにより行なう。
【００１７】
サーバは共用データ用のデータ・モデルとしてマークアップ言語（通常はＸＭＬ）を用いることができるとともに、ＤＯＭ  ＡＰＩを用いてデータ・モデルを操作しモニタすることができる。好適なマークアップ言語はＸＭＬである。なぜなら、共用ＸＭＬドキュメントの操作およびＸＭＬドキュメントの変更をサポートする共通かつ既存のＸＭＬ  ＡＰＩが多数存在するからである。
【００１８】
ＸＭＬドキュメントは共用特性を封緘する。これはＸＭＬの動的データ構造モデルの一側面である。ＸＭＬデータ・モデルでは、この動的データ構造モデルはリアルタイム協働モデルに対応している。
【００１９】
ＤＯＭ  ＡＰＩはＸＭＬデータ・モデルを操作する。ＸＭＬデータ・モデルとＤＯＭとを組み合わせると、特定のサーバに接続するとともに特定の名前空間に対応付ける機能を備えた共用ＸＭＬが実現する。
【００２０】
共用ＸＭＬとＤＯＭとを相互作用させると、送付済みのデータ変化とデータ同期方法とが透過的に決まる。すなわち、共用ＸＭＬとＤＯＭとの組み合わせはそれ自体１つの同期ツールである。
【００２１】
共用ＸＭＬに新たなメッセージを付加するには共用ＸＭＬ  ＡＰＩを呼び出す。これを説明する例を以下に示す。
【００２２】
<ChatSession name='chat1'>
<Message> 
<Sender>Bill Quinn</sender> 
<Test>Hi, how are you?</test> 
</Message>
<Message> 
<Sender>Matt Levy</Sender>
<Text>Fine, and you?</Text> 
</Message>
</ChatSession>
【００２３】
同様に、
<Whiteboard>
<Page name="page1"> 
<Annotation>
type='text' 
x='22'
y='14'...>
Hello World 
</Annotation> 
</Page> 
</Whiteboard> 
【００２４】
これを図１と図２に示す。図１はデータ構造（ここではホワイトボード）を生成するアプリケーション、当該データ構造の生成、およびそれに使用するＤＯＭ  ＡＰＩを示す図である。図１において、アプリケーション１１は関数newPage() を用い、ドキュメントに新たな<Page>要素を生成するＤＯＭ  ＡＰＩ１５を使用してホワイトボード１３に新たなページを生成している。
【００２５】
図２はサーバ２１０、クライアント２１１、２１２、ホワイトボード２２１、２２２、ホワイトボード・オブジェクト用のラッパすなわちコンテナ２３１、２３２、およびＤＯＭ  ＡＰＩ２４１、２４２を示す図である。
【００２６】
共用ＸＭＬは既存のＡＰＩの上に存在するラッパである。共用ＸＭＬは既存のＡＰＩの上に存在するラッパであるから、共用ＸＭＬはｄｏｃまたはｄｏｃｓに加えられた意図的な変更をモニタする。そして、これらの変更はメッセージとして送付される。これらの変更は共用ＸＭＬドライバに通知される。これらはすべてのリモート・クライアントに反映される。リモート・クライアントでは、ラッパが意図的な変更をモニタしている。これらの変更はインプリメントすべきサーバに送付されるとともに、ワークステーションにも送付される。
【００２７】
共用ＸＭＬは２つのクライアントが同一のデータ構造を有するようなデータ構造を表わしている。この場合、背景インフラストラクチャを利用すると、データは複数のワークステーションをまたぐことが可能になる。共用データ構造はＡＰＩ（たとえばＸＭＬ  ＡＰＩ）が背景インフラストラクチャにつながった階層構造をしている。
【００２８】
ＤＯＭ（Document Object Model)はラップしたDOMImplementaionによってファクトリを構築している。ラップしたDOMImplementaionでは、共用ドキュメントを生成する元を成すインプリメンテーションはDomImplementaionである。ＤＯＭ  ＡＰＩで特定されている他のすべての要素を生成するには共用ドキュメントを使用する。ラップしたDOMImplementaionはクライアントがサーバをサブスクライブする手段を備えている。ここで使用する「サーバ（Server）」にはサーバ・クラスタと仮想サーバが含まれる。サーバは名前空間（たとえば「meeting.id」）を提供するのに加え、ワークステーションのエンドユーザがDocument（なる名前の）ドキュメントから成る特定の組をサブスクライブするのを可能にするとともに遅れて参加したものをリフレッシュする機能も提供する。これは名前空間における完全なドキュメントによって、そして名前空間においてドキュメントをロックすることによって行なう。
【００２９】
ラップしたDOMImplementaionによって、複数の変更を同期した態様で処理することが可能になる。このことの一側面を挙げると、ＤＯＭインプリメンテーションによって、ドキュメント操作の複数のバッチを１つの原子ユニット、すなわちトランザクションとして扱うことが可能になる。
【００３０】
また、ロックの欠如を含む「失敗（fail）」する操作を表示しそれから回復する機能も含まれる。プログラム製品は既存のＤＯＭノードをラップしているから、失敗は例外をスローする（投じる）ことにより表示する。
【００３１】
下に存在するＤＯＭインプリメンテーションをラップするすなわちフックするには「ノード（Node）」を用いる。各ノードはオブジェクト・モデルにおけるオブジェクトである。サブノードはサブタイプのノードへの「継承」によりローカルＤＯＭ（共用ＤＯＭの対等なオブジェクト）における各ノードごとにオブジェクト指向プログラミングの意味で「継承する」ことができる。すなわち、共用ノードはローカル・ノードをラップしすなわち包含し、オペレーションを実行するときにそれを代行者として使用する。
【００３２】
このことの一側面は各共用ノードごとに一意のユーザＩＤ（ＵＩＤ）を確立することである。これにより、共用ノードは親ノードのＩＤ、DocumentのＵＩＤ、および名前空間に気付く。
【００３３】
少なくとも１つのローカル・ワークステーションにおける変更の検出について。変更の検出は始めのアプリケーションが、あるノードにおける標準のＤＯＭ  ＡＰＩメソッドを呼び出すことによって行なう。ラッパは（ファイルまたはドキュメントとしての）データ構造の操作に気付き、オペレーションがノード、Parent Nodes（親ノード）、Documents （ドキュメント）、およびNamespaces（名前空間）と関係するときに当該オペレーションをエンコードする。これはローカルＤＯＭで検出された変更をエンコードすることにより行なう。それは有限個数のオペレーションにおいて「Create node （ノードの作成）」「Add node（ノードの付加）」、「Remove node （ノードの削除）」、「Change node value(ノード値の変更) 」として実現されている。これを行なうメッセージはほとんどないから、デコードするのが容易である。これらのメッセージはクライアントでエンコードされ、サーバへ送付される。サーバでは、それらはデコードされ解釈されたのち、他のクライアントへ転送される。
【００３４】
永続性が実現している場合、サーバはリモートの（すなわち個別のワークステーションの観点からの）操作によって変更をＤＯＭオブジェクトに適用する。サーバはサブスクライブしているすべてのクライアントに変更を反映させる。クライアントは必要なNode（ノード）、Parent Node （親ノード）のＵＩＤを含むメッセージをデコードする。メッセージは正確なドキュメントへ転送したのち、操作を適用する特定の共用ノードへ転送することができる。
【００３５】
サーバ上のSynchronization Entity（同期エンティティ）すなわちEngine（エンジン）は共用データ構造に関連付けられているとともにすべての場所にある共用ドキュメントに同期している。これを行なうにはＡＰＩを使用する。ローカルの変更は様々なワークステーションの場所にあるすべての同様のアプリケーションに通知する。
【００３６】
ＡＰＩは変更の「検出」を示すメッセージをサーバに送付する。ＡＰＩは他のローカルのワークステーション上の変更を当該変更を扱うサーバに送付する。変更はすべてのワークステーションに通知する。そして、変更はローカル・コピーがローカルに適用する。
【００３７】
永続的なＤＯＭ用のサーバ・モデルには２つの「テーブル」の形をした平坦化関係リストがある。１つはすべてのドキュメントから成るリストであり、名前空間、ドキュメントＩＤ、およびトランザクション番号を備えている。ドキュメントはこのテーブルを用いて「ロック」する。ロックは単一の行に収めることができる。
【００３８】
他のテーブルはDocument Nodes（ドキュメント・ノード）すなわちそれらの親ノードを含むすべてのノード、およびそれらが包含するドキュメントのリストを備えている。これが可能になるのは、すべてのメッセージが名前空間、ドキュメント、親ノード、およびノードそれ自体用のＵＩＤを備えているからである。
【００３９】
ＤＯＭ状態は平坦関係モデルに格納することができる。これにより、ＲＤＢＭＳのモデルとツールを適用することが可能になる。また、ＤＯＭ状態をＲＤＢＭＳに保持することが可能になる。この結果、共用ＸＭＬサーバに必要なメモリ量を少なくすることが可能になる。
【００４０】
本発明のさらなる側面は共用ＸＭＬサーバをクラスタ化して規模を変更させることができる点である。これにより、単一の障害点を避けることが可能になる。
【００４１】
ＤＯＭモデルと共用ＸＭＬとを組み合わせると、ＤＯＭサーバにおいてトランザクションの順番を順序付けるのが容易にもなる。この場合、サーバはオペレーション上の変更をＤＯＭに反映させている。このように、ドキュメントごとに単一のトランザクションが維持されている。また、メッセージを更新するためにトランザクションＩＤをクライアントに送付する。クライアント自体はメッセージを順序付けるとともに正確な順番でメッセージを処理する機能および能力の双方を備えている。この結果、クライアント・ワークステーションは「メッセージの不整合」を避けることが可能になる。
【００４２】
ＤＯＭ共用ＸＭＬシステムはネットワーク・アーキテクチャと無関係であり、ピア・ツー・ピア・アーキテクチャを必要としない。
【００４３】
以上、いくつかの好適な実施形態と実例によって本発明を説明したが、それにより本発明の範囲を限定することは意図していない。本発明の範囲は特許請求の範囲によってのみ限定される。
【図面の簡単な説明】
【００４４】
【図１】データ構造（ここではホワイトボード）を作成するアプリケーション、当該データ構造の作成、およびそれに使用するＤＯＭ  ＡＰＩを示す図である。
【図２】サーバ、クライアント、ホワイトボード、ホワイトボード・オブジェクト、およびＤＯＭ  ＡＰＩを示す図である。
【符号の説明】
【００４５】
１１  アプリケーション
１３  ホワイトボード
１５  ＤＯＭ  ＡＰＩ
２１０  サーバ
２１１  クライアント１
２１２  クライアント２
２２１  ホワイトボード
２２２  ホワイトボード
２３１  ラッパＤＯＭオブジェクト
２３２  ラッパ
２４１  実際のＤＯＭオブジェクト
２４２  実際のＤＯＭオブジェクト
【図１】
2005071356.tif 000003
【図２】
2005071356.tif 000004