(57)【要約】  協同エンドポイント間のコラボレーションを協同サービスプラットフォームのサーバレスパブリケーションサービスによって円滑にすることができる。サーバレスパブリケーションサービスは、協同エンドポイントから通信接続を受け付けるように構成することができる。協同サービスプラットフォームのユーザは、サーバレス公開サービスで、自身に関連する協同プレゼンスを公開することができる。たとえば、ユーザの協同プレゼンスは、そのユーザの有効な協同エンドポイント及びそれらのエンドポイントにおける協同機能に関する情報を含むことができる。公開された協同プレゼンスへのサブスクリプションをサーバレスパブリケーションサービスを通じて配置することができる。協同プレゼンスサブスクライブメッセージが、ユーザの協同プレゼンスへのサブスクリプションを指定することができる。プレゼンスサブスクライブメッセージが受信されると、送信側に関するサブスクリプションポリシーが存在しない場合、送信側に関するサブスクリプションポリシーについて受信側に照会することができる。サブスクリプションは、サブスクリプションポリシーに従って受け付けることができる。【選択図】  図１
2008539506.tif 000002
【特許請求の範囲】
【請求項１】
サーバレスプレゼンスとのコラボレーションのためのコンピュータで実施される方法であって、
協同サービスプラットフォームのサーバレスパブリケーションサービス（publication service）との通信を初期化するステップと、
前記サーバレスパブリケーションサービスを通じて、前記協同サービスプラットフォームのユーザの協同プレゼンスを公開するステップと、
前記サーバレスパブリケーションサービスを通じて、前記協同サービスプラットフォームの少なくとも１人の別の（further）ユーザの少なくとも１つの協同プレゼンスにサブスクライブする（subscribe）ステップと
を含む、コンピュータで実施される方法。
【請求項２】
請求項１に記載のコンピュータで実施される方法において、
前記サーバレスパブリケーションサービスとの通信を初期化するステップは、ピアツーピアネットワークに参加するステップを含む、方法。
【請求項３】
請求項１に記載のコンピュータで実施される方法において、
前記協同サービスプラットフォームの前記ユーザのそれぞれは、ＭｅＣｏｎｔａｃｔプログラマティックオブジェクト（programmatic object）に関連付けられ、
前記ユーザの前記協同プレゼンスを公開するステップは、前記ＭｅＣｏｎｔａｃｔプログラマティックオブジェクトによって参照される少なくともいくつかのデータを公開するステップを含む、方法。
【請求項４】
請求項３に記載のコンピュータで実施される方法であって、さらに
コンピュータオペレーティングシステムに対して前記ユーザを少なくとも部分的に認証することによって、前記協同サービスプラットフォームの前記ユーザと前記ＭｅＣｏｎｔａｃｔプログラマティックオブジェクトとの間の前記関連付けを確立するステップを含む、方法。
【請求項５】
請求項３に記載のコンピュータで実施される方法において、
前記ＭｅＣｏｎｔａｃｔプログラマティックオブジェクトはそれぞれ、プレゼンスプログラマティックオブジェクトを参照し、
前記ユーザの前記協同プレゼンスを公開するステップは、前記プレゼンスプログラマティックオブジェクトによって参照される少なくともいくつかのデータを公開するステップを含む、方法。
【請求項６】
請求項４に記載のコンピュータで実施される方法において、
プレゼンスプログラマティックオブジェクトによって参照されるデータは、
前記ユーザの前記協同プレゼンスのリッチテキスト記述と、
サーバレスネットワークの少なくとも１つの協同エンドポイントと
を含む、方法。
【請求項７】
請求項６に記載のコンピュータで実施される方法において、
前記プレゼンスプログラマティックオブジェクトによって参照される前記データは、さらに、前記少なくとも１つの協同エンドポイントにわたる前記ユーザの前記協同プレゼンスを表す集約プレゼンスステータス指示子を含む、方法。
【請求項８】
請求項６に記載のコンピュータで実施される方法において、
前記プレゼンスプログラマティックオブジェクトによって参照される前記データは、さらに、前記少なくとも１つの協同エンドポイントにわたる前記ユーザの前記協同機能を表す集約機能の収集物(collection)を含む、方法。
【請求項９】
請求項１に記載のコンピュータで実施される方法において、
前記協同サービスプラットフォームの前記少なくとも１人の別のユーザのそれぞれは、前記ユーザのバディクラス連絡先であり、
該方法は、さらに、前記少なくとも１人のバディクラス連絡先について、前記協同サービスプラットフォームの連絡先ストアに照会するステップを含む、方法。
【請求項１０】
請求項１に記載のコンピュータで実施される方法であって、さらに
前記サーバレスパブリケーションサービスを通じて、前記少なくとも１つの協同プレゼンスの少なくとも１つの協同プレゼンス更新通知を受信するステップを含む、方法。
【請求項１１】
請求項１に記載のコンピュータで実施される方法において、
前記協同サービスプラットフォームの前記少なくとも１人の別のユーザのそれぞれは、前記ユーザのバディクラス連絡先であり、
前記少なくとも１人のバディクラス連絡先にサブスクライブするステップは、該少なくとも１人のバディクラス連絡先のそれぞれについて、
前記バディクラス連絡先に関連する協同エンドポイントを検索するステップ、及び
前記検索が失敗した場合に、前記検索が成功するまで、再度、定期的に検索するステップを含む、方法。
【請求項１２】
請求項１に記載のコンピュータで実施される方法であって、さらに
サブスクライバがバディクラス連絡先であるか否かを判断するステップ、及び
前記サブスクライバがバディクラス連絡先である場合に、前記サブスクライバの前記協同プレゼンスに相互にサブスクライブするステップ
を含む、方法。
【請求項１３】
サーバレスプレゼンスとのコラボレーションのためのコンピュータ化システムであって、
該コンピュータ化システムの複数のユーザに関連する複数の協同エンドポイントと、
サーバレスパブリケーションサービスであって、少なくとも、
前記複数の協同エンドポイントから通信接続を受け付けること、
前記複数のユーザのそれぞれについて、協同プレゼンスを公開すること、及び
前記複数のユーザのそれぞれの前記協同プレゼンスへの複数のサブスクリプションを受け付けること
を行うように構成されているサーバレスパブリケーションサービスと
を備える、コンピュータ化システム。
【請求項１４】
請求項１３に記載のコンピュータ化システムであって、
協同サービスプラットフォームのユーザのそれぞれは、ＭｅＣｏｎｔａｃｔプログラマティックオブジェクトに関連付けられ、
前記ユーザのそれぞれの前記協同プレゼンスを公開することは、前記ＭｅＣｏｎｔａｃｔプログラマティックオブジェクトによって参照される少なくともいくつかのデータを公開することを含む、コンピュータ化システム。
【請求項１５】
請求項１４に記載のコンピュータ化システムにおいて、
前記複数の協同エンドポイントのそれぞれは、コンピュータオペレーティングシステムに関連付けられ、
前記協同サービスプラットフォームの前記ユーザと前記ＭｅＣｏｎｔａｃｔプログラマティックオブジェクトとの間の前記関連付けは、前記コンピュータオペレーティングシステムに対して該ユーザを少なくとも部分的に認証することによって確立される、コンピュータ化システム。
【請求項１６】
請求項１３に記載のコンピュータ化システムにおいて、
前記サーバレスパブリケーションサービスは、さらに、少なくとも、
協同プレゼンス更新通知を受信し、該協同プレゼンス更新通知を前記複数のサブスクリプションに従って伝播する
ように構成される、コンピュータ化システム。
【請求項１７】
サーバレスプレゼンスとのコラボレーションのためのコンピュータで実施される方法であって、
協同サービスプラットフォームの第１のユーザから、前記協同サービスプラットフォームの第２のユーザの協同プレゼンスへのサブスクリプションを指定する協同プレゼンスサブスクライブメッセージを受信するステップと、
前記第１のユーザに関するサブスクリプションポリシーが存在するか否かを判断するステップと、
前記サブスクリプションポリシーが存在しない場合に、前記第１のユーザの前記サブスクリプションポリシーについて前記第２のユーザに照会するステップと、
前記サブスクリプションポリシーに従って前記サブスクリプションを受け付けるステップと
を含む、コンピュータで実施される方法。
【請求項１８】
請求項１７に記載のコンピュータで実施される方法において、
前記協同サービスプラットフォームの各ユーザは、公開可能協同プレゼンスを有し、
該方法は、さらに
前記第１のユーザが前記第２のユーザのバディクラス連絡先であるか否かを判断するステップ、及び
前記第１のユーザが前記第２のユーザのバディクラス連絡先である場合に、該第１のユーザの前記協同プレゼンスにサブスクライブする相互協同プレゼンスサブスクライブメッセージを前記第２のユーザから送信するステップ
を含む、方法。
【請求項１９】
請求項１７に記載のコンピュータで実施される方法であって、さらに
前記協同サービスプラットフォームのサーバレスパブリケーションサービスを通じて、前記協同プレゼンスサブスクライブメッセージを送信するステップを含む、方法。
【請求項２０】
請求項１９に記載のコンピュータで実施される方法において、
前記第２のユーザは、前記第１のユーザのバディクラス連絡先であり、
前記サーバレスパブリケーションサービスを通じて前記協同プレゼンスサブスクライブメッセージを送信するステップは、
前記バディクラス連絡先に関連する協同エンドポイントを検索するステップ、及び
前記検索が失敗した場合に、該検索が成功するまで、再度、定期的に検索するステップを含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的には、ネットワークコンピューティング環境に関し、より詳細には、ネットワークコンピューティング環境における容易にされたコラボレーションに関する。
【背景技術】
【０００２】
ネットワークコンピューティング環境は、仕事場、さらには家庭の共通の機構となってきている。これらの環境は、電子メール、インスタントメッセージング、マルチメディア文書サーバ、ディスカッショングループに加えて、ストリーミングオーディオ及びストリーミングビデオ、並びに没入対話型知覚環境（immersive interactive sensory environment）を含むさまざまな通信モードを容易にしている。従来のソフトウェアアプリケーションは、これらの豊富な通信モードを利用し始めてはいるが、それぞれは、統合された拡張可能コンピュータ化コラボレーションプラットフォームの観点から検討すると、限界及び／又は不利な点を有する。
【０００３】
いくつかの従来のコンピュータソフトウェアアプリケーションは、協同（collaborative）サービスの態様を提供するが、コラボレータへの効果的なアクセスを提供することができない。コラボレータへのぎこちなく且つ／又は限られたアクセスは、コラボレーション開始に対する障壁を示す可能性があり、通常ならば機能的であるコラボレーションツールの使用を妨げる可能性がある。コラボレータへの効果的でないアクセスの一態様は、いくつかの従来のソフトウェアアプリケーションがその時点の物理ロケーション及び／又は仮想ロケーションを効果的に見つけることができないことである。別の態様は、いくつかの従来のソフトウェアアプリケーションが協同機能に関する互換性を効果的に見つけることができないことである。
【０００４】
協同サービスの態様を提供する従来のソフトウェアアプリケーションの特定のリリースの機能が不足していることのほかに、いくつかの従来のソフトウェアアプリケーションは、拡張可能なコラボレーションプラットフォーム、フレームワーク、及び／又はアーキテクチャを提供することができない。これは軽微な欠点ではない。効果的なアーキテクチャは、何年も存続することができ、数百万のノードを有するネットワークコンピューティング環境に組み込むことができる。確立されたアーキテクチャの拡張性、柔軟性、保全性、及び／又はスケーラビリティが不足していることは、単一のソフトウェア製品のリリースの問題よりもはるかに重要な問題となり得る。
【発明の開示】
【０００５】
この節は、本発明のいくつかの実施の形態の簡略化した概要を提供する。この概要は、本発明の広範囲にわたる概観ではない。本発明の重要／決定的な要素を識別することも、本発明の範囲を画定することも意図されていない。その唯一の目的は、後に提示するより詳細な説明への前置きとして、本発明のいくつかの実施の形態を簡略化した形で提供することである。
【０００６】
本発明の一実施の形態では、協同エンドポイント間のコラボレーションが、協同サービスプラットフォームのサーバレスパブリケーションサービスによって円滑にされる（facilitate）。サーバレスパブリケーションサービスは、協同エンドポイントから通信接続を受け付けるように構成することができる。協同サービスプラットフォームのユーザは、サーバレスパブリケーションサービスにより、自身に関連する協同プレゼンスを公開することができる。たとえば、ユーザの協同プレゼンスは、そのユーザの有効な協同エンドポイント及びそれらのエンドポイントにおける協同機能に関する情報を含むことができる。公開されている協同プレゼンスへのサブスクリプションをサーバレスパブリケーションサービスを通じて配置することができる。
【０００７】
本発明の一実施の形態では、協同プレゼンスサブスクライブメッセージが、協同サービスプラットフォームのユーザの協同プレゼンスへのサブスクリプションを指定する。第１のユーザから、第２のユーザの協同プレゼンスへのサブスクリプションを指定する協同プレゼンスサブスクライブメッセージを受信することができる。第１のユーザに関するサブスクリプションポリシーが存在するか否かを判断することができる。第１のユーザに関するサブスクリプションポリシーが存在しない場合、第１のユーザに関するサブスクリプションポリシーについて、第２のユーザに照会することができる。協同プレゼンスサブスクライブメッセージによって指定されたサブスクリプションは、第１のユーザに関するサブスクリプションポリシーに従って受け付けることができる。
【０００８】
添付の特許請求の範囲は、本発明の特徴を詳細に明記しているが、本発明及びその利点は、添付図面と共に取り入れられる以下の詳細な説明から最も良く理解される。
【発明を実施するための最良の形態】
【０００９】
次に、本発明のさまざまな実施形態の説明を続ける前に、本発明のさまざまな実施形態を実施できるコンピュータの説明を提供する。必ずしも必要ではないが、本発明は、プログラムモジュール等のコンピュータ実行可能命令がコンピュータによって実行される一般的な状況において説明される。一般に、プログラムは、特定のタスクを実行するか又は特定の抽象データタイプを実行するルーチン、オブジェクト、コンポーネント、データ構造体等を含む。本明細書で使用される「プログラム」という用語は、単一のプログラムモジュール又は一斉に作動する複数のプログラムモジュールを意味することができる。本明細書で使用される「コンピュータ」及び「コンピューティングデバイス」という用語には、１つ又は複数のプログラムを電子的に実行するあらゆるデバイスが含まれ、パーソナルコンピュータ（ＰＣ）、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのプログラマブル民生用電子機器、ネットワークＰＣ、ミニコンピュータ、タブレットＰＣ、ラップトップコンピュータ、マイクロプロセッサ又はマイクロコントローラを有する民生用機器、ルータ、ゲートウェイ、ハブ等が含まれる。また、本発明は、分散コンピューティング環境にも用いることができる。分散コンピューティング環境では、タスクは、通信ネットワークを通じてリンクされるリモート処理デバイスによって実行される。分散コンピューティング環境では、プログラムは、ローカルメモリストレージデバイス及びリモートメモリストレージデバイスの双方に配置することができる。
【００１０】
図１を参照する。本明細書で説明する本発明の態様を実施できるコンピュータ１０２の基本的な構成の一例が示されている。その最も基本的な構成では、コンピュータ１０２は、通常、少なくとも１つの処理ユニット１０４及びメモリ１０６を含む。処理ユニット１０４は、本発明のさまざまな実施形態に従ってタスクを遂行する命令を実行する。このようなタスクを遂行する際に、処理ユニット１０４は、コンピュータ１０２の他の部分及びコンピュータ１０２の外部のデバイスへ電子信号を送信して、或る結果をもたらすことができる。コンピュータ１０２の正確な構成及びタイプに応じて、メモリ１０６は、揮発性（ＲＡＭ等）、不揮発性（ＲＯＭやフラッシュメモリ等）、又はこれらの２つの或る組み合わせとすることができる。この最も基本的な構成は、図１に破線１０８によって示されている。
【００１１】
コンピュータ１０２は、追加の機構／機能を有することもできる。たとえば、コンピュータ１０２は、追加のストレージ（着脱可能１１０及び／又は着脱不能１１２）も含むことができる。この追加のストレージには、磁気ディスク若しくは磁気テープ又は光ディスク若しくは光テープが含まれるが、これらに限定されるものではない。コンピュータストレージ媒体には、情報のあらゆる記憶方法又は記憶技術で実施される揮発性の着脱可能媒体及び着脱不能媒体並びに不揮発性の着脱可能媒体及び着脱不能媒体が含まれる。情報には、コンピュータ実行可能命令、データ構造体、プログラムモジュール、又は他のデータが含まれる。コンピュータストレージ媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）又は他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、若しくは他の磁気ストレージデバイス、又は、所望の情報を記憶するのに使用でき、且つ、コンピュータ１０２がアクセスできる他のあらゆる媒体が含まれるが、これらに限定されるものではない。あらゆるこのようなストレージ媒体も、コンピュータ１０２の一部とすることができる。
【００１２】
コンピュータ１０２は、好ましくは、デバイスがリモートコンピュータ（複数可）１１６等の他のデバイスと通信することを可能にする通信接続１１４も含む。通信接続は、通信媒体の一例である。通信媒体は、通常、コンピュータ可読命令、データ構造体、プログラムモジュール、又は他のデータを、搬送波又は他のトランスポートメカニズム等の変調されたデータ信号に具現化し、通信媒体には、あらゆる情報配信媒体が含まれる。限定ではなく一例として、「通信媒体」という用語には、音響媒体、ＲＦ媒体、赤外線媒体、及び他の無線媒体等の無線媒体が含まれる。本明細書で使用される「コンピュータ可読媒体」という用語には、コンピュータストレージ媒体及び通信媒体の双方が含まれる。
【００１３】
また、コンピュータ１０２は、キーボード／キーパッド、マウス、ペン、音声入力デバイス、タッチ入力デバイス等の入力デバイス１１８も有することができる。ディスプレイ、スピーカ、プリンタ等の出力デバイス１２０も含めることができる。これらのすべてのデバイスは、当該技術分野で既知であり、ここで長々と解説する必要はない。
【００１４】
以下の説明では、特に指定のない限り、本発明を、１つ又は複数のコンピューティングデバイスによって実行される動作及びオペレーションのシンボリック表現に関して説明することにする。それ自体、次のように、即ち、このような動作及びオペレーションは、時に、コンピュータにより実行されるものとして参照されるが、構造化されている形式でデータを表す電子信号の、コンピュータの処理ユニットによる操作を含むものと理解される。この操作は、データを変換するか、又は、データをコンピュータのメモリシステムのロケーションに保持する。これは、当業者に良く理解される方法でコンピュータのオペレーションを再構成するか又は別の方法で変更する。データが保持されるデータ構造体は、メモリの物理ロケーションであり、これらの物理ロケーションは、データのフォーマットによって定義された特定のプロパティを有する。しかしながら、本発明は、上記文脈で説明されてはいるものの、当業者であれば、以下で説明するさまざまな動作及びオペレーションがハードウェアでも実施できることを正しく認識するのであるから、これによる限定を意図するものではない。
【００１５】
本発明の一実施形態では、コンピュータソフトウェアアーキテクチャは、拡張可能であり、柔軟性を有し、保守可能であり、且つスケーラブルであるコラボレーションプラットフォームを提供する。このアーキテクチャの態様は、適したネットワークコンピューティング環境に組み込むことができる。このアーキテクチャは、従来のコンピュータソフトウェアアプリケーションとの統合コラボレーションを可能にすることができ、且つ／又は、拡張することができる。詳細には、このアーキテクチャは、ネットワークコンピューティング環境における現在の連絡先のプレゼンス（contact presence）、及び、たとえば利用可能な協同アクティビティに関する現在の連絡先の機能（contact capability）を含めて、包括的な協同コンタクト管理（contact management）を提供することができる。
【００１６】
図２は、本発明の一実施形態を組み込むのに適した一例のネットワークコンピューティング環境２００を示している。このネットワークコンピューティング環境では、ネットワーク２０２は、コンピュータ２０４、２０６、及び２０８をネットワーキングハブ２１０に通信接続している。ネットワーク２０２は、ローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、又はそれらを組み合わせたものとすることができる。ネットワーク２０２は、ハブ、ゲートウェイ、ルータ、ブリッジ、ポート等のあらゆる適したネットワーキングコンポーネントを組み込むことができるだけでなく、あらゆる適したコンピュータ可読媒体も組み込むことができる。たとえば、コンピュータ２０４、２０６、２０８及びネットワーキングハブ２１０は、それぞれ、コンピュータ１０２（図１）の具体例となり得るものである。
【００１７】
ネットワーキングハブ２１０は、コンピュータ２１２、２１４、及び２１６を通信接続することができる。ネットワーキングハブ２１０並びにコンピュータ２１２、２１４、及び２１６は、もちろん、これは限定されるという訳ではないが、合わせて、サブネットワーク又はサブネット２１８の一例とみなすことができる。コンピュータ２１２、２１４、及び２１６は、同じサブネット上に存在すると言われ、その結果として互いに対して特権ネットワーク通信を享受することができる。たとえば、たとえ各コンピュータ２０４、２０６、２０８、２１２、２１４、及び２１６が、他の各コンピュータ２０４、２０６、２０８、２１２、２１４、及び２１６へポイントツーポイントタイプのメッセージを送信できる場合であっても、サブネット２１８は、当該サブネット２１８のブロードキャストタイプのメッセージが、サブネット２１８のそれらのコンピュータ２１２、２１４、及び２１６によって受信されるように構成することができる。
【００１８】
コラボレーションプラットフォームの拡張可能であり、柔軟性を有し、保守可能であり、且つ／又はスケーラブルである属性は、そのモジュール構造の１つ若しくは２つ以上の態様、その全体としてのモジュール構造、モジュール間の相互作用のモード、及び／又はモジュール構造全体しての相互作用のパターンから生じるようにしてもよい。図３は、本発明の一実施形態による一例のコンピュータソフトウェアアーキテクチャ３００を示している。アーキテクチャ３００の各態様は、各コンピュータ２０４、２０６、２０８、２１２、２１４、及び２１６（図２）に存在することができる。しかしながら、本発明の各実施形態はそのように限定されるものではない。アーキテクチャ３００の態様は、全体としてのネットワークコンピューティング環境２００を含めて、ネットワークコンピューティング環境２００のあらゆる適したサブネットにわたって適切に分散させることができる。アーキテクチャ３００の異なるバージョンが、異なるコンピュータに存在してもよいし、アーキテクチャ３００の各バージョンがアーキテクチャ３００の他の各バージョンと互換性を有する程度が変化してもよい。
【００１９】
アーキテクチャ３００は、コラボレーションサービスプラットフォーム３０２を含むことができる。コラボレーションサービスプラットフォーム３０２は、コンタクト管理サービス３０４、パブリケーションサービス３０６、シグナリングサービス３０８、アクティビティサービス３１０、データ共有サービス３１２、認証サービス３１４、及び接続性サービス３１６を含むことができる。コンタクト管理サービス３０４は、連絡先ストア３１８、プレゼンスストア３２０、及び連絡先ロケーションサービス３２２を含むことができる。パブリケーションサービス３０６は、同期サービス３２４を含むことができる。シグナリングサービス３０８は、招待サービス３２６を含むことができる。アクティビティサービス３１０は、オーディオ／ビジュアル（Ａ／Ｖ）サービス３２８を含むことができる。接続性サービス３１６は、ピアツーピア（Ｐ２Ｐ）サービス３３０、並びに、従来のトランスポート制御プロトコル及びインターネットプロトコル（ＴＣＰ／ＩＰ）スタック３３２を含むことができる。各サービス３０４、３０６、３０８、３１０、３１２、３１４、３１６は、そのサービスを実施するメッセージの送信及び受信が可能なピアを含むことができ、且つ／又は、そのようなピアに組み込まれることができる。
【００２０】
本発明の一実施形態では、コンタクト管理サービス３０４は、コラボレータ、すなわち、協同サービスプラットフォーム３０２のユーザ、への効果的なアクセスを提供する。たとえば、コンタクト管理サービス３０４は、協同サービスプラットフォーム３０２のユーザの一部又は全部の連絡先情報を提供することができる。コンタクト管理サービス３０４は、１つ又は複数のデータストアに連絡先のデータベースを保持することができる。各連絡先は、見込みコラボレータとすることができる。すなわち、コラボレーションサービスプラットフォームのユーザは、各連絡先で１つ又は複数のコラボレーションアクティビティに携わるように試みることができる。コンタクト管理サービス３０４は、グラフィカルユーザインターフェース（ＧＵＩ）を含む１つ又は複数のユーザインターフェースを提供することができる。このユーザインターフェースは、たとえば、ユーザによる選択のため、且つ／又は、ユーザが特定の連絡先に関してコラボレーションサービスプラットフォーム３０２の活動を起動できるように、連絡先を提示する。
【００２１】
連絡先ストア３１８は、連絡先オブジェクト及び「ＭｅＣｏｎｔａｃｔ」オブジェクト（図４に関してより詳細に後述する）を記憶することができる。プレゼンスストア３２０は、連絡先オブジェクトのプレゼンスオブジェクト（同様に、図４に関してより詳細に後述する）を記憶することができる。本発明の一実施形態では、プレゼンスデータは、連絡先データよりも頻繁に変化し、その結果、個々のデータストア３１８、３２０は、異なるオブジェクト更新頻度で最適化することができる。
【００２２】
連絡先ロケーションサービス３２２は、所与の連絡先に関してさまざまなロケーションデータの１つ又は複数を提供することができる。物理的近接性は、連絡先ロケーションの一態様とすることができ、たとえば、物理ロケーションの１つ又は複数の代わりとなるものを利用して、ユーザから連絡先の物理的距離を見積もることができる。無線受信機の信号強度は、物理的距離の代わりとなるものの一例である。仮想ロケーションは、連絡先ロケーションの別の態様とすることができる。たとえば、連絡先は、図２のネットワーク２０２等の１つ若しくは２つ以上のネットワーク、及び／又は、コンピュータ２０４、２０６、２０８、２１２、２１４及び２１６等の１つ若しくは２つ以上のネットワークノードでアクティブな場合がある。加えて、連絡先は、登録されているがアクティブでない場合もあるし、オンラインであるが未発見の場合もあるし、他の或る適したロカティブステータス（locative status）を有する場合もある。連絡先ロケーションサービス３２２は、特定の連絡先を突き止めるために、適したレジストリに照会することができ、且つ／又は、たとえば、ピアツーピア検索若しくはピアツーピア名前解決メカニズムを起動することができる。
【００２３】
パブリケーションサービス３０６は、連絡先によって公開されるデータへのアクセスを提供することができる。本発明の一実施形態では、関心のあるユーザは、連絡先によって公開されているオブジェクトにサブスクライブすることができ、公開されているオブジェクトが、公開を行う連絡先により更新されるたびに、通知を受信することができる。同期サービス３２４は、パブリケーションサブスクリプション（publication subscription）のデータベースを保持することを担当することができる。詳細には、パブリケーションサービス２０６は、連絡先によって公開されているプレゼンス情報へのアクセスを提供することができる。
【００２４】
シグナリングサービス３０８は、ネットワークコンピューティング環境２００（図２）に存在する連絡先間の協同会議の設立及び終了を提供できるだけでなく、進行中の会議の更新パラメータも提供することができる。本発明の一実施形態では、協同会議の設立、更新及び終了は、公開／サブスクライブのセマンティクスに従って提供される。本発明の一実施形態では、シグナリングサービス３０８は、１９９９年３月のインターネットエンジニアリングタスクフォース（ＩＥＴＦ）のコメント要求（ＲＦＣ）２５４３のHandley他著「SIP: Session Initiation Protocol」に記載されているセッション開始プロトコル等のセッション開始プロトコル（ＳＩＰ）の一実施態様を組み込む。
【００２５】
招待サービス３２６は、招待及び関連メッセージを連絡先へ及び連絡先から送信することを可能にすることができる。たとえば、或るコンピュータ２１２においてネットワークコンピューティング環境２００（図２）にアクセスするシステムユーザは、他の或るコンピュータ（複数可）２０４、２０６、２０８、２１２、２１４、及び／又は２１６における連絡先に、協同アクティビティに参加するように招待することができる。招待サービス３２６は、連絡先ロケーションサービス３２２を利用して、連絡先を突き止め、招待を配信することができる。招待サービス３２６は、招待された人に招待の詳細を提示すると共に、招待された人が招待を受け付け、辞退、及び／又は明示的に無視することを可能にするためのグラフィカルユーザインターフェース（ＧＵＩ）等のさまざまなユーザインターフェースを含むことができる。一例の招待サービス３２６については、図１３に関してより詳細に後述する。
【００２６】
アクティビティサービス３１０は、協同アクティビティを実施することができ、且つ／又は、協同アプリケーションのコラボレーションサービスプラットフォーム３０２への統合のサポートを提供することができる。たとえば、アクティビティサービス３１０は、コラボレーションサービスプラットフォーム３０２に準拠した、従来のコラボレーションアプリケーションに対するアプリケーションプログラミングインターフェース（ＡＰＩ）を提供することができる。準拠したＡＰＩは、アクティビティの機能に関して、特定の連絡先又はコンピュータ２０４、２０６、２０８、２１２、２１４、２１６（図２）に照会するための機能、及び、アプリケーション特有の招待要件を確認するための機能を含むことができる。オーディオ／ビジュアルサービス３２８は、アクティビティサービス３１０に組み込むのに適したコラボレーションアクティビティの一例である。
【００２７】
データ共有サービス３１２は、ファイル、文書、ストリーム、及びオブジェクトを含むあらゆる適したフォーマットでデータの共有を可能にすることができる。データ共有サービス３１２は、データ転送、データ複製、及び／又はデータ同期を提供することができる。データ共有は、連絡先、アクティビティへの参加、会議への参加、及び／又は、ネットワークコンピューティング環境２００（図２）のユーザグループ等のあらゆる適したアクセス制御リスト（ＡＣＬ）エントリに基づいて有効及び無効にすることができる。
【００２８】
認証サービス３１４は、認証クレデンシャル、たとえば、連絡先並びに他のアクティビティ参加者及び会議参加者の認証クレデンシャルの情報源を明らかにして（source）、その検証を行うことができる。認証サービス３１４は、連絡先を信頼されている連絡先及び信頼されていない連絡先に分類することを可能にすることができる。認証サービス３１４は、連絡先のロケーションとは独立に連絡先を信頼すること、及び／又は、精巧なネットワークコンピューティング環境２００（図２）のプレゼンスに従って連絡先を信頼することを可能にすることができる。
【００２９】
本発明の一実施形態では、接続性サービス３１６は、ネットワークコンピューティング環境２００（図２）全体を通じたコラボレーションサービスプラットフォーム３０２のサービスインスタンス間、たとえば、コンピュータ２１２の第１のシグナリングサービス３０８のインスタンスとコンピュータ２０８の第２のシグナリングサービス３０８のインスタンスとの間、の通信を可能にする。接続性サービス３１６のこの通信設備は、他のコラボレーションサービスプラットフォーム３０２のサービス３０４、３０６、３０８、３１０、３１２、３１４が、基礎となるトランスポートメカニズムとは独立にインスタンス間で通信できるように、アプリケーションプログラミングインターフェース（ＡＰＩ）で利用可能にすることができる。
【００３０】
接続性サービス３１６は、ＴＣＰ／ＩＰスタック３３２及び／又はそれよりも高位の通信アプリケーションプログラミングインターフェースを含むことができる。高位の通信アプリケーションプログラミングインターフェースは、２００５年３月付けのＭｉｃｒｏｓｏｆｔ  Ｄｅｖｅｌｏｐｅｒ  Ｎｅｔｗｏｒｋ（MＳＤＮ（登録商標））ライブラリにおけるＭｉｃｒｏｓｏｆｔ（登録商標）  Ｗｉｎｄｏｗｓ（登録商標）  Ｐｌａｔｆｏｒｍ  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ（ＳＤＫ）のＷｉｎｄｏｗｓ（登録商標）  Ｓｏｃｋｅｔｓ  ２についての節に記載されているようなＭｉｃｒｏｓｏｆｔ（登録商標）  Ｗｉｎｄｏｗｓ（登録商標）  Ｓｏｃｋｅｔｓ  ２（Ｗｉｎｓｏｃｋ）ＡＰＩ等である。ピアツーピア（Ｐ２Ｐ）サービス３３０は、ネットワークコンピューティング環境２００のオーバーレイネットワークにおける接続性を提供することができる。たとえば、ピアツーピアサービス３３０は、グラフ化、グループ化、アイデンティティマネージャ、及びピア名前解決プロトコル（ＰＮＲＰ）名前空間プロバイダアプリケーションプログラミングインターフェースを含めて、２００５年３月付けのＭｉｃｒｏｓｏｆｔ  Ｄｅｖｅｌｏｐｅｒ  Ｎｅｔｗｏｒｋ（MＳＤＮ（登録商標））ライブラリにおけるＭｉｃｒｏｓｏｆｔ（登録商標）  Ｗｉｎｄｏｗｓ（登録商標）  Ｐｌａｔｆｏｒｍ  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ（ＳＤＫ）のＷｉｎｄｏｗｓ（登録商標）  Ｐｅｅｒ‐ｔｏ‐Ｐｅｅｒ  Ｎｅｔｗｏｒｋｉｎｇの節に記載されているピアツーピアアプリケーションプログラミングインターフェースに従って提供することができる。
【００３１】
コラボレーションサービスプラットフォーム３０２のサービス３０４、３０６、３０８、３１０、３１２、３１４、及び３１６は、コラボレーションオブジェクトモデルにおいて相互に関係している一組のコラボレーションオブジェクトを含む一組のプログラマティックオブジェクトで実施することができる。図４は、本発明の一実施形態による一例の一組のコラボレーションオブジェクト及び一例のコラボレーションオブジェクトモデル４００を示している。コラボレーションオブジェクトモデル４００は、連絡先オブジェクト４０２、プレゼンスオブジェクト４０４、ＭｅＣｏｎｔａｃｔオブジェクト４０６及びＭｙＰｒｅｓｅｎｃｅオブジェクト４０８、エンドポイントオブジェクト４１０、機能オブジェクト４１２、会議オブジェクト４１４、アクティビティオブジェクト４１６、並びに公開オブジェクト４１８を含むことができる。もちろん、コラボレーションサービスプラットフォーム３０２は、各タイプのコラボレーションオブジェクト４０２、４０４、４０６、４０８、４１０、４１２、４１４、４１６、及び４１８の多くのインスタンスを含むことができる。
【００３２】
連絡先オブジェクト４０２は、協同サービスプラットフォーム３０２（図３）の協同参加者及び／又はユーザを表すのに適した属性を組み込むことができる。詳細には、連絡先オブジェクト４０２は、協同プレゼンス、たとえば、ネットワークコンピューティング環境２００（図２）における連絡先のプレゼンス、を参照することができる。本発明の一実施形態では、連絡先オブジェクト４０２は、プレゼンスオブジェクト４０４のインスタンスを参照することによって協同プレゼンスを参照する。一例の連絡先オブジェクト４０２については、図５に関してより詳細に後述する。
【００３３】
プレゼンスオブジェクト４０４は、協同プレゼンス、たとえば、特定のコラボレーションサービスプラットフォーム３０２のユーザが最近の過去における或る時にアクティブであったネットワークコンピューティング環境２００の一組のコンピュータ２０４、２０６、２０８、２１２、２１４、及び／又は２１６（図２）、を表すのに適した属性を組み込むことができる。ここで、「最近」の過去は、協同の状況に応じて、数秒から数時間、数日、さらには数年まで変化し得る。プレゼンスオブジェクト４０４は、ネットワークコンピューティング環境２００のロケーションを表す１つ又は複数のエンドポイントオブジェクト４１０のインスタンスを参照することができる。エンドポイントオブジェクト４１０は、ネットワークコンピューティング環境２００のコンピュータ２０４、２０６、２０８、２１２、２１４、２１６と１対１に対応する必要はない。その理由は、たとえば、エンドポイントオブジェクト４１０は、ネットワークコンピューティング環境２００のオーバーレイネットワークにおけるピアに対応できるからである。
【００３４】
プレゼンスオブジェクト４０４は、さらに、たとえば、１つ若しくは２つ以上の協同エンドポイントにおける協同機能及び／又はプレゼンスオブジェクト４０４に関連する一部又は全部のエンドポイントにわたる集約協同機能（aggregate collaborative capability）を表す０個又は１つ以上の機能オブジェクト４１２のインスタンスを参照することができる。加えて、プレゼンスオブジェクト４０４は、０個又は１つ以上の公開オブジェクト４１８のインスタンスを参照することもできる。一例のプレゼンスオブジェクト４０４については、図６に関してより詳細に後述する。一例の公開オブジェクト４１８については、図７に関してより詳細に後述する。一例の機能オブジェクト４１２については、図８に関してより詳細に後述する。
【００３５】
ＭｅＣｏｎｔａｃｔオブジェクト４０６は、連絡先オブジェクト４０２の１つのタイプとすることができ、連絡先オブジェクト４０２の属性及び振る舞いを多様な形で継承することができる。ＭｅＣｏｎｔａｃｔオブジェクト４０６は、コラボレーションサービスプラットフォームのユーザ自身の連絡先情報が果たすことができる、他のユーザの連絡先情報と比べて特別な役割のために、連絡先オブジェクト４０２とは異なったものとすることができる。たとえば、ＭｅＣｏｎｔａｃｔオブジェクト４０６は、その特定のユーザの既知の協同連絡先を表す０個又は１つ以上の連絡先オブジェクト４０２のインスタンスを参照することができる。ＭｅＣｏｎｔａｃｔオブジェクト４０６は、たとえば、他のＭｅＣｏｎｔａｃｔオブジェクト４０６のインスタンスを参照する必要はない。本発明の一実施形態では、不要な複雑さがこのように回避され、このことは、コラボレーションサービスプラットフォーム３０２（図３）の拡張性、柔軟性、保全性、及び／又はスケーラビリティに貢献する。
【００３６】
ＭｅＣｏｎｔａｃｔオブジェクト４０６は、さらに、ＭｙＰｒｅｓｅｎｃｅオブジェクト４０８のインスタンスを参照することもできる。ＭｙＰｒｅｓｅｎｃｅオブジェクト４０８は、プレゼンスオブジェクト４０４の１つのタイプとすることができ、プレゼンスオブジェクト４０４の属性及び振る舞いを多様な形で継承することができる。ここでも、ＭｙＰｒｅｓｅｎｃｅオブジェクト４０８は、コラボレーションサービスプラットフォームのユーザ自身のプレゼンスが果たすことができる、他のユーザのプレゼンスと比べて特別な役割のために、プレゼンスオブジェクト４０４と異なったものとすることができる。たとえば、本発明の一実施形態では、ユーザは、自身のＭｙＰｒｅｓｅｎｃｅオブジェクト４０８のインスタンスを明示的に更新することができるが、他のユーザのプレゼンスオブジェクト４０４のインスタンスを更新することはできない。
【００３７】
加えて、ＭｅＣｏｎｔａｃｔオブジェクト４０６は、ＭｅＣｏｎｔａｃｔオブジェクト４０６に関連するユーザが、他のコラボレーションサービスプラットフォームのユーザと共に、現在参加している協同会議及び／又は最近参加していた協同会議を表す０個又は１つ以上の会議オブジェクト４１４のインスタンスを参照することができる。会議オブジェクト４１４は、協同アクティビティを表す１つ又は複数のアクティビティオブジェクト４１６のインスタンスを参照することができる。本発明の一実施形態では、会議オブジェクト４１４は、アクティビティオブジェクト４１６の１つのタイプであり、アクティビティオブジェクト４１６の属性及び振る舞いを多様な形で継承することができる。アクティビティオブジェクト４１６の１つのタイプである結果、会議オブジェクト４１４によって参照されるアクティビティオブジェクト４１６のインスタンスは、会議オブジェクト４１４のインスタンスとすることができる。一例のＭｅＣｏｎｔａｃｔオブジェクト４０６については、図９に関してより詳細に後述する。一例の会議オブジェクト４１４については、図１０に関してより詳細に後述する。
【００３８】
各協同オブジェクト４０２、４０４、４０６、４０８、４１０、４１２、４１４、４１６、及び４１８は、協同オブジェクト４０２、４０４、４０６、４０８、４１０、４１２、４１４、４１６、及び４１８のインスタンスの作成及び削除のためだけでなく、協同オブジェクト４０２、４０４、４０６、４０８、４１０、４１２、４１４、４１６、及び４１８の属性の適した照会及び操作のためのアプリケーションプログラミングインターフェースを提供することができる。協同オブジェクト４０２、４０４、４０６、４０８、４１０、４１２、４１４、４１６、及び４１８が、他の協同オブジェクト４０２、４０４、４０６、４０８、４１０、４１２、４１４、４１６、及び４１８を参照するものとして説明される本発明の一実施形態では、参照されるオブジェクト又はそれらのコピーは、参照する代わりに、参照する側のオブジェクトに組み込むことができ、且つ／又は、参照する側のオブジェクトに対して肝要なものとすることができる。或るプログラマティックオブジェクトは、あらゆる適したプログラマティック参照メカニズムで別のプログラマティックオブジェクトを参照することができる。適したプログラマティック参照メカニズムには、ポインタ、明示参照、関連ハッシュ符号、及びそれらに等価なものに加えて、その目的のために具体的に設計されたプログラム言語の機構が含まれる。
【００３９】
次に、図４に関して上記で紹介したプログラマティックオブジェクト４０２、４０４、４０６、４０８、４１０、４１２、４１４、４１６、及び４１８をより詳細に説明する。各プログラマティックオブジェクト４０２、４０４、４０６、４０８、４１０、４１２、４１４、４１６、及び４１８は、１つ又は複数のアプリケーションプログラミングインターフェースエレメントを含むことができる。各アプリケーションプログラミングインターフェースエレメントは、コラボレーションサービスプラットフォーム３０２（図３）のサービスを含むコンピュータ１０２（図１）のシステムコンポーネントが、プログラマティックオブジェクト４０２、４０４、４０６、４０８、４１０、４１２、４１４、４１６、及び４１８を構成、制御、及び／又は、これらのプログラマティックオブジェクトと相互作用できる方式を指定する１つ又は複数のインターフェース仕様を含むことができる。当業者には明らかなように、これらのインターフェース仕様は、オブジェクト属性仕様、変数仕様、関数コール仕様、プログラムオブジェクト仕様、要求／応答メッセージペア等のメッセージ仕様、及び／又は、他のあらゆる適したプログラミングインターフェース仕様を含むことができる。
【００４０】
図５は、本発明の一実施形態による一例の連絡先オブジェクト５００を示している。連絡先オブジェクト５００は、コラボレーションオブジェクトモデル４００（図４）に組み込むのに適している。連絡先オブジェクト５００は、名前エレメント５０２、プレゼンスエレメント５０４、バディフラグエレメント５０６、及び近接性エレメント５０８を含むアプリケーションプログラミングインターフェースエレメントを組み込むことができる。
【００４１】
名前エレメント５０２は、連絡先オブジェクト５００に関連する連絡先の親しみやすい名前を含むことができる。この親しみやすい名前は、たとえば、リッチテキスト文字列として符号化することができる。プレゼンスエレメント５０４は、プレゼンスオブジェクト４０４（図４）のインスタンスへの参照子を含むことができる。
【００４２】
バディフラグエレメント５０６は、連絡先オブジェクト５００に関連する連絡先が「バディ」（“buddy”:「親友」）クラス連絡先として分類されていることの指示子を含むことができる。バディとして分類された連絡先は、さまざまな方法で特権を受けることができる。たとえば、バディは、信頼されている連絡先とすることができ、バディには、たとえば招待優先権といった優先権を与えることができ、コラボレーションサービスプラットフォームのユーザがたとえばプレゼンスデータ用にサブスクライブする一組の連絡先にバディを含めることができる。バディクラス連絡先は、通常の連絡先よりも多くの計算費用がかかる場合があり、たとえば、バディフラグアプリケーションプログラミングインターフェースエレメント５０６に埋め込まれているテストでバディクラス連絡先の個数が制限される場合がある。
【００４３】
近接性エレメント５０８は、物理近接性メトリック及び仮想近接性メトリックを含むことができる。たとえば、物理近接性メトリックは、無線ネットワークインターフェースにおいて受信される信号強度の大きさとすることができる。もちろん、近接性アプリケーションプログラミングインターフェースエレメント５０８は、近接性照会に応じて、単一のメトリックに制限される必要はない。たとえば、近接性照会は、生の近接性メトリック、時間平均された近接性メトリック、量子化された近接性メトリック（「信号強度バー」）、及び／又はあらゆる適した近接性メトリックを要求することができる。
【００４４】
図６は、本発明の一実施形態による一例のプレゼンスオブジェクト６００を示している。プレゼンスオブジェクト６００は、コラボレーションオブジェクトモデル４００（図４）に組み込むのに適している。プレゼンスオブジェクト６００は、リッチテキスト記述エレメント６０２、エンドポイントエレメント６０４、集約ステータスエレメント６０６、集約機能エレメント６０８、公開オブジェクトエレメント６１０、新しいアクティビティへの招待エレメント（invite to new activity element）６１２、既存のアクティビティへの招待エレメント（invite to existing activity element）６１４、タイプ別機能発見エレメント６１６、タイプ別公開オブジェクト発見エレメント６１８、及びオブジェクト公開エレメント６２０を含むアプリケーションプログラミングインターフェースエレメントを組み込むことができる。
【００４５】
リッチテキスト記述エレメント６０２は、プレゼンスオブジェクト６００に関連するネットワークコンピューティング環境２００（図２）のプレゼンスを記述するリッチテキスト文字列を含むことができる。簡単な例には、「現在ビル９にいます」、「Ｈａｌｏ（登録商標）のレベル４をプレイしています」、及び「利用不可」が含まれる。エンドポイントエレメント６０４は、１つ又は複数の協同アクティビティのアクティブな参加者、最近アクティブであった参加者、及び／又はアクティブになることできる参加者である一組の協同エンドポイントを含むことができる。適した協同エンドポイントの例には、コンピュータ２０４、２０６、２０８、２１２、２１４、及び２１６、並びに、ネットワークコンピューティング環境２００のオーバーレイネットワークのピアが含まれる。
【００４６】
集約ステータスエレメント６０６は、一組の協同エンドポイントにわたる協同プレゼンスを表す集約プレゼンスステータス指示子を含むことができる。各協同エンドポイントは、関連するプレゼンスステータス、たとえば、ＯＮＬＩＮＥ（オンライン）、ＡＷＡＹ（不在）、ＯＵＴ  ＴＯ  ＬＵＮＣＨ（昼食で外出）、ＢＥ  ＲＩＧＨＴ  ＢＡＣＫ（すぐ戻る）、ＩＤＬＥ（アイドル）、ＯＮ  ＴＨＥ  ＰＨＯＮＥ（電話中）、又はＢＵＳＹ（取り込み中）、を有することができる。一組のエンドポイントに関連する集約プレゼンスステータスは、その一組におけるエンドポイントのうちのいずれか１つに関連するステータスと同じである必要はない。たとえ、集約プレゼンスステータスが、その一組におけるエンドポイントのうちの少なくとも１つと同じであっても、集約プレゼンスステータスは、他のエンドポイントのうちの１つ又は複数と異なる場合がある。
【００４７】
集約プレゼンスステータスは、さまざまな集約プレゼンスステータスアルゴリズムのうちの１つ又は複数で求めることができる。プレゼンスステータスレベルはランク付けすることができ、集約ステータスは、一組のエンドポイントにおける最も高いランクのステータスに設定することができる。集約ステータスは、個々のステータス値の加重平均とすることもできるし、個々のステータス値の他の適した線形変換又は非線形変換とすることもできる。また、個々のステータス値は、変換する前に適切に記憶することもできる。利用される集約プレゼンスステータスアルゴリズムは、一組における個々のエンドポイントの個数に依存する場合がある。
【００４８】
集約機能エレメント６０８は、協同プレゼンスに関連する集約機能の集まりを含むことができる。協同プレゼンスの個々の各エンドポイントは、たとえば協同アクティビティに関する機能といった一組の機能をそれらのエンドポイントに関連付けている場合がある。集約機能は、個々のエンドポイントの各エンドポイントの機能のそれぞれを単に集約したものとすることができる。他方、集約機能の集まりは、個々のエンドポイントのそれぞれに存在する機能に限定することができる。より洗練された集約機能決定アルゴリズムのように、これらの両極端を組み合わせたものが可能である。たとえば、集約機能の集まりは、加重平均プロセスの結果とすることもできるし、個々のエンドポイントの機能の他の適した線形変換又は非線形変換とすることもできる。加えて、集約機能のランク又は割合を、集約機能の集まりにおける各機能に関連付けることもできる。
【００４９】
公開オブジェクトエレメント６１０は、協同プレゼンスに関連する公開オブジェクトの集まりを含むことができる。機能オブジェクト４１２（図４）は、公開オブジェクト４１８の１つのタイプとすることができるが、これらの２つは、機能オブジェクト４１２のインスタンスに関連する機能が、通常は長い寿命（たとえば、ほぼ数日、数週間、さらには数年）を有するのに対して、ベース公開オブジェクト４１８のインスタンスに関連する公開データが、通常は短い寿命（たとえば、ほぼ数秒、数分、又は数時間）を有する点において相違している。この相違は、コンピュータシステムの性能を最適化するのに使用することができる。
【００５０】
新しいアクティビティへの招待エレメント６１２は、コラボレーションサービスプラットフォーム３０２（図３）のユーザが、新しい協同アクティビティに参加するようにプレゼンスオブジェクト６００に関連する連絡先を招待することを可能にすることができる。アクティビティをホスティングする関連する会議がまだ存在しない場合があり、その招待が受け付けられた場合に会議が作成される場合がある。この招待は、エンドポイントエレメント６０４によって参照される各エンドポイントに配信することもできるし、ＯＮＬＩＮＥプレゼンスステータスに関連するエンドポイントのみに配信することもでき、また、この招待は、協同プレゼンスに関連する各エンドポイントへ或る順序で、たとえば、各エンドポイントに関連付けられたプレゼンスステータスにより決定された順序で、配信することもできるし、他の適した招待配信ストラテジーで配信することもできる。
【００５１】
既存のアクティビティへの招待のアプリケーションプログラミングインターフェースエレメント６１４は、既存の会議及び／又はアクティビティに参加するように連絡先を招待するときに好ましい場合がある。会議及び／又はアクティビティがすでに設立されている場合に、いくつかの協同パラメータは、交渉可能（negotiable）でない場合もあるし、交渉できる可能性が少ない場合もあり、たとえば、現在の参加者による使用において協同パラメータによって決まる範囲内でのみ交渉可能な場合がある。加えて、柔軟性が小さいことも、参加の資格を与えるプレゼンスのエンドポイントを制限する場合があり、したがって、招待を受け取る候補であるプレゼンスのエンドポイントを制限する場合がある。
【００５２】
タイプ別機能発見エレメント６１６は、コラボレーションサービスプラットフォーム３０２（図３）のユーザが、複数の機能タイプのうちの１つ又は複数に関連する機能について、プレゼンスオブジェクト６００に関連するプレゼンスに照会することを可能にすることができる。機能タイプの例には、チャット、オーディオ及びビデオ等のアプリケーションタイプ、オーディオ出力、オーディオ入力、ビデオ出力、ビデオ入力等のアプリケーション機能、帯域幅、オーディオ品質及びビデオ解像度等のエンドポイント資源、又はあらゆる適した協同機能タイプが含まれる。タイプ別機能発見エレメント６１６は、個々のエンドポイントの機能及び／又は集約プレゼンス機能で照会に応答することができる。
【００５３】
タイプ別公開オブジェクト発見エレメント６１８は、コラボレーションサービスプラットフォーム３０２（図３）のユーザが、プレゼンスに関連する公開オブジェクト、たとえば、公開オブジェクトエレメント６１０でアクセス可能な公開オブジェクトについて、プレゼンスオブジェクト６００に関連するプレゼンスに照会することを可能にすることができる。公開オブジェクトタイプは、関連するリッチテキスト文字列によって判断することができる。たとえば、同じリッチテキスト文字列に関連する公開オブジェクト４１８（図４）のインスタンスは、同じタイプであると判断することができる。
【００５４】
公開オブジェクトエレメント６２０は、プレゼンスに関連するデータのパブリケーションを可能にすることができる。たとえば、公開オブジェクトエレメント６１０によって保持されている一組のプレゼンスオブジェクトを更新することができる。本発明の一実施形態では、オブジェクト公開アプリケーションプログラミングインターフェースエレメント６２０を、公開オブジェクトアプリケーションプログラミングインターフェースエレメント６１０に組み込むことができる。
【００５５】
図７は、本発明の一実施形態による一例の公開オブジェクト７００を示している。公開オブジェクト７００は、コラボレーションオブジェクトモデル４００（図４）に組み込むのに適している。公開オブジェクト７００は、認証サブスクライバエレメント７０２及び公開データエレメント７０４を含むアプリケーションプログラミングインターフェースエレメントを組み込むことができる。
【００５６】
認可サブスクライバエレメント７０２は、公開オブジェクト７００に関連するデータにサブスクライブすることを認可された連絡先に関連する１つ又は複数の連絡先オブジェクト４０２（図４）のインスタンスを参照することができる。データアクセス制御は、たとえば許可又は阻止といった粗い粒度とすることもできるし、たとえば、データ作成特権、データ読み出し特権、データ更新特権、及びデータ削除特権に対する制御を含む細かな粒度とすることもできる。公開データエレメント７０８４は、公開オブジェクト７００に関連する一組の公開データを保持することができる。あらゆる適した一組のデータを、公開オブジェクト７００に関連して公開することができる。
【００５７】
図８は、本発明の一実施形態による一例の機能オブジェクト８００を示している。機能オブジェクト８００は、コラボレーションオブジェクトモデル４００（図４）に組み込むのに適している。機能オブジェクト８００は、関連アプリケーションエレメント８０２及びアプリケーションデータエレメント８０４を含むアプリケーションプログラミングインターフェースエレメントを組み込むことができる。
【００５８】
関連アプリケーションエレメント８０２は、機能オブジェクト８００に関連する機能を実施する一組の協同アプリケーションへの参照子を含むことができる。アプリケーションデータエレメント８０４は、関連アプリケーションエレメント８０２によって参照される一組の協同アプリケーションのそれぞれを構成するのに必要とされるデータ及び／又はデータの仕様を含むことができる。
【００５９】
図９は、本発明の一実施形態による一例のＭｅＣｏｎｔａｃｔオブジェクト９００を示している。ＭｅＣｏｎｔａｃｔオブジェクト９００は、コラボレーションオブジェクトモデル４００（図４）に組み込むのに適している。ＭｅＣｏｎｔａｃｔオブジェクト９００は、連絡先エレメント９０２、バディエレメント９０４、認可サブスクライバエレメント９０６、アクティブサブスクライバエレメント９０８、会議エレメント９１０、タイプ別機能発見エレメント９１２、タイプ別公開オブジェクト発見エレメント９１４を含むアプリケーションプログラミングインターフェースエレメントを組み込むことができる。
【００６０】
連絡先エレメント９０２は、ＭｅＣｏｎｔａｃｔオブジェクト９００に関連するコラボレーションサービスプラットフォーム３０２（図３）のユーザに知られている連絡先に関連する一組の連絡先オブジェクト４０２（図４）のインスタンスへの参照子を含むことができる。バディエレメント９０４は、コラボレーションサービスプラットフォーム３０２（図３）のユーザに知られている連絡先であって、たとえば、連絡先オブジェクト５００のバディフラグエレメント５０６（図５）によって示されるように、バディクラス連絡先でもある連絡先に関連する一組の連絡先オブジェクト４０２（図４）のインスタンスへの参照子を含むことができる。バディエレメント９０４によって参照される一組の連絡先オブジェクト４０２のインスタンスにおける単なるプレゼンスが、関連する連絡先がバディクラス連絡先であることを示すことができる。連絡先エレメント９０２及びバディエレメント９０４によって参照される一組の連絡先オブジェクト４０２のインスタンスは、オーバーラップすることができるが、本発明の少なくとも１つの実施形態では、それらの組は排他的である。
【００６１】
認可サブスクライバエレメント９０６は、機能データ等、ＭｅＣｏｎｔａｃｔオブジェクト９００に関連する公開データにサブスクライブすることを認可されている連絡先に関連する一組の連絡先オブジェクト４０２（図４）のインスタンスへの参照子を含むことができる。公開データアクセス制御は、たとえば、すべての公開データへのアクセスの阻止又は許可といった粗い粒度とすることもできるし、たとえば、各公開オブジェクト４１８の作成許可、読み出し許可、更新許可、及び／又は削除許可といった細かな粒度とすることもできるし、それらの組み合わせとすることもできる。
【００６２】
アクティブサブスクライバエレメント９０８は、ＭｅＣｏｎｔａｃｔオブジェクト９００に関連するコラボレーションサービスプラットフォーム３０２（図３）のユーザによって公開されたデータにアクティブにサブスクライブされる連絡先に関連する一組の連絡先オブジェクト４０２のインスタンスへの参照子を含むことができる。もちろん、アクティブサブスクライバエレメント９０８によって参照される連絡先オブジェクト４０２のインスタンスは、認可サブスクライバエレメント９０６によって保持される許可に従うべきである。
【００６３】
会議エレメント９１０は、ＭｅＣｏｎｔａｃｔオブジェクト９００に関連するコラボレーションサービスプラットフォーム３０２（図３）のユーザが現在参加している会議、そのようなユーザが最近参加していた会議、及び／又は、そのようなユーザがまもなく参加する会議に関連する一組の会議オブジェクト４１４（図４）のインスタンスへの参照子を含むことができる。
【００６４】
タイプ別機能発見エレメント９１２は、コラボレーションサービスプラットフォーム３０２（図３）のユーザが、複数の機能タイプのうちの１つ又は複数に関連する機能について、ＭｅＣｏｎｔａｃｔオブジェクト９００に関連する連絡先に照会することを可能にすることができる。たとえば、タイプ別機能発見エレメント９１２は、連絡先エレメント９０２、バディエレメント９０４、及び／又はＭｅＣｏｎｔａｃｔオブジェクト９００自体によって参照される連絡先オブジェクト４０２（図４）のインスタンスに照会することができる。タイプ別機能発見エレメント９１２は、個々のエンドポイントの機能及び／又は集約機能でその照会に応答することができる。タイプ別公開オブジェクト発見エレメント９１４は、ユーザが、公開データについて、ＭｅＣｏｎｔａｃｔオブジェクト９００に関連する連絡先に照会することを可能にすることができる。タイプ別機能発見エレメント９１２と同様に、タイプ別公開オブジェクト発見エレメント９１４は、連絡先エレメント９０２、バディエレメント９０４、及び／又はＭｅＣｏｎｔａｃｔオブジェクト９００自体によって参照される公開オブジェクト４１８のインスタンスに照会することができる。
【００６５】
図１０は、本発明の一実施形態による一例の会議オブジェクト１０００を示している。会議オブジェクト１０００は、コラボレーションオブジェクトモデル４００（図４）に組み込むのに適している。会議オブジェクト１０００は、セッション情報エレメント１００２、アクティビティエレメント１００４、アドミニストレータエレメント１００６、認可メンバーエレメント１００８、及びアクティビティ開始エレメント１０１０を含むアプリケーションプログラミングインターフェースエレメントを組み込むことができる。
【００６６】
本発明の一実施形態では、たとえば会議オブジェクト１０００に関連する会議といった会議の役割は、１つ又は複数のコラボレーションサービスプラットフォーム３０２（図３）のユーザが参加している１つ又は複数の協同アクティビティの編成、管理、及び／又は保守を含む。セッション情報エレメント１００２は、会議レベルセッション情報を含むことができる。性能最適化は、会議レベルのアクティビティレベルセッション情報を収集することによって達成することができる。アクティビティエレメント１００４は、１つ又は複数のアクティビティオブジェクト４１６（図４）のインスタンスへの参照子を含むことができる。
【００６７】
アドミニストレータエレメント１００６は、会議のアドミニストレータとして行動することを認可されている連絡先に関連する１つ又は複数の連絡先オブジェクト４０２（図４）のインスタンスを参照することができる。管理監督特権は、認可された参加者及び／又はアクティビティの追加及び削除を含むことができる。認可メンバーエレメント１００８は、会議に関連するアクティビティに参加することを認可された連絡先に関連する１つ又は複数の連絡先オブジェクト４０２のインスタンスを参照することができる。認可は、たとえば、特定の連絡先のすべての会議アクティビティへの参加の許可又は阻止といった肌目の粗いものとすることもできるし、たとえば、新しいアクティビティを起動する許可若しくは既存のアクティビティを終了する許可、個々のアクティビティに完全に参加する許可若しくは限定的に参加する許可（たとえば、「オブザーバの立場」）、又はそれらの組み合わせを与えることができる、といった肌目の細かいものとすることもできる。
【００６８】
アクティビティ開始エレメント１０１０は、新しいアクティビティを会議に追加することができる。アクティビティの加入及び離脱は、会議、アクティビティ、又はそれらの２つの組み合わせが管理することができる。各場合において、会議オブジェクト１０００のアプリケーションプログラミングインターフェースエレメントは、アドミニストレータエレメント１００６及び／又は認可メンバーエレメント１００８との一致を強制することができる。
【００６９】
次に、たとえば、コラボレーションサービスプラットフォーム３０２（図３）によって実行される詳細な方法及びコラボレーションオブジェクトモデル４００（図４）に従って実行される詳細な方法を説明する。図１１は、本発明の一実施形態によるコラボレーションサービスプラットフォーム３０２によって実行されるステップの例を示している。ステップ１１０２において、連絡先オブジェクト４０２のインスタンスを選択することができる。たとえば、連絡先ストア３１８に記憶されている連絡先オブジェクト４０２のインスタンスを、コンタクト管理サービス３０４のユーザインターフェースで選択することができる。
【００７０】
ステップ１１０４において、選択された連絡先オブジェクト４０２（図４）のインスタンスに、その関連するプレゼンスオブジェクト４０４のインスタンスについて照会することができる。たとえば、選択された連絡先オブジェクト５００のプレゼンスエレメント５０４（図５）は、関連するプレゼンスオブジェクト４０４のインスタンスにアクセスするのに利用することができる。
【００７１】
ステップ１１０６において、選択された連絡先オブジェクト４０２（図４）のインスタンスに関連する連絡先が、ネットワークコンピューティング環境２００（図２）に存在するか否かを判断することができる。たとえば、連絡先の集約プレゼンスステータスを、ステップ１１０４で取り出されたプレゼンスオブジェクト６００の集約ステータスエレメント６０６から得ることができ、連絡先の集約プレゼンスステータスがＯＮＬＩＮＥである場合、その連絡先は存在すると判断することができる。連絡先が存在すると判断された場合、プロシージャは、ステップ１１０８に進むことができる。存在しないと判断される場合、プロシージャは終了することができる。連絡先はこの時、コラボレーションに利用可能ではない。
【００７２】
代替的に、ステップ１１０４及び１１０６は、選択された連絡先のプレゼンス情報にサブスクライブするステップ、及び、ステップ１１０８に進む前に、或る通知が、選択された連絡先が存在することを示すまで待つステップと置き換えることができる。この代替的なものは、破線１１１０で示されている。
【００７３】
ステップ１１０８において、選択された連絡先オブジェクト４０２（図４）に、一組の関連する機能オブジェクト４１２のインスタンスについて照会することができる。たとえば、ステップ１１０４（及び／又はステップ１１１０）で取り出されたプレゼンスオブジェクト４０４のインスタンスのタイプ別機能発見エレメント６１６（図６）は、関連する一組の機能を得るのに利用することができる。検査される特定の一組の機能は、ターゲットの１つ又は複数の協同アクティビティに依存する場合がある。たとえば、音声を伴う会議は、オーディオ入力機能のチェックをトリガすることができる。ステップ１１１２において、選択された連絡先が、必要とされる機能を有するか否かが判断される。選択された連絡先が、必要とされる機能を有する場合、プロシージャは図１２のステップ１２０２に進むことができる。選択された連絡先が、必要とされる機能を有しない場合、プロシージャは終了することができる。ステップ１１１２は、簡単なテストに限定される必要はない。ステップ１１１２は、たとえば、一組の機能のいずれかがターゲットの１つ又は複数のアクティビティに十分であるか否かを判断するための、シグナリングサービス３０８（図３）によって調整される交渉を含むことができる。
【００７４】
図１２は、本発明の一実施形態によるコラボレーションサービスプラットフォーム３０２によって実行されるさらなるステップの例を示している。図１１及び図１２のステップは、１１１４及び１１１６のラベルを有する円によって接続されている。選択された連絡先が、ネットワークコンピューティング環境２００（図２）に存在し、且つ所望の１つ又は複数の協同アクティビティに参加できると判断されると、ステップ１２０２において、１つ又は複数の招待を選択された連絡先へ送信することができる。たとえば、招待を、コンピュータ２１２（図２）における招待サービス３２６（図３）が送信することができる。
【００７５】
ステップ１２０４において、１つ又は複数の招待を、選択された連絡先が受信することができる。たとえば、これらの招待のうちの１つを、コンピュータ２０８（図２）における招待サービス３２６が受信することができる。ステップ１２０６において、選択された連絡先は、１つ又は複数の招待に応答することができる。たとえば、選択された連絡先は、コンピュータ２０８における招待サービス３２６のユーザインターフェースを利用して、招待のうちの１つに応答することができる。
【００７６】
ステップ１２０８において、招待が受け付けられたか否かを判断することができる。たとえば、コンピュータ２１２における招待サービス３２６は、ステップ１２０６において送信された応答を受信することができ、この応答の内容は、招待が受け付けられるか否かを判断することができる。招待が受け付けられる場合、プロシージャはステップ１２１０に進むことができる。招待が受け付けられない場合、プロシージャは終了することができる。
【００７７】
ステップ１２０４、１２０６、及び１２０８は、招待に応答する場合の手続き的な差異の可能性を強調するために破線１２１２でマーキングされている。同じアクティビティへ複数の招待を送出する１つの理由は、選択された連絡先のネットワークコンピューティング環境２００（図２）のプレゼンスが、複数のエンドポイントを包含している場合があるからである。たとえば、コラボレーションサービスプラットフォーム３０２（図３）のユーザは、コンピュータ２１２からコンピュータ２１６、２０６、及び２０８へ同じアクティビティに対して３つの招待を送信することができる。たとえば、コンピュータ２１６は、選択された連絡先のオフィスのデスクトップＰＣとすることができ、コンピュータ２０６は、選択された連絡先のラップトップとすることができ、コンピュータ２０８は、選択された連絡先の携帯情報端末（ＰＤＡ）とすることができる。招待は、２つ以上のエンドポイントにおいて、選択された連絡先に表示することができる。たとえば、選択された連絡先は、コンピュータ２０８（この例ではＰＤＡ）において、その招待を辞退又は無視することができるが、コンピュータ２０６（ラップトップ）では招待を受け付けることができる。１つの可能性は、選択された連絡先が単に招待に応答しないことである。この結果、プロシージャはタイムアウトして、終了することができる。
【００７８】
ステップ１２１２の別の可能性は、コンピュータ２１２（図２）におけるコラボレーションサービスプラットフォーム３０２（図３）のユーザが、サブネット２１８の他の各コンピュータ２１４及び２１６へ、或るアクティビティへの招待を送出することである。この場合、各連絡先は、並列に応答することができる。
【００７９】
選択された連絡先は、招待を受け付けると、ステップ１２１０において、協同アクティビティの関連会議に参加することができる。たとえば、会議は、コンピュータ２１２（図２）においてホスティングすることができ、選択された連絡先は、シグナリングサービス３０８（図３）及び／又はアクティビティサービス３１０を利用して、コンピュータ２０６から会議に参加することができる。ステップ１２１４において、そのアクティビティを組み込んでいるコラボレーションを行うことができる。
【００８０】
次に、招待サービス３２６（図３）の一例をより詳細に説明する。詳細には、招待サービス３２６、協同サービスプラットフォーム３０２、及び協同サービスプラットフォーム３０２とは異なる協同アプリケーション（ただし、通常は協同サービスプラットフォーム３０２によって参照される）の間の相互作用を強調して説明する。本発明の一実施形態では、このような相互作用のハンドリングは、コラボレーションサービスプラットフォーム３０２の有用性、拡張性、柔軟性、保全性、及び／又はスケーラビリティに貢献し、したがって、広範囲の採用に対するその適合性に貢献する。
【００８１】
図１３は、本発明の一実施形態による一例の招待のシナリオを示している。第１のコンピュータ１３０２には、第２のコンピュータ１３０４との１つ又は複数の協同アクティビティを起動することでタスクを課すことができる。たとえば、コンピュータ１３０２及び１３０４は、図２のネットワークコンピューティング環境２００のコンピュータ２０４、２０６、２０８、２１２、２１４、又は２１６のうちのいずれかとすることができる。各コンピュータ１３０２及び１３０４は、コンピュータオペレーティングシステム１３０６及び１３０８を含むことができる。各コンピュータオペレーティングシステム１３０６及び１３０８は、協同サービスプラットフォームモジュール１３１０及び１３１２を含むことができる。コンピュータオペレーティングシステム１３０２及び１３０４は、同じものである必要はない。協同サービスプラットフォームモジュール１３１０及び１３１２は、協同サービスプラットフォーム３０２（図３）に従ったものとすることができる。
【００８２】
コンピュータオペレーティングシステム１３０６及び１３０８は、グラフィカルユーザインターフェース（ＧＵＩ）等の招待ユーザインターフェース（ＵＩ）１３１４及び１３１６を含むことができる。本発明の一実施形態では、招待ユーザインターフェース１３１４及び１３１６は、協同サービスプラットフォームモジュール１３１０及び１３１２にそれぞれ組み込まれる。コンピュータ１３０２及び１３０４は、協同アプリケーション１３１８及び１３２０をさらに含むことができる。この例の協同サービスプラットフォームモジュール１３１０及び１３１２とは異なるが、本発明の一実施形態では、協同アプリケーション１３１８及び１３２０は、協同サービスプラットフォームモジュール１３１０及び１３１２に組み込むことができる。
【００８３】
基本的な協同招待プロトコルは、コラボレーション招待メッセージ１３２２、コラボレーション応答メッセージ１３２４、及び招待キャンセルメッセージ１３２６の３つのメッセージを含むことができる。
【００８４】
コラボレーション招待メッセージ１３２２は、招待識別子、１つ又は複数の機能識別子、アプリケーションデータ、及びメッセージを含むことができる。招待識別子は、招待を一意に識別することができる。たとえば、招待識別子は、Ｍｉｃｒｏｓｏｆｔ（登録商標）  Ｄｅｖｅｌｏｐｅｒ  Ｎｅｔｗｏｒｋ（ＭＳＤＮ（登録商標））ライブラリの．ＮＥＴ  Ｆｒａｍｅｗｏｒｋ  Ｃｌａｓｓ  Ｌｉｂｒａｒｙの文書バージョン１．１．１のＧｕｉｄ構造体節に記載されているようなグローバル一意識別子（ＧＵＩＤ）とすることができる。各機能識別子は、招待に関連する協同アクティビティに必要とされる協同機能を表す機能オブジェクトを参照することができる。たとえば、各機能識別子は、グローバル一意識別子（ＧＵＩＤ）とすることができる。アプリケーションデータは、たとえば協同アクティビティを起動するために、協同アプリケーションに渡されるデータを含むことができ、且つ／又は、指定することができる。メッセージは、標準招待テキスト又はカスタム招待テキストを含むリッチテキスト文字列とすることができる。
【００８５】
コラボレーション応答メッセージ１３２４は、招待識別子、招待応答動作、応答メッセージ、及び拡張応答データを含むことができる。招待識別子は、応答メッセージ１３２４が応答しているコラボレーション招待を識別することができる。たとえば、招待識別子は、コラボレーション招待メッセージ１３２２によって供給されたＧＵＩＤとすることができる。招待応答動作は、応答の一タイプを示すことができる。たとえば、招待応答は、辞退、受け付け、無視、及びエラーのうちの１つとすることができる。応答メッセージは、標準招待応答テキスト又はカスタム招待応答テキストを含むリッチテキスト文字列とすることができる。拡張応答データは、招待アクティビティ及び／又は協同アクティビティに関するあらゆる適した追加応答データを含むことができる。
【００８６】
招待キャンセルメッセージ１３２６は、キャンセルメッセージ１３２６がキャンセルしている招待を識別する招待識別子を含むことができる。たとえば、コンピュータ１３０２からコンピュータ１３０４へコラボレーション招待メッセージ１３２２を送信して、協同サービスプラットフォーム１３１０のユーザとの協同アクティビティに参加するように協同サービスプラットフォーム１３１２のユーザを招待することができる。これに応答して、コンピュータ１３０４からコンピュータ１３０２へコラボレーション応答メッセージ１３２４を送信して、たとえば、この招待を受け付けるのか、又は辞退するのかを示すことができる。本発明の一実施形態では、協同サービスプラットフォーム１３１０のユーザは、コンピュータ１３０２からコンピュータ１３０４へ招待キャンセルメッセージ１３２６を送信することによって、この招待をキャンセルすることが可能である。
【００８７】
協同招待の方法の例をより詳細に説明する前に、招待サービス３２６（図３）の一例のアプリケーションプログラミングインターフェース（ＡＰＩ）を説明することが有益である。図１４は、本発明の一実施形態による招待サービス３２６の一例のアプリケーションプログラミングインターフェース（ＡＰＩ）１４００を示している。招待サービスＡＰＩ１４００は、招待エレメント１４０２、招待リスナ作成（create invitation listener）エレメント１４０４、安全招待送信（send secured invitation）エレメント１４０６、非安全招待送信（send unsecured invitation）エレメント１４０８、招待キャンセルエレメント１４１０、招待応答エレメント１４１２、招待応答取得エレメント１４１４、機能登録／登録抹消エレメント１４１６、機能列挙エレメント１４１８、及び機能情報取得エレメント１４２０を含むことができる。各アプリケーションプログラミングインターフェースエレメント１４０２、１４０４、１４０６、１４０８、１４１０、１４１２、１４１４、１４１６、１４１８、及び１４２０は、各コンピュータ１３０２及び１３０４における協同サービスプラットフォームモジュール１３１０及び１３１２（図１３）に組み込まれる招待サービス３２６（図３）のアプリケーションプログラミングインターフェースに含めることができるが、コンピュータ１３０２、１３０４が招待者であるのか、招待された者であるのか、又はその両者であるのかに応じて、コンピュータ１３０２及び１３０４は、エレメント１４０２、１４０４、１４０６、１４０８、１４１０、１４１２、１４１４、１４１６、１４１８、及び１４２０のうちの異なるものを利用することができる。
【００８８】
招待エレメント１４０２は、コラボレーション招待メッセージ１３２２と同じデータの一部又は全部へのアクセスを含んで提供することができる。たとえば、コラボレーション招待メッセージ１３２２又はその一部は、招待エレメント１４０２により、招待サービス３２６（図３）に記憶することができ、且つ／又は、招待サービス３２６から取り出すことができる。
【００８９】
招待リスナ作成エレメント１４０４は、コンピュータ１３０２及び１３０４（図１３）等の協同エンドポイントにおいて招待リスナのインスタンスを作成することができる。インターフェース仕様パラメータは、インターネットプロトコル（ＩＰ）アドレス又はＰ２Ｐピア識別子（コンピュータ１３０２、１３０４ごとに複数のエンドポイントが存在する場合がある）等のエンドポイント識別子、ポート識別子（エンドポイントごとに複数の通信ポートが存在する場合がある）、及び招待リスナを構成又は破壊するための招待リスナ識別子を含むことができる。たとえば、オペレーティングシステム１３０８は、招待リスナ作成エレメント１４０４を利用して、標準招待ポート及び／又は協同サービスポートにおいてリスンする招待リスナを作成することができる。協同アプリケーション１３２０は、招待リスナ作成エレメント１４０４を利用して、カスタム招待ポートで招待リスナを作成することができる。このカスタム招待ポートは、協同アプリケーション１３２０とコラボレートするために招待をリスンするよう専用化されている。
【００９０】
安全招待送信エレメント１４０６は、招待メッセージ１３２２（図１３）の安全な送信を可能にすることができる。インターフェース仕様パラメータは、連絡先オブジェクト４０２（図４）のインスタンスへの参照子、エンドポイントオブジェクト４１０のインスタンスへの参照子、送信される招待メッセージ１３２２への参照子、招待に対する応答が受信されるとすぐにシグナリングされるイベント等の実行スレッドの同期オブジェクトへの参照子、及び安全招待送信エレメント１４０６によって設定される招待識別子への参照子を含むことができる。招待メッセージ１３２２は、参照された連絡先オブジェクト４０２のインスタンスに関連する連絡先へ送信することができる。エンドポイントオブジェクト４１０のインスタンスが提供される場合、関連するエンドポイントへ招待メッセージ１３２２を送信することができ、提供されない場合、参照された連絡先オブジェクト４０２のインスタンスに関連する連絡先のプレゼンスの各エンドポイントへ招待メッセージ１３２２を送信することができる。
【００９１】
協同アクティビティに参加する決定は、セキュリティの問題を有する場合がある。たとえば、双方向ファイル共有に参加する決定は、データを変更及び／又は削除にさらす場合がある。その結果、協同サービスプラットフォーム３０２（図３）のユーザは、信頼されたソースからのみの協同招待を受け付けることを決定する場合がある。本発明の一実施形態では、安全な通信接続を、連絡先情報を事前に交換したユーザ間で確立することができる。たとえば、連絡先情報は、暗号認証クレデンシャルを含むことができ、安全な通信接続は、オーバーレイネットワークのセキュアソケットレイヤ（ＳＳＬ）技法又はセキュリティサービスプロバイダ（ＳＳＰ）技法等のコンベンションセキュアプロトコル（convention secure protocol）で確立することができる。
【００９２】
一方、ユーザは、一定の状況の下で、安全でない招待の許可を決定することもできる。非安全招待送信エレメント１４０８は、たとえば、招待の送信側及び受信側が連絡先情報を事前に交換しているという要件がない点を除いて、安全招待送信エレメント１４０６と同様とすることができる。たとえば、非安全招待送信エレメント１４０８は、サブネット２１８の各コンピュータ２１２、２１４、及び２１６（図２）へ招待メッセージ１３２２をブロードキャストするのに利用することができる。非安全招待は、アドホックなコラボレーション及びマルチプレイヤゲーム等の簡便化された社会的環境におけるコラボレーションを促進することができる。
【００９３】
招待キャンセルエレメント１４１０は、キャンセルメッセージ１３２６（図１３）の送信を可能にすることができる。インターフェース仕様パラメータは、安全招待送信エレメント１４０６によって設定された、非安全招待送信エレメント１４０８の招待識別子等の招待識別子を含むことができる。招待応答エレメント１４１２は、応答メッセージ１３２４（図１３）の送信を可能にすることができる。インターフェース仕様パラメータは、招待識別子及び招待応答動作を含むことができる。
【００９４】
安全招待送信エレメント１４０６及び非安全招待送信エレメント１４０８のそれぞれは、同期バージョン及び非同期バージョンの双方を有することができる。たとえば、非同期バージョンは、招待メッセージ１３２２（図１３）を送信でき、次いで、招待に対する応答をチェックする前の実行スレッドで追加の命令の実行を可能にすることができる。これとは対照的に、同期バージョンは、応答メッセージ１３２４が受信されるか又はタイムアウトが発生するまで、実行スレッドで別の命令を実行することなく待つことができる。招待応答取得エレメント１４１４は、非同期で送信された招待メッセージ１３２２に対する応答をチェックし且つ／又は待つのに利用することができる。インターフェース仕様パラメータは、応答メッセージ１３２４が到着した時に応答メッセージ１３２４に設定される招待識別子及び参照子を含むことができる。招待送信エレメント１４０６及び１４０８の同期バージョンは、スレッド同期化オブジェクトへの参照子を含む必要はない。
【００９５】
招待サービス１４００は、エンドポイント機能のレジストリを保持することができる。機能登録／登録抹消エレメント１４１６は、招待サービス１４００への機能の登録及び登録取り消しを可能にすることができる。インターフェース仕様パラメータは、１つ又は複数の機能オブジェクト４１２（図４）のインスタンスへの参照子、及び、１つ又は複数の機能が或るエンドポイントの特定のユーザに関係するのか、又は、そのエンドポイントのすべてのユーザに関係するのかについての表示を含むことができる。機能オブジェクト４１２の各インスタンスは、たとえばグローバル一意識別子（ＧＵＩＤ）といった機能識別子に関連付けることができる。本発明の一実施形態では、各機能は、特定の協同アプリケーション１３１８、１３２０（図３）に関連付けられる。招待サービス１４００は、機能登録及び機能登録抹消用の別個のアプリケーションプログラミングインターフェースエレメントを含むことができる。
【００９６】
機能列挙エレメント１４１８は、招待サービス１４００に登録された機能の列挙を可能にすることができる。インターフェース仕様パラメータは、列挙が、或るエンドポイントの特定のユーザに関連する機能を含むべきであるのか、又は、或るエンドポイントのすべてのユーザに関連する機能を含むべきであるのかについての表示を含むことができる。本発明の一実施形態では、列挙は、たとえば、機能オブジェクト４１２（図４）のインスタンスの参照子の代わりに、機能識別子を含む。機能オブジェクト４１２のインスタンスは、その後、機能情報取得エレメント１４２０により取り出すことができる。
【００９７】
次に、協同招待方法の例をより詳細に説明する。協同招待の基本的なコンテキストは、ユーザが、招待を送信し且つ／若しくは招待に応答するために、特定のアプリケーションと対話するか否か（特定シナリオ）、又は、ユーザが、招待を送信し且つ／又は招待に応答するためにアプリケーションとは独立のメカニズムと対話するか否か（一般シナリオ）である。一般から一般へ、特定から一般へ、一般から特定へ、及び特定から特定への４つのシナリオを図１５〜図１８に関して以下に説明する。
【００９８】
図１５は、本発明の一実施形態による招待を送信するためのステップの例を示している。ステップ１５０２において、一般招待ユーザインターフェース（ＵＩ）を起動することができる。たとえば、協同サービスプラットフォーム３０２（図３）は、招待サービス３２６のユーザインターフェースを起動することができる。ステップ１５０４において、１つ又は複数の連絡先を一般招待ユーザインターフェースで選択することができる。たとえば、招待サービス３２６のユーザインターフェースは、コンタクト管理サービス３０４と相互作用して、ユーザの既知の連絡先のリスト、又は、たとえばバディクラス連絡先のリストを表示することができ、ユーザは、図を用いて、それらの表示されたものから一組の連絡先を選択することができる。
【００９９】
ステップ１５０６において、一般招待ユーザインターフェースでアクティビティを選択することができる。たとえば、招待サービス３２６（図３）のユーザインターフェースは、アクティビティサービス３１０と相互作用して、利用可能な協同アクティビティのリスト、又は、たとえば、よく知られたアクティビティ若しくは最も近時に使用されたアクティビティのリストを表示することができ、ユーザは、図を用いて、それらの表示されたものから協同アクティビティを選択することができる。ステップ１５０８において、一般招待ユーザインターフェースが招待を送信することになるか否か、又は、たとえば、招待が特定の協同アプリケーションから送信されることになるか否かを判断することができる。たとえば、この判断は、招待サービス３２６の構成可能パラメータに依存する場合がある。一般招待ユーザインターフェースが招待を送信することになると判断された場合、プロシージャはステップ１５１０に進むことができる。そのように判断されない場合、プロシージャはステップ１５１２に進むことができる。
【０１００】
ステップ１５１０において、ステップ１５０６で選択されたアクティビティに関連する協同アプリケーションを開始することができる。ステップ１５１０は破線の輪郭で示されている。これは、アプリケーションはこの時に開始できるが、一般招待ユーザインターフェースは、実行スレッドの制御を保有でき、且つ、ステップ１５１４に進むことができることを示すためである。これは、ステップ１５１６とは対照的である。
【０１０１】
ステップ１５１２において、ステップ１５０４で選択された連絡先、及びステップ１５０６で選択されたアクティビティに関連するあらゆる構成パラメータ等、これまで収集された招待に関する詳細を、アクティビティに関連する協同アプリケーションによる取り出しのために記憶することができる。ステップ１５１６において、協同アプリケーションが開始され、プロシージャの制御は、一般招待ユーザインターフェースによって引き渡される。
【０１０２】
ステップ１５１４において、招待サービス１４００（図１４）のアプリケーションプログラミングインターフェース、たとえば、上述したような安全招待送信エレメント１４０６又は非安全招待送信エレメント１４０８により招待を送信することができる。同じアプリケーションプログラミングインターフェースエレメント１４０６，１４０８を利用して招待を送信することができるが、プロシージャがステップ１５１０からステップ１５１４へ進む場合には、エレメント１４０６、１４０８は一般招待ユーザインターフェースにより起動されるのに対して、プロシージャがステップ１５１６からステップ１５１４に進む場合には、エレメント１４０６、１４０８は協同アプリケーションによって起動される。その結果、エレメント１４０６、１４０８に渡されるインターフェース仕様パラメータは異なる場合がある。
【０１０３】
ステップ１５０２で開始するプロシージャは、一般招待ユーザインターフェースが利用されているので、「一般から」のシナリオの１つを説明している。これとは対照的に、ステップ１５１８は、「特定から」のシナリオを開始する。ステップ１５１８において、協同アプリケーションを開始することができる。たとえば、コンピュータオペレーティングシステム１３０６は、従来の方法でアプリケーション１３１８（図１３）を開始することができる。ステップ１５１８は、ステップ１５２０の前提条件であり、ステップ１５１８と１５２０との間にかなりの或る時間が経過する場合がある。
【０１０４】
ステップ１５２０において、協同アプリケーション１３１８（図１３）のユーザインターフェースにより、１つ又は複数の連絡先を選択することができる。たとえば、協同アプリケーション１３１８は、協同サービスプラットフォーム１３１０のコンタクト管理サービス３０４（図３）と相互作用して、アプリケーションユーザの既知の連絡先のリスト、又は、たとえば、バディクラス連絡先のリストを表示することができ、アプリケーションユーザは、それらの表示されたものから一組の連絡先を選択することができる。ステップ１５０４からの進行とは対照的に、協同アクティビティの選択は必要ではなく、プロシージャはステップ１５１４に進むことができる。協同アプリケーション１３１８は、協同アクティビティを決定することができる。一方、本発明の一実施形態では、協同アプリケーション１３１８は、複数のアクティビティをサポートすることができ、この場合、ステップ１５０６と同等のものがふさわしい場合がある。ステップ１５１４において、招待送信エレメント１４０６又は１４０８（図１４）は、協同アプリケーション１３１８が起動することができる。
【０１０５】
図１６は、本発明の一実施形態による、招待を送信するために招待サービス１４００（図１４）によって実行されるステップの例を示している。ステップ１６０２において、次の候補連絡先が選択される。たとえば、候補連絡先は、図１５のステップ１５０４又はステップ１５２０において選択された一組の中から選択することができる。
【０１０６】
ステップ１６０４において、候補連絡先のエンドポイントが知られているか否かを判断することができる。たとえば、候補連絡先を表す連絡先オブジェクト４０２によって参照されるプレゼンスオブジェクト４０４（図４）に、その一組のエンドポイントオブジェクト４１０について照会することができる。候補連絡先のエンドポイントが知られていない（たとえば、照会の結果が空集合である）場合、プロシージャはステップ１６０６に進むことができる。候補連絡先のエンドポイントが知られている場合、プロシージャは、ステップ１６０８に進むことができる。ステップ１６０６において、候補連絡先のエンドポイントを突き止めることができる。たとえば、招待サービス３２６（図３）は、連絡先ロケーションサービス３２２と相互作用して、候補連絡先の一組の有効なエンドポイントを決定することができる。
【０１０７】
ステップ１６０８において、候補連絡先の既知のエンドポイントの中から１つの候補エンドポイントを選択することができる。ステップ１６１０において、候補エンドポイントとの通信接続を確立することができる。たとえば、この接続は、接続性サービス３１６（図３）で確立することができる。ステップ１６１２において、招待は、たとえば招待メッセージ１３２２（図１３）により候補エンドポイントへ送信することができる。
【０１０８】
ステップ１６１４において、候補エンドポイントがさらに存在するか否かを判断することができる。候補エンドポイントがさらに存在する場合、プロシージャは、ステップ１６０８に戻って、次の候補エンドポイントを選択することができる。候補エンドポイントがそれ以上存在しない場合、プロシージャはステップ１６１６に進むことができる。ステップ１６１６において、候補連絡先がさらに存在するか否かを判断することができる。候補連絡先がさらに存在する場合、プロシージャは、ステップ１６０２に戻って、次の候補連絡先を選択することができる。候補連絡がそれ以上存在しない場合、招待は、送信されたものと考えることができる。
【０１０９】
４つのシナリオの「一般から」の部分及び「特定から」の部分を説明してきたが、次に、「一般へ」の部分及び「特定へ」の部分を図１７及び図１８に関してそれぞれ説明する。図１７は、本発明の一実施形態による一般招待ユーザインターフェースからの協同招待に応答するためのステップの例を示している。協同招待が複数のエンドポイントへ送信された場合、図１７及び／又は図１８に示すステップを各エンドポイントで実行することができる。
【０１１０】
ステップ１７０２において、コラボレーションサービスプラットフォーム３０２（図３）の標準通信ポートで協同招待を受信することができる。たとえば、招待メッセージ１３２２（図１３）は、協同サービスプラットフォーム３０２用に予約されたＴＣＰ／ＩＰポートに到着することができ、招待サービス３２６によって監視することができる。
【０１１１】
ステップ１７０４において、エンドポイントが、招待に関連するアクティビティに参加できるか否かを判断することができる。たとえば、招待サービス３２６（図３）は、招待メッセージ１３２２（図１３）の機能識別子（複数可）を、招待サービス３２８に登録されている機能と比較することができる。代替的に、エンドポイントのユーザに関連するＭｅＣｏｎｔａｃｔオブジェクト４０６（図４）に、それに関連する一組の機能オブジェクト４１２について照会することができ、それらの機能オブジェクト４１２を招待メッセージ１３２２の機能識別子（複数可）と比較することができる。エンドポイントが、招待に関連するアクティビティに参加できると判断された場合、プロシージャはステップ１７０６に進むことができる。参加できないと判断された場合、プロシージャはステップ１７０８に進むことができる。
【０１１２】
ステップ１７０６において、ユーザは、招待を受け付け、辞退、又は無視することができる。たとえば、招待サービス３２６（図３）は、受け付け、辞退、又は無視の決定に対応するユーザインターフェースエレメントを有する一般招待ユーザインターフェースを表示することができる。ユーザは、対応するユーザインターフェースエレメントを選択することによって招待を受け付け、辞退、又は無視することができる。ユーザが招待を受け付ける場合、プロシージャはステップ１７１０に進むことができる。ユーザが招待を辞退する場合、プロシージャはステップ１７０８に進むことができる。ユーザが招待を無視する場合、プロシージャはステップ１７１２に進むことができる。
【０１１３】
ステップ１７０８において、招待が辞退されたことを示す応答メッセージ１３２４（図１３）を送信することができる。たとえば、応答メッセージ１３２４は、招待サービス１４００のアプリケーションプログラミングインターフェースの招待応答エレメント１４１２（図１４）により送信することができる。同様に、ステップ１７１２において、ユーザが招待を無視することを選んでいることを示す応答メッセージ１３２４を送信することができる。また、招待エレメント１４１２は、この応答を送信するのに使用することもできる。本発明の一実施形態では、明示的な無視の応答を送信できることによって、協同サービスプラットフォーム３０２（図３）の効率が高められる。
【０１１４】
ステップ１７１０において、協同アクティビティに関連する協同アプリケーション１３２０（図１３）による取り出しのために、受け付けられた招待の詳細を記憶することができる。たとえば、招待メッセージ１３２２の内容の一部又は全部は、招待サービス３２６（図３）が、アプリケーションプログラミングインターフェースの招待エレメント１４０２（図１４）により記憶することができる。ステップ１７１４において、招待サービス３２６は、協同アプリケーション１３２０を開始することができる。
【０１１５】
ステップ１７１６において、招待の受け付けを示す応答メッセージ１３２４（図１３）は、たとえば、招待サービス１４００のアプリケーションプログラミングインターフェースの招待応答エレメント１４１２を利用して送信することができる。ステップ１７１６からステップ１７１８に進む際に、実行制御は、ステップ１７１４で開始された協同アプリケーション１３２０に移動することができる。代替的に、協同アプリケーション１３２０は、並列の実行スレッドで開始することができ、スレッドは必要に応じて同期され、ステップ１７０２で招待を受信した招待サービススレッドは、ステップ１７１６で応答した後に終了することができる。
【０１１６】
ステップ１７１８において、協同アプリケーション１３２０（図１３）は、ステップ１７１０で記憶された招待の詳細を読み出すことができる。たとえば、記憶された招待の詳細は、コラボレーションアプリケーション１３２０の或る構成（再構成）になる場合がある。この時点で、コラボレーションアプリケーション１３２０は、協同アクティビティへの参加の開始の準備ができている場合があり、ステップ１７２０において、協同アクティビティへの参加を開始することができる。
【０１１７】
図１８は、本発明の一実施形態による特定のアプリケーションユーザインターフェースからの協同招待に応答するためのステップの例を示している。ステップ１８０２において、協同アプリケーションを開始することができる。たとえば、協同アプリケーション１３２０（図１３）は、コンピュータオペレーティングシステム１３０４が従来の方法で開始することができる。ステップ１８０４において、協同アプリケーション１３２０は、非標準のアプリケーション特有のコラボレーション通信ポートに招待リスナを作成することができる。たとえば、協同アプリケーション１３２０は、招待サービス１４００のアプリケーションプログラミングインターフェースの招待リスナ作成エレメント１４０４（図１４）を利用して、協同サービスプラットフォーム３０２（図３）用に予約されたポートとは異なるＴＣＰ／ＩＰポートに招待リスナを作成することができる。
【０１１８】
しばらくして、ステップ１８０６において、非標準ポートで協同招待を受信することができる。たとえば、ステップ１５１４（図１５）で送信された招待メッセージ１３２２（図１３）は、アプリケーション特有のポート及び／又はエンドポイントへ送信されたものである場合がある。ステップ１８０８において、協同アプリケーション１３２０のユーザは、招待を受け付け、辞退、又は明示的に無視することができる。たとえば、協同アプリケーション１３２０は、受け付け、辞退、及び無視の決定に対応するユーザインターフェースエレメントを有するユーザインターフェースを表示することができる。ユーザは、次に、対応するユーザインターフェースエレメントを選択することによって、所望の応答を選ぶことができる。ユーザが招待を受け付ける場合、プロシージャはステップ１８１０に進むことができる。ユーザが招待を辞退する場合、プロシージャはステップ１８１２に進むことができる。ユーザが招待を明示的に無視する場合、プロシージャはステップ１８１４に進むことができる。
【０１１９】
ステップ１８１０、１８１２、及び１８１４のそれぞれにおいて、適切な招待応答を招待者へ送信することができる。各ステップ１８１０、１８１２、及び１８１４は、たとえば、招待サービス１４００の招待応答エレメント１４１２（図１４）を利用して、受け付け、辞退、又は無視にそれぞれ設定された招待応答動作で応答メッセージ１３２４（図１３）を送信することができる。所望のコラボレーションアプリケーション１３２０（図１３）はすでに開始されているので、招待が受け付けられた場合、協同アクティビティは、ステップ１８１６でさらに遅延することなく開始することができる。
【０１２０】
次に、協同プレゼンスパブリケーションの方法の例をより詳細に説明する。詳細には、サーバレスプレゼンスパブリケーション、すなわち、専用化されたサーバコンピュータの必要性とは独立である協同プレゼンス情報を公開できることは、本発明の一実施形態において有利である。たとえば、サーバレスネットワークコンピューティング環境、ピアツーピアネットワーク、又はオーバーレイネットワークは、専用化されたサーバコンピュータを必要とするネットワーク及びネットワークアプリケーションよりも優れたスケーラビリティを提供することができる。ネットワークコンピューティング環境２００（図２）は、ピアツーピアネットワーク又はオーバーレイネットワークをサポートすることができる。コンピュータ２０４、２０６、２０８、２１２、２１４、及び２１６のそれぞれは、ピアツーピアネットワークの１つ又は複数のピアをサポートすることができる。各ピアは、協同エンドポイントとすることができ、エンドポイントオブジェクト４１０（図４）のインスタンスに関連付けることができる。
【０１２１】
上述したように、協同プレゼンスは、プレゼンスオブジェクト４０４（図４）によって表すことができる。プレゼンスオブジェクト４０４のすべてを含めて、プレゼンスオブジェクト４０４のあらゆる適した部分を協同サービスプラットフォーム３０２（図３）のユーザに公開することができる。加えて、エンドポイントオブジェクト４１０、機能オブジェクト４１２、及びより一般的な公開オブジェクト４１８を含めて、プレゼンスオブジェクト４０４のインスタンスによって参照されるプログラマティックオブジェクトのインスタンスを公開することができる。
【０１２２】
一方、本発明の一実施形態では、通常、１回の公開では十分ではない。プレゼンス情報は変化する場合がある。たとえば、公開オブジェクト４１８は、協同アプリケーションによって更新される場合があり、特定のエンドポイントに関連する集約ステータス及び／又はプレゼンスステータスは、その日を通して変化する場合があり、エンドポイントは、たとえば、ネットワーク無線デバイスがオン及びオフにされたり、無線ネットワークカバレッジエリアの内外に移動したりすることによって、特定の連絡先のプレゼンスから追加又は削除される場合があり、エンドポイント機能は、新しい協同アプリケーションがインストールされると変化する場合がある。効果的なコラボレーションは、更新が一貫しているプレゼンス情報を必要とする場合がある。本発明の一実施形態では、協同プレゼンス情報は、プレゼンスサブスクライブメッセージ及びプレゼンス通知メッセージで、ネットワークコンピューティング環境２００（図２）等のサーバレスネットワークコンピューティング環境に配信される。
【０１２３】
図１９は、本発明の一実施形態によるサーバレスプレゼンス公開に参加するためのステップの例を示している。ステップ１９０２において、コンピュータユーザは、コンピュータのオペレーティングシステム（ＯＳ）で認証することができる。たとえば、ユーザは、ネットワークコンピューティング環境２００のコンピュータ２０４、２０６、２０８、２１２、２１４、又は２１６（図２）のうちの１つにログインすることができる。適したコンピュータオペレーティングシステムには、「MICROSOFT WINDOWS（登録商標）」コンピュータオペレーティングシステム又は「UNIX（登録商標）」コンピュータオペレーティングシステムのあらゆる適したバージョン等、協同サービスプラットフォーム３０２（図３）をサポートできるコンピュータオペレーティングシステムが含まれる。コンピュータオペレーティングシステムで認証することによって、コンピュータユーザのコンピュータ認識されたアイデンティティを確立することができ、詳細には、コンピュータユーザをＭｅＣｏｎｔａｃｔオブジェクト４０６（図４）のインスタンスに関連付けることができる。
【０１２４】
ステップ１９０４において、協同サービスプラットフォーム３０２のパブリケーションサービス３０６（図３）との通信を初期化することができる。上述したように、パブリケーションサービス３０６はサーバレスとすることができる。たとえば、ステップ１９０４において、コンピュータユーザは、パブリケーションサービス３０６を組み込むピアツーピア（Ｐ２Ｐ）ネットワークに参加することができる。ステップ１９０６において、コンピュータユーザに関連するＭｅＣｏｎｔａｃｔオブジェクト４０６（図４）に含まれ且つ／又はＭｅＣｏｎｔａｃｔオブジェクト４０６（図４）によって参照されるデータの一部又は全部を、たとえば、１つ又は複数のプレゼンス通知メッセージでパブリケーションサービス３０６に公開することができ、したがって、コンピュータ及び協同サービスプラットフォーム３０２のユーザの協同プレゼンスを確立することができる。
【０１２５】
ステップ１９０８において、連絡先ストア３１８（図３）との通信を初期化することができる。たとえば、連絡先ストアは、データベース等の従来のデータストアとすることができ、連絡先ストア３１８との通信を初期化することは、そのデータストアとの通信セッションを確立することを含むことができる。ステップ１９１０において、ユーザのバディクラス連絡先について、連絡先ストア３１８に照会することができる。本発明の一実施形態では、連絡先ストア３１８に照会することは、ＭｅＣｏｎｔａｃｔオブジェクト４０６のバディエレメント９０４（図９）に含まれる連絡先オブジェクト４０２（図４）への１つ又は複数の参照子をデリファレンスすることを含む。
【０１２６】
ステップ１９１２において、たとえば、図２０及び図２１に関して詳細に後述するようなプレゼンスサブスクライブメッセージで、バディクラス連絡先のプレゼンスへのサブスクリプションを配置することができる。ステップ１９１４において、サブスクリプションに応答して、プレゼンス更新通知を受信することができる。たとえば、関連するサブスクリプションを有するプレゼンスに変化が発生した時に、プレゼンス通知メッセージを、ピアツーピアネットワークを通じて送信することができる。
【０１２７】
図２０は、本発明の一実施形態によるプレゼンスサブスクリプションを配置するためのステップの例を示している。たとえば、図２０によって示されたステップは、ステップ１９１２（図１９）の一部として実行することができる。サブスクリプションが配置されることになる一組のバディクラス連絡先は、たとえば、ステップ１９１４等から入手可能とすることができる。ステップ２００２において、次の候補バディクラス連絡先をその一組から選択することができる。
【０１２８】
ステップ２００４において、バディクラス連絡先の検索を行うことができる。たとえば、ピア名前解決プロトコル（ＰＮＲＰ）を利用して、ピアツーピアネットワークのバディクラス連絡先に関連するエンドポイントを突き止めることができる。これに代えて又はこれに加えて、連絡先の検索は、サブネット２１８（図２）等のローカルネットワーク区画全体にわたって行うことができる。あらゆる適したネットワーク区画を確立することができ、且つ／又は、連絡先を求めてあらゆる適したネットワーク区画を検索することができる。
【０１２９】
この検索は成功しない場合がある。たとえば、バディクラス連絡先は、関連するエンドポイントをピアツーピアネットワーク及び／又はローカルネットワーク区画に有しない場合がある。ステップ２００６において、バディクラス連絡先が見つかったか否かを判断することができる。たとえば、ピア名前解決プロトコルが、ピアツーピアネットワークにおける関連する協同エンドポイント（たとえば、ピア）へのバディクラス連絡先の名前の解決に成功する場合もあるし、バディクラス連絡先の関連するエンドポイント（たとえば、ＴＣＰ／ＩＰアドレス及び通信ポート番号）を識別する、ローカルネットワーク区画全体を通じてブロードキャストされたメッセージに対する返答が受信される場合もある。バディクラス連絡先が見つかった場合、プロシージャはステップ２００８に進むことができる。そうでない場合、たとえば、連絡先はバディとして分類されているので、存在しないことは一時的であると仮定することができ、プロシージャは、ステップ２０１０に進むことができる。
【０１３０】
バディとして分類されることによって、連絡先が通常はアクティブな協同参加者であるという仮定がもたらされる場合があるので、本発明の一実施形態では、欠けているバディクラス連絡先を定期的に検索することで、計算資源及びネットワーク資源に対する要求が増加するにもかかわらず、協同サービスプラットフォーム３０２（図３）が妥当な機構となるように、その有効性が高められる。プロシージャは、検索と検索との間、ステップ２０１０において待機することができる。たとえば、検索と検索との間の期間は１０分とすることができる。ステップ２０１０は、待機及び場合によってはその後のステップを別個の実行スレッドで行うことができることを示すために破線２０１２により囲まれている。待機ステップ２０１０の別個の実行スレッドのインスタンスが作成された後、メインの実行スレッドはステップ２０１４に進むことができる。
【０１３１】
バディクラス連絡先が見つかると、ステップ２００８において、プレゼンスサブスクライブメッセージを、連絡先に関連するエンドポイント、たとえば、ステップ２００４で見つかったエンドポイントへ送信することができる。プレゼンスサブスクライブメッセージは、連絡先に関連する協同プレゼンス情報の一部又は全部へのサブスクリプションを指定することができる。たとえば、プレゼンスサブスクライブメッセージは、プレゼンスオブジェクト６００のアプリケーションプログラミングインターフェースのリッチテキスト記述エレメント６０２（図６）、エンドポイントエレメント６０４、集約ステータスエレメント６０６、集約機能エレメント６０８、及び公開オブジェクトエレメント６１０の１つ又は複数を通じてアクセス可能なプレゼンス情報へのサブスクリプションを指定することができる。たとえば、ステップ１９１４（図１９）において、このサブスクリプションによってカバーされるプレゼンスの一部が変化した時にのみ、このサブスクリプションに応答して送信されるプレゼンス通知メッセージを送信すればよく、このプレゼンス通知メッセージは、変化したプレゼンス情報の部分を含むものであればよい。
【０１３２】
ステップ２０１４において、一組のバディクラス連絡先にバディクラス連絡先がさらに存在するか否かを判断することができる。このような連絡先がさらに存在する場合、プロシージャは、ステップ２００２に戻って次の連絡先を一組から選択することができる。存在しない場合、プロシージャは、ステップ１９１４（図１９）及び／又は図２１のステップ２１０２等のさらなるステップに進むことができる。
【０１３３】
図２１は、本発明の一実施形態によるプレゼンスサブスクリプションを受け付けるためのステップの例を示している。ステップ２１０２において、プレゼンスサブスクライブメッセージを受信することができる。たとえば、これは、ステップ２００８（図２０）で送信されたプレゼンスサブスクライブメッセージとすることができる。ステップ２１０４において、プレゼンスサブスクライブメッセージの送信側に関連する連絡先情報を取り出すことができる。たとえば、プレゼンスサブスクライブメッセージは、送信側に関連する連絡先オブジェクト４０２（図４）のインスタンスを参照することができる。プレゼンスサブスクライブメッセージの受信側は、コンタクト管理サービス３０４（図３）により送信側の連絡先情報を取り出すことができる。
【０１３４】
ステップ２１０６において、サブスクリプションポリシーがプレゼンスサブスクリプションメッセージの送信側について確立されているか否かを判断することができる。たとえば、コンタクト管理サービス３０４（図３）によって管理される送信側に関連する連絡先情報は、送信側とその送信側のサブスクリプションポリシーとの間の関連付けを含むことができる。代替的に、サブスクリプションポリシーは、すべてのサブスクライバについて、又は、送信側がメンバーである、サブスクライバの或るグループについて適切なものとすることができる。
【０１３５】
簡単なサブスクリプションポリシーの例には、阻止及び許可が含まれる。すなわち、連絡先からのサブスクリプション要求の阻止又は連絡先からのサブスクリプション要求の許可が含まれる。本発明の一実施形態では、送信側のサブスクリプションポリシーは、受信側に関連するＭｅＣｏｎｔａｃｔオブジェクト４０６のインスタンスの認可サブスクライバエレメント９０６（図９）によって参照される一組の連絡先オブジェクト４０２（図４）のインスタンスによって決定される。送信側に関連する連絡先オブジェクト４０２のインスタンスが、認可サブスクライバエレメント９０６によって参照される一組に存在する場合には、その送信側は許可され、そうでない場合には、その送信側は阻止される。
【０１３６】
本発明の一実施形態では、より洗練されたサブスクリプションポリシーが可能である。たとえば、より洗練されたサブスクリプションポリシーは、サブスクライバのプレゼンス情報の１つ又は複数のサブセットへのサブスクリプションの阻止及び／又は許可を行うことができる。プレゼンスオブジェクト６００の集約ステータス６０６（図６）及びリッチテキスト記述６０２へのサブスクリプションを許可し、且つ、他のプレゼンスオブジェクトエレメント６０４、６０８、６１０へのサブスクリプションを阻止することは、１つの可能な例である。プレゼンスオブジェクトエレメント６０２、６０４、６０６、６０８、及び６１０、並びに／又は、プレゼンスオブジェクトエレメント６０２、６０４、６０６、６０８、及び６１０によって参照されるプログラマティックオブジェクト４１０、４１２、４１８のすべてを含めて、あらゆる適したサブセットは、サブスクリプションポリシー及び／又はサブスクリプションの対象とすることができる。
【０１３７】
サブスクリプションポリシーが、サブスクリプションメッセージの送信側について適切なものとされている場合、プロシージャはステップ２１０８に進むことができる。そうでない場合、プロシージャはステップ２１１０に進むことができる。ステップ２１１０において、サブスクリプションの対象である協同プレゼンスに関連する協同サービスプラットフォーム３０２（図３）のユーザに、プレゼンスサブスクリプションメッセージの送信側に関するサブスクリプションポリシーについて照会することができる。たとえば、パブリケーションサービス３０６は、送信側に関連する連絡先情報並びに阻止及び許可等のサブスクリプションポリシーの選択肢を表示するユーザインターフェース（たとえば、グラフィカルユーザインターフェース、すなわちＧＵＩ）を提示することができる。ユーザは、その後、そのユーザインターフェースで、送信側のサブスクリプションポリシーを選択することができる。
【０１３８】
ステップ２１１２において、ユーザによって選択されたサブスクリプションポリシーを送信側について設定することができる。たとえば、サブスクリプションポリシーを、協同サービスプラットフォーム３０２のコンタクト管理サービス３０４（図３）を通じて送信側に関連付けることもできるし、送信側に関連する連絡先オブジェクト４０２（図４）のインスタンスへの参照子を、受信側に関連するＭｅＣｏｎｔａｃｔオブジェクト４０６のインスタンスの認可サブスクライバエレメント９０６（図９）によって保持された一組の参照子に追加することもできる。ステップ２１０８において、確立された送信側に関するサブスクリプションポリシーにより、そのサブスクリプションポリシーがサブスクリプションを阻止することになるか否かを判断することができる。サブスクリプションポリシーが、送信側からのサブスクリプションを阻止することになる場合、プロシージャはステップ２１１４に進むことができる。そうでない場合、プロシージャはステップ２１１６に進むことができる。
【０１３９】
ステップ２１１６において、協同プレゼンスサブスクリプションを受け付けることができる。たとえば、プレゼンスサブスクリプションメッセージによって指定されたサブスクリプションは、コンタクト管理サービス３０４（図３）を通じて、受信側に関連するＭｅＣｏｎｔａｃｔオブジェクト４０６に関連付けることができる。本発明の一実施形態では、プレゼンスサブスクリプションメッセージによって指定されたサブスクリプションは、送信側に関連する連絡先オブジェクト４０２（図４）のインスタンスを、受信側に関連するＭｅＣｏｎｔａｃｔオブジェクト４０６のインスタンスのアクティブサブスクライバエレメント９０８（図９）によって参照される一組の連絡先オブジェクト４０２のインスタンスに追加することにより、受け付けられる。サブスクリプションが、許可及び阻止よりも複雑な場合、プレゼンスサブスクリプションメッセージによって指定されたサブスクリプションは、受け付けられる前に、送信側に関連するサブスクリプションポリシーに関してフィルタリングすることができる。たとえば、サブスクリプションが、すべてのプレゼンス情報に対するものであるが、サブスクリプションポリシーがサブスクリプションを集約ステータスに限定している場合、受け付けられたサブスクリプションは、集約ステータスのみに対するものとなる。ステップ２１０８及び２１１６は、合わせて、サブスクリプションがサブスクリプションポリシーに従って受け付けられることを確実にすることができる。
【０１４０】
ステップ２１１４において、プレゼンスサブスクライブメッセージの送信側が受信側のバディクラス連絡先であるか否かを判断することができる。たとえば、受信側に関連するＭｅＣｏｎｔａｃｔオブジェクト９００のバディエレメント９０４（図９）によって参照される一組の連絡先オブジェクト４０２（図４）のインスタンスは、プレゼンスサブスクライブメッセージの送信側に関連する連絡オブジェクト４０２のインスタンスについてチェックを受けることができる。パブリケーションサービス３０６（図３）は、プレゼンスサブスクライブメッセージの送信側が受信側のバディクラス連絡先であるか否かを、コンタクト管理サービス３０４により判断することができる。プレゼンスサブスクライブメッセージの送信側が、受信側のバディクラス連絡先である場合、プロシージャはステップ２１１８に進むことができる。そうでない場合、プロシージャはステップ２１２０に進むことができる。
【０１４１】
プレゼンスサブスクライブメッセージの送信側が、受信側のバディクラス連絡先であると判断されると、ステップ２１１８において、プレゼンスサブスクライブメッセージの受信側が、送信側のプレゼンスに現在サブスクライブされているか否かを判断することができる。たとえば、パブリケーションサービス３０６（図３）のアプリケーションプログラミングインターフェースは、指定された連絡先によって配置された一組のサブスクリプションの列挙を可能にするサブスクリプション列挙エレメントを有することができ、この一組のサブスクリプションは、送信側のプレゼンスに対して配置されたサブスクリプションについてチェックを受けることができる。これに代えて又はこれに加えて、受信側に関連するＭｅＣｏｎｔａｃｔオブジェクト４０６（図４）のインスタンスのバディエレメント９０４（図９）によって参照される連絡先情報は、各バディクラス連絡先について、プレゼンスサブスクリプションがその連絡先によって受け付けられたか否かについての表示を含むことができる。
【０１４２】
プレゼンスサブスクライブメッセージの受信側が、現在、送信側のプレゼンスにサブスクライブされていると判断された場合、プロシージャはステップ２１２０に進むことができる。そうでない場合、受信側は、ステップ２１２２において、送信側のプレゼンスにサブスクライブすることができる。たとえば、プレゼンスサブスクライブメッセージの受信側は、送信側を検索する、図２０に関して上述したステップを事前に実行している場合があるが、送信側がオンラインでなく、受信側は、再び検索する前にステップ２０１０（図２０）で待機している場合がある。現在では、送信側は、オンラインになっており、プレゼンスサブスクリプションメッセージをすでに送出している。待機し続け、そして、送信側を再び検索する計算資源及びネットワーク資源を費やし続けるのではなく、本発明の一実施形態では、受信側は、返信のプレゼンスサブスクライブメッセージにより、バディクラス連絡先からのプレゼンスサブスクライブメッセージに応答することができる。ステップ２１２２において、ステップ２００８（図２０）について上述したように、返信のプレゼンスサブスクライブメッセージをバディクラス連絡先へ送信することができる。
【０１４３】
ステップ２１２０において、１つ又は複数のプレゼンス通知メッセージを、ステップ２１１６で受け付けられたプレゼンスサブスクリプションに従って、プレゼンスサブスクライブメッセージの送信側へ送信することができる。初期プレゼンス通知メッセージは、受け付けられたサブスクリプションと一致するすべてのプレゼンス情報、又は、たとえば、受信側がすでに処理していることが判明しているプレゼンス情報にわたる一組のプレゼンスの差異を含むことができる。初期プレゼンス通知メッセージに続いて、追加のプレゼンス通知メッセージを送信して、協同プレゼンスの更新をサブスクライバに通知することができる。たとえば、特定の協同サービスプラットフォーム３０２（図３）のユーザの協同プレゼンスに対する１つ又は複数の更新の後、１つ又は複数のプレゼンス通知メッセージをパブリケーションサービス３０６（図３）へ送信することができる。ユーザのプレゼンスへの各サブスクリプションについて、パブリケーションサービス３０６は、プレゼンス通知メッセージによって参照されるプレゼンス情報の１つ又は複数のサブセットがサブスクリプションと一致するか否かを判断することができる。一致する各サブスクリプションについて、パブリケーションサービス３０６は、サブスクリプションを配置した協同サービスプラットフォーム３０２のユーザへプレゼンス通知メッセージを伝達することができる。
【０１４４】
刊行物、特許出願、及び特許を含めて、本明細書で引用されたすべての参考文献は、あたかも、各参考文献が、個々に且つ具体的に参照により援用されるように示され、その全内容が本明細書で述べられたのと同程度に参照により本明細書に援用される。
【０１４５】
本発明の説明の文脈（特に、添付の特許請求の範囲の文脈）において、「１つの」（"a" and "an"：「或る」）、及び「その」（"the"：「この」、「該」、「前記」）という用語、並びに類似の指示対象の使用は、本明細書で特に指定されていないか又は文脈によって明らかに否定されていない限り、単数形及び複数形の双方をカバーするように解釈されるべきである。「備える」、「有する」、「含む」、及び「包含する」という用語は、特に注記されていない限り、制約のない用語（すなわち、「〜を含むが、これらに限定されるものではない」を意味する）として解釈されるべきである。本明細書における値の範囲の列挙は、特に本明細書で指定されていない限り、単に、その範囲内に含まれる個々の各値を個別に参照する簡潔な表現方法として機能することのみを目的としており、個々の各値は、あたかもその値が本明細書で個別に列挙されているように本明細書に援用される。本明細書で説明したすべての方法は、本明細書で特に指定されていないか又は特に文脈によって明らかに否定されていない限り、任意の適した順序で実行することができる。本明細書に提供されたありとあらゆる例、又は、例示の用語（たとえば、「〜等」（"such as"：「〜のような」））の使用は、単に、本発明をより良く明らかにすることのみを目的としており、特に主張されていない限り、本発明の範囲の限定を主張するものではない。本明細書のどの用語も、特許請求の範囲に記載された要素を示すものでない場合は、本発明の実施に不可欠なものと解釈されるべきではない。
【０１４６】
本明細書では、本発明を実行するための、本発明者らに知られている最良の形態を含めて、本発明の好ましい実施形態が説明されている。それらの好ましい実施形態の変形は、上記説明を読むことによって当業者には明らかになり得る。本発明者らは、当業者がこのような変形を適宜使用すると考え、本発明者らは、本発明が、本明細書で具体的に説明したものとは別の方法で実施されることを意図している。したがって、本発明は、適用可能な法律によって許容される限り、本明細書に添付された特許請求の範囲に列挙した主題のすべての変更及び均等物を含む。その上、本発明のすべての可能な変形における上述した要素のあらゆる組み合わせは、本明細書で特に指定されていないか又は文脈によって明らかに否定されていない限り、本発明によって包含される。
【図面の簡単な説明】
【０１４７】
【図１】本発明の一実施形態を実施するのに使用可能な１つの例示的なコンピュータシステムを一般的に示す概略図である。
【図２】本発明の一実施形態を組み込むのに適した一例のネットワークコンピューティング環境を示す概略図である。
【図３】本発明の一実施形態による、コラボレーションサービスプラットフォームの一例のコンピュータソフトウェアアーキテクチャを示すブロック図である。
【図４】本発明の一実施形態による、一例の一組のコラボレーションオブジェクト及び一例のコラボレーションオブジェクトモデルを示すオブジェクトモデル化図である。
【図５】本発明の一実施形態による、一例の連絡先オブジェクトを示すオブジェクトインターフェース図である。
【図６】本発明の一実施形態による、一例のプレゼンスオブジェクトを示すオブジェクトインターフェース図である。
【図７】本発明の一実施形態による、一例の公開オブジェクトを示すオブジェクトインターフェース図である。
【図８】本発明の一実施形態による、一例の機能オブジェクトを示すオブジェクトインターフェース図である。
【図９】本発明の一実施形態による、一例のＭｅＣｏｎｔａｃｔオブジェクトを示すオブジェクトインターフェース図である。
【図１０】本発明の一実施形態による、一例の会議オブジェクトを示すオブジェクトインターフェース図である。
【図１１】本発明の一実施形態による、コラボレーションサービスプラットフォームによって実行されるステップの例を示すフローチャートである。
【図１２】本発明の一実施形態による、コラボレーションサービスプラットフォームによって実行されるさらなるステップの例を示すフローチャートである。
【図１３】本発明の一実施形態による、一例の招待のシナリオを示す概略図である。
【図１４】本発明の一実施形態による、一例の招待サービスのアプリケーションプログラミングインターフェースを示す概略図である。
【図１５】本発明の一実施形態による、招待を送信するためのステップの例を示すフローチャートである。
【図１６】本発明の一実施形態による、招待を送信するために招待サービスによって実行されるステップの例を示すフローチャートである。
【図１７】本発明の一実施形態による、一般招待ユーザインターフェースからの招待に応答するためのステップの例を示すフローチャートである。
【図１８】本発明の一実施形態による、アプリケーション特有のユーザインターフェースからの招待に応答するためのステップの例を示すフローチャートである。
【図１９】本発明の一実施形態による、サーバレスプレゼンス公開に参加するためのステップの例を示すフローチャートである。
【図２０】本発明の一実施形態による、協同プレゼンスサブスクリプションを配置するためのステップの例を示すフローチャートである。
【図２１】本発明の一実施形態による、協同プレゼンスサブスクリプションを受け付けるためのステップの例を示すフローチャートである。
【図１】
2008539506.tif 000003
【図２】
2008539506.tif 000004
【図３】
2008539506.tif 000005
【図４】
2008539506.tif 000006
【図５】
2008539506.tif 000007
【図６】
2008539506.tif 000008
【図７】
2008539506.tif 000009
【図８】
2008539506.tif 000010
【図９】
2008539506.tif 000011
【図１０】
2008539506.tif 000012
【図１１】
2008539506.tif 000013
【図１２】
2008539506.tif 000014
【図１３】
2008539506.tif 000015
【図１４】
2008539506.tif 000016
【図１５】
2008539506.tif 000017
【図１６】
2008539506.tif 000018
【図１７】
2008539506.tif 000019
【図１８】
2008539506.tif 000020
【図１９】
2008539506.tif 000021
【図２０】
2008539506.tif 000022
【図２１】
2008539506.tif 000023
【国際調査報告】
2008539506.tif 000024
2008539506.tif 000025