ピアツーピア型コラボレーションシステムで使用するエンドポイントに称呼を割り当てるための分散型の方法において、テレスペースの複数のメンバーの各々の各エンドポイントへユニークな称呼を割り当てるステップであって、メンバーの各称呼は、前記テレスペースに前記メンバーが加入した順序を表わし、前記テレスペースの別のメンバーであって招待する側のメンバーを含むメンバーによって加入するよう招待された各メンバーについては、前記招待する側のメンバーを表わすものであるステップと、割り当てられた前記称呼を保存するステップとを含むことを特徴とする方法。異なるエンドポイントの複数の前記称呼の各々は招待する側のメンバーの連鎖を表わすことを特徴とする請求項1に記載の方法。前記称呼は、前記テレスペースの創始メンバーを表わす第1の順位と、前記創始メンバーによって前記テレスペースへ加入するように招待されたメンバーを表わす少なくとも第2の順位とを含む複数の順位を含むことを特徴とする請求項1に記載の方法。前記割り当てるステップはA前記テレスペースの作成時に、テレスペースの創始メンバーに対応するエンドポイントが、第1の順位の数字を含むユニークな称呼をそれ自体に割り当てるステップと、B前記テレスペースの作成に続いて、前記創始メンバーにより、前記テレスペースへ前記創始メンバーが招待した前記テレスペースの新規メンバーに対応する複数のエンドポイントの各々に対して、前記テレスペースの創始メンバーの前記第1の順位の数字と、前記新規メンバーが前記テレスペースへ加入した順序を表わすシーケンシャル順位である前記新規メンバーのエンドポイントの称呼の第2の順位の数字とを含むユニークな称呼を割り当てるステップとを含むことを特徴とする請求項1に記載の方法。前記割り当てるステップは、前記招待する側のメンバーの各々が、招待する側のエンドポイントが前記テレスペースへ招待する新規のテレスペースメンバーの各々にユニークな称呼を割り当てるステップを含むことを特徴とする請求項1に記載の方法。ピアツーピア型コラボレーションシステムにおいて使用するエンドポイントへの称呼を割り当てるための分散型の方法において、テレスペースの各々の招待する側のメンバーが、前記招待する側のメンバーが順次前記テレスペースへ招待する新規のテレスペースメンバーの各々の各エンドポイントにユニークな称呼を割り当てるステップと、前記招待する側のメンバーが前記テレスペースへ招待する複数のテレスペースメンバーに対して、メンバーの各称呼は前記テレスペース内でユニークなものであることを保証するステップとを含むことを特徴とする方法。前記保証するステップは、前記招待する側のメンバーが前記テレスペースへ招待する複数のテレスペースメンバーに対して、メンバーの各称呼が前記コラボレーションシステムの中でユニークなものであることを保証することを含むことを特徴とする請求項6に記載の方法。前記割り当てるステップは、前記称呼を割り当てるために疑似乱数ジェネレータを使用することを含むことを特徴とする請求項6に記載の方法。インターネットはユーザに娯楽を提供したり通信の有用な方法を提供する上でダイナミックかつフレキシブルなものであるが、ユーザの要求の全部を満たすことはできない。ユーザはますますインターネットを通して対話するようになるが、もっと在来型の方法たとえばマルチメディア電話、ファックス、ホワイトボードのものやマルチテンポラルリアルタイム、オーバーナイトメールなもの、またその他形式にとらわれない通信手段を使うことにより、インターネット以外での対話も引き続き行われている。共有されるプライベート空間での個人や中小グループ間でのパーソナルでプライベートな通信やその他共有される相互の活動にインターネットに基づくパラダイムを拡張することが望ましい。このような対話は、参加者のパーソナルコンピュータ間またはその他のネットワーク接続可能なデバイス間で即時的、直接的、機密的に行なわれるのが望ましく、これらの対話は、通信が傍受されたり機密性が侵害されたりするような第三者のウェブサイトへとインターネット上のトラフィックが集中させるようなサーバボトルネックとは何ら関わりを持たないのが良い。また様々な遠隔地以下、リモートサイトにいるユーザがピアツーピアの形式でドキュメントを共有し編集できるようにする一方で、ローカルサイトにおいてドキュメントの一貫したコピーを維持することのできる技術を提供するのも望ましい。このような技術ではユーザの誰もがドキュメントに関する変更要求を発行でき、変更要求が発行された時点でサイトがネットワークから切断されても当該変更が調整された方法で全てのローカルサイトにあるコピーに対して非同期的に行なうことができる。この技術は全てのサイトにわたって高いレベルでのデータ一貫性を提供することにより各々のサイトが様々な地理的に分散したユーザによる閲覧および/または編集のために基本的に同じドキュメントを提示することができるようになる。本発明はパーソナルコンピュータシステム、通信装置、またはその他のネットワーク接続可能なデバイスで動作可能で、遠隔地に居る他のユーザと共有して特定のタスクたとえばチャット、ゲーム、またはビジネスアプリケーションを実行するためのアクティビティとよばれる装置に関するものである。アクティビティはデルタと呼ばれるデータ変更要求をユーザとの対話呼応して生成するためのツールを含む。アクティビティはデータモデルに準拠して不揮発性で永続的であることが望ましいメモリにデータを保存するためのデータ変更エンジンも備える。データ変更エンジンはツールからデルタを受信して、そのデルタにその要求を実行するアクティビティ特有のコマンドを提供し、デルタの実行に起因するデータ変更をツールへ通知するためのツールエンドを含む。データ変更エンジンはダイナミクスマネージャからデータ変更指示を受信してからデルタを実行する、即ちデルタのコマンドを実行して要求された変更をデータに加えるためのダイナミクスマネージャエンドも含む。別の観点においては、本発明はテレスペースと呼ばれる共有プライベート空間で個人間及び小グループ間での通信及びその他の共有活動及び相互活動を提供するためのシステムに関する。本発明のシステムにおいては、テレスペースの参加者またはメンバーは、ネットワーク接続可能なデバイスを介して対話し、このデバイスはたとえばインターネットなどのネットワーク上で互いに通信してテレスペースデータのローカルコピーを個々に格納する。各々のテレスペースはテレスペースのメンバーのネットワーク接続可能なデバイスの各々の上で動作可能な1つ以上のアクティビティの具現化されたもの以下、インスタンシエーションである。各々のアクティビティはテレスペースのメンバーとの対話に呼応してデータ変更要求またはデルタを開始するための1つ以上のツールを含む。各々のアクティビティはまた、ツールとは別に、共通データモデルに準拠したテレスペースデータのローカルコピーを保持するための1つ以上のデータ変更エンジンも含む。このデータモデルはたとえば、アクティビティに固有であって、テレスペース全体にわたるものであることが望ましい。各々のネットワーク接続可能なデバイスもデルタに呼応して、要求された変更をデータのローカルコピーに適用することによりデータ変更エンジンに指示を出してデルタを実行させるためと、様々なネットワーク接続可能なデバイスからのデルタの実行を調整するためのダイナミクスマネージャを含む。さらに別の観点においては、本発明は望ましくはインターネットプロトコルに従って通信するように接続された望ましくはネットワーク接続可能な別の場所にある複数のデバイスを含むネットワーク化されたシステムにおいて実施できる。ネットワーク接続可能な各のデバイスはa共通データモデルに準拠してアクティビティに関連するデータのローカルコピーを格納するためのメモリ、b前述のデータ変更エンジンに対応する1つ以上のツールを各々が含む1つ以上のアクティビティ、cデルタが関係するテレスペースに参加するネットワーク化されたシステムのネットワーク接続可能な全てのデバイスの間でデルタを共有させるための通信マネージャ、dローカルに生成されたデルタと遠隔地で生成された以下、リモート生成されたデルタの両方の実行を調整するためのダイナミクスマネージャ、を含む。ネットワーク化されたシステムのネットワーク接続可能なデバイスのどれででもユーザの対話を開始してその結果としてのデルタを生成することができ、このときのデルタは望ましくはネットワーク上のデバイスの各々に送信される。ダイナミクスマネージャはローカルのデータ変更エンジンの動作を指示し、望ましくはデルタの実行に優先順位を付けてネットワーク化されたシステム全体でのデータの実質的な一貫性を維持する。ネットワーク化されたシステムは様々なリモートサイトにいるユーザに対して、たとえばデータを共有して編集したり、ピアツーピア型の形式でその他の活動を独立して実行できるようにする一方で、ネットワークから切断されている時でも各々のネットワーク接続可能なデバイスで使用するデータの実質的に一貫したコピーを保持することができるようにする。さらに別の観点においては、本発明は個人間の対話のためのアクティビティに基づくコラボレーションシステムABCシステムとして実装可能である。ABCシステムはたとえば公衆ネットワークたとえばインターネットまたはワイドエリアネットワークWAN経由またはプライベートネットワークローカルエリアネットワークLANまたはイントラネット経由で、ケーブル、光ファイバー、赤外線IRまたはその他の形式の通信リンクにより前述のネットワーク化されたシステムを形成するように接続可能なネットワーク接続可能な複数のデバイスを含む。ネットワーク接続可能な各々のデバイスは前述のメモリと、1つ以上のダイナミクスマネージャを含むフレームワークを装備している。ネットワーク接続可能なデバイスは公衆ネットワークインフラストラクチャ、パーソナルデスクトップアプリケーション、及びインフラストラクチャ時にパーソナルインターネットと呼ばれることがある、また適用可能なら企業内イントラネットともプラグイン式に互換性を有するものが望ましい。ABCシステムは動的に挿入可能型アクティビティコンポーネント以下、ダイナミックなスナップインアクティビティコンポーネントを使用するのが望ましく、各々がたとえばチャット、ドキュメント編集、ゲーム、などの特定のタスクを実行する。アクティビティコンポーネントはたとえばシュリンクラップ製品として利用できたりまたはたとえばインターネットなどのネットワーク上からダウンロードできるソフトウェアを含むことができる。アクティビティコンポーネントはフレームワークと共通のAPIアプリケーションプログラミングインタフェースを介して動作可能である。したがって、フレームワークはアクティビティコンポーネントの形をとるアプリケーションのためのプラットフォームであると見なすことができまたそのように機能する。本発明のさらに別の観点では、ABCシステム全体で高レベルのデータ一貫性を維持するための分散技術に関する。各々のピアユニットにおいて、ダイナミクスマネージャはデータ変更要求を実行する順序を決定してデータの一貫性を促進promoteするデータ変更要求優先順位スキーマを実現する。データ変更要求優先順位方式の代表的な実施態様においては、各々のデータ変更要求は要求シーケンス番号情報と従属情報とを有する含むのが望ましい。ダイナミクスマネージャは適当なエンジンに対してこの情報に応じてデータ変更を行なわせ、ロールバック変更取り消しundoさせ、またやり直し変更の再実行redoを行なわせることができる。従属情報はたとえば単一の優先データ変更要求を指定することができ、この場合ダイナミクスマネージャは優先するデータ変更要求に対応するピアユニットで実際に処理されてからその優先要求に従属するデータ変更要求を処理するように保証する。同じ優先要求を従属先とするデータ変更要求間で従属性の衝突がある場合、従属性衝突解決スキーマを使用できる。たとえば、日付またはテレスペースのメンバーシップのスポンサー、エンドポイントの特性たとえばジョブのタイトル、ワークグループ、または部門、要求された変更の性質またはドキュメント位置、またはその他の根拠に基づいて優先権を付与することができる。つまり、本発明はそれぞれ別個の商業製品やサービスとして実現可能で、これには個々のアクティビティコンポーネント、ネットワーク接続可能な個々のデバイス用のフレームワークおよび/またはネットワーク化されたシステムまたはABCシステム、ならびにシステムを構成するデバイス間の対話を行なうための通信サービスの提供を含む。A.術語最初に、本明細書で使用している幾つかの術語と略語を紹介するのが有用であろう。これには以下を含む:アクティビティ、クライアント、通信マネージャ、コンポーネント、コントローラ、デルタ、デバイス、ダイナミクスマネージャ、エンジン、フレームワーク、アイデンティティ、メンバー、ナビゲーション、人、サーバ、テレスペース、ツール、URL、XML。アクティビティActivityは、あるユーザが他のユーザと対話するために実際にはABCシステムで何をするかを表わす。術語アクティビティは状況によって二つの意味のどちらかを取ることができる。アウトサイドビューからは、ABCシステムとコンピュータユーザとの間のランタイムの対話を意味する、たとえばこの種のアクティビティでは共有ホワイトボードに描画するのをユーザに許可したり、または二人以上のユーザがリアルタイムでチャットするのを許可する。この意味でのアクティビティはまたバックグラウンドサービス即ちエージェントであっても良い。これはローカルデバイスまたはサーバデバイス上でユーザの側で動作し、たとえばアーカイブサーバエージェント、または受信FAXエージェントなどである。ソフトウェア設計者のインサイドビューからは、アクティビティはユーザのパーソナルコンピュータまたはその他の形態の装置上で動作することができ決まったタスクを実行するモジュール化されたプログラムであってコンピュータで実行可能なプログラムを表わす。この意味でのアクティビティはツールとエンジンという2種類のコンポーネントからなり、これらは設計時に統合されてアクティビティテンプレートを作成する。アクティビティテンプレートはたとえばシュリンクラップソフトウェアとして、またはウェブからダウンロードできるソフトウェアとして、など多くの方法で配布することができる。ワープロ、スプレッドシートなどに使用するため広く配布されるプログラムはABCシステムで使用できるように設計されたバージョンであって、ABCシステムプログラマインタフェースに適合するアクティビティテンプレートの形で販売されるバージョンを有するものとして考えている。クライアントClientは、ユーザのパーソナルコンピュータ、通信機器、またはその他の形のデバイスで、ヒトとの対話ができ、ネットワークたとえばインターネットに接続可能なものを表わす。ユーザのパーソナルコンピュータ上で実行されるバックグラウンドプログラムはクライアントサービスコントローラと呼ばれる。ユーザのパーソナルコンピュータ上で実行されるフォアグラウンドのユーザインタフェースUIプログラムはクライアントUIコントローラと呼ばれる。通信マネージャCommunicationsManagerは、しかるべき宛先とのデルタの送受信を指示するメカニズムを表わす。通信マネージャはたとえば、コンピュータで実行可能なプログラムとして実装することができ、これが、ネットワークたとえばインターネット上で送信するためにツール/エンジンのペアで作成されてローカルに開始したデルタを別のリモートパーソナルコンピュータへまたは他の形のネットワーク接続可能なデバイスへ送信する、またはそのリモートデバイスがネットワークに接続されていない場合にはリレー装置へ送信するもので、またこれはネットワークたとえばインターネット上で受信されるリモートで生成されたデルタをダイナミクスマネージャへ送信する。コンポーネントComponentは、コンピュータで実行可能なプログラムとアクティビティ内部で使用されるその資源を表わす。全てのコンポーネントはURLで識別される。ウェブがコンポーネントのグローバルリポジトリで、ABCシステムの適当なコンポーネントプラットフォームへ確実にダウンロード可能なバージョンを備えるものとして考えている。コンピュータComputerは、以下で定義するような装置を表わす。コントローラControllerは、トップレベルにあるプログラムであってコンピュータで実行可能なプログラムを表わし、これはABCシステムの内部機能を駆動する。コントローラは任意のプラットフォームたとえばUNIX登録商標のデーモンコントローラまたはインテル社製マイクロプロセッサ搭載コンピュータシステム上で動作するマイクロソフトウインドウズTM用コントローラとしてチューニングされる。一般的な2種類のコントローラとしては、一般にユーザからは見えないバックグラウンドプロセスとして動作するサービスコントローラと、ユーザが対話的に制御するユーザインタフェースUIコントローラがある。デルタDeltaは、1つまたはそれ以上のツールからエンジン宛てのデータ変更要求即ちデータに対して希望する変更についての通知またはプロンプトを内包する自己内包型のデータユニットを表わす。ツールはユーザとの対話に応答してダイナミクスマネージャによるデルタ作成を開始し、後述するように、ダイナミクスマネージャの制御下で非同期実行のためにこれらをエンジンに送信する。デルタは制御情報を提供するヘッダ部分と、要求が関連するデータに関する情報を提供するペイロード部分とを含む特定のフォーマットを持っている。個々のデルタは1つまたはそれ以上のペイロードを持つことができ、多数のペイロードを使用する場合には各々をユニークなデバイス機能またはユーザの役割を有するテレスペースメンバーあてに指定できる。ツールはユーザへの表示用またはその他の形でのプレゼンテーションを行なうためエンジンから潜在的データ変更に関する情報を要求し、デルタが表示を変更させた時に非同期的に通知される。デバイスDeviceは、たとえばパーソナルコンピュータpcや通信機器など、本明細書では文脈からして特に別のものが示されない限りは、通常ネットワーク接続可能な、即ちネットワーク接続可能な他のデバイスとネットワーク上たとえばインターネット上でインターネットプロトコルを使用して通信することができるような物理的ハードウェア装置を表わす。全てのデバイスにはユニークな識別コードがABCシステムによって割り当てられ、URLを有し、デバイスを使用する者とは区別される。デバイスは潜在的に多くのテレスペースをホスティングする。デバイスは、たとえば、pcであったり、セルラホン、ファックス、ハンドヘルドオーガナイザ、ケーブルテレビのセットトップボックス、エンターテイメント用電子ユニットたとえば電子玩具やゲームと、ステレオ装置、またはこれら以外の同様にネットワーク接続可能な機器、装置、製品などのことがある。ダイナミクスマネージャDynamicsmanagerは、ABCシステムのフレームワークの一部を表わし、デルタの作成を支援したりデルタの実行を調整する。ダイナミクスマネージャはたとえば、ユーザのパーソナルコンピュータ上でまたはその他の形態を有しネットワーク接続可能なデバイス上で動作するコンピュータで実行可能なプログラムとして実装することができる。エンドポイントEndpointは、デバイスと人のユニークなペアを表わす。ABCシステムでは、ある1つのデバイスの多数のユーザの中から一人の人をユニークに識別する方法として、またはその同じ人によって使用される多数のコンピュータの中から1つのデバイスや複数のデバイスを識別する方法として、この概念を使用する。エンジンEngineは、ABCシステム内部の永続的格納及びデータ構造の管理及び変更を実現するものであってアクティビティの下半分と呼ばれるものを表わす。エンジンはコンポーネントとしてパッケージされ、それ自体にはユーザインタフェースがなく、ユーザインタフェースについては対応するツールに依存し、実質的に移植可能である。エンジンは対応するツールを機能させるためにのみ存在するのが望ましい。エンジンはユニバーサル同期universalsynchronyした状態で動作するのが望ましい。フレームワークFrameworkは、ABCシステムの内部動作を表わし、ダイナミクスマネージャを始めそのサブシステムのほとんどのものを含んでいるが、ユーザインタフェースはない。フレームワークはユーザのパーソナルコンピュータ上またはその他の形態のネットワーク接続可能なデバイス上で動作することのできるものでコンピュータで実行可能なプログラムであり論理的には高レベルのコントローラとアクティビティの間に位置する。アイデンティティIdentityは、一般に人personと同義語だが、一般にURLで表わされるもので他の人がある人を認知できる1つの名前を指す。この概念が使用される理由としては、ABCシステムではある人が多くのアイデンティティまたは別名を持つことができ、またたとえば多くの異なるURLを持てるという考え方を採用しているためである。メンバーMemberは、テレスペース内部の参加者またはテレスペースの加入者を表わし、一般にテレスペースのメンバーシップを表わす場合にはエンドポイントの人の部分デバイス部分と区別してと同義語である。ナビゲーションNavigationはURL間を移動する動作を表わし、ABCシステムではウェブブラウザによるウェブページ間、ウェブサイト間のナビゲーションと類似している。人Personは、人間、または人間の代理として作用するサーバを指し、一般にテレスペース内部のアクティビティに参加している者を指す。各々の人は1つまたはそれ以上のアイデンティティを有し、その各々はURLでユニークに識別される。サーバServerは、通信チャンネルを介する場合を除き普通は人間との直接対話ができないがサービスコントローラのもとでバックグラウンドプログラムとしてのみ実行することができるデバイスを指す。テレスペースTelespaceは、仮想空間であって、1つ以上のアクティビティに参加するために人びとが集まり、人びとが何らかのものを共有する仮想空間を指す。テレスペースとアクティビティの結果はユーザのパーソナルコンピュータ上またはその他の形態のネットワーク接続可能なデバイス上のメモリに永続的に格納される。テレスペースは、一般に、あるユーザのデバイスと他の人達のデバイスの間で同期を保っている。テレスペースはメンバーシップの論理的単位またアクティビティへのアクセスを表わす。テレスペースは1つ以上のアクティビティのインスタンシエーションinstantiationである。ツールToolは、アクティビティのユーザインタフェースを実現するものであってアクティビティの上半分と呼ばれるものを指す。ツールはコンポーネントとしてパッケージされ、ユーザのジェスチャーに応答してデルタの作成を開始し、個々のアクティビティの対応するエンジンと対話して特定のタスクを実行する。URLは、universalresourcelocator汎用資源識別子の略語で、ドキュメントなどの資源の構造化されたユニークなアドレスであり、また場合によっては資源を取り扱うときの方法を表わす。URLは本明細書において実質的に全ての永続的オブジェクト、ユーザから見えるオブジェクト、及び外部プログラムから見えるオブジェクトについて使用される。XMLは、前述の通り、拡張マークアップ言語eXtendedMarkupLanguageの略語で、ウェブ上で使用することを想定したSGMLから派生した標準化され的構造化されたデータフォーマットである。状況によってはABCシステムで使用されるメモリ内のオブジェクト構造を表わすこともあり、これはXML標準のセマンティクスsemanticsに準拠するものである。多くのXMLの概念が本明細書で使用されており、たとえばドキュメント、エレメント、タグ、属性、値、コンテンツ、エンティティ、リンク、ポインタなどがある。XMLは本明細書ではたとえばドキュメント内のデータを構造化するために使用される。B.従来のコンピュータシステム図1は、代表的なコンピュータシステム100の従来型のシステムアーキテクチャを図で表わしたものであり、開示された本発明をこれに実装することができる。図1に例示したコンピュータシステムは説明の目的でのみ議論するが、本発明を制限するものとして見なすべきではない。本発明はさらにコンピュータシステムとして従来考えられてきたデバイスに制限されるものではなく、これはたとえばビデオゲームコンソール、パーソナル機器、またはケーブルテレビのセットトップボックスなどを含む各種のネットワーク接続可能なデバイスのいずれにおいても本発明を実装できるためである。以下の説明は特定のコンピュータシステムを記述する際に共通に使用される術語を示しているが、説明される概念は図1に図示したものとは異なるアーキテクチャを有する他のコンピュータシステムにも等しく適用されるものである。たとえば、ケーブルテレビのセットトップボックスは大容量格納機能を含まないがデジタル信号プロセッサを内蔵したビデオチューナを含んでいる。コンピュータシステム100は、従来のマイクロプロセッサを含む中央演算処理装置CPU105、一時的な情報格納用のランダムアクセスメモリRAM110、永久的な情報格納用のリードオンリーメモリROM115を含む。メモリコントローラ120はシステムRAM110を制御するために提供される。バスコントローラ125はバス130を制御するために提供されており、割り込みコントローラ135は他のシステムコンポーネントからの様々な割り込み信号を受信して処理するために使用される。大容量格納はディスケット142、CD-ROM147またはハードディスク装置152によって提供できる。データやソフトウェアはリムーバブルメディアたとえばディスケット142やCD-ROM147を経由してクライアントコンピュータ100と交換できる。ディスケット142はディスケットドライブ装置141に挿入することができ、ディスケットドライブ装置141はコントローラ140によってバス130へ接続されている。同様に、CD-ROM147はCD-ROMドライブ装置146に挿入することができ、CD-ROMドライブ装置146はコントローラ145によってバス130へ接続されている。最後に、ハードディスク152は固定ディスクドライブ装置151の一部であり、これはコントローラ150によってバス130へ接続されている。クライアントコンピュータ100へのユーザ入力は多数のデバイスによって提供され得る。たとえば、キーボード156とマウス157はキーボード及びマウスコントローラ155によってバス130へ接続される。オーディオトランスデューサ196はマイクロホン及びスピーカの両方として機能することができるもので、オーディオコントローラ197を介してバス130へ接続されている。他の入力デバイスたとえばペンおよび/またはタブレットや、音声入力用マイクロホンなどを適当なコントローラとバス130経由でクライアントコンピュータ100へ接続することができるのは当業者には明らかであろう。DMAコントローラ160はシステムRAM110へのダイレクトメモリアクセスを実行するために提供される。視覚表示はビデオコントローラ165によって生成され、これがビデオディスプレイ170を制御する。コンピュータシステム100はまたクライアントコンピュータ100がバス191経由でネットワーク195へ相互接続できるようにするネットワークアダプタ190も含む。ネットワーク195はローカルエリアネットワークLAN、広域ネットワークWAN、またはインターネットであり、多数のネットワークデバイスを相互接続する汎用通信回線を使用する。コンピュータシステム100は一般にオペレーティングシステムソフトウェアによって制御調節される。コンピュータシステム制御機能のなかでも、オペレーティングシステムはシステム資源の割り当てを制御しプロセスのスケジュール、メモリ管理、ネットワーク及びI/Oサービスなどのタスクを実行する。C.データモデルを制御する従来の方法図2はモデルビューコントローラとして周知の技術を使ったデータモデルを制御する従来のシステム200を示す。システム200において、データモデルモジュール202はたとえばデータベースなどのデータをデータモデルにしたがって格納し維持する。コントローラモジュール204はローカルに開始したイベント206たとえばユーザ入力などやまたは外部で開始したイベント208たとえばリモートのコンピュータシステムから受信したイベント通知などに応じて、現在値をセットするコマンドをデータモデルモジュール202に指示して格納しているデータへの変更を行なわせる。コントローラモジュール204はデータ変更を出力装置たとえばディスプレイ206などに通知する。ディスプレイ206はデータモデルモジュール202から変更されたデータを取得してデータの表示を更新し、現在のデータがユーザから観察できるようにする。前述の技術は厳密にイベント駆動型であり動作においてリニアである。典型的には、データへの変更をコントローラモジュール204に指示させる内部または外部のイベントはコントローラモジュール204のFIFO先入れ先出し型バッファに格納され、次いでイベント通知がコントローラモジュールに到達した順序で処理される。また典型的には、グローバルな一貫性問題、即ちシステム200内のモデルデータのコピーが他のリモートシステムにあるデータと一致していることを保証する対応がシステム200には行なわれていない。システム200で例示したようなデータモデルを制御する従来のアプローチは、コンピュータシステムがメインフレームとパーソナルコンピュータとを問わず相互に隔絶されて動作していた時代には適切だった。インターネットの発達とともに、コンピュータユーザはコラボレーションするときのもっと優れた方法を要求しており、本発明では、データモデルに対してデータ変更エンジンによって行なわれる変更にダイナミクスマネージャが介在するモデル介在型制御と呼べるようなものを提供する。D.コンピュータ間動作のインターネットパラダイム図3はインターネット環境300を示したもので、本発明が有利に使用できるものである。ユーザの観点からすると、従来のクライアントサーバビュー302において、個別のクライアント306、308はインターネット309上でサーバ310と別々に通信する。各々のクライアント306、308はインターネット309経由でサーバへ要求を発信し、各々について、サーバ上に格納されたドキュメントをインターネット309上でクライアントへ提供することにより、サーバ310がこの要求に応答する。各々のサーバ310とクライアント306、308は、図1に図示したようなパーソナルコンピュータとして実現できサーバの場合には幾つかのUIコンポーネントはオプションとなる、適当なプログラムたとえばクライアントブラウザ311および/または後述するようなその他の通信インタフェースの実行が可能である。インターネット使用のピアツーピアビュー312においては、ユーザのコンピュータシステムはピアユニット314A~Dを構成し、インターネット経由の通信は一つのピアユニットから別のピアユニットへ明らかに介在するものがなくても配向できる。各々のピアユニット314A~Dは図1に図示したようなパーソナルコンピュータとして、またはその他の形態のネットワーク接続可能なデバイスとして実現可能である。本発明はクライアント306、308、またはピアユニット314A~Dのいずれかで有利なるように実現可能であるが、このような説明はシステムのピアツーピアビューでの実装が中心となる。さらに詳細には以下で説明するが、このようなピアツーピア通信は直接またはリレーデバイス316経由で行なうことができる。リレーデバイス316はストアアンドフォワード型が望ましく、これはインターネットから一時的に切断されているピアユニット314へ向けられたメッセージを格納し、その後再接続した時にそのピアユニットへメッセージを転送することができるものである。E.ABCシステムのアーキテクチャと動作図4はピアユニット314A~Dの一つ、たとえばピアユニット314Aにおいて実現されるABCシステム400を示す。ピアユニット314A上のABCシステムはフレームワーク402、少なくとも一つのテレスペース404、及びユーザインタフェース406を備える。フレームワーク402は多数のテレスペース404にサービスするためのプラットフォームを提供するのが望ましい。フレームワーク402は、アクティビティが動作しフレームワークコンポーネントと通信するプログラマインタフェースを備えるモジュラー構造が望ましい。フレームワーク402はユーザインタフェースマネージャ408、アイデンティティマネージャ410、テレスペースマネージャ412、アクティビティマネージャ414、格納マネージャ416、コントローラサービスマネージャ418、ダイナミクスマネージャ420、通信マネージャ422を含む。ユーザインタフェースUIマネージャ408は多数のユーザインタフェースコントローラ図示していないの共有サービスの管理を担当する。UIマネージャ408はディスプレイウインドウの窓ガラスの向こうにあるアクティビティのレイアウトを管理し、それ以外にユーザインタフェースとして期待するルックアンドフィールを提供する。UIマネージャ408はアクティビティのナビゲーションたとえばgo行く、next次、previous前なども管理しナビゲーション履歴を保持する。アイデンティティマネージャ410はあるテレスペースメンバーのアイデンティティの保存を担当する。前述したように、アイデンティティは名前であり、また対応するURLであり、これにより各々のユーザが他のユーザによって認識される。個々のユーザは1つまたは多数のアイデンティティを持つことがある。アイデンティティマネージャ410はアイデンティティのレコードまたはテーブルを望ましくはXMLで保持する。アイデンティティマネージャ410はまたテレスペースメンバーのURLとこれらに対応するデバイスのURLのレコードまたはテーブルを望ましくはXMLで保存する。これ以外に、独立したメンバーマネージャを実装することができる。テレスペースマネージャ412はピアユニット314Aで開くことができるテレスペース404の各々の管理を担当する。各々のテレスペース404は1つまたはそれ以上のアクティビティのインスタンシエーションinstantiationである。各々のテレスペース404は対応するアクティビティマネージャ414を有している。アクティビティマネージャ414はaテレスペースへ新規アクティビティを追加する、bテレスペースで既存のアクティビティを開く、cアクティビティテンプレートの新しいバージョンからテレスペースのアクティビティを更新する。新規のアクティビティを追加するには、アクティビティマネージャ414にアクティビティテンプレートのURLを提供してテンプレートを開き、テンプレート情報たとえばコンポーネントURLを抽出してテレスペースへ伝搬する。テンプレートはあるテレスペースについての初期アクティビティ構成を定義する。ユーザは後で必要に応じてテレスペース404へさらにアクティビティを追加できる。追加した後、アクティビティはテレスペースの一部となりテレスペースのメンバー全員から見えるようになる。テレスペースはアクティビティマネージャを識別してアクティビティマネージャとデータを結合するタグを備える。望ましくは、各々のドキュメントはローカルレジストリをこれにリンクし、XMLタグの名前がレジストリに保存されるようにして、拡張可能な、プラットホームに依存しない方法でドキュメントとこれに対応するテレスペースの間のマッピング参照ポインタまたは連係を表現するようにする。各々のテレスペースメンバーはその人のピアユニット314A~Dで利用できるテレスペースのフレームワークとアクティビティテンプレートを有する。各々のアクティビティはツール424などのツールと、エンジン426などのエンジンとを含む。ツール424はアクティビティにユーザインタフェースUI機能を提供してメンバーとUI406経由で対話する。UIを介した対話はたとえばキーボード156経由で図1またはマウス157経由で図1開始されたUIイベントを含む。このようなUIイベントに応答して、ツール424はこれに対応するエンジン426に対してデータモデル変更を実行するように要求し、データ変更が起こった時に非同期的にUIを更新する非同期データ変更通知をエンジン426に予約する。ツール424もコントローラサービスマネージャ418の指示の下に提供されるバックグラウンドサービスと対話するためのアプリケーションプログラムインタフェースAPIを実装している。エンジン426はテレスペース404をサポートするデータの維持と変更、および/またはツールを介して得られたユーザとの対話からの結果の維持と変更を担当する。後述するように、エンジン426は永続的モデルデータを変更することと非同期データ変更通知をツール424に送出することをどちらもダイナミクスマネージャ420の指示制御下で行なうことができる。格納マネージャ416は格納されたデータへのアクセスを制御する。アクティビティテンプレートの作成について、ソフトウェアデベロッパはフレームワーク内で使用するツールとエンジンを書いたり取り込んだりできる。アクティビティテンプレートはアクティビティを含むツールコンポーネント及びエンジンコンポーネントの永続的表現である。アクティビティテンプレートはたとえばシュリンクラップしたソフトウェアとして配布したりたとえばインターネット上で遠隔地のサーバからピアユニット314Aにダウンロードしたりできる。アクティビティコンポーネントはウェブドキュメントであると考えることができ、URL経由で永続的に表現される。アクティビティテンプレートそれ自体がURLを有するのが望ましく、これによりアクティビティ設計の変更を追跡できるようになる。アクティビティテンプレートは単一のアクティビティテンプレートかまたはアクティビティ集合体テンプレートであり得る。単一のアクティビティテンプレートはたとえばチャットなどの一つのアクティビティにだけに関連する。それに対してアクティビティ集合体テンプレートはチャット及びアウトラインなどといったアクティビティの集合体に関連する。使用するときは、ABCシステム400はアイデンティティマネージャ410経由でメンバーのアイデンティティを取得し、テレスペースマネージャを開き、テレスペースマネージャに対してURL経由でテレスペースを開くように要求し、テレスペースマネージャにアクティビティマネージャを要求し、さらに、通常はアクティビティのURLを使って、アクティビティマネージャがアクティビティを開く。次に、ABCシステム400はメンバーがテレスペースを使用して特定のアクティビティによって提供される共有された特定のタスクを実行することができるようにする。図5はピアユニット314A~D上のABCシステム500の代表的なマルチテレスペースの使用方法を示す。ABCシステム500が分散システムであることは理解されるべきである。そこでここでは、ピアユニット314Aだけのコンポーネントの説明が提供されているが、ピアユニット314B~Dも同様のコンポーネントを備えているので、これらについては別個の説明は不要である。ピアユニット314Aについて図示したように、ABCシステム500はピアユニット314Aがメンバーとして登録されている複数の代表的テレスペースを含み、これには自動車設計テレスペース502、チャットテレスペース504、チェスで遊ぶテレスペース506が含まれている。また図示してあるように、ピアユニット314はテレスペース502、504、506の操作中に使用される複数のコンポーネントを有している。ピアユニット314Aは、メンバーとして登録されているテレスペース502、504、506の各々をリストし記述してあるテレスペースレコード508と、これらのテレスペースに参加するテレスペースメンバーのアイデンティティの各々をリストし記述してあるメンバーレコード512とを保持するメモリ510を備えている。UI512はユーザが開始したテレスペースへの変更及びメンバーレコード508.514への変更を受信できる。テレスペース502、504、506の各々は図示したアクティビティ522、524、526のうちの異なる一つを例示しているこれとは別の場合には、図示したアクティビティ522、524、526は単一のテレスペースに常駐することもあるが、この場合単一のテレスペースの全てのメンバーがアクティビティの各々へのアクセスを行なうことになる。各々のアクティビティ522、524、526は各々のアクティビティに対応する特定のツール532、534、536であって、各々のエンジン542、544、546の制御下にメモリ510に格納された対応するデータモデル552、554、556に対して変更を行うためのツール532、534、536を含み、これらのツールはそれぞれテレスペース502、504、506の中に永続的に保存される。たとえば、自動車設計テレスペース502はCADcomputer-aideddesignソフトウェアの形でツール532を含むことができるアクティビティ522のインスタンスであり、チェスで遊ためのテレスペース506はソフトウェアのチェスゲームの形を取るツール536を含むことができるアクティビティ526のインスタンスである。ユーザはユーザインタフェース514経由でテレスペース502、504、506のアクティビティ522、524、526を遂行し、ユーザインタフェース514はツール532、534、536とのインタフェースを持つことによりユーザの要求をツールに提供する。この要求に応答して、エンジン542、544、546がダイナミクスマネージャ501の制御下でメモリ510内の対応するデータモデル552、554、556の永続状態を変更し、現在の状態を反映させる。たとえば、チェスで遊ぶためのテレスペース506でのデータの永続的状態は、そのチェス盤と、盤上のチェスの駒の位置を含むことができる。ユーザ要求はチェスの駒の動きを指定でき、これがデータの変更、即ちデルタを構成する。また現在の状態はデルタの実行と駒の動きの完了を反映する。図6はABCシステム500の動作を示したもので、ピアユニット314Aに配置され図5を参照して説明したコンポーネントに関するものである。エンジン546はアクティビティ526の特定の集中タスクを推進する上で実装するときの候補となるアクションまたはオプションたとえばチェスの駒の動きをツール536に提示する。ツール536はユーザインタフェース514経由でテレスペース506のメンバーメンバーレコード512に記録されているメンバーであるユーザと対話し、アクティビティのビュー画像を提示するたとえば、チェス盤面のビューと、おそらくは動きのリスト。ユーザのジェスチャーと呼ばれるたとえばビショップをXからYへ動かすなどものであってユーザインタフェース514から入力されたユーザ入力に応答して、ツール536はデルタを生成してシステム内に格納することにより、ユーザによる選択をメモリ内に記録する。デルタは要求された変更の単位であり、好ましくは、コンテナオブジェクトの形である。コンテナオブジェクトはオブジェクト指向プログラミング技術に馴染みのある者にはには周知である。ツール536はデルタにおいて要求された変更の粒度granularityの決定を担当する。デルタコンテナオブジェクトはたとえば特定のチェスの駒の識別及びチェスの駒の動きを構成する盤面のもとの位置と目標位置といった、ユーザの指定したデータに加えて、変更を実行するための1つまたはそれ以上のコマンドを保持内蔵することができる。生成時には、デルタはコマンドが何も入っていない空の状態で、変更を行なうためにエンジン546によって適当なコマンドを埋め込まれるまで、それ自身が単に変更要求を構成しているだけである。デルタにおいてエンジン特有の方法これはツール536には分かっていなくとも良いで変更を行なうのに必要とされるコマンドを記録するのはエンジン546の責任である。さらに詳しく説明すると、線aで示したように、ツール536はダイナミクスマネージャ501によるデルタ生成を要求することからデルタの作成を開始する。ダイナミクスマネージャ501はデルタを作成して線a’でツール536へデルタを返し、フォールトリカバリ障害復旧が必要な場合に備えて作成したデルタを記録する。図6の線aで示してあるように、ツール536はツールインタフェース602を介してエンジン546のツールエンド604へデルタの制御を渡し、これによりエンジンを起動するこの説明は時としてデルタが渡されるまたはデルタへの制御を一つのコンポーネントから別のコンポーネントへ渡すべきであることを表わす。望ましくは、デルタはメモリ内に割り当てられ、ポインタがXMLエレメントとして渡されるオブジェクトである。。エンジンのツールインタフェース602はデルタにコーティングされている要求された変更を行なうことができるコマンドを作成するための、または、言い換えればユーザの意図にしたがうように逐次的な形で適当なコマンド、代表的にはエンジンに特有なコマンドでデルタを埋めるための、一組のアプリケーションプログラムインタフェースを表出する。次にエンジン546はこの段階ではコマンドで埋められているデルタの制御をツール536に戻す。図6の線bで示してあるように、ツール536は実行のために埋められたデルタの制御をダイナミクスマネージャ501へ渡す即ち送出する。ダイナミクスマネージャ501は他のピアユニット314B~Dから線b経由で到着するデルタも受信することができる。ダイナミクスマネージャ501は、ピアユニット314B~Dにおけるダイナミクスマネージャとともに、チェスゲームのテレスペースに参加している全てのメンバーについて、ABCシステムの一方のエンドから別のエンドへ、データモデル556へ行なわれた変更の一貫性を維持する責任がある。ダイナミクスマネージャ501はキュー構造612とダイナモプロセス614とを含み、好ましくはコンピュータで実行可能なプログラムがダイナミクスマネージャの主論理を含む。ダイナミクスマネージャ501とそのダイナモプロセス614は通信マネージャ622と双方向通信する。ダイナミクスマネージャ501は受信したデルタを順序付ける目的でキューに入れてキュー構造612にして、次にダイナモプロセス614がキューに入っているデルタを処理するときにはキュー構造にサービスし、エンジン546に指示して適当な順序でデルタを実行させる。さらに詳しく説明すると、ダイナミクスマネージャ501のダイナモプロセス614はインタフェース615を介して図6の線cを介してエンジン546のダイナミクスマネージャエンド616へ向けて、デルタコマンド実行メッセージの形で制御信号を送信する。デルタコマンド実行メッセージはエンジン546に指示して、メモリ510に含まれており、テレスペースに永続するデータモデル556への要求された変更を行なうことで、ツール536から受信したデルタの実行を遂行する。ダイナミクスマネージャ501のダイナモプロセス614はまた、通信マネージャ622経由で他のエンドポイントへ向けてローカルに開始した全デルタを配布し、通信マネージャ622はネットワークたとえば626上でピアユニット314B~Dへデルタを送信する。ピアユニット314B~D各々では、各々のダイナミクスマネージャが受信したデルタを自分のローカルキュー構造へとキュー入れし、つぎに特定の順序で各々のエンジンへデルタを渡して実行させる。一つのダイナミクスマネージャはアプリケーションによって一つのテレスペースまたは多数のテレスペースをサポートできるので、多数のエンジンに指示して様々なテレスペース用のデルタを実行させる責任をとらせることもできる。多数のテレスペースを持つシステムでは、図5に図示したように、デルタの情報を調べることで、あるデルタをどのエンジンが実行すべきかを、ダイナミクスマネージャ501が決定する。デルタはエンジンのうちの特定の一つに同定されまたデルタのペイロードの中に入っているエンジン識別子またはコードのタグを付けられたコマンドを含む。キューに入れられたデルタがダイナミクスマネージャで処理される時に、ダイナミクスマネージャはエンジンコードと参照されたデルタとを関連付け、適当なエンジンによるデルタの実行を指示する。最後に、図6の線dで示されているように、エンジン546はデータ変更通知メッセージを送出してツール536にデルタの実行を通知し、またデータモデル556におけるデータの新しい現在状態を通知する。デルタ変更通知は値または参照を使って行うことができる。つまり、通知は新しいデータの値それ自体を含むことができたり、またはメモリ内の新しいデータへのポインタを含むことができる。この通知に応答して、ツール536はたとえばチェス番のグラフィック上での動きを表示することにより、ユーザが利用可能な変更をユーザインタフェース514に行なわせる。ユーザがディスプレイ170を観察している場合図1、ユーザは、デルタの実行によって行なわれたチェスゲームへの変更を見ることができるが、それ以外の場合には、変更が行なわれた時点でユーザが変更を見ることなくメモリ510内のデータに変更が行なわれる。望ましくは、ピアユニット314Aのデータモデル556に格納されているデータモデル556へ変更がエンジン546によって行なわれるのと実質的に同時に、他のピアユニット314B~Dもローカルに格納しているデータに対して同様の変更を行なって一貫した方法でデルタの意図を反映する。ピアユニット314A~Dのどれかがネットワークたとえばインターネットに接続されていないような状況が起こり得る。ピアユニット314Aが切断されているときには、通信マネージャ622はデバイスプレゼンスデテクタ430を使用してピアユニット314Aが接続されているかどうかを確認し、接続されていない場合には、接続が復元される時まで送出されるデルタを送出デルタストア628に格納しておき、接続された時点で、格納したデルタを送信する。1つ以上の宛先ピアユニット314B~Dがネットワークから切断されている場合、ピアユニット314Aの通信マネージャ622はプロセスを続けて他のピアユニットが切断されているか否かにかかわらず送出デルタをリレー316図3に送信する。リレーデバイス316図3はこのような送出デルタを受信し、必要に応じて送出デルタストア318図3に格納し、ピアユニット314B~Dが再接続された時点で宛先へ転送する。動作中には、通信マネージャ622は全ての送出デルタをリレー316のURLへ送信することができ、リレーは搭載されている参照テーブル320を使用してデルタを中継する場合に使用する宛先ピアユニット314B~DのエンドポイントURLを確認する。リレーサービスは実際にはインターネットサービスプロバイダISPまたはその他のインターネット組織によって提供され得るものである。ツール536とエンジン546の間で、ユーザインタフェースアクティビティはツール536経由でのみ直接行なわれ、データモデルの変更はエンジン546経由でのみ直接行なわれることが理解される。専門用語を使った表現では、ツール536はUIを保有しており、エンジン546はデータモデルを保有している。これは図2に図示したような現行の代表的アプリケーションとは対照的である。たとえば、今日のスプレッドシートプログラムでは、代表的にはツールの機能とエンジンの機能を組み合わせており、本発明の前述の実施態様のようにこれらを分離するのではない。ツールをエンジンから分離することにより、従ってデータモデルからUIを分離することにより、ダイナミクスマネージャはたとえばデータの一貫性を維持する目的で、様々なピアユニットから発せられたデルタの間に介在し仲介できる。さらに、エンジンからツールを切り離すことでデルタの実行処理を非同期的に行なえるようになる。これはダイナミクスマネージャ501とエンジン546がテレスペースの中にいる全てのメンバーについてデータの一貫性を維持するような方法で各々の責任を遂行するのに時間がかかるため有用である。また、他のピアユニット314B~Dから到着するデルタがローカルに開始されたデルタの実行のタイミングに影響することがあることからも有用である。図7は個別に実装されたアクティビティ図示していないで使用するフレームワーク700の実施態様を示す。フレームワークは、たとえばフレームワーク上で動作可能なアプリケーション独自のスナップインプラグインであるコンピュータプログラム製品として、個々のアクティビティとは独立して、販売またはライセンスすることができる。一般的に言うと、フレームワークはテレスペースに関してコラボレーションをホスティングする。図示したフレームワーク700は1つ以上のダイナミクスマネージャ702、1つの通信マネージャ704、1つのデータ構造テンプレート706を含む。データ構造テンプレート706はアクティビティデベロッパが使用するための原始型オブジェクトオブジェクトプリミティブを、望ましくはXMLフォーマットで含むことができる。フレームワーク700はたとえばコンピュータで読み取り可能な媒体706として実装可能で、媒体上にダイナミクスマネージャ702と通信マネージャ704を含むコンピュータで実行可能なコードと、データ構造テンプレート700のオブジェクトプリミティブを含むコンピュータで読み取り可能なデータとが格納される。F.通信マネージャ、プレゼンスサーバ、及びリレー図8はネットワークたとえばインターネット803経由で多数のピアユニット802A~Dの間での通信ができるように装備したABCシステム800を示す。各々のピアユニット802A~Dはピアユニット314Aに関連して前述したコンポーネントを含むことができる図8に図示したピアユニットの個数は単に例示を目的として選択したものであり、特定の実装の構成により左右され、また時間とともに変化することがある。各々のピアユニット802A~Dはツール805A~Dによって開始されエンジン807A~Dにより実行されるデルタ処理を調節するためのダイナミクスマネージャ804A~Dを含み、またピアユニット802A~Dの間の通信を調整するための通信マネージャ806A~Dを含む。通信マネージャ806A~Dの役割はネットワークたとえばインターネット803上でインターネットプロトコルたとえばTCP/IPなどを使用してメッセージデルタを含むを送受信することを含む。各々のピアユニット802A~Dはとくに機能の上で通信マネージャ830A~Dの動作サポートにおいてデータを格納するためのメモリ808A~Dを含む。前述のように、通信マネージャ806A~D各々はそれ自体のピアユニットと他のピアユニットとの間の通信を全て管理する責任がある。たとえば、通信マネージャ822はピアユニット802Aとピアユニット802B~Dの間の双方向通信を管理する。通信はピアユニット802Aからピアユニット802B~Dの1つまたはそれ以上へ送出される、またはピアユニット802B~Dの一つからピアユニット802Aへ送出されるどちらかのメッセージを含むことができる。宛先ピアユニット802B~D前者の場合またはピアユニット802A後者の場合がネットワークたとえばインターネットに接続されている限りオンライン状態である直接かつ仲介なしに送信を行なうことができる。前述のように、デバイスプレゼンスマネージャ812を用いて想定した宛先がオンラインになっているか、または一時的に切断されているオフライン状態であるどうかを確認することができる。宛先がオフラインになっている場合、通信はリレー814前述の通りを経由して行なうことができ、リレーは宛先がオンラインに復帰した時に宛先へのメッセージを転送する。つまり、ピアユニット802Aがピアユニット802Cへのメッセージを送出しようとして、ピアユニット802Cがオンラインであるとプレゼンスサーバ812から通信マネージャ806Aに通知されている場合には、通信マネージャ806Aはネットワークたとえばインターネット803経由で直接ピアユニット802CのURL宛てにメッセージを送出する。ピアユニット802Cでは通信マネージャ806Cがメッセージを受信して、メッセージをダイナミクスマネージャ804Cへ渡す。逆に、ピアユニット802Aがピアユニット802Cへのメッセージを送出しようとして、ピアユニット802Cがオフラインであるとプレゼンスサーバ812から通信マネージャ806Aに通知されている場合には、通信マネージャ806Aはネットワークたとえばインターネット803経由でリレー814のURLへメッセージを送出する。リレー814は高性能ファイルサーバとして実装可能で、ピアユニット802Cがオンラインに復帰するまで中継メッセージを保存しておき、復帰時にメッセージをピアユニット802CのURLへ転送する。ピアユニット802Cでは前述のようにメッセージを受信して、通信マネージャ806C経由でダイナミクスマネージャ804Cへ渡す。したがって、プレゼンスサーバ812はABCシステム800内ではピアユニット802A~Dがオンラインかどうかをモニタする目的で、また他のピアユニットの接続状態をピアユニットの各々に通知する目的で、使用することができる。この目的を満たすためには、プレゼンスサーバ812はたとえば図1のコンピュータシステム100に示したように構成することができる。動作中、ピアユニット802A~Dの各々はプレゼンスサーバ812に自分の接続状態を通知する責任、即ちユニットがオンライン中かまたはこれからオフラインになろうとしているところかを通知する責任がある。別の方法としては、プレゼンスサーバ812は時々ピアユニット802A~Dをポーリングしてこれらの接続状態の情報を取得することができる。この情報はプレゼンスサーバ812内で望ましくは揮発性メモリ816内の接続ディレクトリ818に保存する。接続ディレクトリ818は初期状態では空で、ピアユニット802A~Dが接続状態の状態をプレゼンスサーバ812に提供するまで、たとえば接続状態の通知を提供するまで、空のままである。そして、状態に関する情報の受信時に、接続ディレクトリ818は通知してきたピアユニットのURLと接続状態の情報を保存する。プレゼンスサーバ812はピアユニット802A~Dに対して接続状態予約サービスを提供することもできる。プレゼンスサーバ812は各々の接続しているピアユニット802A~Dに他の各ピアユニット802A~Dの接続状態を通知し接続状態の変化も通知する。プレゼンスサーバ812はaメッセージを送信したいピアユニット802A~Dから状態変化通知の要求があった時点で、bネットワークたとえばインターネット803へピアユニットが接続する時点で、c時々、たとえばピアユニットのいずれかの状態に変化があった時点で、またはd上記の組み合わせのいずれかの時点で、接続しているピアユニット802A~Dへ接続状態通知を送信できる。望ましくは、全ての通信はインターネットプロトコルに準拠して行なう。これらのプロトコルにはとくに前述のものが含まれる。各ピアユニット802A~Dはまたメンバーシップ状態サービスに加入することができ、そうすることでそれ以後はメンバーとなっている各テレスペースのメンバーシップの現状に基づいて知ることができる。このサービスを有効にするためには、プレゼンスサーバ812はプレゼンスサーバによってサポートされる各メンバーについてのレコードを格納するため揮発性メモリ816にメンバーディレクトリ822を保持しておく。各ピアユニットはプレゼンスサーバに時々、あるいは、これ以外ではメンバーシップ状態に何らかの変更があった時点で、現在のメンバーシップ状態を提供する。例示すると、ピアユニット802Aがピアユニット802Bへたとえばデルタなどのメッセージを送信したい場合、ピアユニット802Aはプレゼンスサーバ430にアクセスしてピアユニット802BのURLを取得し、これの接続状態の情報を得る。ピアユニット802Aが予約サービスに加入していると仮定すると、ピアユニット802Bの状態についての通知を受信することになる。つまりダイナミクスマネージャ804Aは宛先ピアユニット802Bがネットワークに接続しているかどうかについての知識がなくとも通信マネージャ806Aへメッセージを渡すことができる。G.分散データ一貫性モデルとデルタ処理前述したように、ピアユニット802A~D内のダイナミクスマネージャ804A~Dはローカルに生成したデルタやリモートで生成したデルタを受信することと各々のエンジン807A~Dで実行する正しい順序を維持することで、テレスペースに参加しているABCシステム800のピアユニット314A~Dの全部にわたってデータモデルの一貫性を高いレベルで維持できるようにすることが役割である。どれか一つのピアユニットから発信されたデルタが順不同に受信および/または実行されたり、または一時的にネットワークからピアユニットが切断されているため大幅に遅延した後で受信および/または実行されるため、こうすることは一層困難なものになる。さらに、デルタは別々で一貫性のないローカルデータの状態に基づいて生成されることがある。理論的には、データの一貫性は3つの属性を使って記述することができ、その各々は何らかの程度でコラボレーションシステムである程度達成できるものであり、それらは即ち因果関係の保存、意図の保存、および収束性である。さらに詳しく説明すると、これらの一貫性の属性は以下のように記述することができる。1.因果関係の保存即ちシーケンス順序の一貫性は、デルタAがデルタBの原因となる場合、デルタAは最初に実行される必要があり、デルタの作成を生じたシーケンスがその実行において保存されるようにすることが必要とされる。言い換えれば、この属性を満たすには従属動作の実行順序が自然界の原因/結果の順序と同じである必要がある。2.意図の保存即ちセマンティック意味上の一貫性はデルタの意味とその作成の裏に隠れている意図が保存される必要がある。言い換えれば、この属性を満たすには、デルタの何らかの対について、たとえばデルタAとデルタBで、一方の実行は他方の意図を保存しなければならない。これを達成するには、データ状態に対する変更をユーザが要求した時点でのデータ状態をシステムで記録する。たとえば、共有ドキュメントの場合、変更xが要求された時、次の単語がyでありこれはxが実行された時にも同じである。言い換えれば、各ピアユニットに格納されたデータに対してデルタを実行する効果が元となるピアユニットに格納されたデータに対する同じデルタの実行の効果と同じでなければならない。3.収束性は全てのピアユニット802A~Dの各々によって維持されるデータのコピーは同じデルタを実行した後に同一でなければならないことを要求する。これは完全順序totalorderingとして公知である。ABCシステム800は高レベルのデータ一貫性を維持するのに必要な情報を記録しておき、実行が他のデルタの先行実行に依存するデルタについてのデルタ実行順序の制約を強制する。たとえば、ピアユニット802Aのダイナミクスマネージャ804Aでのデルタ受信の順序毎にデルタが大文字A、B、C、Dで指定されている時、デルタA、B、C、Dは因果関係を保存するように受け取った順序で正しく実行することが可能である。これは、たとえばデルタAとCがピアユニット802Aからローカルに開始されたものでデルタBとDがピアユニット802Dからリモートで到着したものである場合でも同じである。ただし、場合によっては、受信した順序でこれらのデルタを実行すると、順序が乱れた変更が行なわれて因果関係の違反が起こることになる。たとえばローカルに生成されたデルタとリモートで生成されたデルタがたどる通信経路でのレイテンシ待ち時間latenciesが異なっているため、デルタが交互に入れ違いになって受信される結果を招くことがある。さらに、因果関係の保存が実現されたとしても、結果は意図の保存に関する属性を侵害することがあり、変更の意味がなくなる場合もある。たとえば、デルタBは文章Acowhaslegs牛には脚があるについて脚の前に4本のを挿入したいとする。デルタAがデルタBでの変更について知識がなく、同じ文章の中でで脚を頭に変更したい場合にデルタBで文脈を変更するためにデルタBの前に実行されてしまうと、結果はAcowhasfourahead牛には4つの頭があるになる。実際、この結果は意味がなく、またデルタAがデルタBより後に処理されることにより発生する結果にも意味がないのである。収束性については、ピアユニット802A~Dでのデータのコピーの同一性即ち複製が破られる状況には複数のものがある。たとえば、ネットワーク上の通信障害によりデルタがあるピアユニット802A~Dで受信されなくなることがあり、そのために異なるデルタ実行結果が発生する場合がある。不可能でなくとも現実のシステムにおける完全収束、因果関係の完全保存、意図の完全保存を実現するのは困難であるが、高いレベルのデータ一貫性がピアユニット間えのコラボレーションには望ましい。高レベルのデータ一貫性を実現するためには、各々のダイナミクスマネージャ804A~Dは、所定のフォーマットのデルタを作成し、デルタと各々のメモリにデータ一貫性を維持するのに使用するある種の情報を記録するのが望ましい。さらに詳しく説明すると、各ダイナミクスマネージャ804A~Dが作成する各々のデルタにシーケンス番号Seq.No.を割り当て、特定のピアユニット802A~Dにおいてダイナミクスマネージャによって作成された全デルタの中でのデルタのシーケンシャルな位置を表わす。ダイナミクスマネージャ804A~Dは次にデルタに割り当てたシーケンス番号と一緒にエンドポイント識別子EPを記録し、これはデルタの発生の元となったエンドポイントピアユニットと人を指定しているものである。ダイナミクスマネージャ804A~Dはまたデルタに作成時刻で単一の従属性を指定する情報を記録する。デルタに記録された従属性情報は、たとえば他の一つのデルタの発生元となるエンドポイントのシーケンス番号とEPの形態を取るが、このときの他の1つのデルタは、たとえば、通常はそのデルタについて作成したピアユニットで注目しているデルタと同じアクティビティで注目しているデルタの作成の直前にエンジン807A~Dによって実行された最後のデルタである。ある種のデルタは、たとえばテレスペースデータの状態がその実行に重要でないため、先行するデルタに依存しない。これらのデルタは独立デルタと呼ばれる。独立デルタでは、このような従属性シーケンス番号を提供する必要がない。各ダイナミクスマネージャ804A~Dは受信したデルタのヘッダから一貫性情報を抽出し、デルタ情報の残りと一緒にこの情報をメモリに保持する。図9は本発明の実施態様によるデルタ900のフォーマットを示しており、これは上記で説明した一貫性情報を使うことができるものである。デルタ900はヘッダ902と、これに続くペイロード904を持っている。ヘッダ902はデルタを識別し、一貫性情報を含み、他のハウスキーピングhouse-keeping情報を含むこともある。ペイロード902は1つ以上のコマンドフィールド908を有し、これがエンジン807A~Dの内の一つによってデルタに記録されたコマンドを指定する。ヘッダ902は一貫性情報、たとえば次のようなものを指定する:Seq.No.EPNo.:Seq.No.EPNo.ここで、最初のSeq.No.EPNo.コロンの前のものは、発生元となるピアユニットでの、即ちURLで識別されたピアユニット314Aでの、現在のデルタのシーケンス番号であり、コロンは~が以下に依存すると読むものであり、コロンの後の第2のSeq.No.EPは従属しているシーケンス番号であって、これはたとえば同じピアユニットたとえばURLで指定されたピアユニット314Aで生成された直前のデルタを指定するもので、ここで現在のデルタが従属する先のデルタを参照する。図10はデルタからたとえばダイナミクスマネージャ804Aによって抽出された情報を格納するための代表的なメモリ構造1000を示している。ダイナミクスマネージャ804Aは次のようなレコードを永続的に保持する:即ち、Aデルタログ1002であり、これはテレスペース内部でダイナミクスマネージャによって実行されたデルタの全部の記録、即ちデルタ1、デルタ2、...デルタnの記録であり、nはテレスペースにおいてダイナミクスマネージャ804Aにより一番最後に実行されたデルタに対応するカウントであり、Bデルタ格納1004であり、これはこのようなデルタの内容を格納し、またたとえばデルタログ1002に実装できるものであり、Cベクトル1006であり、これはピアユニット802Aのダイナミクスマネージャ804Aがテレスペースの他のピアユニット802B~D各々から受信したデルタの最大シーケンス番号とそのテレスペースについてダイナミクスマネージャ804Aで生成された最大のシーケンス番号を指定するアレイであり、DエンドポイントEPログ1008であり、これはピアユニット314Aもメンバーに加入している先のテレスペースのメンバーであるエンドポイントのリストで、各々のエンドポイント識別子を提供するものであり、Eデータモデル空間1010であり、これは各々のアクティビティにおいて使用するアクティビティ特有のデータモデルに準拠したデータ用の格納を提供するものであり、Fローカルデルタキュー1012であり、G到着デルタキュー1014であり、Hホールドデルタキュー1016である。ベクトル1006は高いレベルのデータ一貫性を維持する際に使用される情報を格納するための観点からして重要であることからして、さらに説明を行なう。ベクトル1006はたとえば各受信データに関して次のような一貫性情報を保存する:即ち、a発生元のエンドポイントの識別子UID、これはテレスペース全体から見てユニークなものでそのエンドポイントの識別である。bエンドポイントから見たときの相対的なシーケンス番号、これは各エンドポイントから受信したテレスペース内のデルタのその時点でのカウントで、基本的には、受信デルタの順序付けの目的を有するものでピアであるエンドポイントのタイムスタンプに相当する。cデルタの従属シーケンス番号、これはエンドポイントがデルタを作成した時点で、そのピアユニットで実行されたシーケンスにおける即ちユーザが見た現在状態何らかの先行デルタに基づいていたことを示す。好適実施態様においては、これらの情報の全部が受信デルタから抽出できる。動作中には、たとえばダイナミクスマネージャ804Aによってデルタを受信した場合、ダイナミクスマネージャは受信デルタがローカルに発生したかリモートで発生したかによって、受信デルタをローカルデルタキュー1012又は到着デルタキュー1014のどちらか一方に置く。実装によってはしかるべきキューの中のデルタの各々へのポインタだけを格納することができる。デルタキュー1012、1014はたとえばFIFO先入れ先出しワークロードバッファとして実装される別の方法では、ある種の実装では到着デルタとローカルデルタの両方を保持するために単一のキューを使用することができる。ダイナミクスマネージャ804Aはキュー1012、1014から先入れ先出し方式でデルタを処理する。実装によってはたとえば負荷のバランスを取るためおよび/またはレイテンシを制御するために、ローカルデータ又は到着デルタのキュー1012、1014の一方又は他方からのデルタを処理するための適当な優先順位アルゴリズムを使用することができる。ローカルキューにあるローカルデルタより先に到着キューにある全ての到着デルタを処理してデルタ処理に置ける平均的レイテンシを制限するのが望ましい。別の方法では、ローカルデルタが優先的に処理される逆の順序の場合にはピアユニットがネットワークへ再接続した時に到着デルタキューが長くなる場合に長いレイテンシを回避できる。図11Aはデルタ処理メソッド1100の代表的実装を図示したもので、前述の順位付け及びデータ一貫性情報を使用する。ステップ1102において、ダイナミクスマネージャ804Aは次の、又は現在のデルタを、ローカルデルタキュー1012と到着デルタキュー1014の一方から取り出す。ステップ1106で、ダイナミクスマネージャ804Aはベクトル1006をチェックし、シーケンス及び従属性情報から、現在のデルタが独立かどうか、また対応する従属性シーケンス番号を持っていないかどうかを決定する。そうだとなった場合には、ステップ1108で、図11Bのサブルーチン1110を呼び出すかまたは起動することにより、受信した順序で現在のデルタをすぐに処理する。サブルーチン1110のステップ1112で、ダイナミクスマネージャ804Aは、デルタのUID、シーケンス番号、従属シーケンス番号をデルタログに記録することにより、デルタログへデルタを登録または同化する。次に、ステップ1114がデルタを実行させる。その後、ステップ1116ではタイムスタンプベクトル1006を更新する。そのため、ダイナミクスマネージャ804Aはヘッダ情報を抽出し、ベクトル1006の中のそれに対応するピアユニットのエンドポイント番号と最大シーケンス番号を更新する。次に、サブルーチンは、ステップ1128に戻って図の11Aのデルタ処理を継続する。ステップ1106のテストで、現在のデルタが独立ではないと判断した場合、ステップ1118で、ダイナミクスマネージャ804Aはベクトル1006の従属シーケンス番号デルタの先頭になっているもので指定されているをチェックし、現在のデルタが従属している先のデルタが処理されているかどうか判断する。対応するエンドポイントについてシーケンス番号がベクトル1006に格納されている番号より小さければ、これはすでに処理されている理論的にはこの情報をデルタログに格納してもいいのだが、デルタログはそのサイズを現実的な範囲内に保つため時々パージするのが望ましい。未だ処理されていない場合には、ステップ1122で、現在のデルタはホールドデルタキュー1016に置かれる。現在のデルタの従属先であるデルタがすでに処理されている場合には、現在のデルタは以下で詳細に説明するように処理することができる。ステップ1124で、ダイナミクスマネージャ804Aはデルタ処理の順序を決定し、前述したように図11Bのサブルーチン1110を次に関連させる。デルタログ1002のデルタシーケンス番号で示されて判るように現在のデルタがすでに実行されたデルタに従属していて、同じ優先順位のデルタに従属する受信デルタが他にない場合、それ以上の一貫性を心配することもなく、現在のデルタはすぐに処理さる。一方、現在のデルタがデルタログ1002に登録されている別の係属デルタと同じ従属シーケンス番号即ちSeq.No.EPを持っている場合には、これらのデルタの間で衝突条件が発生する。本実施態様においては、衝突の発生時におけるデルタの実行順序はデルタの発生元のエンドポイントに依存するが、他の実装ではこれ以外に別の優先順位スキーマまたは初期設定順序を使用して衝突を解決することができる。実装されたときには、テレスペースのメンバーであるエンドポイントにはたとえばテレスペースの第1のエンドポイントメンバーによってそれぞれユニークなエンドポイント番号が割り当てられ、この番号がたとえばエンドポイントがもともとテレスペースに参加した順序に対応する。つまり、ピアユニット314Aがそのテレスペースで最初のものだったとすると、これにはEP1と番号が付けられ、それに続く新しいメンバーは階層的番号スキーマにしたがって番号を受信して、たとえばテレスペースへ新しいメンバーを招待したスポンサーであるエンドポイントを反映する。つまり、エンドポイントEP1が新しく2人のメンバーをテレスペースへ招待した場合、これらはEP1.1とEP1.2として番号が付けられる。次に、エンドポイントEP1.1が新しく3人のメンバーを招待して加入させた場合、新しいメンバーはEP1.1.1、EP1.1.2、EP1.1.3と番号が付けられる。エンドポイント番号の桁は左から右へ第一位、第二位、などと表わすことができる。つまり、EP1.1.3では、一番左側の番号1が第一位、二番目の位置の桁の1が第二位であり、3が第三位である。前述の番号付けスキーマは、ピアツーピアで、完全分散型コラボレーションシステムに使用するエンドポイントへユニークな番号を割り当てるのに特に適した特別な性質を有しているので、メンバーは何時でもメンバーシップに加入したり脱退することができ、または何時でもテレスペースに接続したりテレスペースから一時的に切断したりできる。前述のように、このスキーマはテレスペースメンバーの各々の各エンドポイントにユニークな番号を割り当てる。あるメンバーの各番号はそのメンバーがテレスペースに参加した順序を表わし、またまた別のテレスペースメンバー招待する側のメンバーによって加入するように招待されたまたは何らか支援された各メンバーについては、招待した側のメンバーも表わしている。これらの新しいメンバーによってさらに多くのメンバーに加入するように招待すると、割り当て番号はさらに桁数を追加して招待メンバーの家系図または連鎖を表わすようになる。したがって、割り当て番号はテレスペースの創始メンバー以後にテレスペースへ追加された各メンバーの家系図ancestryを表わすものと考えられる。つまり、割り当て番号の数字が複数の場合には、第一位はテレスペースの創始メンバーを表わし、第一位以降の各位即ち第二位、第三位などは先行する位の数字で指定される招待する側のメンバーによってテレスペースへの参加を招待されたメンバーを表わしている。招待する側のメンバーはテレスペースの創始メンバーであったり、または中程度に古参の別のメンバーでテレスペースメンバーシップを後援する特権があるメンバーであったりする。一つの実施態様においては、各々招待する側のメンバーはそれが後援するメンバーにテレスペース番号を割り当てる責任がある。このような番号付けスキーマだと、図11Aのステップ1126で、ダイナミクスマネージャ304Aは従属性の衝突を解決し、完全な順位を維持する。図12に図示してあるように、従属性衝突の解決を行なうのは、各位毎の数字によってEP番号を比較するステップ1202と、その比較に基づいて処理順位を決定するステップ1204で、最低の位に最低の番号を持ったデルタが最初に処理されるように順序が決められる。次に、ステップ1206では、デルタのどれかが順序を外れて先に処理されていなければならない他のデルタより先に処理されていないかをテストする。順序から外れて処理されたデルタがない場合には、ステップ1208で次のデルタを処理する。一方、順序を外れて処理されたものがあれば、ステップ1210でそのデルタの実行の直前のデータ状態まで処理を戻してから、ステップ1212で正しい順序でデルタの処理をやり直しする。このように、この従属性衝突を解決するスキーマではたとえば第一位に1のある全てのエンドポイント番号が第一位に2や3またはもっと大きな値を取るエンドポイント番号より先行して処理されることを保証する。デルタが第一位で同じ番号の値を持っている時には、順位が特定されるまで第二位の数字を比較するなどして、実行また必要なら取消再実行動作をデルタに対して行なうことで、デルタ実行の順位を明らかにする。たとえば、デルタログ1002が例示の目的で次のような形のデルタ及び関連情報を含んでいたとするSeq.No.AAEP.No.BB:Seq.No.CCEP.No.DDこれはエンドポイント番号BBにあるシーケンス番号AAがエンドポイント番号DDのシーケンス番号CCに従属していると読みとることができる。本明細書では例示の目的でデルタはAからCまでとして表わし、その指定にあわせてアルファベット順で受信されるものとする。デルタログ1002は次のようになる:DeltaA--Seq.No.1EP1.2:Seq.No.0EP1DeltaB--Seq.No.2EP1.2:Seq.No.1EP1.2DeltaC--Seq.No.1EP1:Seq.No.1EP1.2この例では、デルタAはエンドポイント1.2からのシーケンス番号1を持っており、これはエンドポイント1からのシーケンス番号0に従属している。デルタBとCの両方とも同じエンドポイントからの同じデルタに従属しており、そのデルタと言うのはデルタAである。デルタBはエンドポイント1.2で生成されたもので、デルタCはエンドポイント1で生成されたものである。本実施態様によれば、3つのデルタ全てが従属デルタであり、これらは次のような順序で処理される。最初にデルタAが処理されるが、これは受信したこれらのデルタの最初のものであったためである。またしたがってダイナミクスマネージャは適当なエンジンにデルタAによって指定されたデータ変更を実行させる。次に、デルタB次に受信したデルタが処理され、適当なエンジンにデルタBにより指定されたデータ変更を実行させる。次いで、ダイナミクスマネージャはデルタCを処理し、デルタBと従属性の衝突があること、またデルタCはデルタB即ちEP1.2より小さいエンドポイント番号即ちEP1を持っていることが判る。その結果、デルタBは取り消されることになり、またはさらに詳しく説明すると、格納されているデータに対して行なわれたデータ変更が破棄されて、そのデータ変更を実行する前の状態にまでデータを復元または戻すようにする。次に、デルタCが処理されデルタCによって指定されたデータ変更が行なわれる。最後に、デルタBが処理されてデータ変更がもう一度行なわれる。このように、この例での要求されたデータ変更の実行順序は、復元とやり直しの後で、デルタA、次にデルタC、そしてデルタBの順序となる。前述の例は第一位と第二位の番号だけのあるエンドポイント番号に関係したものだが、例示した原理はさらに多くのもっと大きい次数を持った他のエンドポイント番号にも等しく良く適用され、前述のように大きな次数の比較が衝突の解決には必要である。したがって、従属性の衝突があった際の優先順位は、前述のように、メンバーシップについてのスポンサーシップの順位、そしてメンバーシップの日付に基づく年代順で割り当てられる。別の方法としては、従属性の衝突時の優先順位はエンドポイントの特性たとえば業務のタイトル、ワークグループ、または部門、要求された変更の性質たとえばパラグラフの消去または章の追加、データ中の変更位置たとえばドキュメントタイトルの変更またはドキュメントの要約の変更、またはその他の根拠に基づいたものでも良い。優先順位を付与するためのこうした基準の各々の裏にある原理を例示するには、衝突の発生時には、たとえば何らかの特性を備えたエンドポイントからのデルタを、他の特性を備えたものより先に、たとえば製品設計チームからのデルタなどをマーケティングチームからのデルタより先に処理する、またはその逆を行なうことができる。さらに、データ変更のロールバック変更取り消しややり直し時としてUNDOおよびREDOと呼ばれるはオーバヘッドの観点では高価であるから、実装によってはデルタ処理の優先順位決についての別の形態を提供することが望ましいこともある。実装する場合には、たとえばアクティビティによって他の優先順位決定方法を提供することがある。ある種のアクティビティは衝突解決または優先順位の決定方法が一種類であることがあり、また別のアクティビティは別のタイプのものを備えることがあるが、これはたとえば特定のアクティビティについてのデータ一貫性の重要性に依存することがある。チャットルームのようなリアルタイムのアクティビティでは、応答時間を短縮するために変更の取り消しとやり直しを避けることがあるが、これはとくに実行順序があまり重要ではないためである。他の実装では、デルタの実行を、たとえば編集中のドキュメントのある部分に対する変更に何らかの形で関連するデルタのクラスターの実行、またはある種類の変更に何らかの形で関連するデルタのクラスターの実行とすることで、ほぼ同時に全ての変更を行なえるようにすることがある。さらに、ベクトル1006に格納されたエンドポイントについての最大シーケンス番号より所定の値だけ若いシーケンス番号を持っているような過剰に順番が遅くなったデルタはやり直しが多すぎるので、スラッシングthrashingを防止するため実装によっては破棄されることがある。図11Aに戻って、ステップ1128では、ダイナミクスマネージャ304Aは現在のデルタの優先処理に依存しているためこれまでに処理されていなかったデータがホールドデルタキュー1016にあるかどうかを判定する。このようなデルタがある場合、メソッドはステップ1124に戻って処理を行なう。このようなデルタがステップ1124、1126、1128のループで全て処理された後、メソッド1100はステップ1102に戻る。データの一貫性を最適化するためのデルタ処理の前述の方法は本明細書で説明しているような実装でとくに有利であり、その場合には、Aピアユニットはネットワークから一時的に切断されることがあるからローカルデルタが順序を外れて処理されるような長い遅延の後までデルタを受信しないことがある、Bエンドポイントはメンバーシップのリストに動的に加入したり脱退したりすることがある、Cデータの一貫性に関するオーバヘッドは最小限に押えられピアユニット間に分散される。さらに別のエンドポイントナンバリングスキーマは本発明の特定の実施態様において有利に用いることができる。たとえば、擬似乱数ジェネレータを使ってユニークなテレスペースメンバー識別子を割り当てるようなスキーマを実現できる。乱数ジェネレータが充分にランダムな数を生成しシード種が充分ユニークなものであれば一意性を保証できる。たとえば、ネットワークアダプタのMACアドレスをジェネレータのシードとして使用し32バイト値を作成することでテレスペース内に限らずABCシステム内でも一意性を保証できる。アクティビティを構成する各ツール-エンジンの組み合わせが別々のダイナミクスマネージャに対応できることと、多数のダイナミクスマネージャを提供してた数の同時に実行するアクティビティに対応できる点で、ABCシステムはマルチタスク、マルチスレッドにすることもできる。テレスペースとダイナミクスマネージャの間の一対一の関係ではデルタ処理で最小の遅延が導入されるが、スレッドが窮乏するstarvationとエラー状態またはフォールト状態を起してしまうことがある。他方、単一のダイナミクスマネージャで多くのテレスペースをサポートすると渋滞congestionの問題が起こることがある。各コンポーネントの最適な個数はハードウェアの用途、参加するピアユニットの個数、トラフィック条件によって左右される。ABCシステムは複数のコンピュータシステムCSを含み、その各々が1つ以上のテレスペースTSを備え、各テレスペースが1つ以上のアクティビティコンポーネントを具現化instantiationし、各アクティビティコンポーネントには1つ以上のツールTとエンジンEのペアを有し、これら各々の動作はダイナミクスマネージャDMによって調整される。つまり、ABCシステムは1つ以上のダイナミクスマネージャを備えた多数のテレスペースを有することができる。したがって、ABCシステムはたとえば次のように構成することができる:ABCシステム=CS1=DM1A1、ここでA1=T1E1CS2=DM2A2、ここでA2=T2E2......CSn=DMnAn、ここでAn=TnEnここで全部のアクティビティA、A2、Anは1つ以上のテレスペースに含まれるものとし、nは正の整数である。つまり、例を挙げると、様々なテレスペースのインスタンシーエションの例は次のようになる:TS⊂A1、またはTS⊂A1A2、またはTS⊂A1A2AmあるいはTS1⊂A1TS2⊂A2...TSm⊂Amここで記号⊂は~を含む集合を表わし、mは正の整数である。したがって、各テレスペースは1つまたはそれ以上のアクティビティを具現化し、フレームワークは単一のテレスペースを有することができる。別の方法では、各テレスペースは1つ以上のアクティビティを具現化し、フレームワークが多数のテレスペースを有することができる。前述した実施態様のコンポーネントをソフトウェアで実装したものは、たとえばコンピュータで読み取り可能な媒体、たとえば図1のディスケット142、CD-ROM147、ROM115、またはハードディスク装置152などの有形の媒体上に固定されるか、またはモデムまたはその他のインタフェースデバイスたとえば媒体191上のネットワーク195に接続した通信アダプタ190を介して送信することができるかのどちらかのコンピュータ用命令及びルーチンを含む。媒体191は光通信回線または有線通信回線を含みこれに制限されない有形の媒体であるか、またはマイクロ波、赤外線、またはその他の通信技術を含みこれに制限されない無線技術で実現される。これはまたインターネットであっても良い。一連のコンピュータ用命令が本明細書で本発明に関連して前述し多機能の全部または一部を実現する。多くのコンピュータアーキテクチャまたはオペレーティングシステムで使用される多数のプログラミング言語でこのようなコンピュータ用命令を書くことができることは当業者には理解されよう。さらに、このような命令は現在または将来の、半導体、磁気、光、またはその他のメモリデバイスを含みこれに制限されない何らかのメモリ技術を用いて保存することができ、あるいは現在または将来の、光、赤外線、マイクロ波、またはその他の送信技術を含みこれに制限されない何らかの通信技術を用いて送信される。このようなコンピュータプログラム製品が、印刷したまたは電子化された説明を伴ったリムーバブル媒体、たとえばシュリンクラップソフトウェアとして配布される、コンピュータシステムのたとえばシステムのROMまたは固定ディスク上にプリロードされる、またはたとえばインターネットまたはWWWWorldWideWebなどのネットワーク上のサーバまたは電子掲示板システムから配布されることを想定している。本発明の代表的実施態様を開示したが、本発明の利点の幾つかを実現する様々な変化や変更を本発明の精神と範囲から逸脱することなく成し得ることは当業者には明らかであろう。同じ機能を実行する他のコンポーネントが適宜置き換えられることができることは当業者には明らかであろう。さらに、本発明の方法は適当なプロセッサ用命令を用いるソフトウェアで全て実装したもの、またはハードウェア論理とソフトウェア論理とを組み合わせて用いて同じ結果を実現しようとするハイブリッド型で実装したもののどちらかで実現可能である。さらに、メモリの容量、特定の機能を実現するために使用される論理および/または命令の特定の構成、ならびに本発明のコンセプトに対するその他の変更はすべて添付の請求の範囲に含まれることを意図している。