ユーザ装置をプロビジョニングするシステム及び方法
【課題】通信ネットワーク内で1つ以上のユーザ装置を接続するための複数のエントリーポイントを与えるシステム及び方法を提供する。
【解決手段】本発明の方法は、1つ以上のユーザ装置と通信するサーバーを用意するステップであって、サーバーが接続データセットを含み、且つ1つ以上のユーザ装置が接続データセットの部分を共有するようにしたステップと、複数のエントリーポイントの1つから接続データセットにアクセスする要求をユーザ装置から受け取るステップと、ユーザ装置の属性を自動的に決定するステップと、ユーザ装置の属性を使用して所定のクライアント装置のデータベースから通信メソッドを選択するステップと、この通信メソッドに基づいてユーザ装置をプロビジョニングするステップと、を備えている。
【解決手段】本発明の方法は、1つ以上のユーザ装置と通信するサーバーを用意するステップであって、サーバーが接続データセットを含み、且つ1つ以上のユーザ装置が接続データセットの部分を共有するようにしたステップと、複数のエントリーポイントの1つから接続データセットにアクセスする要求をユーザ装置から受け取るステップと、ユーザ装置の属性を自動的に決定するステップと、ユーザ装置の属性を使用して所定のクライアント装置のデータベースから通信メソッドを選択するステップと、この通信メソッドに基づいてユーザ装置をプロビジョニングするステップと、を備えている。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、通信ネットワークにおいて1つ以上のユーザ装置にサービスを提供するための分野に係る。より詳細には、本発明は、ユーザ装置をプロビジョニングするためのシステム及び方法に係る。
【0002】
関連出願へのクロスリファレンス:本願は、次の特許出願に関連している。Matthias Breuer氏等の“System and Method for Servicing a User Device”と題する米国特許出願第11/182,348号(代理人整理番号32421−2001700号);Torsten Schulz氏等の“System and Method for Synchronizing between a User Divice and a Server in a Communication Network”と題する米国特許出願第11/182,203号(代理人整理番号32421−2001800号);Venkatachary Srinivasan氏等の“An Alert Mechanism for Notifying Multiple User Devices Sharing a Connected-Data-Set”と題する米国特許出願第11/183,137号(代理人整理番号32421−2002200号);Marco Boerris氏等の“Methods and Systems for Data Transfer and Notification Mechanisms”と題する米国特許出願第11/182,614号(代理人整理番号32421−20021.00号);及びTorsten Schulz氏等の“Content Router”と題する米国特許出願第11/182,287号(代理人整理番号32421−2000900号)。これらは、参考としてここに全体を援用するものである。
【背景技術】
【0003】
通信、情報管理及び再生成のための電子装置の近年の急増で、デスクに縛られたパーソナルコンピュータとはかけ離れた日常の計算力が得られるようになった。ユーザは、セルラー電話、カメラ電話、パーソナルデジタルアシスタント(PDA)及びナビゲーションシステムのような装置を、オフィスや家庭だけではなく、田畑や道路でも使用している。このような装置には、通信、ビジネス、ナビゲーション、娯楽、及び毎日の基本的活動の管理を含む様々な範囲の用途が考えられる。多くのユーザは、今日、1つのタスクに1つの装置を使用するだけであり、例えば、セルラー電話を使用して電話コールを発信し受信する。しかしながら、これら装置は、もはや、単一機能の装置ではない。それらは、種々の形式のデータ、例えば、電子メール、音声メッセージ、写真、ビデオ、等を生成することができる。装置の機能数が増すにつれて、ユーザに対する個人化のレベルも高くなる。ユーザがどこにいようと、どんな装置を使用しようと、又、どんなサービスに接続しようと、それらのデータに接続しアクセスするための接続サービスをユーザに提供することが要望される。
【発明の概要】
【発明が解決しようとする課題】
【0004】
このような接続サービスをユーザに提供する課題の1つは、ユーザが移動装置を購入した後にその製品をプロビジョニングする必要性である。慣習的に、ユーザは、パーソナルコンピュータに接続されたクレードルを通して装置をプロビジョニングしなければならない。これは、通常、家庭やオフィスで行なわれる。プロビジョニング段階が終了するまで、ユーザは、移動装置を使用することができない。それ故、いつでもどこでも移動装置をプロビジョニングすることが要望される。
【0005】
このような接続サービスをユーザに提供する別の課題は、ユーザが既に自分のPC、PDA、セルラー電話、又は他の装置に確立している設定及びデータのセットに1つ以上のユーザ装置を接続する必要性である。例えば、ユーザは、新たな装置を取得したときに、設定及びデータのセットを既存の装置から新たな装置へコピーする必要がある。又、ユーザは、既存の装置を修理し、又は設定及びデータのセットを置き換える必要もある。又、ユーザは、ユーザ装置を紛失したり、盗難にあったり又は一時的に置き忘れたりした場合に、ユーザ装置のサービスを終了させる必要もある。
【0006】
このような接続サービスをユーザに提供する更に別の課題は、設定及びデータの共通セットを共有する1つ以上のユーザ装置に対する通信の状態をユーザに通知する必要性である。例えば、1つ以上のユーザ装置においてeメール、タスク、カレンダー事象又はアドレスブックエントリーの記憶装置にオーバーフロー状態が生じたときにユーザに通知する必要がある。
【0007】
このような接続サービスをユーザに提供する更に別の課題は、設定及びデータの共通セットを共有するサーバー及び1つ以上のユーザ装置間でデータの一貫性を維持する必要性である。例えば、サービスがサーバーにおいて、ある時間周期中、中断されたときには、サーバー及び1つ以上のユーザ装置間でデータの変更を同期させる必要がある。
【課題を解決するための手段】
【0008】
一実施形態において、通信ネットワーク内で1つ以上のユーザ装置を接続するための複数のエントリーポイントを与えるシステムは、1つ以上のユーザ装置と通信するサーバーであって、このサーバーが接続データセットを含み、且つ1つ以上のユーザ装置が接続データセットの一部分を共有するようにしたサーバーを備えている。このシステムは、更に、複数のエントリーポイントの1つから接続データセットにアクセスする要求をユーザ装置から受け取るためのロジックと、ユーザ装置の属性を自動的に決定するためのロジックと、ユーザ装置の属性を使用して所定のクライアント装置のデータベースから通信メソッドを選択するためのロジックと、その通信メソッドに基づいてユーザ装置をプロビジョニングするためのロジックとを備えている。
【0009】
別の実施形態において、通信ネットワーク内で1つ以上のユーザ装置を接続するための複数のエントリーポイントを与える方法は、1つ以上のユーザ装置と通信するサーバーを用意するステップであって、このサーバーが接続データセットを含み、且つ1つ以上のユーザ装置が接続データセットの一部分を共有するようにしたステップと、複数のエントリーポイントの1つから接続データセットにアクセスする要求をユーザ装置から受け取るステップと、ユーザ装置の属性を自動的に決定するステップと、ユーザ装置の属性を使用して所定のクライアント装置のデータベースから通信メソッドを選択するステップと、その通信メソッドに基づいてユーザ装置をプロビジョニングするステップとを備えている。
【0010】
本発明の前記特徴及び効果、並びにその付加的な特徴及び効果は、添付図面を参照した本発明の実施形態の以下の詳細な説明読んだ後に更に明確に理解されよう。
【図面の簡単な説明】
【0011】
【図1a】本発明の一実施形態による接続寿命サービスを示す図である。
【図1b】本発明の一実施形態による図1aの接続寿命サービスをサポートする接続寿命サーバーを示す図である。
【図2】本発明の一実施形態による接続寿命サーバーの装置マネージャーの実施例を示す図である。
【図3】本発明の一実施形態により未構成のアカウントグループをプロビジョニングするためのワークフローを示す図である。
【図4】本発明の一実施形態により前構成されたアカウントグループをプロビジョニングするためのワークフローを示す図である。
【図5】本発明の一実施形態により「マイクロソフトアウトルック」をプロビジョニングするワークフローを示す図である。
【図6】本発明の一実施形態により前インストールされたローダーを経て装置をプロビジョニングするワークフローを示す図である。
【図7】本発明の一実施形態によりウェブサイトを経て装置をプロビジョニングするワークフローを示す図である。
【図8】本発明の一実施形態により検証された電話番号でウェブサイトを経て装置をプロビジョニングするワークフローを示す図である。
【図9】本発明の一実施形態により検証された電話番号なしにウェブサイトを経て装置をプロビジョニングするワークフローを示す図である。
【図10】本発明の一実施形態によりActiveX装置に対してウェブサイトを経て装置をプロビジョニングするワークフローを示す図である。
【図11】本発明の一実施形態によりクライアントソフトウェアを使用してウェブサイトを経て装置をプロビジョニングするワークフローを示す図である。
【図12】本発明の一実施形態により装置の既存の同期スタックを使用してウェブサイトを経て装置をプロビジョニングするワークフローを示す図である。
【図13】本発明の一実施形態によりSMSを経て装置をプロビジョニングするワークフローを示す図である。
【図14】本発明の一実施形態によりオンラインショップを経て装置をプロビジョニングするワークフローを示す図である。
【図15】RExプロトコルフローの概要を示す図である。
【図16】異なるRExメソッドを使用してユーザ装置とサーバーとの間の対話を示すフローチャートである。
【図17】本発明の一実施形態による問合せプロセスのシーケンス図である。
【図18】本発明の一実施形態によりクライアント装置とサーバーとの間で同期をとるための同期アンカープロトコルを示す図である。
【図19】本発明の一実施形態により装置が装置タイプ識別設定を交換するときのプロセスフロー図である。
【図20】本発明の一実施形態によりゾンビ状態において装置タイプ識別以外の設定を装置が交換しようと試みるときのプロセスフロー図である。
【図21】本発明の一実施形態による通常の設定交換のためのシーケンス図である。
【図22】本発明の一実施形態によるダンプ設定のためのシーケンス図である。
【図23】本発明の一実施形態による装置とサーバーとの間のアプリケーション交換プロセスフローを示すシーケンス図である。
【図24】本発明の一実施形態によるアプリケーション交換状態遷移図である。
【発明を実施するための形態】
【0012】
ユーザ装置をプロビジョニングするための方法及びシステムが提供される。以下の説明は、当業者が本発明を実施し利用できるようにするためのものである。特定の実施形態及び応用は、一例に過ぎない。当業者であれば、ここに述べる実施例の種々の変更及び組み合せが容易に明らかであり、又、ここに述べる一般的な原理は、本発明の精神及び範囲から逸脱せずに、他の実施例及び応用に適用することができよう。従って、本発明は、ここに図示して説明する実施例に限定されず、ここに開示する原理及び特徴との最も広い一貫性が与えられるべきである。
【0013】
以下の詳細な説明の幾つかの部分は、コンピュータメモリ上で遂行できるデータビットに対するオペレーションの手順、ステップ、論理ブロック、処理、及び他の象徴的表現に関して表わされる。手順、コンピュータ実行ステップ、論理ブロック、プロセス、等は、ここでは、希望の結果を導くステップ又はインストラクションの自己一貫性シーケンスであると考えられる。ステップは、物理量の物理的操作を利用するものである。これらの量は、コンピュータシステムにおいて記憶、転送、合成、比較、その他、操作することのできる電気、磁気又は無線信号の形態をとることができる。これら信号は、しばしば、ビット、値、エレメント、記号、キャラクタ、項、数字、等と称される。各ステップは、ハードウェア、ソフトウェア、ファームウェア、又はその組み合せによって遂行することができる。
【0014】
図1aは、本発明の一実施形態による接続寿命サービス(connected-life service)を示す。この接続寿命サービスは、ユーザがそれらの接続データセット(connected-data-set)を任意の装置と共有していつどこからでもアクセスできるようにする。ユーザ装置(装置又はクライアントとも称される)は、セルラー電話、ワイヤレスパーソナルデジタルアシスタント、ナビゲーション装置、パーソナルコンピュータ、ゲームコンソール、インターネットターミナル、及びキオスクを含む。接続データセットは、eメール、連絡先、カレンダー、タスク、ノート、ピクチャー、ドキュメント、音楽、ビデオ、ブックマーク及びリンクを含む。
【0015】
異なる実施形態において、接続寿命サービスは、次の機能を提供する。1)ユーザ装置を修理し、2)第1ユーザ装置を第2ユーザ装置へ複写し、3)第1ユーザ装置を第2ユーザ装置に置き換え、及び4)ユーザ装置のサービスを終了する。ユーザ装置を修理するサービスは、1つ以上のユーザ装置の状態をリセットし、1つ以上のユーザ装置の構成及び設定を回復し、そして接続データセットを1つ以上のユーザ装置へ回復させることを含む。
【0016】
第1ユーザ装置を第2ユーザ装置へ複写するサービスは、第1ユーザ装置の構成及び設定を第2ユーザ装置へ転送し、そして接続データセットの一部分を第1ユーザ装置の設定に基づいて第2ユーザ装置へ転送することを含む。
【0017】
第1ユーザ装置を第2ユーザ装置と置き換えるサービスは、所定の構成及び設定のセットを構成データベースから第2ユーザ装置へ転送し、ここで、第2ユーザ装置は、第1装置と同じモデル、メーク及びタイプを有するものであり、そして接続データセットの部分を第2ユーザ装置の設定に基づいて第2ユーザ装置へ転送することを含む。第1ユーザ装置を第2ユーザ装置と置き換えるサービスは、更に、所定の構成及び設定のセットを構成データベースから第2ユーザ装置へ転送し、ここで、第2ユーザ装置は、第1装置と異なるモデル、メーク及びタイプを有するものであり、そして接続データセットの部分を第2ユーザ装置の設定に基づいて第2ユーザ装置へ転送することを含む。
【0018】
ユーザ装置のサービスを終了させるサービスは、ユーザ装置の構成及び設定を削除し、ユーザ装置への通信を終了し、そして他のユーザ装置へ終了状態を送信することを含む。装置の終了サービスは、装置からサービスを取り除くために適用されるだけでなく、「装置紛失」又は「装置盗難」の場合にも利用できることに注意されたい。このような場合には、ソフトウェア及び設定だけでなく、ユーザデータ(メール、アタッチメント、PIM、写真、等)も、取り除くことができる。
【0019】
更に、装置終了サービスの別の特徴は、装置の阻止である。この場合、ユーザは、装置を見つけられないが、装置を見つける機会がまだあると仮定すれば、それを紛失したか、単にどこかに置き忘れたか確実に分らない。この場合、このサービスは、ユーザから更に命令があるまで装置を阻止するか又は少なくとも装置へのデータサービスを一時的に阻止する能力をユーザに提供する。
【0020】
図1bは、本発明の一実施形態による図1aの接続寿命サービスをサポートする接続寿命サーバーを示す。接続寿命サーバー100は、異なる地理的位置にある1つ以上のコンピュータ/サーバーにより実施される。接続寿命サーバーは、ユーザがデータを生成し又は記憶する異なるコンピューティング装置(パーソナルコンピュータ102及び104、移動装置106、サーバー108、並びにウェブポータル110及び112を含む)の間で接続データセットを管理する。
【0021】
図2は、本発明の一実施形態による接続寿命サーバーの装置マネージャーの実施例を示す。装置マネージャー200は、ウェブフロントエンド202と、装置コントローラ204と、装置記述記憶装置206と、1セットのプロトコルアダプタ208とを備えている。装置マネージャーは、プロトコルアダプタ208を通してユーザ装置210と通信し、それを管理する。更に、装置マネージャーは、ユーザマネージメントユニット212及びスマートコンテンツルーティングユニット214を通して接続寿命サーバーの他の部分と通信する。ユーザマネージメントユニットは、異なるサービスからユーザ装置を管理するのに使用されることに注意されたい。このユニットは、全てのユーザが、SBC−Yahoo DSLサービスのような同じインターネットサービスプロバイダーからのものである場合には、任意である。
【0022】
装置コントローラ204は、更に、ソフトウェアマネージメントユニット216、サービスマネージャー218、設定変更ディスパッチャー220、及び装置状態記憶装置222を備えている。ソフトウェアマネージメントユニット216は、ユーザ装置に対するレコード、設定及びアプリケーションをインストールし、更新し、そしてデインストールする。サービスマネージャー218は、ユーザ装置に対してサポートされるサービスのタイプを管理する。サービスマネージャーは、ユーザ装置及び接続寿命サーバーの間で接続データセットを転送するためにスマートコンテンツルーティングユニット214へ情報を与える。設定変更ディスパッチャー220は、装置設定の変更を装置マネージャーからユーザ装置へ与える。装置状態記憶装置222は、ユーザ装置のオペレーティング状態に関する情報を記憶する。
【0023】
装置記述記憶装置206は、接続寿命サービスによりサポートされるユーザ装置210のタイプ記述224、トランスコーディング226、アカウントテンプレート228、及びサービス記述230を記憶する。装置マネージャーは、このような装置情報を装置記述記憶装置206とファイルサーバー230との間で転送する。装置マネージャーは、ユーザ装置を、タイプ記述、トランスコーディング、アカウントテンプレート、及びサービス記述の異なる組み合せに関連付けて、ユーザ装置の所定のグループに対して各組み合せをテストし検証できるようにする。その結果、異なるサービスラインがそれに対応する装置特徴を含み、そしてサービスを、異なるユーザグループに提供することができる。
【0024】
プロトコルアダプタ208は、プロビジョニングユニット232、レコード交換ユニット234、設定交換ユニット236、アプリケーション交換ユニット238、SyncMLユニット240、及び他のアダプタユニット242を備えている。上述した機能的ユニット(即ち、論理的ブロック200−244)は、ソフトウェア、ハードウェア、或いはソフトウェアとハードウェアの組み合せで実施できることに注意されたい。機能的ユニット間の相互作用については、次の章で詳細に述べる。
【0025】
ユーザ装置のプロビジョニング
一般的に、消費者が接続寿命サービスに契約できる方法は2つある。1)アカウントを登録し、その後、装置のプロビジョニングを行なう。2)装置を登録し、従って、接続寿命サービスアカウントの登録が手順に含まれる(まだアクティブでない場合)。
【0026】
2つの選択肢のうち、ユーザが接続寿命サービスに契約したときには、最初に、アカウントを登録する。接続寿命サービスは、顧客のアカウントを維持するサービスプロバイダーを通して提供される。これは、eメールアカウント、PIM記憶及び管理ファシリティ、並びに「ブリーフケース」機能、即ち写真や音楽やドキュメントや他のデータのようなユーザの他のファイルの記憶、を含むが、これらに限定されない。
【0027】
ユーザは、接続寿命サービスにより提供されるサービスについて登録するときに、それらを提供するサービスプロバイダーの既に登録された顧客としてこれを行なう。従って、接続寿命サービスの利用に対して可能となるアカウントを既に有する。アカウントのプロビジョニングの実施については、以下で述べる。次の章が含まれる。
−アカウントグループ
この章は、異なるアカウントグループ又はアカウントタイプについて述べる。異なるアカウントプロビジョニング利用ケースを理解するためには、このグループを知る必要がある。
−利用ケース
3つのアカウントプロビジョニング利用ケースがある。その各々を次の章で述べる。
【0028】
又、ユーザは、最初にそれらの装置を登録することによりアカウントを登録するオプションを有する。ここでは、装置プロビジョニングプロセスの一部分として、アカウントが自動的に生成される。
【0029】
アカウントグループ
ユーザアカウントは、グループ編成することができる。各アカウントグループは、2つ以上の方法を使用してプロビジョニングすることができる。テーブル1は、接続寿命サービスによりサポートされるサンプルアカウントグループを示す。
テーブル1
【0030】
利用ケース
アカウントグループは、接続寿命サービスに対して3つの異なる仕方でプロビジョニングすることができる。これらの利用ケースは、次の章で説明する。
1)未構成のアカウントグループをプロビジョニングする
ここでは、ユーザが登録するアカウントの詳細は、そのほとんどの部分について、接続寿命サーバー(CLS)には分らない。それ故、ユーザは、これらの詳細を手動で入力し、従って、経験のあるユーザについてのみ意図される。
2)前構成されたアカウントグループをプロビジョニングする
アカウントグループの技術的仕様がCLSに予め分るときには、アカウントのプロビジョニングは、最小限のユーザ努力しか必要としない容易な形態で行うことができる。
3)マイクロソフトアウトルックをプロビジョニングする
自分のPCに位置されたアカウントをもつことを希望するユーザについては、マイクロソフトアウトルックアプリケーションを使用する。
【0031】
未構成のアカウントグループをプロビジョニングするための必須条件は、ユーザがアウトルックリディレクタ以外のアカウントグループからのアカウントを既に有していることである。適用可能なアカウントグループは、交換、WebDAV、IMAP及びPOP3である。この利用ケースにおいて、ユーザは、アカウント/データソースを登録するために、CLSにより要求される全ての情報を特定する。これは、アカウントユーザ名及びパスワードのような通常のパラメータと、サーバーの名前及びそれらの各々のポート番号とを含む。
【0032】
これは、全部で3つの利用ケースの中で最も複雑であり、それ故、経験のあるユーザにしか推奨されない。これは、サービスプロバイダーがこれらデータソースパラメータを知らないとき、例えば、サービスプロバイダー以外のデータソースに接続することをユーザに提示する場合だけ、実施される。
【0033】
図3は、本発明の一実施形態により未構成のアカウントグループをプロビジョニングするためのワークフローを示す。ユーザは、1)サービスプロバイダーのウェブサイトにログオンし、2)適当なアカウントグループを選択し、3)アカウントのための全ての必要なパラメータを入力する。これらのステップが完了すると、CLSは、アカウントを生成する。
【0034】
図4は、本発明の一実施形態により前構成されたアカウントグループをプロビジョニングするためのワークフローを示す。前構成されたアカウントグループをプロビジョニングするための必須条件は、ユーザがアウトルックリディレクタ以外のアカウントグループからのアカウントを既に有していることである。適用可能なアカウントグループは、サービスプロバイダーにより提供されるものである。この利用ケースは、ユーザが登録を選択する前にアカウント仕様のほとんどを知ることに基づく。第1の利用ケースとは対照的に、これは、前構成されたアカウントグループのプロビジョニングを含む。即ち、アカウントの仕様のほとんどが接続寿命サーバーに既に知られており、ユーザは、アカウントを登録するためにサービスプロバイダーに対する証明書を単に入力するだけである。サーバー名、ポート番号、等の仕様は、タイプインする必要がない。
【0035】
これは、アカウントをプロビジョニングする簡単な仕方である。ユーザは、「はい、このサービスへの契約を希望します」と簡単に答えるだけでよく、その他は、接続寿命サービスにより取り扱われる。ユーザは、それらのサービスプロバイダーでログオンした後、接続寿命サービスに登録したいアカウントを選択する。
【0036】
図5は、本発明の一実施形態により「マイクロソフトアウトルック」をプロビジョニングするワークフローを示す。マイクロソフトアウトルックをプロビジョニングするための必須条件は、ユーザが自分のPCにマイクロソフトアウトルックをインストールすることである。適用可能なアカウントグループは、アウトルックリディレクタである。
【0037】
このオプションでは、ユーザは、自分のパーソナルコンピュータにデータソースとしてマイクロソフトアウトルックアプリケーションをもつよう選択できる。アカウントがサービスプロバイダーのサーバーに位置された利用ケースI及びIIとは対照的に、マイクロソフトアウトルックアカウントのプロビジョニングは、それがユーザ自身のPCにローカル配置されることを意味する。
【0038】
この方法を使用して、ユーザは、それらの交換、IMAP、又はPOPアカウントを、接続寿命サービスアカウントとして依然もつことができるが、CLSは、マイクロソフトアウトルックに接続され、プロバイダーサーバー(1つ又は複数)には接続されない。これは、アウトルックの“.pst”ファイルのローカル記憶データに接続されるか、或いは交換アカウントに接続するのにアウトルックが使用される場合には、交換プロフィールに接続され、そしてそれを通して、交換サーバーに接続される。後者のシナリオは、CLSと交換サーバーとの間のファイアウオールの問題を克服するのに使用できる。
【0039】
マイクロソフトアウトルックのプロビジョニングは、ユーザのPCにアウトルックリディレクタをインストールすることを意味する。リディレクタは、アウトルックの“.pst”ファイル/交換プロフィールと、接続寿命サーバーとの間の仲介手段として働く。アウトルックは、アカウントからデータが供給される装置としてプロビジョニングできることにも注意されたい。装置をどのようにプロビジョニングするかの詳細は、以下の章で述べる。
【0040】
図5は、本発明の一実施形態によりアウトルックをデータソースとして登録するためのワークフローを示す。アウトルックをデータソースとして登録するためのワークフローは、次の通りである。
1.ユーザは、サービスプロバイダーのウェブサイトにログオンする。
2.ユーザは、アウトルックリディレクタアカウントグループを選択する。
3.ローダーがPCにインストールされる。
4.ユーザは、PCに対するユーザ名及びパスワードを入力する。
5.アカウントがアクチベートされ、そしてクライアントソフトウェアがインストールされる。
【0041】
ユーザは、それらのアカウントの登録を完了した後に装置をプロビジョニングすることができる。或いは又、接続寿命サービスは、それらの装置及びアカウントを同時に登録する(ユーザの観点から)可能性をユーザに与える。その目的は、プロビジョニングプロセスをできるだけ容易に且つ簡単にすることである。プロビジョニングの終りに、ユーザは、アカウントのデータがそれらの装置に接続された状態で去る。装置プロビジョニングプロセスには少なくとも4つのエントリーポイントがある。
1.ユーザは、ローダーソフトウェアを受け取る。
2.ユーザは、ウェブサイトを経てエントリーする。ユーザがサービスプロバイダーのウェブサイトにログオンするか、或いはセールスアシスタント又は顧客サービス代表者(CSR)がユーザに代わってユーザを登録する(電話により店に)。
3.ユーザは、サービスプロバイダーにより指定された番号へSMSを送信する。
4.ユーザは、プロバイダーのオンラインショップにログオンする。
【0042】
更に、ユーザは、装置がそのデータの全部又は一部分を失うか、又はユーザが装置を紛失し、同じタイプの別の装置と交換する場合には、それらの装置を回復させるよう選択することができる。これらのシナリオは、全て、顧客が、接続寿命サービスを提供するサービスプロバイダーに既に登録されたユーザであると仮定している。又、ユーザが接続寿命サービスにまだ登録していない場合には、前構成されたアカウントグループをプロビジョニングするための利用ケースIIに基づいて登録される。
【0043】
図6は、本発明の一実施形態により前インストールされたローダーを経て装置をプロビジョニングするワークフローを示す。ユーザが接続寿命サービスに対して自分の装置を登録する1つの仕方は、自分の装置にローダーアプリケーションをインストールすることによるものである。ローダーは、装置のプロビジョニング及びクライアントソフトウェアのインストールを容易にするアプリケーションである。
【0044】
ローダーは、種々の仕方、即ちダウンロード、CD−ROM、SD又は他のメモリカードを経て、或いはローダーを装置に送信する他の方法で、ユーザに利用できるようにされる。ローダーは、特定の装置タイプに対して表示される(バージョン番号で)。従って、装置が登録のためにCLSに接続されるときには、サーバーは、装置のタイプや、クライアントソフトウェアをインストールする必要があるかどうかが自動的に分る。予めインストールされたローダーを経て装置をプロビジョニングするためのステップは、次の通りである。
1.ローダーが装置においてスタートする。
2.ローダーがサービスプロバイダーログオンスクリーンを表示する。
3.ユーザは、それらのアカウントのユーザ名、パスワード、及びそれらの装置の名前(例えば、My Phone)を入力する。
4.ユーザがまだサービスプロバイダーの顧客ではない場合には、プロバイダーに連絡するようユーザに求めるメッセージが表示される。
5.ユーザがまだ接続寿命サービスに契約しない場合には、それらのアカウントが自動的にアクチベートされる。
6.ユーザがそれらのアカウント証明書を与えると、ローダーは、予め決定されたサービス(交換されるデータタイプのような)及びデフォールトフィルタで構成されたクライアントソフトウェアをダウンロードする。ダウンロードは、オーバー・ジ・エア(over-the-air)でもよいし、PC接続によるものでもよいし、或いは単にローカルメモリカードから転送されてもよい。
7.CLSが装置においてサービスをアクチベートする。装置から既存のデータをインポートし(デフォールトオペレーション)、そして装置をアカウントへ接続する。アカウントにおけるレコードに必要な複写処理を遂行した後に、そこから装置へレコードを送信する。
これで、装置は、プロビジョニングされ、データを交換する準備ができる。
【0045】
図7は、本発明の一実施形態によりウェブサイトを経て装置をプロビジョニングするワークフローを示す。このシナリオでは、ユーザは、ウェブブラウザを使用して、接続寿命サービスに対してそれらの装置を登録する。これは、次のいずれかである。
−顧客に利用可能なサービスプロバイダーのウェブサイトを経て直接的に。ユーザは、ログインする。
−CSRを経て。典型的なシナリオは、ユーザがサービス/セールスホットラインにコールし、又はユーザがサービスプロバイダーの店の1つを訪問することを含み、ここで、セールスアシスタントが顧客に代わって顧客を登録するように進行する。
【0046】
ウェブブラウザを使用して装置をプロビジョニングする段階は、次の2つがある。1)装置を前プロビジョニングし、2)装置をプロビジョニングする。プロビジョニングプロセスを開始する前に、CLSは、どんな種類の装置がプロビジョニングされ、そしてそれが現在どのように(PCを経て、ワイヤレスで)接続されるか決定する。又、プロビジョニングが新しいものであるかどうか、又はユーザが装置の回復を希望するかどうかも分る。装置の回復が必要であるのは、それを紛失し新しいものに置き換えるとき、ハードリセットされてそのプログラム及びデータを失ったとき、又は別の仕方でデータを失ったときである。
【0047】
装置がCLSとで交換するタイプのデータを失った場合も、装置が以前の構成へバックアップされた場合も、装置の回復は必要でない。前者のケースでは、通常のデータ交換が行なわれ、失われたデータは、アカウントから検索される。後者のケースでは、装置をアカウントの現在状態へ戻すために低速同期が開始される。換言すれば、クライアントソフトウェアが削除された場合には、復帰が要求される。サーバーは、当該装置から全てのデータを要求し、全てのレコードをインベントリと比較して不一致を識別し、インベントリからのレコードで装置を更新する。装置の復帰は、プッシュ装置には適用されないことに注意されたい。
【0048】
サーバーがユーザ装置と同期せず且つサーバー側インベントリのバックアップが回復された場合には、サーバー側インベントリのバックアップが行われるたびに装置にチェックポイントマーカー(例えば、タイムスタンプ)を保持することにより低速同期プロセスを最適化することができる。これは、サーバーが、チェックポイントマーカーの後に変化したレコードを比較するだけでよくする。この方法は、ユーザ装置へ転送する必要のあるデータの量を減少させる。従って、低速同期プロセスの時間巾を短縮し且つその送信帯域巾の使用を軽減する。
【0049】
プロビジョニングプロセスそれ自体は、登録される装置のタイプに依存する。この点に関して、これは、次の5つのカテゴリーに入る。
1.検証された電話番号をもつプッシュ装置
2.検証された電話番号をもたないプッシュ装置
3.ActiveX−イネーブル装置
4.クライアントソフトウェアを使用する装置
5.自身の同期スタックを使用する装置
これらのプロセスは、以下の章で詳細に説明する。
【0050】
ウェブサイトを経て装置を前プロビジョニングするステップは、次の通りである。
1.ユーザがウェブサイトを通してそれらの装置のプロビジョニングをスタートできる仕方は、多数ある。ユーザは、サービスプロバイダーのコールセンターをコールするか、それらの店の1つを訪問するか、又はそれらのウェブサイトを直接的にブラウズすることができる。全てのケースにおいて、プロビジョニングは、ウェブを経て遂行される。
2.ユーザがローダーをインストールする第1の利用ケースと同様に、ユーザがまだ接続寿命サービスアカウントを有していない場合には、これが自動的に生成される。
3.装置が回復される(例えば、ハードリセットにより)場合には、装置は、装置カテゴリーに基づいてプロビジョニングされる。
4.前プロビジョニングプロセスの残り部分は、装置がCLSによりどのように検出されるかに依存し、これは、装置が現在どのように接続されるかに多くの仕方で関係している。図7は、次の3つの可能性を示している。
a.ユーザが装置を使用してブラウジングする
このケースでは、CLSは、装置のタイプを検出し、そしてユーザをローダーダウンロードページへ向けることができる。次いで、ローダーは、ユーザによりスタートされ、プロビジョニングプロセスが、図4に示すように続けられる。
b.装置のタイプがPC接続を経て検出される(又は装置がPCである)
ここでは、装置がPCに接続されるか、又はプロビジョニングされている装置がPCそれ自体である。アドミニストレーションアプリケーションは、ActiveX制御を使用して、この接続を経て装置のタイプを検出することができる。PCを経て接続された装置については、それを経てプロビジョニングが行なわれる。
i.アカウント、サービス及びフィルタが構成される(ユーザにより一部分行なわれるか又は完全自動である)。
ii.サービスプロバイダーがキャリアでない場合には、装置の電話番号が入力される。プロバイダー及びキャリアが同じである場合には、番号が既に知られている。
c.ユーザがメニューから装置のタイプを手動で選択する
装置は、ワイヤレスで接続されるか、又はPCに接続された場合は、何らかの理由でそれを検出できないと仮定する。プロビジョニングプロセスは、空中を経て行うこともできるし、装置のメモリカードを経て行うこともできるし、或いは他の方法を介して行うこともできる。
装置は自動的に検出できないので、ユーザは、装置のタイプをリストから手動で選択する。これが行なわれると、アカウント、サービス及びフィルタの前構成が行われ(前記4.b.iを参照)、そしてそこからプロセスが続く。
5.これで、前プロビジョニングプロセスが完了となる。次いで、プロビジョニングそれ自体が装置のタイプに基づいて開始され、これは、次の章で説明する。
【0051】
別の例では、前プロビジョニングを使用して装置を回復させる。接続寿命サービスは、次の場合に装置を回復させる可能性を与える。
−装置が同じタイプの別のものに置き換えられる(盗み、ダメージ、等により)
−装置がリセットされるか、又は何らかの他の仕方で、その接続寿命サービス構成を失った。
【0052】
これらのケースでは、装置(又は交換装置)を回復させることができる。前プロビジョニングプロセスは、ユーザ、装置及びその以前の構成がサーバーに既に知られている状態で、ステップを経て勧められる。プロビジョニングプロセスは、装置のカテゴリーに基づいて開始することができる。
【0053】
図8は、本発明の一実施形態により検証された電話番号でウェブサイトを経て装置をプロビジョニングするワークフローを示す。ここに述べ且つ次の章でも述べるワークフロー「ワークフロー−検証された電話番号をもたないプッシュ装置」は、いわゆる「プッシュ」装置、換言すれば、MMS装置、に適用される。これは、データ交換の最も基本的なレベルを与え、一方向性である。本質的に、データは、CLSにより装置へプッシュされる。データは、ユーザにより装置において変更されるように意図されておらず、変更してもCLSには返送されない。eメールは、装置にプッシュされる1つのデータタイプの例である。
【0054】
これらの装置は、接続寿命サービスに使用するためにインストールされるべきソフトウェアを必要としない。図DP6に示されたプロビジョニングプロセスでは、前プロビジョニングプロセスが完了すると、装置の対するサービスをアクチベートし、それにデータを送信するだけである。この利用ケースでは、装置の電話番号は、CLSにより既に検証されている。電話番号の検証は、データが正しい装置に送られるよう確保するために、セキュリティの理由で行なわれる。
【0055】
図9は、本発明の一実施形態により検証された電話番号なしにウェブサイトを経て装置をプロビジョニングするワークフローを示す。この利用ケースでは、装置は、プッシュ装置(上述したような)であるが、その電話番号を、依然、検証できる。このプロセスは、そのプロビジョニングの主要部分を形成し、これが行なわれてそのサービスがアクチベートされると、装置の動作準備ができる。電話番号の検証プロセスは、次の通りである。
1.ユーザは、電話番号を入力し、OKをクリックして、SMSをそこに送る。
2.SMSが装置へ送信される。装置は、4桁の検証番号を表示する。
3.同時に、ブラウザは、ユーザがこの検証番号を入力するためにページをオープンする。
4.ユーザが検証番号を入力する。
5.確認されると、CLSは、装置に対するサービスをアクチベートするように進み、プロビジョニングプロセスが完了となる。
【0056】
図10は、本発明の一実施形態によりActiveX装置に対してウェブサイトを経て装置をプロビジョニングするワークフローを示す。このプロビジョニングワークフローは、次の装置に適用される。
−ActiveX−イネーブルウェブブラウザをもつPC
−このようなPCに接続されたハンドヘルド装置
【0057】
ローダーは、CLSが装置のタイプを検出しそしてクライアントソフトウェアをインストールできるようにするActiveX制御を備えている。又、CLSで装置を認証し、クライアントソフトウェアのダウンロードを行えるようにする。
【0058】
図11は、本発明の一実施形態によりクライアントソフトウェアを使用してウェブサイトを経て装置をプロビジョニングするワークフローを示す。このワークフローは、クライアントソフトウェアのインストールを必要とする装置に適用される。その手順は、次の通りである。
1.ブラウザは、ローダーのURLと、ユーザに対する独特のPINとを表示する。更に、
a.CSRに対して、ブラウザは、使用可能な他のバイナリーのURLも表示する。
b.開発者に対して、ブラウザは、CLSインストール及びローダーのURL、並びにインストールする必要のない他のバイナリーのURLを入力するオプションを彼等に与える。
2.普通のユーザは、ローダーのインストールへまっすぐにジャンプする。
a.空気中を経てインストールされるべき場合には、CLSは、ローダーのためのURLを含む装置へ構成SMSを送信する。それをオープンすることで、ダウンロードがスタートする。
b.装置がPCに接続されている場合には、ローダーは、自動的にダウンロードを行ってスタートする。
これらのステップは、両方とも、ユーザが既に表示されたPINを認証の目的で入力することを要求する。
3.ローダーは、それがスタートした後に、クライアントソフトウェアをダウンロードし、インストールし、そしてスタートさせる。
4.装置のサービスがアクチベートされ、データが装置からインポートされ(選択されていれば)、レコードの複写がCLSにより取り扱われ、そしてアカウントからのレコードが装置へ送られる。これで、プロビジョニングプロセスが完了となる。
【0059】
図12は、本発明の一実施形態により装置の既存の同期スタックを使用してウェブサイトを経て装置をプロビジョニングするワークフローを示す。このワークフローは、それ自身の同期スタックを有する装置、例えば、SyncML装置に適用される。この場合に、クライアントソフトウェアをインストールする必要がない。ほとんどの装置のワークフローは、極めて簡単である。サーバー名、ポート番号、等々を指定する構成SMSが装置に送られるだけでよい。プロビジョニングは、実行されると、サービスをアクチベートし、データの交換をスタートさせることにより、通常の仕方で続けられる。
【0060】
装置が付加的なソフトウェアのインストールを必要とする場合には、その後の手順は、図9に示されたローダーのインストールの場合と基本的に同じである。即ち、
1.ブラウザは、バイナリーのURLと、ユーザに対する独特のPINとを表示する。
更に、
a.CSRに対して、ブラウザは、使用可能な他のバイナリーのURLも表示する。
b.開発者に対して、ブラウザは、CLSインストール及びローダーのURL、並びにインストールする必要のない他のバイナリーのURLを入力するオプションを彼等に与える。
2.普通のユーザは、バイナリーのインストールへまっすぐにジャンプする。
a.空気中を経てインストールされるべき場合には、CLSは、バイナリーのためのURLを含む装置へ構成SMSを送信する。それをオープンすることで、ダウンロードがスタートする。
b.装置がPCに接続されている場合には、バイナリーは、自動的にダウンロードを行ってスタートする。
これらのステップは、両方とも、ユーザが既に表示されたPINを認証の目的で入力することを要求する。
3.装置のサービスがアクチベートされ、データが装置からインポートされ(選択されていれば)、レコードの複写がCLSにより取り扱われ、そしてアカウントからのレコードが装置へ送られる。これで、プロビジョニングプロセスが完了となる。
【0061】
図13は、本発明の一実施形態によりSMSを経て装置をプロビジョニングするワークフローを示す。この利用ケースは、ユーザの経験に関して簡単なプロビジョニングプロセスを与える。ここでは、サービスプロバイダーは、特定の装置タイプに対して接続寿命サービスを提供し、そしてユーザが指定の番号へSMSを単に送信するのを許し、その際に、それらのアカウントは、それがまだない場合には接続寿命使用に対してアクチベートされ、そして装置が自動的にプロビジョニングされ、最小限のユーザ相互作用しか必要としない。(特定の分岐のもとで)図13に示されたこのワークフローは、プロビジョニングされる装置のタイプ(1つ又は複数)及びサービスプロバイダーの要求を満足するように調整されてもよい。或いは又、一般的な分岐のもとで示されるように、SMSを送信するときには、CLSは、「ウェブサイトを経て(Via Website)」の利用ケースで述べるように、ユーザがブラウズすべきURLを返送し、そして装置をプロビジョニングすることができる。
【0062】
図14は、本発明の一実施形態によりオンラインショップを経て装置をプロビジョニングするワークフローを示す。このプロビジョニングシナリオでは、装置は、接続寿命サービスに使用するための技術的な要件を既に満足している。ユーザは、サービスプロバイダーとのアカウントを有する(しかし、必ずしも、接続寿命サービスではない)。ユーザが行なうのは、プロバイダーのウェブサイトにログオンし、接続寿命サービスをアクチベートするのが全てである。プロビジョニングは、自動的に行なわれる。
【0063】
レコード交換(REx)アプリケーションプログラムインターフェイス
レコード交換APIは、SyncML(セッションベースの)プロトコルに使用される機能を発揮するように設計される。これを達成するために、必要なステップの数及びそれらステップの遂行に使用するコマンドが減少される。SyncMLモデルにおいて、プロセスの流れを以下に述べる。
−認証
−セッションをスタート
−同期セッションを初期化(データベースタイプごとに同期タイプをネゴシエーションする)
−クライアントがレコードをサーバーへ送信する(多数のメッセージを必要とすることがある)
−サーバーがクライアントのデータとそれ自身との間の同期を遂行する
−サーバーがクライアントのレコードを確認し、そしてクライアントへレコードを送信する(多数のメッセージを必要とすることがある)
−クライアントがサーバーのレコードを確認する
−セッションを終了する
【0064】
上述したように、全セッションは、同期オペレーションを成功とみなすために首尾良く完了する。これは、主としてネットワークの接続性及び装置安定性の問題のために、全プロセスを、エラーの生じ易いものにする。
【0065】
レコード交換APIは、プロセスを、ほとんどの部分について互いに独立して遂行できる個別のオペレーションへと分割することにより、SyncML(セッションベースの)同期の完全性の問題に対処する。同期化の概念は、2つの構成部分、即ちクライアントの観点からアイテムをプット(putting)し及びゲット(getting)すること、に分割され、そして初期化の概念を、これらアクションのいずれかに結合することができる。従って、カスケード依存性を伴うプロセスにおいてアクションを使用するのではなく、レコード交換APIを使用する典型的な同期は、次のように説明される。
−クライアントは、使用を希望するデータタイプを初期化し、アイテムを送信する。サーバーは、この要求に対して即座に応答を送信する。サーバーは、その応答において、クライアントに対して保留中のアイテムがあるかどうか指示することができる。このステップは、クライアントが必要と思われるほど何回も繰り返すことができる。
−クライアントは、使用を希望するデータタイプを初期化し、サーバーからアイテムを要求する。サーバーは、保留中のアイテムをクライアントに返送し、まだ保留があるかどうか指示する。クライアントは、このステップを繰り返し、確認情報を含ませることができる。
【0066】
前記では2つのステップだけを示したが、レコード交換APIは、これらステップの異なる部分を実行するための異なる機能も備えている。クライアント装置は、プット/ゲットプロセスを使用することもできるし、又は必要に応じて個別のinit及び確認ステップを含む更に詳細なプロセスを使用することもできる。これらステップの各々を以下に詳細に説明する。
【0067】
図15は、RExプロトコルフローの概要を示す図である。プロトコルの変更をサポートし、そしてより古い装置との後方互換性を与えるために、装置は、現在プロトコルバージョンをURLパラメータとして各要求と共に送信する。
【0068】
レコードの交換
REx APIにより交換される各アイテムがアドレスされる。これを達成するために、REx APIは、アイテムに対する独特の参照を含む多数のコンポーネントを定義する。各状態に全てのコンポーネントが使用されるのではなく、所与のアイテムに対して、供給されるアドレス情報は、そのアイテムを独特に識別するに充分なものでなければならない。REx APIで定義されたアドレスコンポーネントは、データソース、データタイプ、及びレコードIDである。
【0069】
これらのコンポーネントの中で、レコードIDだけが必須である。他の2つについては、遂行されているオペレーションにおいてそれらの値が暗示されることが考えられ、このケースでは、それらを無視することができる。クライアントが、有効データソースを決定する能力を有し、且つおそらく、ユーザがどちらを使用するか選択するのを許すこともできる場合には、データソースコンポーネントを使用して、クライアントが異なるデータソースで新たなアイテムを生成できるようにする。
【0070】
これらのコンポーネントの名前は、REx APIのオリジナルドメインから発生するが、それらをアドレス要求に使用することができる。レコードIDは、例えば、設定経路ファンクションである。あるデータタイプについては、レコードIDが任意であることに注意されたい。これらのケースでは、レコードIDを省くことができる。サーバーからの各応答内では、レコードIDごとに1つのアイテムがある。
【0071】
クライアントは、putItemsコールを使用してサーバーにレコードを送信する。この機能は、ExchangeItemsのアレーをパラメータとしてとる。サーバーは、各putItemsコールに対してExchangeResult構造で応答し、これは、保留中の変更を有するデータタイプのアレーと、受け取ったアイテムに対する確認とを含む。1つの要件は、クライアントが、putItemsをコールする前にサーバーから受け取った全アイテムを確認することである。
【0072】
いつでも、クライアントは、getItems要求を送信することにより、保留中アイテムについてサーバーに問合せすることができる。このコールは、アイテムキャッシュのコンテンツを調査し、そしてクライアントに対して保留中のレコードを返送する。アイテム及び状態の最適な交換を容易にするために、クライアントは、ackAndGetItemsコールを使用することにより新たなアイテムをゲットするときに確認情報を含ませることができる。確認情報のフォーマットは、以下で説明する。
【0073】
各getItemsコールに応答して、サーバーは、ExchangeResultを返送し、これは、とりわけ、保留中アイテムのコンテンツを含むExchangeItemsのアレーと、どのデータタイプが、検索されるべきアイテムをより多く有するか指示するDataTypeのアレーとを含む。
【0074】
サーバーからクライアントへのアイテムの流れを最適化するために、サーバーは、常に、アイテムの追加及び置き換えの前に、削除アイテムを送信する。getItems要求は、次の要件を含む。
−クライアントは、getItemsをコールする前に、全ての保留中変更を、putItemsを経てサーバーへ送信し、
−クライアントは、各getItemsコールに応答してどれほど多くの情報を返送すべきか決定するためにサーバーが使用する限界値を含み、及び
−クライアントは、getItemsコールの直後にackItemsをコールする。
【0075】
アイテムは、両方向に確認され、クライアント及びサーバーは、いつアイテムが首尾良く処理されたか分る。ack及び確認という語は、本明細書全体にわたり交換可能に使用されることに注意されたい。getItemsによりアイテムの受信を確認する仕方は、2つあり、即ち個々のack ExchangeItemによるものか、又はack 全ExchangeItemsによるものである。欠陥ackは、常に、個々のack ExchangeItemを必要とし、従って、厳密なアイテム及び欠陥の原因を識別することができる。ack 全ExchangeItemsは、アイテムを確認する前に受け取った全てのアイテムが、首尾良く処理されたとして解釈されるように取り扱われる。Ack全アイテムメソッドは、有効データタイプ名を含む。これは、交換に含まれるデータタイプごとに個別のack全アイテムが必要とされることを意味する。
【0076】
サーバーは、putItemsコールに応答してackアイテムを返送しない。むしろ、全putItemsコールに対する全結果応答を返送する。換言すれば、putItemsコールにおけるアイテムの処理は、全てか無かの(all-or-nothing)オペレーションである。この理由で、クライアントから送信されたアイテムを確認するときには、アイテムref値が使用されない。クライアントは、彼らがサーバーへ送信するExchangeItemsからこの値を省く。クライアントは、できるだけ早くack全アイテムを送信し、サーバーがクライアントの最も正確な状態表示をもつことが推奨される。
【0077】
提案されたレコードIDを記憶できないか又は記憶しないことを選択するクライアントは、サーバーにより提案された(一時的)ロケートユニットID(LUID)と、クライアントにおけるレコードを表わすLUIDとを含むマップコマンドを返送することができる。クライアントは、ackItemsコールにおいてExchangeItemsを通すことによりサーバーへマップコマンドを送信する。マップコマンドは、いつでも送信でき、又、何回でも送信でき(通信欠陥の場合に)、更に、アイテムの暗示的受信確認として解釈されない。クライアントは、IDマップされたアイテムについても、依然、ackアイテムを明確に通せることに注意されたい。クライアントは、マップコマンドをサーバーへ送信するまで、サーバーのレコードIDを使用することができる。
【0078】
IDをマップするために、クライアントは、サーバーから受け取ったExchangeItemsを、アイテムのタイプを変更して、データメンバーをクライアントのLUIDに置き換えた後に、エコーバックする。一実施形態において、サーバーから送られるExchangeItemの一例を以下に示す。
クライアントは、次のようなマップコマンドを返送することができる。
【0079】
レコード交換データ構造
一実施形態において、RExのデータ構造の例を以下に示す。
【0080】
ItemRefは、クライアントへ送信するアイテムを参照するためにサーバーが使用する独特の識別子である。クライアントは、この値を使用して、サーバーから受け取ったアイテムを確認する。ItemRefは、整数値の単調に増加するシーケンスである。データタイプごとにシーケンスを維持する。
【0081】
又、装置は、ItemRef値の単調に増加するシーケンスと共にサーバーへ送信するコマンドをマークすることができる。サーバーと装置との間の接続が中断されたときには、サーバーは、itemRef値を調査しそして既に受け取られたコマンドを無視することにより、再送信コマンドを検出する。装置は、itemRef値を伴うコマンドをサポートするところのデータタイプごとにitemRefシーケンスを維持する。装置は、全コマンド又は非コマンドに対するデータタイプに基づいてitemRef値を送信するように保証する。
【0082】
1つの解決策において、有効なアイテムタイプを以下に列挙する。
−Add(追加) 1
−Replace(置き換え) 2
−Delete(削除) 3
−AddOrReplace 4 装置からサーバーへのみ有効
−Map(マップ) 5 永続的に記憶されず
−Get(ゲット) 6
−Ack 7 永続的に記憶されず
−AckAll 8 永続的に記憶されず
−Query(問合せ) 9
−QueryResult 10
−QueryEnd 11
−Clear(クリア) 12
−GetResult 15
データコンテンツ:
−データのレコードコンテンツ − 追加及び置き換えのため
−NULL − 削除オペレーションを遂行するのに付加的な情報が要求されない限り削除のため(ある好ましい管理のケースと同様)
−レコードLUID − マップのため
−任意のフィルタ − 問合せコマンドのため
【0083】
REx APIは、レコード又はデータを交換するための柔軟性のあるプロトコルである。しかしながら、REx APIに組み入れられた柔軟性にも関らず、コアタイプ定義で全ての必要な情報が与えられない情況が生じる。この問題を解消する1つの仕方は、APIが与えるコアタイプ定義に基づいて顧客タイプを定義することである。これは、RExがXML−RPCに基づくものであることから取り扱われる。REx APIで定義された全ての構造は、XML−RPCフォーマットの構造として転送される。XML−RPC構造は、名前/値の対の集合としてみなすことができる。構造を拡張するために、新たな名前/値の対が追加される。
【0084】
REx APIパーサは、一般的なXML−RPCオブジェクトを構築し、そしてそれらを、プロトコルハンドラークラスに常駐するマーシャラーファンクションへ通す。コアREx APIファンクションは、単一のプロトコルハンドラーに常駐するが、全コアREx APIファンクションを受け継ぎながらそれら自身の目的で特殊なファンクションを与える顧客プロトコルハンドラーを定義することができる。これらの特殊なファンクションは、それらが受け取るパラメータをマーシャルし、そして拡張タイプを適宜に取り扱うことができる。拡張タイプの一例を以下に示す。
【0085】
前記構造は、ExchangeItemが予想されるところであれば、どこでも通されるが、DMExchangeItemタイプを理解するファンクションは、dataTypeID情報をサーチして使用することもできる。
【0086】
レコード交換状態及び結果コード
テーブル2は、有効な交換状態及び結果コードを定義する。列挙された全ての値が全てのケースに適用できるのではないことに注意されたい。各ファンクションに適用する厳密な値に対する個々のファンクションを協議する。
テーブル2
【0087】
1つの解決策において、CLSにエラー状態を通知するのに使用される要求、それに対応する構造、及び応答について、以下に述べる。又、構造は、エラー状態がもはや存在しないときにエラーをクリアするのにも使用される。
【0088】
ErrorMessage構造は、raiseError及びcloseError要求に対するパラメータとして送信される。全てのメンバーが全てのエラー及び全ての要求メソッドに対して設定されるのではない。各エラー及び要求メソッドに対して、メンバーは、未使用、任意、及び必須として定義される。メンバーの後のかっこ内の数字は、メンバーの最大長さを定義することに注意されたい。
【0089】
全ての要求に対する応答として、ErrorResponse構造が発呼側装置へ返送される。
【0090】
各要求に対する応答として、CLSは、応答構造において状態メンバーを設定することにより要求の結果を返送する。状態メンバーに対する値は、次の通りである。
テーブル3
【0091】
raiseErrorコールは、装置にエラーが生じたことをCLSに通知するのに使用される。ErrorResponse要求は、エラー形式に基づいて異なるメンバーが設定される場合にErrorMessage構造をアーギュメントとみなす。その結果、ErrorResponse構造が返送される。
ErrorResponse raiseError (ErrorMessage)
【0092】
closeError要求は、以前のraiseError要求により報告されたエラーをクリアする。closeError要求に対して、ErrorMessage構造のmessageIDメンバーのみが使用される。CLSは、要求を受け取ると、同じmessageIDをもつ以前に報告されたエラーをクリアする。
ErrorResponse closeError (ErrorMessage)
【0093】
レコード交換ファンクション
この章は、レコード交換APIにおけるファンクションについて述べる。通されたパラメータを変更するファンクションについては、次の規定を使用する。
→ 右を向いた矢印は、値がクライアントにより設定され、サーバーにより変更されないことを指示する。
← 左を向いた矢印は、サーバーが、クライアントにより送られた値を読み取らず、値を返送することを指示する。
←→ 両方向矢印は、サーバーが、クライアントの値の読み取りと、おそらく更新された値の返送との両方を行うことを指示する。
【0094】
レコード交換APIの前交換ファンクションは、checkSyncAnchor、initRefresh、及びqueryChangesを含む。前交換ファンクション、それに対応するフォーマット及びパラメータについて、以下に述べる。
checkSyncAnchor:クライアントは、DataType構造内のデータタイプに対して両方のアンカーでこのファンクションをコールし、2つの同期アンカーの一方がサーバーアンカーに一致することを検証する。同期アンカーチェックが所与のデータタイプに対してフェイルした場合には、サーバーがリフレッシュ要求結果を返送する。サーバーに記憶された同期アンカー値は、変更されない。
ExchangeResult checkSyncAnchors (DataType[] dataType)
パラメータ:
dataType−どのデータタイプをチェックに使用すべきか指示するアレー:
→ dataTypeName
→ syncAnchor−このデータタイプに対する現在の装置同期アンカー
→ pendingSyncAnchor−このデータタイプに対する保留中アンカー リターン:各DataTypeに対して指定された適当なexchangeStatusと共にDataTypeを含むExchangeResult。
← 結果−サーバーが要求を首尾良く処理したときには、200(OK)、又は定義されたエラーコード
← dataTypeは、データタイプに対してexchangeStatusを保持する−200(OK)、201、又は定義されたエラーコード
initRefresh:リフレッシュが必要であることをクライアントが決定するか又はサーバーにより通知された場合には、initRefreshをコールして、リフレッシュプロセスを開始する。
ExchangeResult initRefresh (DataType[] dataType)
パラメータ:
dataType−どのデータタイプを初期化に使用すべきか指示するアレー:
→ dataTypeName
→ exchangeStatus−250(交換リフレッシュ)
→ SyncAnchor−このデータタイプに対する新たなアンカー
リターン:次のようにポピュレートされたExchangeResult:
← 結果−サーバーが要求を首尾良く処理したときには、200(OK)、又は定義されたエラーコード
← dataTypeは、オリジナルコールで指定された各データタイプに対してinit状態を指示する:200(OK)、201、又は定義されたエラーコード
queryChanges:このファンクションは、クライアントが保留中の変更に対してサーバーをポーリングして、おそらく、交換の実行の前にユーザフィードバックを与えることを希望する場合に使用される。
ExchangeResult queryChanges (DataType[] dataType)
パラメータ:
dataType−どのデータタイプを変更問合せに使用すべきか定義するアレー。空のデータタイプアレーを送信することで、全てのデータタイプに対する変更を問合せる。
→ dataTypeName
リターン:次のようにポピュレートされたExchangeResult:
← 結果−サーバーが要求を首尾良く処理したときには、200(OK)、又は定義されたエラーコード
← dataTypeは、どのDataTypeがサーバーに保留中の変更を有するか指示する。発呼者が空のdataTypeパラメータを通す場合には、データタイプのアレー結果が、サーバーに変更が存在するデータタイプしか含まない。発呼者が空でないdataTypeパラメータを通す場合には、同じアレーが、各データタイプに対して指定された200(変更なし)、201(レコード保留中)、又は417交換状態と共に返送される。
【0095】
レコード交換APIの後交換ファンクションは、ackItems、putItems及びackAndPutItemsを含む。後交換ファンクション、それに対応するフォーマット及びパラメータについて、以下に述べる。
【0096】
ackItems:サーバーからアイテムを受け取った後に、クライアントは、サーバーへ確認を返送する。これは、各レコードの到着状態をサーバーに通知し、サーバーがクライアントデータのキャッシュを効率的に管理できるようにする。一実施形態において、このファンクションは、種々のgetItemsコールにおいてサーバーがクライアントに何を返送するかであるExchangeItemsのアレーを使用する。クライアントは、各ExchangeItemのitemRef及び結果メンバーを指定するだけでよい。このファンクションを使用する別の仕方は、Ack Allに設定されたitemType、確認されているアイテムのグループに基づいて設定されたdataType、及びそのdataTypeに対して首尾良く処理された最後のアイテムに設定されたitemRefと共にExchangeItemを送信することである。サーバーは、itemRefが指定のitemRef値以下であるようなdataTypeの全てのアイテムに対してこれを首尾良い確認として解釈する。多数のExchangeItemsをこのように送信できることに注意されたい。全ての個々のackアイテムは、itemAckパラメータにおいてack全アイテム(ack-all-items)の前に含まれる。
ExchangeResult ackItems (ExchangeItem[] itemAcks)
パラメータ:
itemAcks−確認されているアイテムに関する情報を含むExchangeItemsのアレー。itemAcksの要件は、次の通りである。
テーブル4
リターン:次のようにポピュレートされたExchangeResult:
← 結果−サーバーが要求を首尾良く処理したときには、200(OK)、又は定義されたエラーコード
← dataTypes−dataType構造アレー;各エレメントは、exchangeStatusを保持する:200)又は定義されたエラーコード
putItems:このファンクションは、クライアントが多数のアイテムをサーバーへ送信するのを許す。
ExchangeResult putItems (DataType[] dataTypes, ExchangeItem[] items):
パラメータ:
dataType−装置は、この要求からのアイテムアレーに使用される全てのdataTypeに対し、新たな同期アンカーを送信する。
→ dataTypeName
→ SyncAnchor−このデータタイプに対する新たなアンカー
items−サーバーへ送信されるべきレコードを含むExchangeItemsのアレー
リターン:次のようにポピュレートされたExchangeResult:
← 結果−サーバーが要求を首尾良く処理したときには、200(OK)、又は定義されたエラーコード
← dataTypes−要求におけるデータタイプに対するdataType構造;各エレメントは、exchangeStatusを保持する:200、201、又は定義されたエラーコード
ackAndPutItems:このファンクションは、putItemsと同様であるが、クライアントが、新たなアイテムをプットする前に、受け取ったアイテムを確認できるようにするパラメータが追加されている。
ExchangeResult ackAndPutItems (ExchangeItem[] acks, DataType[] dataTypes,
ExchangeItem[] items)
パラメータ−putItemsと同様であるが、次のものが追加されている。
ack−特定のExchangeItemsに対する確認情報を含む。サーバーは、クライアントからのレコードを受け容れる前にこれらのackを処理する。より多くの情報についてはackItemsファンクションの説明を参照されたい。
リターン:putItemsと同じ
getItems:クライアントは、1つ以上のデータタイプについて保留中のレコードを検索するためにこのファンクションをコールする。これは、サーバーからレコードを検索する通常の方法である。各データタイプに対するitemRef値は、サーバーが、アイテムキャッシュのどのレコードをクライアントが既に受け取ったかそしてどのレコードをまだ送信する必要があるか決定できるようにする。クライアントは、このフィールドにおいて、最後に処理したitemRefを送信することができる。
ExchangeResult getItems (DataType[] dataTypes, int limit)
パラメータ:
dataTypes−どのデータタイプに同期すべきかそしてアイテムキャッシュのどのポイントでレコードの送信を開始すべきかサーバーに通知するDataTypeのアレー。DataTypeアイテムは、次のように通される。
→ dataTypeName−データタイプの名前
→ syncAnchr−このデータタイプに対する新たなアンカー
サーバーは、DataTypeアレーがエレメントを含まないときにgetItemsに対する要求を無視する。
limit−これは、非圧縮の応答XML−RPCメッセージの最大サイズを指定する任意のパラメータである。この値が省かれる場合には、サーバーは、妥当と思われる限界値を使用する。
リターン:次のようにポピュレートされたExchangeResult:
← 結果−サーバーが要求を首尾良く処理したときには、200(OK)、又は定義されたエラーコード
← dataTypes−検索される準備のできたアイテムを有する要求から各データタイプに対するDataType構造を含む。これは、次のようにポピュレートされる。
← dataTypeName
← exchangeStatus−200(OK)、201、又は定義されたエラーコード
← items−次のようにポピュレートされた保留中のレコードを含む
← itemRef
← itemType
← recordID−追加アイテムに対して一時的LUID、他の全てのアイテムタイプに対してクライアントLUID
← dataTypeName
← data−削除アイテムの場合は省かれる
ackAndGetItems:このファンクションは、getItemsと同様であるが、クライアントが、新たなアイテムをゲットしながら、受け取ったアイテムを確認できるようにするパラメータが追加される。
ExchangeResult ackAndGetItems (ExchangeItem[] ack, DataType[] dataType, int
limit)
パラメータ:
ack−特定のExchangeItemsに対する確認情報を含む。サーバーは、アイテムキャッシュからレコードを検索する前にこれらのackを処理する。更なる情報については、ackItemsファンクションの説明を参照されたい。
【0097】
図16は、異なるRExメソッドを使用してユーザ装置とサーバーとの間の対話を示すフローチャートである。
【0098】
レコード交換アイテムタイプ
getItems又はackAndGetItems要求に対する応答として、サーバーは、Clearコマンドを返送する。このコマンドは、データコンテンツをもたず、装置が所与のデータタイプ名に対して全てのアイテムを除去するよう強制する。
【0099】
初期同期の一部分としてクライアント装置のPIMデータをインポートするか又はdataSourceからシャドーデータをフェッチするようなある状況において、サーバーは、Queryコマンドを装置へ返送し、装置が、所与のデータタイプに対するデータをサーバーへアップロードするように強制することができる。
【0100】
図17は、本発明の一実施形態による問合せプロセスのシーケンス図である。ステップ1において、装置は、サーバーから情報を要求するためにgetItemsメソッドをコールする。getItems又はackAndGetItems要求に応答して、サーバーは、Queryコマンドを返送する。コマンドのExchangeItemにおいて、jobIDフィールドが設定され、この問合せをマークする。任意のデータフィールドが問合せを制限するためのフィルタを含んでもよい。フィルタが与えられないときは、装置は、所与のデータタイプに対して全てのアイテムを返送する。Queryコマンドに対するExchangeItemの一例を以下に示す。
【0101】
ステップ2において、装置は、ackItemsをコールし、Queryコマンドを受け取ったことを確認する。ステップ3において、装置は、問合せされたデータを収集する。ステップ4において、装置は、putItemsを使用してサーバーへデータを送信する。各々の問合せされたアイテムは、1つのQueryResultとして送信される。全てのQueryResultアイテムが送信された後に、問合せに対するデータアップロードが行なわれることをマークする1つのQueryEndアイテムが送信される。全てのQueryResult及びQueryEndアイテムは、問合せからのジョブIDに設定されたjobIDフィールドを有し、これらアイテムがこのjobIDをもつ問合せに関係していることを指示する。QueryResult及び最終的なQueryEndExchangeItemの一例を以下に示す。
【0102】
問合せに対する結果が1つのputItemsコールに対して大き過ぎるときに、装置は、複数のputItemsを使用して、アイテムをサーバーにアップロードすることができる。最終的なQueryEndコマンドは、最後のputItemsコールにおいてのみ送信される。
【0103】
装置は、ステップ2の後、例えば、装置クラッシュの後、ユーザが装置をターンオフした後、又は死んだバッテリを交換した後、再スタートするときに、問合せを続ける。装置は、Queryコマンドを既に確認しているので、サーバーは、このコマンドを再送信しない。それ故、装置は、このコマンドを再スタートに生き残るように持続させる。この状況を回避するために、装置は、ステップ4において、ackAndPutItemsをコールすることによりQueryコマンドを確認することができる。
【0104】
サーバーは、データフィールドを使用して、フィルタを、Queryコマンドの一部分として設定できることに注意されたい。一実施形態では、サーバーは、dataSourceのためのフィルタとしてストリング{partial}を使用するだけである。このフィルタは、問合せされたアイテムに対してシャドー情報のみを返送するようにdataSourceに通知する。これは、アップロードされるデータの量を減少する。サーバーが完全なアイテムを必要とするときには、それをフェッチするためにGetコマンドを送信する。
【0105】
サーバーが(部分フィルタを通して)シャドー情報を要求するときには、dataSourceが、メール、連絡先、タスク、及び事象アイテムのような異なるタイプのデータに対してこの情報を返送する。
【0106】
Getコマンドは、putItemsを使用してサーバーへ指定のアイテムをアップロードするために、LUIDを指定することにより、装置に要求する。Getコマンドに対するExchangeItemの一例を以下に示す。
【0107】
装置は、GetResultを使用してアイテムを返送する。ジョブIDを使用して、GetとGetResultを接続する。
【0108】
問合せのケースと同様に、装置は、ackAndPutItemsを使用して、Getコマンドを確認すると共に、要求されたアイテムを1つのコールにおいてサーバーへ送信するか、又は装置は、Getコマンドの結果を永続的なものにすることに注意されたい。装置は、不存在アイテムに対してGetを受け取ると、422状態コードでアイテムを確認する。
【0109】
QueryResultコマンドは、問合せの結果において且つGetコマンドの応答として装置により使用される。dataSourceは、新たなアイテムを検出すると、Addコマンドをサーバーへ送信する。dataSourceは、膨大な量の新たなアイテム(例えば、数千のeメールがdataSourceにコピーされた新たなeメールフォルダ)を検出すると、シャドー情報のみを含む新たなアイテムごとにQueryResultコマンドを送信する。QueryResultコマンドの最後の情報断片を送信すると、アップロードが終了したことをサーバーに通知するためのQueryEndコマンドが送信される。サーバーは、1つのアイテムの完全な情報を必要とするときに、Getコマンドを送信する。これは、このようなケースのデータ送信量を減少する。
【0110】
サーバー及び装置の同期
接続寿命サーバー(CLS)は、サーバーと1つ以上のユーザ装置との間のデータの同期を最適化する。より詳細には、CLSは、所定のバックアップインターバルに基づいてサーバーにおいて接続データセット(connected-data-set)のバックアップを生成する。次いで、接続データセットのバックアップが生成されたときに時間インターバルを追跡するためのチェックポイントマーカーを発生し、そしてそのチェックポイントマーカーを1つ以上のユーザ装置へ送信し、接続データセットに対する変更の第1レコードを維持する。
【0111】
サーバー及び1つ以上のユーザ装置が同期ずれしているかどうか決定するために、CLSは、サーバーの交換又はサーバーのクラッシュを検出する。或いは又、CLSは、セッションベースのsyncMLプロトコル又は同期アンカープロトコル(以下に述べる)を実行して、サーバー及びユーザ装置が同期ずれしているかどうか決定してもよい。サーバー及び1つ以上のユーザ装置が同期ずれしていると決定されると、CLSは、サーバーにおいて接続データセットのバックアップデータを回復させる。次いで、チェックポイントマーカーを使用して1つ以上のユーザ装置から接続データセットの第1の変更レコードを要求する。又、1つ以上のユーザ装置からの接続データセットの第1の変更レコードに基づいてチェックポイントマーカーの後に変更を有する接続データセットの第1部分を決定する。これは、1つ以上のユーザ装置とサーバーとの間でチェックポイントマーカーの後に新しいタイムスタンプを有する接続データセットの部分を比較することによって行われる。次いで、サーバーにおいて第1の変更レコードのトランザクションを実行することにより変更を有する接続データセットの第1部分を更新する。
【0112】
同様に、サーバー及び後端データベースが同期ずれしていると決定すると、CLSは、サーバーにおいて接続データセットのバックアップデータを回復する。次いで、チェックポイントマーカーを使用して後端データベースから接続データセットの第2の変更レコードを要求する。又、後端データベースからの接続データセットの第2の変更レコードに基づいてチェックポイントマーカーの後に変更を有する接続データセットの第2部分を決定する。これは、後端データベースとサーバーとの間でチェックポイントマーカーの後に新しいタイムスタンプを有する接続データセットの部分を比較することによって行われる。次いで、サーバーにおいて第2の変更レコードのトランザクションを実行することにより変更を有する接続データセットの第2部分を更新する。
【0113】
同期アンカープロトコルの主な目的は、装置及びサーバーが交換アイテムに対して同期ずれして動作することを検出することである。クライアント装置は、サーバーと同期する責任を有する。しかしながら、クライアントだけでは検出できないシナリオが少なくとも1つある。次の事項シーケンスについて考える。
−クライアント及びサーバーは、ポイントAにおいて同期している。
−クラインと及びサーバーは、その後、ポイントBにおいて同期しており、実際のデータセットは、ポイントAとは異なる。
−ユーザは、全てのデータ、構成ファイル、等を含む全装置映像のシステム回復を行なう。
−クライアントは、スタートするが、そのローカルデータをチェックするときに、ポイントBにいるので、一貫性を調べる。しかしながら、装置がポイントBにあると仮定すれば、サーバーとの一貫性がない(同期していない)。
【0114】
この問題は、REx同期アンカープロトコルにより対処される。同期アンカーに基づき、サーバーは、もはや同期していないことを検証してクライアントに通知することができる。これは、各データベースに対して、リフレッシュすることが必要なデータを転送するためのトラフィックを最小にするように行なわれる。交換アイテムの各タイプに対して、装置は、2つのアンカーを維持する。1つは、交換アイテムのタイプに対する現在アンカーである。装置は、サーバーからデータを要求し又はサーバーへデータを送信するときに、新たなアンカーを発生し、このデータを要求において送信する。要求がエラーなく終了すると、装置は、サーバーが新たなアンカーを首尾良く受け取ったことを知る。このケースでは、装置は、新たなアンカーを現在アンカーとして記憶する。
【0115】
クライアントは、サーバーとの通信を開始すると、checkSyncAnchorsメソッドをコールし、装置及びサーバーのアンカーが一致するかどうかチェックする。もしそうでなければ、装置及びサーバーは、このタイプの交換アイテムに対して同期ずれして動作している。
【0116】
図18は、本発明の一実施形態によりクライアント装置とサーバーとの間で同期をとるための同期アンカープロトコルを示す。図18に示すように、装置は、各データタイプの名前に対して2つの同期アンカーを維持する。1つは、現在アンカーであり、装置は、データを送信又は要求するメソッドをコールするときに、サーバーへの要求のデータタイプごとに新たな同期アンカー(保留中アンカー)を発生して送信する。首尾良い全体的応答は、サーバーが、これらデータタイプの名前に対して新たなアンカーを得て記憶したことを意味する(たとえ特定データタイプに対する交換状態が首尾良くなくても)。この場合には、装置は、各データタイプに対する新たなアンカーを現在アンカーとして記憶する。装置は、応答を得ないか、又は不首尾な全体的結果コードを伴う応答を得る場合、保留中アンカーを記憶し、それを次の新たなアンカーとして再送信する。
【0117】
装置は、現在アンカーで、そして任意であるが、保留中アンカーが存在する場合は保留中アンカーで、checkSyncAnchorsをコールする。1つのアンカーがサーバーアンカーに一致するときには、装置及びサーバーが同期状態にある。この場合及び保留中アンカーがあるときには、装置は、サーバーが保留中アンカーを受け取ったかどうか分らないので、以前に送られた現在アンカーを、現在アンカーとして使用し、そして保留中アンカーを次の新たなアンカーとして送信する。
【0118】
アンカーチェックが失敗すると、サーバーは、エラー状態コード417を返送する。装置は、アンカーを初期アンカーに戻すように設定し、新たなアンカー(初期アンカーではない)でinitRefreshをコールする。次いで、getItemsをコールして、サーバーが装置に対してClearコマンドを有するかQueryコマンドを有するか決定する。次いで、装置は、putItemsを経てサーバーへ装置管理アイテムを送信するのも任意である。最終的に、装置は、getItemsをコールし、更新されたアイテムをサーバーから検索する。
【0119】
装置(又は1つのデータタイプ名に対して責任をもつ装置の一部分)は、それがスタートすると、先ず、checkSyncAnchorsをコールして、装置及びサーバーがまだ同期しているかどうかチェックする。又、getItems又はackAndPutItemsのようなメソッドも、要求からのデータタイプに対して417交換コードを返送できることに注意されたい。この場合、装置は、checkSyncAnchorsに対するコールがフェイルしたかのように働く。
【0120】
装置は、インストールの後、又は未知のデータタイプ404状態の後に、データタイプに対する初期同期をスタートすると、初期同期アンカーとしての0でcheckSyncAnchorsをコールする。装置が0を保留中アンカーとしても送信するかどうかは任意である。サーバー及び装置は、初期同期に対して同期状態にあることが要求される。
【0121】
装置は、初期のcheckSyncAnchorsコールの後にgetItemsをコールし、そしてgetItemsコールの結果として、Clear又はQueryコマンドが返送される。装置は、この初期コマンドが処理されたときに変更検出をアクチベートする。
【0122】
通信のユーザ装置状態の通知
CLSは、サーバーとユーザとの間の通信のユーザ状態を通知する。ユーザは、CLSによって維持された接続データセットの部分を共有する1つ以上のユーザ装置を有する。一実施形態において、CLSは、サーバーと1つ以上のユーザ装置との間の通信を、通知条件の所定セットに対して監視する。所定の通知条件のセットは、製造者により提供される情報に基づき且つ1つ以上のユーザ装置の実際の使用を通して収集される情報に基づき形成される。更に、所定の通知条件のセットは、接続データセットのエレメントの送信欠陥を含む。
【0123】
例えば、通知メッセージは、通知条件が検出される通信のタイトルを含む。又、通知メッセージは、通知条件が検出される通信のアブストラクトも含む。更に、サーバーにより装置へ送信される通知メッセージは、ハイパーリンクを含んでもよい。このハイパーリンクは、通知の性質についてより精巧であるウェブページを指してもよいし、又は問題を解決できるウェブページへユーザを導いてもよい(例えば、後端にアクセスするための新たなパスワードを入力する)。このメソッドが有益であるのは、通常、若干の情報アイテムしかクライアント装置へ搬送されず、且つ通知の性質を説明するのに多数のワードを必要とすることが多いためである。又、ハイパーリンクは、拡張手段も与える。通知メッセージ(又は通知スクリーン又はアプリケーションのメニュー)においては、このハイパーリンクの背後でウェブページをロードするためにブラウザをスタートするというオプションがある。
【0124】
通知条件が検出されると、CLSは、通知メッセージを1つ以上のユーザ装置へ送信する。一実施形態では、通知メッセージは、通知条件の所定セットが検出されたユーザ装置へ送信されることに注意されたい。別の実施形態では、通知メッセージは、通知条件の所定セットが検出されないユーザ装置へ送信されてもよい。
【0125】
更に別の実施形態では、所定通知条件のセットは、1つ以上のユーザ装置に対するeメール、タスク、カレンダー及びアドレスブックオーバーフロー条件を含む。装置のオーバーフローを回避するために、サーバーは、各装置アプリケーションが保持できるデータの量を監視し、記録する。データは、次のいずれかで収集され、即ち、装置の製造者により提供される情報を通じて収集され、例えば、装置のアドレスブックが最大500の連絡先を保持できることをユーザのマニュアルで指定するか;又はユーザ装置のテストを通じて収集され、例えば、サーバーにより送られるある数以上のレコードの記憶を装置が拒絶するか;或いは実際の使用を通じて収集され、例えば、事象の数がユーザのマニュアルにおける所定の最大数を越えても、あるカレンダーアプリケーションが依然機能する。
【0126】
収集されたデータに基づいて、サーバーは、サーバーインフラストラクチャーにおいて装置タイプ又はアプリケーション当たりの上限のセットを定義することができる。サーバーは、各装置におけるレコードの実際数を監視するので、装置におけるレコードの数が所定の上限に近付いたときに装置へそれ以上のレコードを送信するのを停止することができる。例えば、サーバーは、ユーザがまだある程度の有用な仕事を行なえるように、装置の90%フル状態を保つことができる。更に、サーバーは、装置の特定のアプリケーション(例えば、eメール又はカレンダー)が所定の上限に達したことをユーザにアラートし、そして装置におけるレコードの数を減少するために特定アプリケーション用の異なるフィルタを適用するといった先見的アクションをとるようにユーザに要求することができる。他の解決策では、異なるデータタイプに異なるルールを適用して、装置におけるレコードの量を管理することができる。例えば、
−メール:常に装置へ送信される新たなメールには高いプライオリティが指定される。装置が新たなメールのための余地を作る必要がある場合には、最も古いものから最も新しいものへの順序で古いメールが削除される。
−タスク:オープンタスクには、より高いプライオリティが指定され、期限日が近いほど、タスクの重要性は高くなる。装置が新たなタスクのための余地を作る必要がある場合には、最も古いものから最も新しいものへの順序で、完了したタスクが削除される。
−カレンダー:近い将来生じる事象には、より高いプライオリティが指定される。一般に、将来の事象は、過去の事象よりも重要である。装置が新たな事象のための余地を作る必要がある場合には、最も古いものから最も新しいものへの順序で過去の事象が削除される。
−アドレスブック:装置に既にあるものに、より高いプライオリティが与えられる。アドレスブックがいっぱいになった場合には、サーバーは、他の装置からも、後端からも、新たなアドレスを装置へ与えない。
【0127】
設定交換(SetEx)プロトコル
設定交換(SetEx)プロトコルは、装置とサーバーとの間で設定情報を交換するのに使用される。SetExは、データ構造体に対する変更と共にDPRExプロトコルによりサポートされる。DPRExプロトコルと同様に、データコンテンツは、設定変更を保持するXMLドキュメントである。XMLデータコンテンツドキュメントのエンコード動作は、XML−RPCエンベロープのエンコード動作と常に同じである。エンコード動作は、全てのユニコードキャラクタを表わすことができる。SetExプロトコルは、設定をベースURL拡張として使用し、例えば、http://server:port/dp/settingは、SetEx URLの一例である。
【0128】
設定交換状態コード
SetExは、DPRExと同じ状態コードを使用する。状態コード300は、装置がゾンビ状態にあって設定をサーバーへプットするか又はサーバーからゲットするよう試みるときに返送される。この場合には、装置は、先ず、装置タイプ識別を送信する。SetExは、新たな状態コード405を使用する。このコードは、サーバーが装置から設定をゲットすることをいつ要求するか決定するために、SetExに対する応答として返送される。
【0129】
設定交換プロセスフロー
一実施形態において、設定交換のプロセスフローは、次の3つの利用ケース:1)初期設定交換;2)通常の設定交換;及び3)ダンプ設定交換について説明する。
【0130】
初期設定交換の間に、装置は、その装置タイプをサーバーに対して識別する。この状態は、装置をサーバーに初めて接続するときに生じる。これは、ユーザが新しい装置を買ったとき、又は装置が完全にリセットされたとき、或いは装置の状態がサーバー側でゾンビにリセットされた場合に起きることに注意されたい。これら全ての状態において、装置は、装置タイプ識別設定を交換することによりスタートする。これは、サーバーが装置の真のアイデンティティ(正しい装置タイプ識別情報)を決定できるようにする。考えられるプロセスフローシナリオは2つある。第1のケースでは、装置は、それがサーバーに初めて接続されると考え、装置タイプ識別設定を交換する。第2のケースでは、装置は、それが初期化されたと考え(同期された装置タイプ識別設定)、一方、サーバーは、そうでないことを考える。これら両方のケースは、以下の章で述べるシーケンス図に関連して検討する。
【0131】
図19は、本発明の一実施形態により装置が装置タイプ識別設定を交換するときのプロセスフロー図である。図19に示すように、ステップ1において、装置は、putItemsをコールして、装置タイプ識別設定を交換する。ステップ1.1において、サーバーは、装置を適切に識別した後に装置のゾンビ状態を終了させる。ステップ1.2において、サーバーは、buildExchangeResultメソッドをコールすることにより応答を構築する。この応答は、装置へ送信されるべきサーバー状態を含む。装置が、装置タイプ識別設定を受け取ったときに既にゾンビ状態から出ている場合には、このオペレーションが何ら作用しない。
【0132】
図20は、本発明の一実施形態によりゾンビ状態において装置タイプ識別以外の設定を装置が交換しようと試みるときのプロセスフロー図である。この状態は、サーバーにおける装置の既知の状態がゾンビ状態にあり、且つ装置が通常のアプリケーション設定を交換しようと試みるときに生じる。図20に示すように、ステップ1では、装置は、putItemsをコールして、通常の設定を交換する。この場合に、サーバーは、装置がゾンビ状態にあることを指示するエラーコード300で装置要求を拒絶する。ステップ2において、装置は、putItemsをコールして、装置タイプ識別設定を交換し、サーバーが装置のアイデンティティを確認すると共に、ゾンビ状態を終了できるようにする。
【0133】
通常の設定交換の場合には、装置は、装置で実行されているアプリケーションのための設定を交換する。このシナリオでは、装置は、もはやゾンビ状態になく、装置とサーバーとの間で通常の設定交換を遂行することができる。
【0134】
図21は、本発明の一実施形態による通常の設定交換のためのシーケンス図である。図21に示すように、ステップ1において、装置は、それが設定を変更した場合に、putItemsメソッドコールを使用してそれらをサーバーに送信する。送信すべき設定が更にある限り、このステップを繰り返す。
【0135】
装置は、サーバーに得られる保留中設定変更についてサーバーから通知を受け取る場合に、getItemsコールを発生して、設定変更を検索する。装置に対してサーバーに得られる保留中設定がない場合には、このステップを省けることに注意されたい。
【0136】
装置は、201データタイプ状態コードを通して、更に設定変更が存在するというフラグを立てた場合には、ackAndGetItemsメソッドコールを発生する。装置は、この場合、サーバーからの最後の応答で受け取られた設定を確認し、そしてサーバーにおける保留中設定変更を要求する。
【0137】
最終的に、全ての設定変更がサーバーから装置によりフェッチされた後に、ackItemsコールを発生する。ackItemsメソッドは、サーバーが、サーバーから送信される変更設定に関連したリソースをクリーンアップできるようにする。
【0138】
上述したプロセスフローでは、更新設定間に相違はない。主な相違は、データコンテンツであるが、オペレーションは異なる。次のことに注意されたい。
1.空き設定ドキュメントを伴う削除は、全データベースを削除する。
2.全ての設定、及び削除データコンテンツドキュメントに残っている設定のサブツリーが削除される。
3.削除データコンテンツのノードとしてマークされた設定は、サブツリーを削除しない。
例えば、既存のツリーは、次の通りである。
a/b/m
a/b/n
a/c/
m及びnを削除するために、サブノードを指定することができる。m及びnを削除するためのSetExデータコンテンツは、次の通りである。
<Node name = “a”>
<Leaf name = “b”></Leaf>
</Node>
サブノードbは、削除されるデータコンテンツにおいてリーフ(葉)として指定されることに注意されたい。それにより得られるツリー(木)は、次の通りである。
a/c
【0139】
リーフを削除するのは一般的でない。又、内部ノードは、セマンティックをもたないことに注意されたい。上述したスキーマの例から、ツリー(a/c)は、(a/b、a/c)と同じである。というのは、bは、内部ノードであり、セマンティックをもたない。従って、リーフa/b/m及びa/b/nを削除することは、前記例においてa/bを削除することとセマンティック的に同じである。リーフノード削除例は、次の通りである。
<Node name = “a”>
<Node name = “b”>
<Leaf name = “m”></Leaf>
<Leaf name = “n”></Leaf>
</Node>
</Node>
それにより得られるツリーは、次の通りである。
a/c
【0140】
実施を簡単化するために、データコンテンツ仕様は、特定のサブノードにおいて削除が許されることを定義する。前記例の場合のデータコンテンツ制限は、a/bに関する削除しか許されず、リーフについては許されないことである。
【0141】
ダンプ設定交換
ダンプ設定交換の場合には、装置は、SetExメソッドコールを発生する。サーバーは、装置から全ての設定をゲットしたいことを決定する。このメソッドは、装置から全てのデータをゲットすることによりサーバーが期待する状態に装置があることをテストし又はチェックするのに主として使用される。これが生じると、サーバーは、特殊なエラーコード405で応答する。エラーコードに応答して、装置は、それを生じさせたデータ形式に関する設定情報のダンピングをスタートする。
【0142】
図22は、本発明の一実施形態によるダンプ設定のためのシーケンス図である。装置は、putItemsコールを呼び出して通常の設定を交換する。サーバーは、あるデータタイプに対して既知の全ての設定を装置がダンプすることを要求する状態にある場合に、所与のデータタイプに対して405コードを返送する。これは、装置がgetItemsコールを開始するときにも生じることに注意されたい。
【0143】
装置は、initRefresh(コード251)をコールして、ダンプ設定変更をスタートしたことをサーバーに通知する。装置は、サーバーによって送信されるべきダンプ要求アラートに応答してputItems要求を発生する。この状態では、装置は、それが含む全ての設定をサーバーへダンプする。このステップは、ダンプする必要のある更なる設定を装置が有する限り、繰り返される。
【0144】
設定交換データ構造
この章は、コア装置プロキシーレコード交換(DPREx)データ構造に対する改善を説明する。ExchangeItem構造は、設定交換をサポートするように変更される。特に、ExchangeItemのitemType及びrecordIDフィールドに対しSetExプロトコルにおいてどんな値が許されるかに関して制約がある。
【0145】
一実施形態では、itemTypeデータ構造は、「削除(Delete)」及び「置き換え(Replace)」オペレーションをサポートする。設定変更の場合に、「置き換え」は、設定が存在しなければ「追加(Add)」を意味し、さもなければ、更新を行うよう再定義される。
recordIDフィールドは、設定変更に対して省略される。
【0146】
装置が設定を要求するが、メッセージサイズを規定サイズ以下に制限するときには、SetExコンテンツが、規定サイズ以下のサイズへ分割される。分割は、リーフノードの基づくものである。例えば、メッセージサイズが0にセットされた場合には、要求当たり1つのリーフノードしか転送されない。多くの場合、この定義では実施が複雑になり過ぎ、利益が得られない。実施を簡単にするために、ノードレベルで設定をグループ分けすることができる。データコンテンツは、例えば、a/b/c、a/b/d、a/b/e及びa/m/cとして示される。
【0147】
a/b/に対してグループ分けが可能である場合は、メッセージのサイズに関わらず、a/b/c、a/b/d、及びa/b/eを1つのメッセージで転送することが保証される。このメッセージは、他の設定も含み得ることに注意されたい。これは、設定を定義するためのデータコンテンツ仕様までである。
【0148】
次の章は、サンプル設定データコンテンツを含むXML−RPC断片を示す。一実施形態では、装置タイプ識別設定を交換するためにExchangeItemのデータフィールドにおける設定ツリーデータコンテンツが使用される。6つの異なる装置タイプ識別設定が使用され、それらは、Mod、Hint1、Hint2、Hint3、Hint4、及びHint5である。ここで、Modは、装置のモデルを表わし、ほとんどの場合に、装置を独特に識別するのに使用できる。Hint1ないしHint5は、Modストリングに含まれた情報に加えて、装置タイプを識別するための情報を含む。
【0149】
次のdevTypeIdentXMLスキーマは、どのデータが許されるか定義する。この場合のデータタイプ名は、s−devTypeIdentである。
【0150】
eメールフォルダ設定を交換するための設定ツリーデータコンテンツである、getItemsコールに対するサーバー応答の一例を以下に示す。
【0151】
SetExにおいて、Clearコマンドは、以前のインストール又はデータベースアクチベーションのトレースをクリーンアップする正に第1のコマンドとしては使用されない。それ故、装置は、SetExデータタイプに対して第1同期を遂行するときに(アンカー0でのcheckSyncAnchorsコール)、それ自体でクリーンアッププロセスを開始する。装置がSetEx要求に対して交換状態417を返送することによりinitRefreshコールを遂行するように強制するときには、同じ初期同期ルールが適用される。
【0152】
設定交換ファンクション
この章は、getItems、putItems、ackItems及びinitRefreshを含むDPRExの変更された定義のリストを含む。getItems及びputItemsについては、次の制約が適用される。即ち、recordIDフィールドは使用されず、返送されるExchangeItemインスタンスにおけるitemTypeフィールドに対して「置き換え」及び「削除」だけがサポートされる。ExchangeItemの「データ」フィールドは、設定データコンテンツを含む。
【0153】
ackItemsについては、次の制約が適用される。即ち、recordIDフィールドは使用されず、返送されるExchangeItemインスタンスにおけるitemTypeフィールドに対してAck及びAckAllだけがサポートされる。このケースでは、データフィールドが使用されない。
【0154】
initRefreshメソッドは、2つのケースにおいて装置によりコールされる。第1に、装置がサーバーアラートに応答して装置に知られた全ての設定のダンプをスタートしようとしていることをサーバーに通知するのに使用される。これは、装置に知られた各データタイプに対して状態コード251により表わされた特殊な交換状態ExchangeAllにおいて送信することで遂行される。第2に、装置は、getItemsコールの後にサーバーにおける全ての既知の設定を検索することを希望する。装置は、各データタイプに対して状態コード251で表わされた状態INIT_REFRESHを送信することによりこれを行なう。
【0155】
アプリケーション交換プロトコル
アプリケーション交換プロトコルは、装置とサーバーとの間でソフトウェア変更を交換するプロセスを定義するのに使用される。アプリケーション交換機能は、XML_RPCの最上部に新たなプロトコルを定義することを必須としたレコード及び設定の交換とは極めて異なる。アプリケーション交換(AppEx)ソフトウェアに対するプロトコルの流れ、データの構造及びファンクションは、以下の章で述べる。AppExプロトコルは、appsをベースURL拡張として使用すると共に、バージョン番号及び外部ユーザIDをURLパラメータとして使用する。AppEx URLの一例が、http://www.verdisoft.com/dp/apps?extID=2347dhji34&version=1.0.1として示される。
【0156】
アプリケーション交換プロセスフロー
図23は、本発明の一実施形態による装置とサーバーとの間のアプリケーション交換プロセスフローを示すシーケンス図である。図23のソフトウェア交換プロセスフローにおけるステップのシーケンスを以下に説明する。
1)装置は、利用可能なアプリケーション変更についてサーバーに要求する。サーバーは、変更を利用可能にする全てのアプリケーションに対するセットアップ情報のリストを返送する。サーバーがソフトウェア変更をもたない場合には、AppExプロセスが終了となる。
2)装置は、セットアップ情報を処理し、ソフトウェア変更の実行をいつスタートすべきか判断する。
3)装置は、アプリケーションセットアップを開始する。サーバーは、装置が実行すべきセットアップコマンドのリストで応答する。
4)装置は、セットアップコマンドを処理し、アプリケーションセットアップに必要なファイルをダウンロードする。ファイルのダウンロードが失敗すると、装置は、残りのファイルのダウンロードを停止する。これは、首尾良くダウンロードされたソフトウェアをインストールし、次いで、シーケンスdeviceSetupStart及びdeviceSetupEndを適当なエラーコードと共に使用して、ダウンロードが失敗したことをサーバーに通知する。
5)装置は、アプリケーションセットアッププロセスが装置においてスタートすることをサーバーに通知する。この情報は、サーバーにより使用されて、装置上で変更されたソフトウェアに関連した全ての古いサービスを無効にする。サーバーは、特殊な状態コード301で応答して、装置が、getApplicationUpdateをコールすることで全プロセスを始めからスタートするよう強制する。1つのセットアップコマンドがフェイルすると、装置は、残りのコマンドの実行を停止する。
6)装置は、アプリケーションをスタートする。
7)アプリケーションは、それがインストールされたことをサーバーに通知する。サーバーは、このコールを使用して、装置の設定をスケジュールする。
8)装置は、サーバーから必要な設定をフェッチする。
9)アプリケーションは、自己テストの準備ができたことを任意の要求を通じてサーバーに通知する。サーバーは、このアプリケーションに対するある規定のテストデータをアクチベートする。
10)装置は、装置におけるセットアッププロセスが指定のアプリケーションに対して完了したことをサーバーに通知する。要求の一部分として、装置は、新たなソフトウェア同期アンカーを送信する。
11)アプリケーションは、使用の準備ができたことを任意の要求を通じてサーバーに通知する。
【0157】
アプリケーション交換データ構造
この章は、装置とサーバーとの間でのソフトウェアアプリケーションの交換に使用されるXML_RPCデータ構造を説明する。アプリケーション交換データ構造は、SetupInfo、SetupInfoItem、SetupCommand、NameValuePair、及びAppExResultを含む。
【0158】
SetupInfo構造は、装置が利用可能なソフトウェア変更についてサーバーに要求するときに使用される。サーバーは、装置に利用可能なソフトウェア更新を表わすSetupInfoインスタンスを変更する。
データメンバー:
description:これは、必須のフィールドであり、人間が読むことのできるものである。これは、全ソフトウェア更新を記述するもので、装置によって使用されて、ユーザが更新を受け容れるよう求められた場合にユーザに対しダイアログボックスでメッセージを表示するものである。
setupSize:これは、アプリケーション更新のためのスペース要求を指定する必須フィールドである。
sunshineDate:これは、ソフトウェアを更新できるときを指定する任意のフィールドである。フォーマットは、UTCである。サーバーへのアクセスは、装置がソフトウェアを間に合うようにインストールしないときには拒絶される。このフィールドが欠けたときには、装置は、ソフトウェア変更を直ちに処理するが、さもなければ、ユーザは、更新を今得たいか後で得たいか尋ねられる。
SetupInfoItems:これは、任意のフィールドで、ソフトウェア変更が存在するときにSetupInfoItem構造のアレーである。
【0159】
SetupInfoItem構造は、SetupInfo構造内で使用される。各SetupInfoItemは、装置に利用できるソフトウェア変更を表わす。
データメンバー:
setupType:これは、必須のフィールドであり、定数INSTALL=1、UPDATE=2、及びUNINSTALL=3、のうちの1つを含む。
additionalDescription:これは、任意のフィールドで、このセットアップアイテムに対する記述が、SetupInfoにおける全体的記述と独立し、それに追加されるもので、且つユーザに付加的に提示されることを指定する。このフラグが存在しないか又は偽である場合には、記述がユーザに提示されない。
setupInfoId:これは、必須のフィールドで、装置に対するアプリケーション設定変更を独特に識別する。
description:これは、ソフトウェア変更を記述する任意のフィールドである。
【0160】
SetupCommand構造は、セットアップコマンドをソフトウェア変更の一部分として送信するのに使用される。SetupCommand構造及びそれに対応するデータメンバーの一例を以下に示す。
setupType:これは、必須フィールドであり、定数INSTALL=1、UPDATE=2、及びUNINSTALL=3、のうちの1つを含む。
itemRef:これは、必須のフィールドである。SetupCommandアレーにおけるSetupCommandエレメントは、増加するアイテム参照番号でマークされる。このアイテム参照は、あるファンクションでは、アレーから1つのSetupCommandエレメントを識別するのに使用される。
URL:ダウンロードすべきセットアップコマンド又はファイルに対してURLを指定する任意のフィールドである。このフィールドは、通常、デフォールトによりセットされる。しかしながら、あるプラットホームでは、アンインストールのためにダウンロードする必要のあるソフトウェアはない。
CRCStr:これは、任意のフィールドで、CRC−32チェック和情報を含む。CRCは、CRCに基づくソフトウェアダウンロードをキャッシュ記憶するために装置により使用されてもよいし、又はダウンロードされたファイルが壊れたかどうかチェックするために使用されてもよい。
programId:これは、必須のフィールドであり、セットアップされているアプリケーションプログラムを独特に識別するIDを含む。
NameValuePairs:これは、任意のフィールドであり、NameValuePairデータ構造を指定する。
【0161】
NameValuePair構造は、SetupCommand構造の一部分として使用される。NameValuePair構造は、ネーム/バリュー対パラメータを指定するのに使用される。これらのパラメータは、このインストールに対して特定であり、例えば、特定のソフトウェア及び/又は装置タイプに必要とされるコマンドラインパラメータのような情報を搬送するのに使用される。
【0162】
AppExResult構造は、メソッド要求の結果を返送するのに使用される。これは、アプリケーション交換に関する情報を含む。
データメンバー:
SetupInfo:これは、任意のフィールドで、アプリケーションセットアップ情報を装置へ返送するのに使用される。このフィールドは、装置がgetApplicationUpdateをコールするときだけ返送される。
SetupCommand:これは、任意のフィールドで、アプリケーション変更(インストール、更新、又はアンインストール)に関連したセットアップコマンドを返送するのに使用される。このフィールドは、装置がinitiateApplicationUpdatesをコールするときに返送される。
result:これは、必須のフィールドで、アプリケーション変更メソッド要求の結果を含む。
【0163】
アプリケーション交換ファンクション
この章は、装置とサーバーとの間でのアプリケーションの交換を遂行するのに使用されるファンクションを説明する。AppExファンクションは、checkSyncAnchors、getApplicationUpdates、initiateApplicationUpdates、deviceSetupStarts、deviceSetupEnd、applicationInstalled、applicationReadyToTest、applicationReadyToGo、及びinitRefreshを含む。あるファンクションは、エラーコードをサーバーへ送信することができる。一実施形態では、エラーコードは、以下のテーブル5に定義される。
テーブル5
【0164】
ERR_CANT_DOWNLOAD_FILE又はERR_RAN_OUT_OF_DISKSPACEのような装置ローカルエラーについては、装置は、エラーをサーバーへ報告する前に、エラーを固定するための全ての考えられるステップを試みる(例えば、インターネット接続をチェックしたりハードドライブをクリーンアップしたりするようにユーザに頼む)ことに注意されたい。装置が現在ソフトウェア変更の問題を報告するためにエラーコードを送信するときには、サーバーが装置をディスエイブルする。
【0165】
checkSyncAnchorsは、装置が始動するたびに使用され、装置に知られた現在ソフトウェアアンカーを送信する。装置が保留中アンカーを有するときには、その保留中アンカーをサーバーにも送信する。或いは又、装置が保留中アンカーをもたないときには、保留中アンカーがサーバーへ送信されない。サーバーは、受け取ったアンカーを、サーバーに記憶されたアンカーと比較し、装置及びサーバーが同期ずれしているかどうか決定する。
AppExResult checkSyncAnchors (String anchor, StringpendingAnchor)
リターン:アンカーが一致するときには結果が200であり、アンカーが不一致のときには結果が417であるようなAppExResultのインスタンス
【0166】
getApplicationUpdatesメソッドは、装置に利用できる全アプリケーション更新のリストに関する情報を返送する。
AppExResult getApplicationUpdates (String anchor)
リターン:ソフトウェア変更が利用できるときにSetupInfo構造を含むAppExResultのインスタンス。さもなければ、SetupInfoメンバーはセットされない。
パラメータ:
・anchor−装置は、新たなアンカーを送信する。
【0167】
initiateApplicationUpdatesメソッドは、サーバーからインストラクションのリストを得て、アプリケーション変更(インストール、更新、又はアンインストール)プロセスをスタートするために、装置により呼び出される。サーバーにより返送される情報は、ダウンロードされるべきファイルと、装置上で実行されるべきコマンドとを含む。装置は、返送されたセットアップコマンドに載せられた順序でアプリケーション変更コマンドを実行する。
AppExResult initiateApplicationUpdates (String[] setupInfoIds)
リターン:SetupCommandアレーを含むAppExResultのインスタンス。
パラメータ:setupInfoIds−パラメータとして、装置は、getApplicationUpdates応答からsetupInfoIdsを送信する。
【0168】
deviceSetupStartsメソッドは、装置においてアプリケーションセットアップがスタートしたことをサーバーに通知する。これは、変更されているソフトウェアに関連した全ての古いサービスをサーバーが無効化できるようにする。他方、装置がアプリケーション更新プロセスを開始した後であって且つこのファンクションコールの前に新たなアプリケーション更新がサーバーにおいて追加された場合には、サーバーは、新たなアプリケーション更新が存在することを指示するエラーコード301を返送する。これが生じると、装置は、アプリケーション更新プロセスを再スタートする。
AppExResult deviceSetupStarts()
リターン:装置がAppExプロセスを再スタートすることを指示するために結果コード301を発生するAppExResultのインスタンス。
【0169】
装置は、このメソッドを要求することを試み、そしてサーバーから応答が返送されないときには、要求がサーバーにより受け取られたかどうか、又はサーバーからの応答が失われたかどうか分らない。この場合には、装置は、このメソッドに対して新たな要求で試みる。これは、応答が失われた場合には420エラーコードを生じさせることに注意されたい。
【0170】
deviceSetupEndメソッドは、装置におけるアプリケーションセットアップが完了したことをサーバーに通知する。サーバーは、更なるソフトウェア変更がサーバーにおいてその間にスケジュールされたかどうかチェックし、そして必要に応じて新たな通知を送出する。
AppExResult deviceSetupEnds (String anchor, int itemRef, int errorCode, StringerrorMsg)
パラメータ:
・anchor−装置は、現在インストールされたソフトウェアを表わす新たなアンカーを送信する。
・itemRef:このパラメータは、2つの方法で使用される。
第1に、itemRefは、位置“N”のコマンド、及びセットアップコマンドアレーにおいてその位置“N”より低い他の全てのコマンドは成功であり、そして他の全てのコマンドは実行されないことを指定する。
第2に、itemRefは、itemRefにより指定された位置、例えば、“M”におけるコマンドに対するセットアップが失敗し、“M”より低いオフセットをもつ他の全てのコマンドが成功であり、そして“M”より大きなオフセットをもつ全てのコマンドが実行されないことを指示する。
・errorCode−エラーの場合に、エラーの原因がここにリストされる。さもなければ、“OK”コードが返送される。
・errorMsg−このパラメータは、詳細なエラーメッセージを指定する。成功の場合には、このフィールドは、ナルである。
リターン:AppExResultのインスタント
【0171】
このメソッドは、通常のオペレーションのもとでコールされる。現在AppExプロセスが、AppExコードを含むプログラムをアンインストールする場合には、装置は、アンインストールをスタートする直前にこのメソッドをコールする。
【0172】
applicationInstalledメソッドは、アプリケーションがインストールされ又は更新されたことをサーバーに通知する。これは、REx API又はSetEx APIを使用して装置とサーバーとの間でデータを同期する各アプリケーションに対して必須である。このメソッドの主たる使用は、プログラム更新のためである。サーバーは、このメソッドをコールして、更新されたソフトウェアにより使用される設定をアクチベートする。
AppExResult ApplicationInstalled(String programId, int errorCode, String errorMsg)
パラメータ:
・programId−サーバー側でアプリケーションサービスを独特に識別する
・errorCode−エラーの場合には、エラーの原因がここにリストされる。さもなければ、OKコードが返送される。
・errorMsg−詳細なエラーメッセージを指定する。首尾良いアプリケーションインストールの場合には、このフィールドがナルである。
リターン:AppExResultのインスタンス
【0173】
applicationReadyToTestメソッドは、あるテストを行なって、それが正しく働くかどうかチェックすることを希望する旨、サーバーに通知する。サーバーは、このメソッドを使用して、あるテストデータをアクチベートする。
AppExResult ApplicationReadyToTest (String programId, int errorCode, String errorMsg)
パラメータ
・programId−サーバー側のアプリケーションサービスを独特に識別する
・eoorCode−エラーの場合、エラーの原因がここにリストされる。さもなければ、“OK”コードが返送される。
・errorMsg−詳細なエラーメッセージを指定する。成功の場合、このフィールドは、ナルである。
リターン:AppExResultのインスタンス
【0174】
applicationReadyToGoメソッドは、使用の準備ができたことをサーバーに通知する。applicationReadyToGoメソッドをコールするには、applicationInstalled又はapplicationReadyToTestをコールする各プログラムが必要とされる。
AppExResult ApplicationReadyToGo (String programId, int errorCode, String errorMsg)
パラメータ
・programId−サーバー側のアプリケーションサービスを独特に識別する
・eoorCode−エラーの場合、エラーの原因がここにリストされる。さもなければ、“OK”コードが返送される。
・errorMsg−詳細なエラーメッセージを指定する。成功の場合、このフィールドは、ナルである。
リターン:AppExResultのインスタンス
【0175】
initRefreshメソッドは、装置が、装置において全てのソフトウェアを再インストールしたいことをサーバーに通知するときに、使用される。サーバーは、この要求を受け取ると、装置にあってもよい全てのソフトウェアをインストールのためにマークする。装置は、このコールに対して首尾良い応答を受け取ると、完全なAppExプロセスを遂行して、コマンドを検索する。
AppExResult initRefresh()
リターン:AppExResultのインスタンス
【0176】
サーバーは、装置に対するソフトウェア変更を有するときに通知を送信する。装置がgetApplicationUpdatesをコールするときに、サーバーは、装置が通知を受け取ったと仮定し、そしてサーバー側の通知をクリアする。これは、ユーザがソフトウェアの変更を延期する場合及び装置が再スタートされる場合の両方に装置がgetApplicationUpdatesの結果を永続的なものにすることを意味する。装置は、AppExプロセスの中間で通知を受け取ると、その通知を無視することができる。装置がdeviceSetupEndをコールしてAppExプロセスを終了すると、サーバーは、更なるソフトウェア変更が存在するかどうかチェックし、そして必要に応じて新たな通知を送出する。
【0177】
アプリケーション交換状態コード
設定交換において、装置がゾンビモードにあるときに状態コード300が返送される。この場合には、装置は、最初に、装置プロビジョニングプロトコルを使用して装置タイプ識別を送信し、ゾンビモードを出る。
【0178】
deviceSetupStartsメソッドへのコールは、装置がgetApplicationUpdatesをコールすることにより全AppExプロセスを始めからスタートするように強制する301結果コードを返送することができる。getApplicationUpdatesに対する要求は、ソフトウェア変更が存在するかどうかサーバーが現在決定できないときに302結果コードを返送することができる。これは、サーバーが、applicationInstalled及び/又はapplicationReadyToGoをコールするために、新たにインストール又は更新されたソフトウェアプログラムを待機するときに生じることがある。この場合、装置は、遅延を増加しながら要求を後で数回再試みする。数回の再試みの後に、サーバーが、依然、302状態コードで応答する場合には、装置は、全AppExプロセスを終了し、次の通知を単に待機することになる。
【0179】
checkSyncAnchorsメソッドへのコールは、装置上のソフトウェアと、サーバーが装置上にあると考えているソフトウェアとが異なるものであることを指示する417結果コードを返送することができる。サーバーへの各コールは、エラーコード500を生じさせる。これは、サーバーがこのとき何らかの理由で装置コールに応答できないことを指示する一時的サーバーエラーである。データコンテンツは、サーバーにより検査されず、従って、間違っているとは考えられない。クライアントは、前記のように、同じインターバルを使用して同じ要求を再試みする。所与の回数の再試みの後に、クライアントは、再試みを終了し、そして通知又はポーリング時間切れといった次の通常の同期事象を待機する。
【0180】
ソフトウェア同期アンカー
ソフトウェア同期アンカーは、装置上のソフトウェアが、サーバーが装置上にあると考えているソフトウェアとは異なるときを検出するのに使用される。これは、ユーザが全装置をバックアップするように試みるときに生じる。この状況では、装置上のソフトウェアは、装置がバックアップから回復する前にサーバーにより装置にインストールされたソフトウェアと適合しないことがある。
【0181】
装置及びサーバーは、両方とも、それらが始めに同期することを保証するために同じソフトウェア同期アンカー値に初期化される。装置は、同期アンカーを駆動する。装置は、getApplicationUpdate又はdeviceSetupEndをコールするたびに、新たなアンカーをサーバーへ送信し、サーバーは、そのアンカーを記憶する。装置は、コールに対する首尾良い応答をサーバーから受け取ると、現在アンカーを、サーバーへ送信された新たなアンカーに置き換える。getApplicationUpdate又はdeviceSetupEndへのコールが失敗すると、装置は、サーバーが要求を受け取って新たなアンカーを記憶したかどうか分らない。それ故、装置は、要求を再びコールするよう試みるときに保留中の新たなアンカーを再送信する。
【0182】
装置は、スタートするたびに、checkSyncAnchorを使用してサーバーへ現在アンカーを送信する。装置は、deviceSetupEndコールに対して首尾良い応答を得ていない保留中の新規なアンカーを有するときに、このアンカーをcheckSyncAnchorsコールへのパラメータとして送信する。サーバーは、送られたアンカー(又は送信されたアンカー)を、装置から受け取った最後のアンカーと比較する。アンカーが一致しないときには、装置は、ユーザへ問題を報告し、そしてinitRefreshをコールして、スクラッチから完全ソフトウェアインストールをスタートする。
【0183】
アプリケーション交換状態
サーバーは、ソフトウェアインストール、アンインストール又は更新プロセス中には、2つの状態の一方にある。図24は、本発明の一実施形態によるアプリケーション交換状態遷移図である。装置が不法メソッドをコールすると、エラー状態は、サーバーが420状態コードをこのコールに対する応答として返送するようにさせる。その後、状態マシンは、その状態へ復帰し、そこからエラー状態へ移行する。
【0184】
エラー状態から出るために、装置は、getApplicationUpdateをコールし、そして全アプリケーション交換プロセスを再スタートする。これを行なうために、装置は、エラーコード(例えば、200)で且つ−1をitemRefとして、deviceSetupEndをコールする。次いで、以前に割り込まれたプロセスに対してクリーンな状態から新たなAppExプロセスをスタートする。
【0185】
アプリケーション交換インストール及び更新
装置がAppExを経てソフトウェアをインストールし又は更新するときに、インストール又は更新がフェイルすることがある。変更がセットアッププログラムにより完全にロールバックされていないときには(装置がクラッシュしたために)、ソフトウェアがもはや使用できないことがある。これは、装置上でAppExを遂行するソフトウェアを装置が更新するよう試みる場合に重大となる。
【0186】
装置は、サーバーとのAppExをまだ実行できる場合に、initRefreshメソッドを、次いで、AppExプロセスをコールして、装置上の全てのソフトウェアプログラムを(従って、壊れたソフトウェアプログラムも)再インストールするよう試みることができる。装置は、AppExプログラムをもはや実行できない場合には、ローダーを使用して、装置能力、例えば、装置タイプ識別情報を送信し、この場合も、URLをリモートインストーラーへ配送する。このコールは、サーバー側で全てのソフトウェアプログラムが再インストールに対してマークされることを意味する。装置は、リモートインストーラーをインストールし、次いで、AppExを使用して、ソフトウェアプログラムを再インストールする。
【0187】
以上、明瞭化のために、異なる機能的ユニット及びプロセッサを参照して本発明の実施形態について説明されたことが明らかであろう。しかしながら、本発明から逸脱せずに、異なる機能的ユニット又はプロセッサ間に機能を適宜に分散させられることも明らかであろう。例えば、個別のプロセッサ又はコントローラにより遂行されるべき機能は、同じプロセッサ又はコントローラによって遂行されてもよい。従って、特定の機能的ユニットを参照することは、厳密な論理的又は物理的構造又は編成を表わすのではなく、前記機能を与える適当な手段を参照するに過ぎないことが明らかであろう。
【0188】
本発明は、ハードウェア、ソフトウェア、ファームウェア又はその組み合せを含む任意の適当な形態で実施することができる。又、本発明は、1つ以上のデータプロセッサ及び/又はデジタル信号プロセッサ上で実行されるコンピュータソフトウェアとして部分的に実施されるのも任意である。本発明の実施形態のエレメント及びコンポーネントは、任意の適当な仕方で物理的に、機能的に及び論理的に実施されてもよい。実際に、機能は、単一ユニットで実施されてもよいし、複数のユニットで実施されてもよいし、又は他の機能的ユニットの一部分として実施されてもよい。従って、本発明は、単一のユニットで実施されてもよく、又は異なるユニットとプロセッサとの間に物理的及び機能的に分散されてもよい。
【0189】
当業者であれば、同じ基本的なメカニズム及び方法を使用しながら、ここに開示された実施形態の多数の考えられる変更や組み合せも使用できることが明らかであろう。以上の説明は、例示の目的で特定の実施形態を参照して書かれたものであった。しかしながら、前記説明は、これに尽きるものでもないし、又、本発明をこれに限定するものでもない。前記教示に鑑み、多数の変更や修正が考えられる。前記実施形態は、本発明の原理及びそれらの実際の応用を説明すると共に、当業者が、本発明及び種々の実施形態を、意図された特定用途に適するように種々変更を加えて最良に利用できるようにするために、選択されて説明されたものである。
【技術分野】
【0001】
本発明は、一般に、通信ネットワークにおいて1つ以上のユーザ装置にサービスを提供するための分野に係る。より詳細には、本発明は、ユーザ装置をプロビジョニングするためのシステム及び方法に係る。
【0002】
関連出願へのクロスリファレンス:本願は、次の特許出願に関連している。Matthias Breuer氏等の“System and Method for Servicing a User Device”と題する米国特許出願第11/182,348号(代理人整理番号32421−2001700号);Torsten Schulz氏等の“System and Method for Synchronizing between a User Divice and a Server in a Communication Network”と題する米国特許出願第11/182,203号(代理人整理番号32421−2001800号);Venkatachary Srinivasan氏等の“An Alert Mechanism for Notifying Multiple User Devices Sharing a Connected-Data-Set”と題する米国特許出願第11/183,137号(代理人整理番号32421−2002200号);Marco Boerris氏等の“Methods and Systems for Data Transfer and Notification Mechanisms”と題する米国特許出願第11/182,614号(代理人整理番号32421−20021.00号);及びTorsten Schulz氏等の“Content Router”と題する米国特許出願第11/182,287号(代理人整理番号32421−2000900号)。これらは、参考としてここに全体を援用するものである。
【背景技術】
【0003】
通信、情報管理及び再生成のための電子装置の近年の急増で、デスクに縛られたパーソナルコンピュータとはかけ離れた日常の計算力が得られるようになった。ユーザは、セルラー電話、カメラ電話、パーソナルデジタルアシスタント(PDA)及びナビゲーションシステムのような装置を、オフィスや家庭だけではなく、田畑や道路でも使用している。このような装置には、通信、ビジネス、ナビゲーション、娯楽、及び毎日の基本的活動の管理を含む様々な範囲の用途が考えられる。多くのユーザは、今日、1つのタスクに1つの装置を使用するだけであり、例えば、セルラー電話を使用して電話コールを発信し受信する。しかしながら、これら装置は、もはや、単一機能の装置ではない。それらは、種々の形式のデータ、例えば、電子メール、音声メッセージ、写真、ビデオ、等を生成することができる。装置の機能数が増すにつれて、ユーザに対する個人化のレベルも高くなる。ユーザがどこにいようと、どんな装置を使用しようと、又、どんなサービスに接続しようと、それらのデータに接続しアクセスするための接続サービスをユーザに提供することが要望される。
【発明の概要】
【発明が解決しようとする課題】
【0004】
このような接続サービスをユーザに提供する課題の1つは、ユーザが移動装置を購入した後にその製品をプロビジョニングする必要性である。慣習的に、ユーザは、パーソナルコンピュータに接続されたクレードルを通して装置をプロビジョニングしなければならない。これは、通常、家庭やオフィスで行なわれる。プロビジョニング段階が終了するまで、ユーザは、移動装置を使用することができない。それ故、いつでもどこでも移動装置をプロビジョニングすることが要望される。
【0005】
このような接続サービスをユーザに提供する別の課題は、ユーザが既に自分のPC、PDA、セルラー電話、又は他の装置に確立している設定及びデータのセットに1つ以上のユーザ装置を接続する必要性である。例えば、ユーザは、新たな装置を取得したときに、設定及びデータのセットを既存の装置から新たな装置へコピーする必要がある。又、ユーザは、既存の装置を修理し、又は設定及びデータのセットを置き換える必要もある。又、ユーザは、ユーザ装置を紛失したり、盗難にあったり又は一時的に置き忘れたりした場合に、ユーザ装置のサービスを終了させる必要もある。
【0006】
このような接続サービスをユーザに提供する更に別の課題は、設定及びデータの共通セットを共有する1つ以上のユーザ装置に対する通信の状態をユーザに通知する必要性である。例えば、1つ以上のユーザ装置においてeメール、タスク、カレンダー事象又はアドレスブックエントリーの記憶装置にオーバーフロー状態が生じたときにユーザに通知する必要がある。
【0007】
このような接続サービスをユーザに提供する更に別の課題は、設定及びデータの共通セットを共有するサーバー及び1つ以上のユーザ装置間でデータの一貫性を維持する必要性である。例えば、サービスがサーバーにおいて、ある時間周期中、中断されたときには、サーバー及び1つ以上のユーザ装置間でデータの変更を同期させる必要がある。
【課題を解決するための手段】
【0008】
一実施形態において、通信ネットワーク内で1つ以上のユーザ装置を接続するための複数のエントリーポイントを与えるシステムは、1つ以上のユーザ装置と通信するサーバーであって、このサーバーが接続データセットを含み、且つ1つ以上のユーザ装置が接続データセットの一部分を共有するようにしたサーバーを備えている。このシステムは、更に、複数のエントリーポイントの1つから接続データセットにアクセスする要求をユーザ装置から受け取るためのロジックと、ユーザ装置の属性を自動的に決定するためのロジックと、ユーザ装置の属性を使用して所定のクライアント装置のデータベースから通信メソッドを選択するためのロジックと、その通信メソッドに基づいてユーザ装置をプロビジョニングするためのロジックとを備えている。
【0009】
別の実施形態において、通信ネットワーク内で1つ以上のユーザ装置を接続するための複数のエントリーポイントを与える方法は、1つ以上のユーザ装置と通信するサーバーを用意するステップであって、このサーバーが接続データセットを含み、且つ1つ以上のユーザ装置が接続データセットの一部分を共有するようにしたステップと、複数のエントリーポイントの1つから接続データセットにアクセスする要求をユーザ装置から受け取るステップと、ユーザ装置の属性を自動的に決定するステップと、ユーザ装置の属性を使用して所定のクライアント装置のデータベースから通信メソッドを選択するステップと、その通信メソッドに基づいてユーザ装置をプロビジョニングするステップとを備えている。
【0010】
本発明の前記特徴及び効果、並びにその付加的な特徴及び効果は、添付図面を参照した本発明の実施形態の以下の詳細な説明読んだ後に更に明確に理解されよう。
【図面の簡単な説明】
【0011】
【図1a】本発明の一実施形態による接続寿命サービスを示す図である。
【図1b】本発明の一実施形態による図1aの接続寿命サービスをサポートする接続寿命サーバーを示す図である。
【図2】本発明の一実施形態による接続寿命サーバーの装置マネージャーの実施例を示す図である。
【図3】本発明の一実施形態により未構成のアカウントグループをプロビジョニングするためのワークフローを示す図である。
【図4】本発明の一実施形態により前構成されたアカウントグループをプロビジョニングするためのワークフローを示す図である。
【図5】本発明の一実施形態により「マイクロソフトアウトルック」をプロビジョニングするワークフローを示す図である。
【図6】本発明の一実施形態により前インストールされたローダーを経て装置をプロビジョニングするワークフローを示す図である。
【図7】本発明の一実施形態によりウェブサイトを経て装置をプロビジョニングするワークフローを示す図である。
【図8】本発明の一実施形態により検証された電話番号でウェブサイトを経て装置をプロビジョニングするワークフローを示す図である。
【図9】本発明の一実施形態により検証された電話番号なしにウェブサイトを経て装置をプロビジョニングするワークフローを示す図である。
【図10】本発明の一実施形態によりActiveX装置に対してウェブサイトを経て装置をプロビジョニングするワークフローを示す図である。
【図11】本発明の一実施形態によりクライアントソフトウェアを使用してウェブサイトを経て装置をプロビジョニングするワークフローを示す図である。
【図12】本発明の一実施形態により装置の既存の同期スタックを使用してウェブサイトを経て装置をプロビジョニングするワークフローを示す図である。
【図13】本発明の一実施形態によりSMSを経て装置をプロビジョニングするワークフローを示す図である。
【図14】本発明の一実施形態によりオンラインショップを経て装置をプロビジョニングするワークフローを示す図である。
【図15】RExプロトコルフローの概要を示す図である。
【図16】異なるRExメソッドを使用してユーザ装置とサーバーとの間の対話を示すフローチャートである。
【図17】本発明の一実施形態による問合せプロセスのシーケンス図である。
【図18】本発明の一実施形態によりクライアント装置とサーバーとの間で同期をとるための同期アンカープロトコルを示す図である。
【図19】本発明の一実施形態により装置が装置タイプ識別設定を交換するときのプロセスフロー図である。
【図20】本発明の一実施形態によりゾンビ状態において装置タイプ識別以外の設定を装置が交換しようと試みるときのプロセスフロー図である。
【図21】本発明の一実施形態による通常の設定交換のためのシーケンス図である。
【図22】本発明の一実施形態によるダンプ設定のためのシーケンス図である。
【図23】本発明の一実施形態による装置とサーバーとの間のアプリケーション交換プロセスフローを示すシーケンス図である。
【図24】本発明の一実施形態によるアプリケーション交換状態遷移図である。
【発明を実施するための形態】
【0012】
ユーザ装置をプロビジョニングするための方法及びシステムが提供される。以下の説明は、当業者が本発明を実施し利用できるようにするためのものである。特定の実施形態及び応用は、一例に過ぎない。当業者であれば、ここに述べる実施例の種々の変更及び組み合せが容易に明らかであり、又、ここに述べる一般的な原理は、本発明の精神及び範囲から逸脱せずに、他の実施例及び応用に適用することができよう。従って、本発明は、ここに図示して説明する実施例に限定されず、ここに開示する原理及び特徴との最も広い一貫性が与えられるべきである。
【0013】
以下の詳細な説明の幾つかの部分は、コンピュータメモリ上で遂行できるデータビットに対するオペレーションの手順、ステップ、論理ブロック、処理、及び他の象徴的表現に関して表わされる。手順、コンピュータ実行ステップ、論理ブロック、プロセス、等は、ここでは、希望の結果を導くステップ又はインストラクションの自己一貫性シーケンスであると考えられる。ステップは、物理量の物理的操作を利用するものである。これらの量は、コンピュータシステムにおいて記憶、転送、合成、比較、その他、操作することのできる電気、磁気又は無線信号の形態をとることができる。これら信号は、しばしば、ビット、値、エレメント、記号、キャラクタ、項、数字、等と称される。各ステップは、ハードウェア、ソフトウェア、ファームウェア、又はその組み合せによって遂行することができる。
【0014】
図1aは、本発明の一実施形態による接続寿命サービス(connected-life service)を示す。この接続寿命サービスは、ユーザがそれらの接続データセット(connected-data-set)を任意の装置と共有していつどこからでもアクセスできるようにする。ユーザ装置(装置又はクライアントとも称される)は、セルラー電話、ワイヤレスパーソナルデジタルアシスタント、ナビゲーション装置、パーソナルコンピュータ、ゲームコンソール、インターネットターミナル、及びキオスクを含む。接続データセットは、eメール、連絡先、カレンダー、タスク、ノート、ピクチャー、ドキュメント、音楽、ビデオ、ブックマーク及びリンクを含む。
【0015】
異なる実施形態において、接続寿命サービスは、次の機能を提供する。1)ユーザ装置を修理し、2)第1ユーザ装置を第2ユーザ装置へ複写し、3)第1ユーザ装置を第2ユーザ装置に置き換え、及び4)ユーザ装置のサービスを終了する。ユーザ装置を修理するサービスは、1つ以上のユーザ装置の状態をリセットし、1つ以上のユーザ装置の構成及び設定を回復し、そして接続データセットを1つ以上のユーザ装置へ回復させることを含む。
【0016】
第1ユーザ装置を第2ユーザ装置へ複写するサービスは、第1ユーザ装置の構成及び設定を第2ユーザ装置へ転送し、そして接続データセットの一部分を第1ユーザ装置の設定に基づいて第2ユーザ装置へ転送することを含む。
【0017】
第1ユーザ装置を第2ユーザ装置と置き換えるサービスは、所定の構成及び設定のセットを構成データベースから第2ユーザ装置へ転送し、ここで、第2ユーザ装置は、第1装置と同じモデル、メーク及びタイプを有するものであり、そして接続データセットの部分を第2ユーザ装置の設定に基づいて第2ユーザ装置へ転送することを含む。第1ユーザ装置を第2ユーザ装置と置き換えるサービスは、更に、所定の構成及び設定のセットを構成データベースから第2ユーザ装置へ転送し、ここで、第2ユーザ装置は、第1装置と異なるモデル、メーク及びタイプを有するものであり、そして接続データセットの部分を第2ユーザ装置の設定に基づいて第2ユーザ装置へ転送することを含む。
【0018】
ユーザ装置のサービスを終了させるサービスは、ユーザ装置の構成及び設定を削除し、ユーザ装置への通信を終了し、そして他のユーザ装置へ終了状態を送信することを含む。装置の終了サービスは、装置からサービスを取り除くために適用されるだけでなく、「装置紛失」又は「装置盗難」の場合にも利用できることに注意されたい。このような場合には、ソフトウェア及び設定だけでなく、ユーザデータ(メール、アタッチメント、PIM、写真、等)も、取り除くことができる。
【0019】
更に、装置終了サービスの別の特徴は、装置の阻止である。この場合、ユーザは、装置を見つけられないが、装置を見つける機会がまだあると仮定すれば、それを紛失したか、単にどこかに置き忘れたか確実に分らない。この場合、このサービスは、ユーザから更に命令があるまで装置を阻止するか又は少なくとも装置へのデータサービスを一時的に阻止する能力をユーザに提供する。
【0020】
図1bは、本発明の一実施形態による図1aの接続寿命サービスをサポートする接続寿命サーバーを示す。接続寿命サーバー100は、異なる地理的位置にある1つ以上のコンピュータ/サーバーにより実施される。接続寿命サーバーは、ユーザがデータを生成し又は記憶する異なるコンピューティング装置(パーソナルコンピュータ102及び104、移動装置106、サーバー108、並びにウェブポータル110及び112を含む)の間で接続データセットを管理する。
【0021】
図2は、本発明の一実施形態による接続寿命サーバーの装置マネージャーの実施例を示す。装置マネージャー200は、ウェブフロントエンド202と、装置コントローラ204と、装置記述記憶装置206と、1セットのプロトコルアダプタ208とを備えている。装置マネージャーは、プロトコルアダプタ208を通してユーザ装置210と通信し、それを管理する。更に、装置マネージャーは、ユーザマネージメントユニット212及びスマートコンテンツルーティングユニット214を通して接続寿命サーバーの他の部分と通信する。ユーザマネージメントユニットは、異なるサービスからユーザ装置を管理するのに使用されることに注意されたい。このユニットは、全てのユーザが、SBC−Yahoo DSLサービスのような同じインターネットサービスプロバイダーからのものである場合には、任意である。
【0022】
装置コントローラ204は、更に、ソフトウェアマネージメントユニット216、サービスマネージャー218、設定変更ディスパッチャー220、及び装置状態記憶装置222を備えている。ソフトウェアマネージメントユニット216は、ユーザ装置に対するレコード、設定及びアプリケーションをインストールし、更新し、そしてデインストールする。サービスマネージャー218は、ユーザ装置に対してサポートされるサービスのタイプを管理する。サービスマネージャーは、ユーザ装置及び接続寿命サーバーの間で接続データセットを転送するためにスマートコンテンツルーティングユニット214へ情報を与える。設定変更ディスパッチャー220は、装置設定の変更を装置マネージャーからユーザ装置へ与える。装置状態記憶装置222は、ユーザ装置のオペレーティング状態に関する情報を記憶する。
【0023】
装置記述記憶装置206は、接続寿命サービスによりサポートされるユーザ装置210のタイプ記述224、トランスコーディング226、アカウントテンプレート228、及びサービス記述230を記憶する。装置マネージャーは、このような装置情報を装置記述記憶装置206とファイルサーバー230との間で転送する。装置マネージャーは、ユーザ装置を、タイプ記述、トランスコーディング、アカウントテンプレート、及びサービス記述の異なる組み合せに関連付けて、ユーザ装置の所定のグループに対して各組み合せをテストし検証できるようにする。その結果、異なるサービスラインがそれに対応する装置特徴を含み、そしてサービスを、異なるユーザグループに提供することができる。
【0024】
プロトコルアダプタ208は、プロビジョニングユニット232、レコード交換ユニット234、設定交換ユニット236、アプリケーション交換ユニット238、SyncMLユニット240、及び他のアダプタユニット242を備えている。上述した機能的ユニット(即ち、論理的ブロック200−244)は、ソフトウェア、ハードウェア、或いはソフトウェアとハードウェアの組み合せで実施できることに注意されたい。機能的ユニット間の相互作用については、次の章で詳細に述べる。
【0025】
ユーザ装置のプロビジョニング
一般的に、消費者が接続寿命サービスに契約できる方法は2つある。1)アカウントを登録し、その後、装置のプロビジョニングを行なう。2)装置を登録し、従って、接続寿命サービスアカウントの登録が手順に含まれる(まだアクティブでない場合)。
【0026】
2つの選択肢のうち、ユーザが接続寿命サービスに契約したときには、最初に、アカウントを登録する。接続寿命サービスは、顧客のアカウントを維持するサービスプロバイダーを通して提供される。これは、eメールアカウント、PIM記憶及び管理ファシリティ、並びに「ブリーフケース」機能、即ち写真や音楽やドキュメントや他のデータのようなユーザの他のファイルの記憶、を含むが、これらに限定されない。
【0027】
ユーザは、接続寿命サービスにより提供されるサービスについて登録するときに、それらを提供するサービスプロバイダーの既に登録された顧客としてこれを行なう。従って、接続寿命サービスの利用に対して可能となるアカウントを既に有する。アカウントのプロビジョニングの実施については、以下で述べる。次の章が含まれる。
−アカウントグループ
この章は、異なるアカウントグループ又はアカウントタイプについて述べる。異なるアカウントプロビジョニング利用ケースを理解するためには、このグループを知る必要がある。
−利用ケース
3つのアカウントプロビジョニング利用ケースがある。その各々を次の章で述べる。
【0028】
又、ユーザは、最初にそれらの装置を登録することによりアカウントを登録するオプションを有する。ここでは、装置プロビジョニングプロセスの一部分として、アカウントが自動的に生成される。
【0029】
アカウントグループ
ユーザアカウントは、グループ編成することができる。各アカウントグループは、2つ以上の方法を使用してプロビジョニングすることができる。テーブル1は、接続寿命サービスによりサポートされるサンプルアカウントグループを示す。
テーブル1
【0030】
利用ケース
アカウントグループは、接続寿命サービスに対して3つの異なる仕方でプロビジョニングすることができる。これらの利用ケースは、次の章で説明する。
1)未構成のアカウントグループをプロビジョニングする
ここでは、ユーザが登録するアカウントの詳細は、そのほとんどの部分について、接続寿命サーバー(CLS)には分らない。それ故、ユーザは、これらの詳細を手動で入力し、従って、経験のあるユーザについてのみ意図される。
2)前構成されたアカウントグループをプロビジョニングする
アカウントグループの技術的仕様がCLSに予め分るときには、アカウントのプロビジョニングは、最小限のユーザ努力しか必要としない容易な形態で行うことができる。
3)マイクロソフトアウトルックをプロビジョニングする
自分のPCに位置されたアカウントをもつことを希望するユーザについては、マイクロソフトアウトルックアプリケーションを使用する。
【0031】
未構成のアカウントグループをプロビジョニングするための必須条件は、ユーザがアウトルックリディレクタ以外のアカウントグループからのアカウントを既に有していることである。適用可能なアカウントグループは、交換、WebDAV、IMAP及びPOP3である。この利用ケースにおいて、ユーザは、アカウント/データソースを登録するために、CLSにより要求される全ての情報を特定する。これは、アカウントユーザ名及びパスワードのような通常のパラメータと、サーバーの名前及びそれらの各々のポート番号とを含む。
【0032】
これは、全部で3つの利用ケースの中で最も複雑であり、それ故、経験のあるユーザにしか推奨されない。これは、サービスプロバイダーがこれらデータソースパラメータを知らないとき、例えば、サービスプロバイダー以外のデータソースに接続することをユーザに提示する場合だけ、実施される。
【0033】
図3は、本発明の一実施形態により未構成のアカウントグループをプロビジョニングするためのワークフローを示す。ユーザは、1)サービスプロバイダーのウェブサイトにログオンし、2)適当なアカウントグループを選択し、3)アカウントのための全ての必要なパラメータを入力する。これらのステップが完了すると、CLSは、アカウントを生成する。
【0034】
図4は、本発明の一実施形態により前構成されたアカウントグループをプロビジョニングするためのワークフローを示す。前構成されたアカウントグループをプロビジョニングするための必須条件は、ユーザがアウトルックリディレクタ以外のアカウントグループからのアカウントを既に有していることである。適用可能なアカウントグループは、サービスプロバイダーにより提供されるものである。この利用ケースは、ユーザが登録を選択する前にアカウント仕様のほとんどを知ることに基づく。第1の利用ケースとは対照的に、これは、前構成されたアカウントグループのプロビジョニングを含む。即ち、アカウントの仕様のほとんどが接続寿命サーバーに既に知られており、ユーザは、アカウントを登録するためにサービスプロバイダーに対する証明書を単に入力するだけである。サーバー名、ポート番号、等の仕様は、タイプインする必要がない。
【0035】
これは、アカウントをプロビジョニングする簡単な仕方である。ユーザは、「はい、このサービスへの契約を希望します」と簡単に答えるだけでよく、その他は、接続寿命サービスにより取り扱われる。ユーザは、それらのサービスプロバイダーでログオンした後、接続寿命サービスに登録したいアカウントを選択する。
【0036】
図5は、本発明の一実施形態により「マイクロソフトアウトルック」をプロビジョニングするワークフローを示す。マイクロソフトアウトルックをプロビジョニングするための必須条件は、ユーザが自分のPCにマイクロソフトアウトルックをインストールすることである。適用可能なアカウントグループは、アウトルックリディレクタである。
【0037】
このオプションでは、ユーザは、自分のパーソナルコンピュータにデータソースとしてマイクロソフトアウトルックアプリケーションをもつよう選択できる。アカウントがサービスプロバイダーのサーバーに位置された利用ケースI及びIIとは対照的に、マイクロソフトアウトルックアカウントのプロビジョニングは、それがユーザ自身のPCにローカル配置されることを意味する。
【0038】
この方法を使用して、ユーザは、それらの交換、IMAP、又はPOPアカウントを、接続寿命サービスアカウントとして依然もつことができるが、CLSは、マイクロソフトアウトルックに接続され、プロバイダーサーバー(1つ又は複数)には接続されない。これは、アウトルックの“.pst”ファイルのローカル記憶データに接続されるか、或いは交換アカウントに接続するのにアウトルックが使用される場合には、交換プロフィールに接続され、そしてそれを通して、交換サーバーに接続される。後者のシナリオは、CLSと交換サーバーとの間のファイアウオールの問題を克服するのに使用できる。
【0039】
マイクロソフトアウトルックのプロビジョニングは、ユーザのPCにアウトルックリディレクタをインストールすることを意味する。リディレクタは、アウトルックの“.pst”ファイル/交換プロフィールと、接続寿命サーバーとの間の仲介手段として働く。アウトルックは、アカウントからデータが供給される装置としてプロビジョニングできることにも注意されたい。装置をどのようにプロビジョニングするかの詳細は、以下の章で述べる。
【0040】
図5は、本発明の一実施形態によりアウトルックをデータソースとして登録するためのワークフローを示す。アウトルックをデータソースとして登録するためのワークフローは、次の通りである。
1.ユーザは、サービスプロバイダーのウェブサイトにログオンする。
2.ユーザは、アウトルックリディレクタアカウントグループを選択する。
3.ローダーがPCにインストールされる。
4.ユーザは、PCに対するユーザ名及びパスワードを入力する。
5.アカウントがアクチベートされ、そしてクライアントソフトウェアがインストールされる。
【0041】
ユーザは、それらのアカウントの登録を完了した後に装置をプロビジョニングすることができる。或いは又、接続寿命サービスは、それらの装置及びアカウントを同時に登録する(ユーザの観点から)可能性をユーザに与える。その目的は、プロビジョニングプロセスをできるだけ容易に且つ簡単にすることである。プロビジョニングの終りに、ユーザは、アカウントのデータがそれらの装置に接続された状態で去る。装置プロビジョニングプロセスには少なくとも4つのエントリーポイントがある。
1.ユーザは、ローダーソフトウェアを受け取る。
2.ユーザは、ウェブサイトを経てエントリーする。ユーザがサービスプロバイダーのウェブサイトにログオンするか、或いはセールスアシスタント又は顧客サービス代表者(CSR)がユーザに代わってユーザを登録する(電話により店に)。
3.ユーザは、サービスプロバイダーにより指定された番号へSMSを送信する。
4.ユーザは、プロバイダーのオンラインショップにログオンする。
【0042】
更に、ユーザは、装置がそのデータの全部又は一部分を失うか、又はユーザが装置を紛失し、同じタイプの別の装置と交換する場合には、それらの装置を回復させるよう選択することができる。これらのシナリオは、全て、顧客が、接続寿命サービスを提供するサービスプロバイダーに既に登録されたユーザであると仮定している。又、ユーザが接続寿命サービスにまだ登録していない場合には、前構成されたアカウントグループをプロビジョニングするための利用ケースIIに基づいて登録される。
【0043】
図6は、本発明の一実施形態により前インストールされたローダーを経て装置をプロビジョニングするワークフローを示す。ユーザが接続寿命サービスに対して自分の装置を登録する1つの仕方は、自分の装置にローダーアプリケーションをインストールすることによるものである。ローダーは、装置のプロビジョニング及びクライアントソフトウェアのインストールを容易にするアプリケーションである。
【0044】
ローダーは、種々の仕方、即ちダウンロード、CD−ROM、SD又は他のメモリカードを経て、或いはローダーを装置に送信する他の方法で、ユーザに利用できるようにされる。ローダーは、特定の装置タイプに対して表示される(バージョン番号で)。従って、装置が登録のためにCLSに接続されるときには、サーバーは、装置のタイプや、クライアントソフトウェアをインストールする必要があるかどうかが自動的に分る。予めインストールされたローダーを経て装置をプロビジョニングするためのステップは、次の通りである。
1.ローダーが装置においてスタートする。
2.ローダーがサービスプロバイダーログオンスクリーンを表示する。
3.ユーザは、それらのアカウントのユーザ名、パスワード、及びそれらの装置の名前(例えば、My Phone)を入力する。
4.ユーザがまだサービスプロバイダーの顧客ではない場合には、プロバイダーに連絡するようユーザに求めるメッセージが表示される。
5.ユーザがまだ接続寿命サービスに契約しない場合には、それらのアカウントが自動的にアクチベートされる。
6.ユーザがそれらのアカウント証明書を与えると、ローダーは、予め決定されたサービス(交換されるデータタイプのような)及びデフォールトフィルタで構成されたクライアントソフトウェアをダウンロードする。ダウンロードは、オーバー・ジ・エア(over-the-air)でもよいし、PC接続によるものでもよいし、或いは単にローカルメモリカードから転送されてもよい。
7.CLSが装置においてサービスをアクチベートする。装置から既存のデータをインポートし(デフォールトオペレーション)、そして装置をアカウントへ接続する。アカウントにおけるレコードに必要な複写処理を遂行した後に、そこから装置へレコードを送信する。
これで、装置は、プロビジョニングされ、データを交換する準備ができる。
【0045】
図7は、本発明の一実施形態によりウェブサイトを経て装置をプロビジョニングするワークフローを示す。このシナリオでは、ユーザは、ウェブブラウザを使用して、接続寿命サービスに対してそれらの装置を登録する。これは、次のいずれかである。
−顧客に利用可能なサービスプロバイダーのウェブサイトを経て直接的に。ユーザは、ログインする。
−CSRを経て。典型的なシナリオは、ユーザがサービス/セールスホットラインにコールし、又はユーザがサービスプロバイダーの店の1つを訪問することを含み、ここで、セールスアシスタントが顧客に代わって顧客を登録するように進行する。
【0046】
ウェブブラウザを使用して装置をプロビジョニングする段階は、次の2つがある。1)装置を前プロビジョニングし、2)装置をプロビジョニングする。プロビジョニングプロセスを開始する前に、CLSは、どんな種類の装置がプロビジョニングされ、そしてそれが現在どのように(PCを経て、ワイヤレスで)接続されるか決定する。又、プロビジョニングが新しいものであるかどうか、又はユーザが装置の回復を希望するかどうかも分る。装置の回復が必要であるのは、それを紛失し新しいものに置き換えるとき、ハードリセットされてそのプログラム及びデータを失ったとき、又は別の仕方でデータを失ったときである。
【0047】
装置がCLSとで交換するタイプのデータを失った場合も、装置が以前の構成へバックアップされた場合も、装置の回復は必要でない。前者のケースでは、通常のデータ交換が行なわれ、失われたデータは、アカウントから検索される。後者のケースでは、装置をアカウントの現在状態へ戻すために低速同期が開始される。換言すれば、クライアントソフトウェアが削除された場合には、復帰が要求される。サーバーは、当該装置から全てのデータを要求し、全てのレコードをインベントリと比較して不一致を識別し、インベントリからのレコードで装置を更新する。装置の復帰は、プッシュ装置には適用されないことに注意されたい。
【0048】
サーバーがユーザ装置と同期せず且つサーバー側インベントリのバックアップが回復された場合には、サーバー側インベントリのバックアップが行われるたびに装置にチェックポイントマーカー(例えば、タイムスタンプ)を保持することにより低速同期プロセスを最適化することができる。これは、サーバーが、チェックポイントマーカーの後に変化したレコードを比較するだけでよくする。この方法は、ユーザ装置へ転送する必要のあるデータの量を減少させる。従って、低速同期プロセスの時間巾を短縮し且つその送信帯域巾の使用を軽減する。
【0049】
プロビジョニングプロセスそれ自体は、登録される装置のタイプに依存する。この点に関して、これは、次の5つのカテゴリーに入る。
1.検証された電話番号をもつプッシュ装置
2.検証された電話番号をもたないプッシュ装置
3.ActiveX−イネーブル装置
4.クライアントソフトウェアを使用する装置
5.自身の同期スタックを使用する装置
これらのプロセスは、以下の章で詳細に説明する。
【0050】
ウェブサイトを経て装置を前プロビジョニングするステップは、次の通りである。
1.ユーザがウェブサイトを通してそれらの装置のプロビジョニングをスタートできる仕方は、多数ある。ユーザは、サービスプロバイダーのコールセンターをコールするか、それらの店の1つを訪問するか、又はそれらのウェブサイトを直接的にブラウズすることができる。全てのケースにおいて、プロビジョニングは、ウェブを経て遂行される。
2.ユーザがローダーをインストールする第1の利用ケースと同様に、ユーザがまだ接続寿命サービスアカウントを有していない場合には、これが自動的に生成される。
3.装置が回復される(例えば、ハードリセットにより)場合には、装置は、装置カテゴリーに基づいてプロビジョニングされる。
4.前プロビジョニングプロセスの残り部分は、装置がCLSによりどのように検出されるかに依存し、これは、装置が現在どのように接続されるかに多くの仕方で関係している。図7は、次の3つの可能性を示している。
a.ユーザが装置を使用してブラウジングする
このケースでは、CLSは、装置のタイプを検出し、そしてユーザをローダーダウンロードページへ向けることができる。次いで、ローダーは、ユーザによりスタートされ、プロビジョニングプロセスが、図4に示すように続けられる。
b.装置のタイプがPC接続を経て検出される(又は装置がPCである)
ここでは、装置がPCに接続されるか、又はプロビジョニングされている装置がPCそれ自体である。アドミニストレーションアプリケーションは、ActiveX制御を使用して、この接続を経て装置のタイプを検出することができる。PCを経て接続された装置については、それを経てプロビジョニングが行なわれる。
i.アカウント、サービス及びフィルタが構成される(ユーザにより一部分行なわれるか又は完全自動である)。
ii.サービスプロバイダーがキャリアでない場合には、装置の電話番号が入力される。プロバイダー及びキャリアが同じである場合には、番号が既に知られている。
c.ユーザがメニューから装置のタイプを手動で選択する
装置は、ワイヤレスで接続されるか、又はPCに接続された場合は、何らかの理由でそれを検出できないと仮定する。プロビジョニングプロセスは、空中を経て行うこともできるし、装置のメモリカードを経て行うこともできるし、或いは他の方法を介して行うこともできる。
装置は自動的に検出できないので、ユーザは、装置のタイプをリストから手動で選択する。これが行なわれると、アカウント、サービス及びフィルタの前構成が行われ(前記4.b.iを参照)、そしてそこからプロセスが続く。
5.これで、前プロビジョニングプロセスが完了となる。次いで、プロビジョニングそれ自体が装置のタイプに基づいて開始され、これは、次の章で説明する。
【0051】
別の例では、前プロビジョニングを使用して装置を回復させる。接続寿命サービスは、次の場合に装置を回復させる可能性を与える。
−装置が同じタイプの別のものに置き換えられる(盗み、ダメージ、等により)
−装置がリセットされるか、又は何らかの他の仕方で、その接続寿命サービス構成を失った。
【0052】
これらのケースでは、装置(又は交換装置)を回復させることができる。前プロビジョニングプロセスは、ユーザ、装置及びその以前の構成がサーバーに既に知られている状態で、ステップを経て勧められる。プロビジョニングプロセスは、装置のカテゴリーに基づいて開始することができる。
【0053】
図8は、本発明の一実施形態により検証された電話番号でウェブサイトを経て装置をプロビジョニングするワークフローを示す。ここに述べ且つ次の章でも述べるワークフロー「ワークフロー−検証された電話番号をもたないプッシュ装置」は、いわゆる「プッシュ」装置、換言すれば、MMS装置、に適用される。これは、データ交換の最も基本的なレベルを与え、一方向性である。本質的に、データは、CLSにより装置へプッシュされる。データは、ユーザにより装置において変更されるように意図されておらず、変更してもCLSには返送されない。eメールは、装置にプッシュされる1つのデータタイプの例である。
【0054】
これらの装置は、接続寿命サービスに使用するためにインストールされるべきソフトウェアを必要としない。図DP6に示されたプロビジョニングプロセスでは、前プロビジョニングプロセスが完了すると、装置の対するサービスをアクチベートし、それにデータを送信するだけである。この利用ケースでは、装置の電話番号は、CLSにより既に検証されている。電話番号の検証は、データが正しい装置に送られるよう確保するために、セキュリティの理由で行なわれる。
【0055】
図9は、本発明の一実施形態により検証された電話番号なしにウェブサイトを経て装置をプロビジョニングするワークフローを示す。この利用ケースでは、装置は、プッシュ装置(上述したような)であるが、その電話番号を、依然、検証できる。このプロセスは、そのプロビジョニングの主要部分を形成し、これが行なわれてそのサービスがアクチベートされると、装置の動作準備ができる。電話番号の検証プロセスは、次の通りである。
1.ユーザは、電話番号を入力し、OKをクリックして、SMSをそこに送る。
2.SMSが装置へ送信される。装置は、4桁の検証番号を表示する。
3.同時に、ブラウザは、ユーザがこの検証番号を入力するためにページをオープンする。
4.ユーザが検証番号を入力する。
5.確認されると、CLSは、装置に対するサービスをアクチベートするように進み、プロビジョニングプロセスが完了となる。
【0056】
図10は、本発明の一実施形態によりActiveX装置に対してウェブサイトを経て装置をプロビジョニングするワークフローを示す。このプロビジョニングワークフローは、次の装置に適用される。
−ActiveX−イネーブルウェブブラウザをもつPC
−このようなPCに接続されたハンドヘルド装置
【0057】
ローダーは、CLSが装置のタイプを検出しそしてクライアントソフトウェアをインストールできるようにするActiveX制御を備えている。又、CLSで装置を認証し、クライアントソフトウェアのダウンロードを行えるようにする。
【0058】
図11は、本発明の一実施形態によりクライアントソフトウェアを使用してウェブサイトを経て装置をプロビジョニングするワークフローを示す。このワークフローは、クライアントソフトウェアのインストールを必要とする装置に適用される。その手順は、次の通りである。
1.ブラウザは、ローダーのURLと、ユーザに対する独特のPINとを表示する。更に、
a.CSRに対して、ブラウザは、使用可能な他のバイナリーのURLも表示する。
b.開発者に対して、ブラウザは、CLSインストール及びローダーのURL、並びにインストールする必要のない他のバイナリーのURLを入力するオプションを彼等に与える。
2.普通のユーザは、ローダーのインストールへまっすぐにジャンプする。
a.空気中を経てインストールされるべき場合には、CLSは、ローダーのためのURLを含む装置へ構成SMSを送信する。それをオープンすることで、ダウンロードがスタートする。
b.装置がPCに接続されている場合には、ローダーは、自動的にダウンロードを行ってスタートする。
これらのステップは、両方とも、ユーザが既に表示されたPINを認証の目的で入力することを要求する。
3.ローダーは、それがスタートした後に、クライアントソフトウェアをダウンロードし、インストールし、そしてスタートさせる。
4.装置のサービスがアクチベートされ、データが装置からインポートされ(選択されていれば)、レコードの複写がCLSにより取り扱われ、そしてアカウントからのレコードが装置へ送られる。これで、プロビジョニングプロセスが完了となる。
【0059】
図12は、本発明の一実施形態により装置の既存の同期スタックを使用してウェブサイトを経て装置をプロビジョニングするワークフローを示す。このワークフローは、それ自身の同期スタックを有する装置、例えば、SyncML装置に適用される。この場合に、クライアントソフトウェアをインストールする必要がない。ほとんどの装置のワークフローは、極めて簡単である。サーバー名、ポート番号、等々を指定する構成SMSが装置に送られるだけでよい。プロビジョニングは、実行されると、サービスをアクチベートし、データの交換をスタートさせることにより、通常の仕方で続けられる。
【0060】
装置が付加的なソフトウェアのインストールを必要とする場合には、その後の手順は、図9に示されたローダーのインストールの場合と基本的に同じである。即ち、
1.ブラウザは、バイナリーのURLと、ユーザに対する独特のPINとを表示する。
更に、
a.CSRに対して、ブラウザは、使用可能な他のバイナリーのURLも表示する。
b.開発者に対して、ブラウザは、CLSインストール及びローダーのURL、並びにインストールする必要のない他のバイナリーのURLを入力するオプションを彼等に与える。
2.普通のユーザは、バイナリーのインストールへまっすぐにジャンプする。
a.空気中を経てインストールされるべき場合には、CLSは、バイナリーのためのURLを含む装置へ構成SMSを送信する。それをオープンすることで、ダウンロードがスタートする。
b.装置がPCに接続されている場合には、バイナリーは、自動的にダウンロードを行ってスタートする。
これらのステップは、両方とも、ユーザが既に表示されたPINを認証の目的で入力することを要求する。
3.装置のサービスがアクチベートされ、データが装置からインポートされ(選択されていれば)、レコードの複写がCLSにより取り扱われ、そしてアカウントからのレコードが装置へ送られる。これで、プロビジョニングプロセスが完了となる。
【0061】
図13は、本発明の一実施形態によりSMSを経て装置をプロビジョニングするワークフローを示す。この利用ケースは、ユーザの経験に関して簡単なプロビジョニングプロセスを与える。ここでは、サービスプロバイダーは、特定の装置タイプに対して接続寿命サービスを提供し、そしてユーザが指定の番号へSMSを単に送信するのを許し、その際に、それらのアカウントは、それがまだない場合には接続寿命使用に対してアクチベートされ、そして装置が自動的にプロビジョニングされ、最小限のユーザ相互作用しか必要としない。(特定の分岐のもとで)図13に示されたこのワークフローは、プロビジョニングされる装置のタイプ(1つ又は複数)及びサービスプロバイダーの要求を満足するように調整されてもよい。或いは又、一般的な分岐のもとで示されるように、SMSを送信するときには、CLSは、「ウェブサイトを経て(Via Website)」の利用ケースで述べるように、ユーザがブラウズすべきURLを返送し、そして装置をプロビジョニングすることができる。
【0062】
図14は、本発明の一実施形態によりオンラインショップを経て装置をプロビジョニングするワークフローを示す。このプロビジョニングシナリオでは、装置は、接続寿命サービスに使用するための技術的な要件を既に満足している。ユーザは、サービスプロバイダーとのアカウントを有する(しかし、必ずしも、接続寿命サービスではない)。ユーザが行なうのは、プロバイダーのウェブサイトにログオンし、接続寿命サービスをアクチベートするのが全てである。プロビジョニングは、自動的に行なわれる。
【0063】
レコード交換(REx)アプリケーションプログラムインターフェイス
レコード交換APIは、SyncML(セッションベースの)プロトコルに使用される機能を発揮するように設計される。これを達成するために、必要なステップの数及びそれらステップの遂行に使用するコマンドが減少される。SyncMLモデルにおいて、プロセスの流れを以下に述べる。
−認証
−セッションをスタート
−同期セッションを初期化(データベースタイプごとに同期タイプをネゴシエーションする)
−クライアントがレコードをサーバーへ送信する(多数のメッセージを必要とすることがある)
−サーバーがクライアントのデータとそれ自身との間の同期を遂行する
−サーバーがクライアントのレコードを確認し、そしてクライアントへレコードを送信する(多数のメッセージを必要とすることがある)
−クライアントがサーバーのレコードを確認する
−セッションを終了する
【0064】
上述したように、全セッションは、同期オペレーションを成功とみなすために首尾良く完了する。これは、主としてネットワークの接続性及び装置安定性の問題のために、全プロセスを、エラーの生じ易いものにする。
【0065】
レコード交換APIは、プロセスを、ほとんどの部分について互いに独立して遂行できる個別のオペレーションへと分割することにより、SyncML(セッションベースの)同期の完全性の問題に対処する。同期化の概念は、2つの構成部分、即ちクライアントの観点からアイテムをプット(putting)し及びゲット(getting)すること、に分割され、そして初期化の概念を、これらアクションのいずれかに結合することができる。従って、カスケード依存性を伴うプロセスにおいてアクションを使用するのではなく、レコード交換APIを使用する典型的な同期は、次のように説明される。
−クライアントは、使用を希望するデータタイプを初期化し、アイテムを送信する。サーバーは、この要求に対して即座に応答を送信する。サーバーは、その応答において、クライアントに対して保留中のアイテムがあるかどうか指示することができる。このステップは、クライアントが必要と思われるほど何回も繰り返すことができる。
−クライアントは、使用を希望するデータタイプを初期化し、サーバーからアイテムを要求する。サーバーは、保留中のアイテムをクライアントに返送し、まだ保留があるかどうか指示する。クライアントは、このステップを繰り返し、確認情報を含ませることができる。
【0066】
前記では2つのステップだけを示したが、レコード交換APIは、これらステップの異なる部分を実行するための異なる機能も備えている。クライアント装置は、プット/ゲットプロセスを使用することもできるし、又は必要に応じて個別のinit及び確認ステップを含む更に詳細なプロセスを使用することもできる。これらステップの各々を以下に詳細に説明する。
【0067】
図15は、RExプロトコルフローの概要を示す図である。プロトコルの変更をサポートし、そしてより古い装置との後方互換性を与えるために、装置は、現在プロトコルバージョンをURLパラメータとして各要求と共に送信する。
【0068】
レコードの交換
REx APIにより交換される各アイテムがアドレスされる。これを達成するために、REx APIは、アイテムに対する独特の参照を含む多数のコンポーネントを定義する。各状態に全てのコンポーネントが使用されるのではなく、所与のアイテムに対して、供給されるアドレス情報は、そのアイテムを独特に識別するに充分なものでなければならない。REx APIで定義されたアドレスコンポーネントは、データソース、データタイプ、及びレコードIDである。
【0069】
これらのコンポーネントの中で、レコードIDだけが必須である。他の2つについては、遂行されているオペレーションにおいてそれらの値が暗示されることが考えられ、このケースでは、それらを無視することができる。クライアントが、有効データソースを決定する能力を有し、且つおそらく、ユーザがどちらを使用するか選択するのを許すこともできる場合には、データソースコンポーネントを使用して、クライアントが異なるデータソースで新たなアイテムを生成できるようにする。
【0070】
これらのコンポーネントの名前は、REx APIのオリジナルドメインから発生するが、それらをアドレス要求に使用することができる。レコードIDは、例えば、設定経路ファンクションである。あるデータタイプについては、レコードIDが任意であることに注意されたい。これらのケースでは、レコードIDを省くことができる。サーバーからの各応答内では、レコードIDごとに1つのアイテムがある。
【0071】
クライアントは、putItemsコールを使用してサーバーにレコードを送信する。この機能は、ExchangeItemsのアレーをパラメータとしてとる。サーバーは、各putItemsコールに対してExchangeResult構造で応答し、これは、保留中の変更を有するデータタイプのアレーと、受け取ったアイテムに対する確認とを含む。1つの要件は、クライアントが、putItemsをコールする前にサーバーから受け取った全アイテムを確認することである。
【0072】
いつでも、クライアントは、getItems要求を送信することにより、保留中アイテムについてサーバーに問合せすることができる。このコールは、アイテムキャッシュのコンテンツを調査し、そしてクライアントに対して保留中のレコードを返送する。アイテム及び状態の最適な交換を容易にするために、クライアントは、ackAndGetItemsコールを使用することにより新たなアイテムをゲットするときに確認情報を含ませることができる。確認情報のフォーマットは、以下で説明する。
【0073】
各getItemsコールに応答して、サーバーは、ExchangeResultを返送し、これは、とりわけ、保留中アイテムのコンテンツを含むExchangeItemsのアレーと、どのデータタイプが、検索されるべきアイテムをより多く有するか指示するDataTypeのアレーとを含む。
【0074】
サーバーからクライアントへのアイテムの流れを最適化するために、サーバーは、常に、アイテムの追加及び置き換えの前に、削除アイテムを送信する。getItems要求は、次の要件を含む。
−クライアントは、getItemsをコールする前に、全ての保留中変更を、putItemsを経てサーバーへ送信し、
−クライアントは、各getItemsコールに応答してどれほど多くの情報を返送すべきか決定するためにサーバーが使用する限界値を含み、及び
−クライアントは、getItemsコールの直後にackItemsをコールする。
【0075】
アイテムは、両方向に確認され、クライアント及びサーバーは、いつアイテムが首尾良く処理されたか分る。ack及び確認という語は、本明細書全体にわたり交換可能に使用されることに注意されたい。getItemsによりアイテムの受信を確認する仕方は、2つあり、即ち個々のack ExchangeItemによるものか、又はack 全ExchangeItemsによるものである。欠陥ackは、常に、個々のack ExchangeItemを必要とし、従って、厳密なアイテム及び欠陥の原因を識別することができる。ack 全ExchangeItemsは、アイテムを確認する前に受け取った全てのアイテムが、首尾良く処理されたとして解釈されるように取り扱われる。Ack全アイテムメソッドは、有効データタイプ名を含む。これは、交換に含まれるデータタイプごとに個別のack全アイテムが必要とされることを意味する。
【0076】
サーバーは、putItemsコールに応答してackアイテムを返送しない。むしろ、全putItemsコールに対する全結果応答を返送する。換言すれば、putItemsコールにおけるアイテムの処理は、全てか無かの(all-or-nothing)オペレーションである。この理由で、クライアントから送信されたアイテムを確認するときには、アイテムref値が使用されない。クライアントは、彼らがサーバーへ送信するExchangeItemsからこの値を省く。クライアントは、できるだけ早くack全アイテムを送信し、サーバーがクライアントの最も正確な状態表示をもつことが推奨される。
【0077】
提案されたレコードIDを記憶できないか又は記憶しないことを選択するクライアントは、サーバーにより提案された(一時的)ロケートユニットID(LUID)と、クライアントにおけるレコードを表わすLUIDとを含むマップコマンドを返送することができる。クライアントは、ackItemsコールにおいてExchangeItemsを通すことによりサーバーへマップコマンドを送信する。マップコマンドは、いつでも送信でき、又、何回でも送信でき(通信欠陥の場合に)、更に、アイテムの暗示的受信確認として解釈されない。クライアントは、IDマップされたアイテムについても、依然、ackアイテムを明確に通せることに注意されたい。クライアントは、マップコマンドをサーバーへ送信するまで、サーバーのレコードIDを使用することができる。
【0078】
IDをマップするために、クライアントは、サーバーから受け取ったExchangeItemsを、アイテムのタイプを変更して、データメンバーをクライアントのLUIDに置き換えた後に、エコーバックする。一実施形態において、サーバーから送られるExchangeItemの一例を以下に示す。
クライアントは、次のようなマップコマンドを返送することができる。
【0079】
レコード交換データ構造
一実施形態において、RExのデータ構造の例を以下に示す。
【0080】
ItemRefは、クライアントへ送信するアイテムを参照するためにサーバーが使用する独特の識別子である。クライアントは、この値を使用して、サーバーから受け取ったアイテムを確認する。ItemRefは、整数値の単調に増加するシーケンスである。データタイプごとにシーケンスを維持する。
【0081】
又、装置は、ItemRef値の単調に増加するシーケンスと共にサーバーへ送信するコマンドをマークすることができる。サーバーと装置との間の接続が中断されたときには、サーバーは、itemRef値を調査しそして既に受け取られたコマンドを無視することにより、再送信コマンドを検出する。装置は、itemRef値を伴うコマンドをサポートするところのデータタイプごとにitemRefシーケンスを維持する。装置は、全コマンド又は非コマンドに対するデータタイプに基づいてitemRef値を送信するように保証する。
【0082】
1つの解決策において、有効なアイテムタイプを以下に列挙する。
−Add(追加) 1
−Replace(置き換え) 2
−Delete(削除) 3
−AddOrReplace 4 装置からサーバーへのみ有効
−Map(マップ) 5 永続的に記憶されず
−Get(ゲット) 6
−Ack 7 永続的に記憶されず
−AckAll 8 永続的に記憶されず
−Query(問合せ) 9
−QueryResult 10
−QueryEnd 11
−Clear(クリア) 12
−GetResult 15
データコンテンツ:
−データのレコードコンテンツ − 追加及び置き換えのため
−NULL − 削除オペレーションを遂行するのに付加的な情報が要求されない限り削除のため(ある好ましい管理のケースと同様)
−レコードLUID − マップのため
−任意のフィルタ − 問合せコマンドのため
【0083】
REx APIは、レコード又はデータを交換するための柔軟性のあるプロトコルである。しかしながら、REx APIに組み入れられた柔軟性にも関らず、コアタイプ定義で全ての必要な情報が与えられない情況が生じる。この問題を解消する1つの仕方は、APIが与えるコアタイプ定義に基づいて顧客タイプを定義することである。これは、RExがXML−RPCに基づくものであることから取り扱われる。REx APIで定義された全ての構造は、XML−RPCフォーマットの構造として転送される。XML−RPC構造は、名前/値の対の集合としてみなすことができる。構造を拡張するために、新たな名前/値の対が追加される。
【0084】
REx APIパーサは、一般的なXML−RPCオブジェクトを構築し、そしてそれらを、プロトコルハンドラークラスに常駐するマーシャラーファンクションへ通す。コアREx APIファンクションは、単一のプロトコルハンドラーに常駐するが、全コアREx APIファンクションを受け継ぎながらそれら自身の目的で特殊なファンクションを与える顧客プロトコルハンドラーを定義することができる。これらの特殊なファンクションは、それらが受け取るパラメータをマーシャルし、そして拡張タイプを適宜に取り扱うことができる。拡張タイプの一例を以下に示す。
【0085】
前記構造は、ExchangeItemが予想されるところであれば、どこでも通されるが、DMExchangeItemタイプを理解するファンクションは、dataTypeID情報をサーチして使用することもできる。
【0086】
レコード交換状態及び結果コード
テーブル2は、有効な交換状態及び結果コードを定義する。列挙された全ての値が全てのケースに適用できるのではないことに注意されたい。各ファンクションに適用する厳密な値に対する個々のファンクションを協議する。
テーブル2
【0087】
1つの解決策において、CLSにエラー状態を通知するのに使用される要求、それに対応する構造、及び応答について、以下に述べる。又、構造は、エラー状態がもはや存在しないときにエラーをクリアするのにも使用される。
【0088】
ErrorMessage構造は、raiseError及びcloseError要求に対するパラメータとして送信される。全てのメンバーが全てのエラー及び全ての要求メソッドに対して設定されるのではない。各エラー及び要求メソッドに対して、メンバーは、未使用、任意、及び必須として定義される。メンバーの後のかっこ内の数字は、メンバーの最大長さを定義することに注意されたい。
【0089】
全ての要求に対する応答として、ErrorResponse構造が発呼側装置へ返送される。
【0090】
各要求に対する応答として、CLSは、応答構造において状態メンバーを設定することにより要求の結果を返送する。状態メンバーに対する値は、次の通りである。
テーブル3
【0091】
raiseErrorコールは、装置にエラーが生じたことをCLSに通知するのに使用される。ErrorResponse要求は、エラー形式に基づいて異なるメンバーが設定される場合にErrorMessage構造をアーギュメントとみなす。その結果、ErrorResponse構造が返送される。
ErrorResponse raiseError (ErrorMessage)
【0092】
closeError要求は、以前のraiseError要求により報告されたエラーをクリアする。closeError要求に対して、ErrorMessage構造のmessageIDメンバーのみが使用される。CLSは、要求を受け取ると、同じmessageIDをもつ以前に報告されたエラーをクリアする。
ErrorResponse closeError (ErrorMessage)
【0093】
レコード交換ファンクション
この章は、レコード交換APIにおけるファンクションについて述べる。通されたパラメータを変更するファンクションについては、次の規定を使用する。
→ 右を向いた矢印は、値がクライアントにより設定され、サーバーにより変更されないことを指示する。
← 左を向いた矢印は、サーバーが、クライアントにより送られた値を読み取らず、値を返送することを指示する。
←→ 両方向矢印は、サーバーが、クライアントの値の読み取りと、おそらく更新された値の返送との両方を行うことを指示する。
【0094】
レコード交換APIの前交換ファンクションは、checkSyncAnchor、initRefresh、及びqueryChangesを含む。前交換ファンクション、それに対応するフォーマット及びパラメータについて、以下に述べる。
checkSyncAnchor:クライアントは、DataType構造内のデータタイプに対して両方のアンカーでこのファンクションをコールし、2つの同期アンカーの一方がサーバーアンカーに一致することを検証する。同期アンカーチェックが所与のデータタイプに対してフェイルした場合には、サーバーがリフレッシュ要求結果を返送する。サーバーに記憶された同期アンカー値は、変更されない。
ExchangeResult checkSyncAnchors (DataType[] dataType)
パラメータ:
dataType−どのデータタイプをチェックに使用すべきか指示するアレー:
→ dataTypeName
→ syncAnchor−このデータタイプに対する現在の装置同期アンカー
→ pendingSyncAnchor−このデータタイプに対する保留中アンカー リターン:各DataTypeに対して指定された適当なexchangeStatusと共にDataTypeを含むExchangeResult。
← 結果−サーバーが要求を首尾良く処理したときには、200(OK)、又は定義されたエラーコード
← dataTypeは、データタイプに対してexchangeStatusを保持する−200(OK)、201、又は定義されたエラーコード
initRefresh:リフレッシュが必要であることをクライアントが決定するか又はサーバーにより通知された場合には、initRefreshをコールして、リフレッシュプロセスを開始する。
ExchangeResult initRefresh (DataType[] dataType)
パラメータ:
dataType−どのデータタイプを初期化に使用すべきか指示するアレー:
→ dataTypeName
→ exchangeStatus−250(交換リフレッシュ)
→ SyncAnchor−このデータタイプに対する新たなアンカー
リターン:次のようにポピュレートされたExchangeResult:
← 結果−サーバーが要求を首尾良く処理したときには、200(OK)、又は定義されたエラーコード
← dataTypeは、オリジナルコールで指定された各データタイプに対してinit状態を指示する:200(OK)、201、又は定義されたエラーコード
queryChanges:このファンクションは、クライアントが保留中の変更に対してサーバーをポーリングして、おそらく、交換の実行の前にユーザフィードバックを与えることを希望する場合に使用される。
ExchangeResult queryChanges (DataType[] dataType)
パラメータ:
dataType−どのデータタイプを変更問合せに使用すべきか定義するアレー。空のデータタイプアレーを送信することで、全てのデータタイプに対する変更を問合せる。
→ dataTypeName
リターン:次のようにポピュレートされたExchangeResult:
← 結果−サーバーが要求を首尾良く処理したときには、200(OK)、又は定義されたエラーコード
← dataTypeは、どのDataTypeがサーバーに保留中の変更を有するか指示する。発呼者が空のdataTypeパラメータを通す場合には、データタイプのアレー結果が、サーバーに変更が存在するデータタイプしか含まない。発呼者が空でないdataTypeパラメータを通す場合には、同じアレーが、各データタイプに対して指定された200(変更なし)、201(レコード保留中)、又は417交換状態と共に返送される。
【0095】
レコード交換APIの後交換ファンクションは、ackItems、putItems及びackAndPutItemsを含む。後交換ファンクション、それに対応するフォーマット及びパラメータについて、以下に述べる。
【0096】
ackItems:サーバーからアイテムを受け取った後に、クライアントは、サーバーへ確認を返送する。これは、各レコードの到着状態をサーバーに通知し、サーバーがクライアントデータのキャッシュを効率的に管理できるようにする。一実施形態において、このファンクションは、種々のgetItemsコールにおいてサーバーがクライアントに何を返送するかであるExchangeItemsのアレーを使用する。クライアントは、各ExchangeItemのitemRef及び結果メンバーを指定するだけでよい。このファンクションを使用する別の仕方は、Ack Allに設定されたitemType、確認されているアイテムのグループに基づいて設定されたdataType、及びそのdataTypeに対して首尾良く処理された最後のアイテムに設定されたitemRefと共にExchangeItemを送信することである。サーバーは、itemRefが指定のitemRef値以下であるようなdataTypeの全てのアイテムに対してこれを首尾良い確認として解釈する。多数のExchangeItemsをこのように送信できることに注意されたい。全ての個々のackアイテムは、itemAckパラメータにおいてack全アイテム(ack-all-items)の前に含まれる。
ExchangeResult ackItems (ExchangeItem[] itemAcks)
パラメータ:
itemAcks−確認されているアイテムに関する情報を含むExchangeItemsのアレー。itemAcksの要件は、次の通りである。
テーブル4
リターン:次のようにポピュレートされたExchangeResult:
← 結果−サーバーが要求を首尾良く処理したときには、200(OK)、又は定義されたエラーコード
← dataTypes−dataType構造アレー;各エレメントは、exchangeStatusを保持する:200)又は定義されたエラーコード
putItems:このファンクションは、クライアントが多数のアイテムをサーバーへ送信するのを許す。
ExchangeResult putItems (DataType[] dataTypes, ExchangeItem[] items):
パラメータ:
dataType−装置は、この要求からのアイテムアレーに使用される全てのdataTypeに対し、新たな同期アンカーを送信する。
→ dataTypeName
→ SyncAnchor−このデータタイプに対する新たなアンカー
items−サーバーへ送信されるべきレコードを含むExchangeItemsのアレー
リターン:次のようにポピュレートされたExchangeResult:
← 結果−サーバーが要求を首尾良く処理したときには、200(OK)、又は定義されたエラーコード
← dataTypes−要求におけるデータタイプに対するdataType構造;各エレメントは、exchangeStatusを保持する:200、201、又は定義されたエラーコード
ackAndPutItems:このファンクションは、putItemsと同様であるが、クライアントが、新たなアイテムをプットする前に、受け取ったアイテムを確認できるようにするパラメータが追加されている。
ExchangeResult ackAndPutItems (ExchangeItem[] acks, DataType[] dataTypes,
ExchangeItem[] items)
パラメータ−putItemsと同様であるが、次のものが追加されている。
ack−特定のExchangeItemsに対する確認情報を含む。サーバーは、クライアントからのレコードを受け容れる前にこれらのackを処理する。より多くの情報についてはackItemsファンクションの説明を参照されたい。
リターン:putItemsと同じ
getItems:クライアントは、1つ以上のデータタイプについて保留中のレコードを検索するためにこのファンクションをコールする。これは、サーバーからレコードを検索する通常の方法である。各データタイプに対するitemRef値は、サーバーが、アイテムキャッシュのどのレコードをクライアントが既に受け取ったかそしてどのレコードをまだ送信する必要があるか決定できるようにする。クライアントは、このフィールドにおいて、最後に処理したitemRefを送信することができる。
ExchangeResult getItems (DataType[] dataTypes, int limit)
パラメータ:
dataTypes−どのデータタイプに同期すべきかそしてアイテムキャッシュのどのポイントでレコードの送信を開始すべきかサーバーに通知するDataTypeのアレー。DataTypeアイテムは、次のように通される。
→ dataTypeName−データタイプの名前
→ syncAnchr−このデータタイプに対する新たなアンカー
サーバーは、DataTypeアレーがエレメントを含まないときにgetItemsに対する要求を無視する。
limit−これは、非圧縮の応答XML−RPCメッセージの最大サイズを指定する任意のパラメータである。この値が省かれる場合には、サーバーは、妥当と思われる限界値を使用する。
リターン:次のようにポピュレートされたExchangeResult:
← 結果−サーバーが要求を首尾良く処理したときには、200(OK)、又は定義されたエラーコード
← dataTypes−検索される準備のできたアイテムを有する要求から各データタイプに対するDataType構造を含む。これは、次のようにポピュレートされる。
← dataTypeName
← exchangeStatus−200(OK)、201、又は定義されたエラーコード
← items−次のようにポピュレートされた保留中のレコードを含む
← itemRef
← itemType
← recordID−追加アイテムに対して一時的LUID、他の全てのアイテムタイプに対してクライアントLUID
← dataTypeName
← data−削除アイテムの場合は省かれる
ackAndGetItems:このファンクションは、getItemsと同様であるが、クライアントが、新たなアイテムをゲットしながら、受け取ったアイテムを確認できるようにするパラメータが追加される。
ExchangeResult ackAndGetItems (ExchangeItem[] ack, DataType[] dataType, int
limit)
パラメータ:
ack−特定のExchangeItemsに対する確認情報を含む。サーバーは、アイテムキャッシュからレコードを検索する前にこれらのackを処理する。更なる情報については、ackItemsファンクションの説明を参照されたい。
【0097】
図16は、異なるRExメソッドを使用してユーザ装置とサーバーとの間の対話を示すフローチャートである。
【0098】
レコード交換アイテムタイプ
getItems又はackAndGetItems要求に対する応答として、サーバーは、Clearコマンドを返送する。このコマンドは、データコンテンツをもたず、装置が所与のデータタイプ名に対して全てのアイテムを除去するよう強制する。
【0099】
初期同期の一部分としてクライアント装置のPIMデータをインポートするか又はdataSourceからシャドーデータをフェッチするようなある状況において、サーバーは、Queryコマンドを装置へ返送し、装置が、所与のデータタイプに対するデータをサーバーへアップロードするように強制することができる。
【0100】
図17は、本発明の一実施形態による問合せプロセスのシーケンス図である。ステップ1において、装置は、サーバーから情報を要求するためにgetItemsメソッドをコールする。getItems又はackAndGetItems要求に応答して、サーバーは、Queryコマンドを返送する。コマンドのExchangeItemにおいて、jobIDフィールドが設定され、この問合せをマークする。任意のデータフィールドが問合せを制限するためのフィルタを含んでもよい。フィルタが与えられないときは、装置は、所与のデータタイプに対して全てのアイテムを返送する。Queryコマンドに対するExchangeItemの一例を以下に示す。
【0101】
ステップ2において、装置は、ackItemsをコールし、Queryコマンドを受け取ったことを確認する。ステップ3において、装置は、問合せされたデータを収集する。ステップ4において、装置は、putItemsを使用してサーバーへデータを送信する。各々の問合せされたアイテムは、1つのQueryResultとして送信される。全てのQueryResultアイテムが送信された後に、問合せに対するデータアップロードが行なわれることをマークする1つのQueryEndアイテムが送信される。全てのQueryResult及びQueryEndアイテムは、問合せからのジョブIDに設定されたjobIDフィールドを有し、これらアイテムがこのjobIDをもつ問合せに関係していることを指示する。QueryResult及び最終的なQueryEndExchangeItemの一例を以下に示す。
【0102】
問合せに対する結果が1つのputItemsコールに対して大き過ぎるときに、装置は、複数のputItemsを使用して、アイテムをサーバーにアップロードすることができる。最終的なQueryEndコマンドは、最後のputItemsコールにおいてのみ送信される。
【0103】
装置は、ステップ2の後、例えば、装置クラッシュの後、ユーザが装置をターンオフした後、又は死んだバッテリを交換した後、再スタートするときに、問合せを続ける。装置は、Queryコマンドを既に確認しているので、サーバーは、このコマンドを再送信しない。それ故、装置は、このコマンドを再スタートに生き残るように持続させる。この状況を回避するために、装置は、ステップ4において、ackAndPutItemsをコールすることによりQueryコマンドを確認することができる。
【0104】
サーバーは、データフィールドを使用して、フィルタを、Queryコマンドの一部分として設定できることに注意されたい。一実施形態では、サーバーは、dataSourceのためのフィルタとしてストリング{partial}を使用するだけである。このフィルタは、問合せされたアイテムに対してシャドー情報のみを返送するようにdataSourceに通知する。これは、アップロードされるデータの量を減少する。サーバーが完全なアイテムを必要とするときには、それをフェッチするためにGetコマンドを送信する。
【0105】
サーバーが(部分フィルタを通して)シャドー情報を要求するときには、dataSourceが、メール、連絡先、タスク、及び事象アイテムのような異なるタイプのデータに対してこの情報を返送する。
【0106】
Getコマンドは、putItemsを使用してサーバーへ指定のアイテムをアップロードするために、LUIDを指定することにより、装置に要求する。Getコマンドに対するExchangeItemの一例を以下に示す。
【0107】
装置は、GetResultを使用してアイテムを返送する。ジョブIDを使用して、GetとGetResultを接続する。
【0108】
問合せのケースと同様に、装置は、ackAndPutItemsを使用して、Getコマンドを確認すると共に、要求されたアイテムを1つのコールにおいてサーバーへ送信するか、又は装置は、Getコマンドの結果を永続的なものにすることに注意されたい。装置は、不存在アイテムに対してGetを受け取ると、422状態コードでアイテムを確認する。
【0109】
QueryResultコマンドは、問合せの結果において且つGetコマンドの応答として装置により使用される。dataSourceは、新たなアイテムを検出すると、Addコマンドをサーバーへ送信する。dataSourceは、膨大な量の新たなアイテム(例えば、数千のeメールがdataSourceにコピーされた新たなeメールフォルダ)を検出すると、シャドー情報のみを含む新たなアイテムごとにQueryResultコマンドを送信する。QueryResultコマンドの最後の情報断片を送信すると、アップロードが終了したことをサーバーに通知するためのQueryEndコマンドが送信される。サーバーは、1つのアイテムの完全な情報を必要とするときに、Getコマンドを送信する。これは、このようなケースのデータ送信量を減少する。
【0110】
サーバー及び装置の同期
接続寿命サーバー(CLS)は、サーバーと1つ以上のユーザ装置との間のデータの同期を最適化する。より詳細には、CLSは、所定のバックアップインターバルに基づいてサーバーにおいて接続データセット(connected-data-set)のバックアップを生成する。次いで、接続データセットのバックアップが生成されたときに時間インターバルを追跡するためのチェックポイントマーカーを発生し、そしてそのチェックポイントマーカーを1つ以上のユーザ装置へ送信し、接続データセットに対する変更の第1レコードを維持する。
【0111】
サーバー及び1つ以上のユーザ装置が同期ずれしているかどうか決定するために、CLSは、サーバーの交換又はサーバーのクラッシュを検出する。或いは又、CLSは、セッションベースのsyncMLプロトコル又は同期アンカープロトコル(以下に述べる)を実行して、サーバー及びユーザ装置が同期ずれしているかどうか決定してもよい。サーバー及び1つ以上のユーザ装置が同期ずれしていると決定されると、CLSは、サーバーにおいて接続データセットのバックアップデータを回復させる。次いで、チェックポイントマーカーを使用して1つ以上のユーザ装置から接続データセットの第1の変更レコードを要求する。又、1つ以上のユーザ装置からの接続データセットの第1の変更レコードに基づいてチェックポイントマーカーの後に変更を有する接続データセットの第1部分を決定する。これは、1つ以上のユーザ装置とサーバーとの間でチェックポイントマーカーの後に新しいタイムスタンプを有する接続データセットの部分を比較することによって行われる。次いで、サーバーにおいて第1の変更レコードのトランザクションを実行することにより変更を有する接続データセットの第1部分を更新する。
【0112】
同様に、サーバー及び後端データベースが同期ずれしていると決定すると、CLSは、サーバーにおいて接続データセットのバックアップデータを回復する。次いで、チェックポイントマーカーを使用して後端データベースから接続データセットの第2の変更レコードを要求する。又、後端データベースからの接続データセットの第2の変更レコードに基づいてチェックポイントマーカーの後に変更を有する接続データセットの第2部分を決定する。これは、後端データベースとサーバーとの間でチェックポイントマーカーの後に新しいタイムスタンプを有する接続データセットの部分を比較することによって行われる。次いで、サーバーにおいて第2の変更レコードのトランザクションを実行することにより変更を有する接続データセットの第2部分を更新する。
【0113】
同期アンカープロトコルの主な目的は、装置及びサーバーが交換アイテムに対して同期ずれして動作することを検出することである。クライアント装置は、サーバーと同期する責任を有する。しかしながら、クライアントだけでは検出できないシナリオが少なくとも1つある。次の事項シーケンスについて考える。
−クライアント及びサーバーは、ポイントAにおいて同期している。
−クラインと及びサーバーは、その後、ポイントBにおいて同期しており、実際のデータセットは、ポイントAとは異なる。
−ユーザは、全てのデータ、構成ファイル、等を含む全装置映像のシステム回復を行なう。
−クライアントは、スタートするが、そのローカルデータをチェックするときに、ポイントBにいるので、一貫性を調べる。しかしながら、装置がポイントBにあると仮定すれば、サーバーとの一貫性がない(同期していない)。
【0114】
この問題は、REx同期アンカープロトコルにより対処される。同期アンカーに基づき、サーバーは、もはや同期していないことを検証してクライアントに通知することができる。これは、各データベースに対して、リフレッシュすることが必要なデータを転送するためのトラフィックを最小にするように行なわれる。交換アイテムの各タイプに対して、装置は、2つのアンカーを維持する。1つは、交換アイテムのタイプに対する現在アンカーである。装置は、サーバーからデータを要求し又はサーバーへデータを送信するときに、新たなアンカーを発生し、このデータを要求において送信する。要求がエラーなく終了すると、装置は、サーバーが新たなアンカーを首尾良く受け取ったことを知る。このケースでは、装置は、新たなアンカーを現在アンカーとして記憶する。
【0115】
クライアントは、サーバーとの通信を開始すると、checkSyncAnchorsメソッドをコールし、装置及びサーバーのアンカーが一致するかどうかチェックする。もしそうでなければ、装置及びサーバーは、このタイプの交換アイテムに対して同期ずれして動作している。
【0116】
図18は、本発明の一実施形態によりクライアント装置とサーバーとの間で同期をとるための同期アンカープロトコルを示す。図18に示すように、装置は、各データタイプの名前に対して2つの同期アンカーを維持する。1つは、現在アンカーであり、装置は、データを送信又は要求するメソッドをコールするときに、サーバーへの要求のデータタイプごとに新たな同期アンカー(保留中アンカー)を発生して送信する。首尾良い全体的応答は、サーバーが、これらデータタイプの名前に対して新たなアンカーを得て記憶したことを意味する(たとえ特定データタイプに対する交換状態が首尾良くなくても)。この場合には、装置は、各データタイプに対する新たなアンカーを現在アンカーとして記憶する。装置は、応答を得ないか、又は不首尾な全体的結果コードを伴う応答を得る場合、保留中アンカーを記憶し、それを次の新たなアンカーとして再送信する。
【0117】
装置は、現在アンカーで、そして任意であるが、保留中アンカーが存在する場合は保留中アンカーで、checkSyncAnchorsをコールする。1つのアンカーがサーバーアンカーに一致するときには、装置及びサーバーが同期状態にある。この場合及び保留中アンカーがあるときには、装置は、サーバーが保留中アンカーを受け取ったかどうか分らないので、以前に送られた現在アンカーを、現在アンカーとして使用し、そして保留中アンカーを次の新たなアンカーとして送信する。
【0118】
アンカーチェックが失敗すると、サーバーは、エラー状態コード417を返送する。装置は、アンカーを初期アンカーに戻すように設定し、新たなアンカー(初期アンカーではない)でinitRefreshをコールする。次いで、getItemsをコールして、サーバーが装置に対してClearコマンドを有するかQueryコマンドを有するか決定する。次いで、装置は、putItemsを経てサーバーへ装置管理アイテムを送信するのも任意である。最終的に、装置は、getItemsをコールし、更新されたアイテムをサーバーから検索する。
【0119】
装置(又は1つのデータタイプ名に対して責任をもつ装置の一部分)は、それがスタートすると、先ず、checkSyncAnchorsをコールして、装置及びサーバーがまだ同期しているかどうかチェックする。又、getItems又はackAndPutItemsのようなメソッドも、要求からのデータタイプに対して417交換コードを返送できることに注意されたい。この場合、装置は、checkSyncAnchorsに対するコールがフェイルしたかのように働く。
【0120】
装置は、インストールの後、又は未知のデータタイプ404状態の後に、データタイプに対する初期同期をスタートすると、初期同期アンカーとしての0でcheckSyncAnchorsをコールする。装置が0を保留中アンカーとしても送信するかどうかは任意である。サーバー及び装置は、初期同期に対して同期状態にあることが要求される。
【0121】
装置は、初期のcheckSyncAnchorsコールの後にgetItemsをコールし、そしてgetItemsコールの結果として、Clear又はQueryコマンドが返送される。装置は、この初期コマンドが処理されたときに変更検出をアクチベートする。
【0122】
通信のユーザ装置状態の通知
CLSは、サーバーとユーザとの間の通信のユーザ状態を通知する。ユーザは、CLSによって維持された接続データセットの部分を共有する1つ以上のユーザ装置を有する。一実施形態において、CLSは、サーバーと1つ以上のユーザ装置との間の通信を、通知条件の所定セットに対して監視する。所定の通知条件のセットは、製造者により提供される情報に基づき且つ1つ以上のユーザ装置の実際の使用を通して収集される情報に基づき形成される。更に、所定の通知条件のセットは、接続データセットのエレメントの送信欠陥を含む。
【0123】
例えば、通知メッセージは、通知条件が検出される通信のタイトルを含む。又、通知メッセージは、通知条件が検出される通信のアブストラクトも含む。更に、サーバーにより装置へ送信される通知メッセージは、ハイパーリンクを含んでもよい。このハイパーリンクは、通知の性質についてより精巧であるウェブページを指してもよいし、又は問題を解決できるウェブページへユーザを導いてもよい(例えば、後端にアクセスするための新たなパスワードを入力する)。このメソッドが有益であるのは、通常、若干の情報アイテムしかクライアント装置へ搬送されず、且つ通知の性質を説明するのに多数のワードを必要とすることが多いためである。又、ハイパーリンクは、拡張手段も与える。通知メッセージ(又は通知スクリーン又はアプリケーションのメニュー)においては、このハイパーリンクの背後でウェブページをロードするためにブラウザをスタートするというオプションがある。
【0124】
通知条件が検出されると、CLSは、通知メッセージを1つ以上のユーザ装置へ送信する。一実施形態では、通知メッセージは、通知条件の所定セットが検出されたユーザ装置へ送信されることに注意されたい。別の実施形態では、通知メッセージは、通知条件の所定セットが検出されないユーザ装置へ送信されてもよい。
【0125】
更に別の実施形態では、所定通知条件のセットは、1つ以上のユーザ装置に対するeメール、タスク、カレンダー及びアドレスブックオーバーフロー条件を含む。装置のオーバーフローを回避するために、サーバーは、各装置アプリケーションが保持できるデータの量を監視し、記録する。データは、次のいずれかで収集され、即ち、装置の製造者により提供される情報を通じて収集され、例えば、装置のアドレスブックが最大500の連絡先を保持できることをユーザのマニュアルで指定するか;又はユーザ装置のテストを通じて収集され、例えば、サーバーにより送られるある数以上のレコードの記憶を装置が拒絶するか;或いは実際の使用を通じて収集され、例えば、事象の数がユーザのマニュアルにおける所定の最大数を越えても、あるカレンダーアプリケーションが依然機能する。
【0126】
収集されたデータに基づいて、サーバーは、サーバーインフラストラクチャーにおいて装置タイプ又はアプリケーション当たりの上限のセットを定義することができる。サーバーは、各装置におけるレコードの実際数を監視するので、装置におけるレコードの数が所定の上限に近付いたときに装置へそれ以上のレコードを送信するのを停止することができる。例えば、サーバーは、ユーザがまだある程度の有用な仕事を行なえるように、装置の90%フル状態を保つことができる。更に、サーバーは、装置の特定のアプリケーション(例えば、eメール又はカレンダー)が所定の上限に達したことをユーザにアラートし、そして装置におけるレコードの数を減少するために特定アプリケーション用の異なるフィルタを適用するといった先見的アクションをとるようにユーザに要求することができる。他の解決策では、異なるデータタイプに異なるルールを適用して、装置におけるレコードの量を管理することができる。例えば、
−メール:常に装置へ送信される新たなメールには高いプライオリティが指定される。装置が新たなメールのための余地を作る必要がある場合には、最も古いものから最も新しいものへの順序で古いメールが削除される。
−タスク:オープンタスクには、より高いプライオリティが指定され、期限日が近いほど、タスクの重要性は高くなる。装置が新たなタスクのための余地を作る必要がある場合には、最も古いものから最も新しいものへの順序で、完了したタスクが削除される。
−カレンダー:近い将来生じる事象には、より高いプライオリティが指定される。一般に、将来の事象は、過去の事象よりも重要である。装置が新たな事象のための余地を作る必要がある場合には、最も古いものから最も新しいものへの順序で過去の事象が削除される。
−アドレスブック:装置に既にあるものに、より高いプライオリティが与えられる。アドレスブックがいっぱいになった場合には、サーバーは、他の装置からも、後端からも、新たなアドレスを装置へ与えない。
【0127】
設定交換(SetEx)プロトコル
設定交換(SetEx)プロトコルは、装置とサーバーとの間で設定情報を交換するのに使用される。SetExは、データ構造体に対する変更と共にDPRExプロトコルによりサポートされる。DPRExプロトコルと同様に、データコンテンツは、設定変更を保持するXMLドキュメントである。XMLデータコンテンツドキュメントのエンコード動作は、XML−RPCエンベロープのエンコード動作と常に同じである。エンコード動作は、全てのユニコードキャラクタを表わすことができる。SetExプロトコルは、設定をベースURL拡張として使用し、例えば、http://server:port/dp/settingは、SetEx URLの一例である。
【0128】
設定交換状態コード
SetExは、DPRExと同じ状態コードを使用する。状態コード300は、装置がゾンビ状態にあって設定をサーバーへプットするか又はサーバーからゲットするよう試みるときに返送される。この場合には、装置は、先ず、装置タイプ識別を送信する。SetExは、新たな状態コード405を使用する。このコードは、サーバーが装置から設定をゲットすることをいつ要求するか決定するために、SetExに対する応答として返送される。
【0129】
設定交換プロセスフロー
一実施形態において、設定交換のプロセスフローは、次の3つの利用ケース:1)初期設定交換;2)通常の設定交換;及び3)ダンプ設定交換について説明する。
【0130】
初期設定交換の間に、装置は、その装置タイプをサーバーに対して識別する。この状態は、装置をサーバーに初めて接続するときに生じる。これは、ユーザが新しい装置を買ったとき、又は装置が完全にリセットされたとき、或いは装置の状態がサーバー側でゾンビにリセットされた場合に起きることに注意されたい。これら全ての状態において、装置は、装置タイプ識別設定を交換することによりスタートする。これは、サーバーが装置の真のアイデンティティ(正しい装置タイプ識別情報)を決定できるようにする。考えられるプロセスフローシナリオは2つある。第1のケースでは、装置は、それがサーバーに初めて接続されると考え、装置タイプ識別設定を交換する。第2のケースでは、装置は、それが初期化されたと考え(同期された装置タイプ識別設定)、一方、サーバーは、そうでないことを考える。これら両方のケースは、以下の章で述べるシーケンス図に関連して検討する。
【0131】
図19は、本発明の一実施形態により装置が装置タイプ識別設定を交換するときのプロセスフロー図である。図19に示すように、ステップ1において、装置は、putItemsをコールして、装置タイプ識別設定を交換する。ステップ1.1において、サーバーは、装置を適切に識別した後に装置のゾンビ状態を終了させる。ステップ1.2において、サーバーは、buildExchangeResultメソッドをコールすることにより応答を構築する。この応答は、装置へ送信されるべきサーバー状態を含む。装置が、装置タイプ識別設定を受け取ったときに既にゾンビ状態から出ている場合には、このオペレーションが何ら作用しない。
【0132】
図20は、本発明の一実施形態によりゾンビ状態において装置タイプ識別以外の設定を装置が交換しようと試みるときのプロセスフロー図である。この状態は、サーバーにおける装置の既知の状態がゾンビ状態にあり、且つ装置が通常のアプリケーション設定を交換しようと試みるときに生じる。図20に示すように、ステップ1では、装置は、putItemsをコールして、通常の設定を交換する。この場合に、サーバーは、装置がゾンビ状態にあることを指示するエラーコード300で装置要求を拒絶する。ステップ2において、装置は、putItemsをコールして、装置タイプ識別設定を交換し、サーバーが装置のアイデンティティを確認すると共に、ゾンビ状態を終了できるようにする。
【0133】
通常の設定交換の場合には、装置は、装置で実行されているアプリケーションのための設定を交換する。このシナリオでは、装置は、もはやゾンビ状態になく、装置とサーバーとの間で通常の設定交換を遂行することができる。
【0134】
図21は、本発明の一実施形態による通常の設定交換のためのシーケンス図である。図21に示すように、ステップ1において、装置は、それが設定を変更した場合に、putItemsメソッドコールを使用してそれらをサーバーに送信する。送信すべき設定が更にある限り、このステップを繰り返す。
【0135】
装置は、サーバーに得られる保留中設定変更についてサーバーから通知を受け取る場合に、getItemsコールを発生して、設定変更を検索する。装置に対してサーバーに得られる保留中設定がない場合には、このステップを省けることに注意されたい。
【0136】
装置は、201データタイプ状態コードを通して、更に設定変更が存在するというフラグを立てた場合には、ackAndGetItemsメソッドコールを発生する。装置は、この場合、サーバーからの最後の応答で受け取られた設定を確認し、そしてサーバーにおける保留中設定変更を要求する。
【0137】
最終的に、全ての設定変更がサーバーから装置によりフェッチされた後に、ackItemsコールを発生する。ackItemsメソッドは、サーバーが、サーバーから送信される変更設定に関連したリソースをクリーンアップできるようにする。
【0138】
上述したプロセスフローでは、更新設定間に相違はない。主な相違は、データコンテンツであるが、オペレーションは異なる。次のことに注意されたい。
1.空き設定ドキュメントを伴う削除は、全データベースを削除する。
2.全ての設定、及び削除データコンテンツドキュメントに残っている設定のサブツリーが削除される。
3.削除データコンテンツのノードとしてマークされた設定は、サブツリーを削除しない。
例えば、既存のツリーは、次の通りである。
a/b/m
a/b/n
a/c/
m及びnを削除するために、サブノードを指定することができる。m及びnを削除するためのSetExデータコンテンツは、次の通りである。
<Node name = “a”>
<Leaf name = “b”></Leaf>
</Node>
サブノードbは、削除されるデータコンテンツにおいてリーフ(葉)として指定されることに注意されたい。それにより得られるツリー(木)は、次の通りである。
a/c
【0139】
リーフを削除するのは一般的でない。又、内部ノードは、セマンティックをもたないことに注意されたい。上述したスキーマの例から、ツリー(a/c)は、(a/b、a/c)と同じである。というのは、bは、内部ノードであり、セマンティックをもたない。従って、リーフa/b/m及びa/b/nを削除することは、前記例においてa/bを削除することとセマンティック的に同じである。リーフノード削除例は、次の通りである。
<Node name = “a”>
<Node name = “b”>
<Leaf name = “m”></Leaf>
<Leaf name = “n”></Leaf>
</Node>
</Node>
それにより得られるツリーは、次の通りである。
a/c
【0140】
実施を簡単化するために、データコンテンツ仕様は、特定のサブノードにおいて削除が許されることを定義する。前記例の場合のデータコンテンツ制限は、a/bに関する削除しか許されず、リーフについては許されないことである。
【0141】
ダンプ設定交換
ダンプ設定交換の場合には、装置は、SetExメソッドコールを発生する。サーバーは、装置から全ての設定をゲットしたいことを決定する。このメソッドは、装置から全てのデータをゲットすることによりサーバーが期待する状態に装置があることをテストし又はチェックするのに主として使用される。これが生じると、サーバーは、特殊なエラーコード405で応答する。エラーコードに応答して、装置は、それを生じさせたデータ形式に関する設定情報のダンピングをスタートする。
【0142】
図22は、本発明の一実施形態によるダンプ設定のためのシーケンス図である。装置は、putItemsコールを呼び出して通常の設定を交換する。サーバーは、あるデータタイプに対して既知の全ての設定を装置がダンプすることを要求する状態にある場合に、所与のデータタイプに対して405コードを返送する。これは、装置がgetItemsコールを開始するときにも生じることに注意されたい。
【0143】
装置は、initRefresh(コード251)をコールして、ダンプ設定変更をスタートしたことをサーバーに通知する。装置は、サーバーによって送信されるべきダンプ要求アラートに応答してputItems要求を発生する。この状態では、装置は、それが含む全ての設定をサーバーへダンプする。このステップは、ダンプする必要のある更なる設定を装置が有する限り、繰り返される。
【0144】
設定交換データ構造
この章は、コア装置プロキシーレコード交換(DPREx)データ構造に対する改善を説明する。ExchangeItem構造は、設定交換をサポートするように変更される。特に、ExchangeItemのitemType及びrecordIDフィールドに対しSetExプロトコルにおいてどんな値が許されるかに関して制約がある。
【0145】
一実施形態では、itemTypeデータ構造は、「削除(Delete)」及び「置き換え(Replace)」オペレーションをサポートする。設定変更の場合に、「置き換え」は、設定が存在しなければ「追加(Add)」を意味し、さもなければ、更新を行うよう再定義される。
recordIDフィールドは、設定変更に対して省略される。
【0146】
装置が設定を要求するが、メッセージサイズを規定サイズ以下に制限するときには、SetExコンテンツが、規定サイズ以下のサイズへ分割される。分割は、リーフノードの基づくものである。例えば、メッセージサイズが0にセットされた場合には、要求当たり1つのリーフノードしか転送されない。多くの場合、この定義では実施が複雑になり過ぎ、利益が得られない。実施を簡単にするために、ノードレベルで設定をグループ分けすることができる。データコンテンツは、例えば、a/b/c、a/b/d、a/b/e及びa/m/cとして示される。
【0147】
a/b/に対してグループ分けが可能である場合は、メッセージのサイズに関わらず、a/b/c、a/b/d、及びa/b/eを1つのメッセージで転送することが保証される。このメッセージは、他の設定も含み得ることに注意されたい。これは、設定を定義するためのデータコンテンツ仕様までである。
【0148】
次の章は、サンプル設定データコンテンツを含むXML−RPC断片を示す。一実施形態では、装置タイプ識別設定を交換するためにExchangeItemのデータフィールドにおける設定ツリーデータコンテンツが使用される。6つの異なる装置タイプ識別設定が使用され、それらは、Mod、Hint1、Hint2、Hint3、Hint4、及びHint5である。ここで、Modは、装置のモデルを表わし、ほとんどの場合に、装置を独特に識別するのに使用できる。Hint1ないしHint5は、Modストリングに含まれた情報に加えて、装置タイプを識別するための情報を含む。
【0149】
次のdevTypeIdentXMLスキーマは、どのデータが許されるか定義する。この場合のデータタイプ名は、s−devTypeIdentである。
【0150】
eメールフォルダ設定を交換するための設定ツリーデータコンテンツである、getItemsコールに対するサーバー応答の一例を以下に示す。
【0151】
SetExにおいて、Clearコマンドは、以前のインストール又はデータベースアクチベーションのトレースをクリーンアップする正に第1のコマンドとしては使用されない。それ故、装置は、SetExデータタイプに対して第1同期を遂行するときに(アンカー0でのcheckSyncAnchorsコール)、それ自体でクリーンアッププロセスを開始する。装置がSetEx要求に対して交換状態417を返送することによりinitRefreshコールを遂行するように強制するときには、同じ初期同期ルールが適用される。
【0152】
設定交換ファンクション
この章は、getItems、putItems、ackItems及びinitRefreshを含むDPRExの変更された定義のリストを含む。getItems及びputItemsについては、次の制約が適用される。即ち、recordIDフィールドは使用されず、返送されるExchangeItemインスタンスにおけるitemTypeフィールドに対して「置き換え」及び「削除」だけがサポートされる。ExchangeItemの「データ」フィールドは、設定データコンテンツを含む。
【0153】
ackItemsについては、次の制約が適用される。即ち、recordIDフィールドは使用されず、返送されるExchangeItemインスタンスにおけるitemTypeフィールドに対してAck及びAckAllだけがサポートされる。このケースでは、データフィールドが使用されない。
【0154】
initRefreshメソッドは、2つのケースにおいて装置によりコールされる。第1に、装置がサーバーアラートに応答して装置に知られた全ての設定のダンプをスタートしようとしていることをサーバーに通知するのに使用される。これは、装置に知られた各データタイプに対して状態コード251により表わされた特殊な交換状態ExchangeAllにおいて送信することで遂行される。第2に、装置は、getItemsコールの後にサーバーにおける全ての既知の設定を検索することを希望する。装置は、各データタイプに対して状態コード251で表わされた状態INIT_REFRESHを送信することによりこれを行なう。
【0155】
アプリケーション交換プロトコル
アプリケーション交換プロトコルは、装置とサーバーとの間でソフトウェア変更を交換するプロセスを定義するのに使用される。アプリケーション交換機能は、XML_RPCの最上部に新たなプロトコルを定義することを必須としたレコード及び設定の交換とは極めて異なる。アプリケーション交換(AppEx)ソフトウェアに対するプロトコルの流れ、データの構造及びファンクションは、以下の章で述べる。AppExプロトコルは、appsをベースURL拡張として使用すると共に、バージョン番号及び外部ユーザIDをURLパラメータとして使用する。AppEx URLの一例が、http://www.verdisoft.com/dp/apps?extID=2347dhji34&version=1.0.1として示される。
【0156】
アプリケーション交換プロセスフロー
図23は、本発明の一実施形態による装置とサーバーとの間のアプリケーション交換プロセスフローを示すシーケンス図である。図23のソフトウェア交換プロセスフローにおけるステップのシーケンスを以下に説明する。
1)装置は、利用可能なアプリケーション変更についてサーバーに要求する。サーバーは、変更を利用可能にする全てのアプリケーションに対するセットアップ情報のリストを返送する。サーバーがソフトウェア変更をもたない場合には、AppExプロセスが終了となる。
2)装置は、セットアップ情報を処理し、ソフトウェア変更の実行をいつスタートすべきか判断する。
3)装置は、アプリケーションセットアップを開始する。サーバーは、装置が実行すべきセットアップコマンドのリストで応答する。
4)装置は、セットアップコマンドを処理し、アプリケーションセットアップに必要なファイルをダウンロードする。ファイルのダウンロードが失敗すると、装置は、残りのファイルのダウンロードを停止する。これは、首尾良くダウンロードされたソフトウェアをインストールし、次いで、シーケンスdeviceSetupStart及びdeviceSetupEndを適当なエラーコードと共に使用して、ダウンロードが失敗したことをサーバーに通知する。
5)装置は、アプリケーションセットアッププロセスが装置においてスタートすることをサーバーに通知する。この情報は、サーバーにより使用されて、装置上で変更されたソフトウェアに関連した全ての古いサービスを無効にする。サーバーは、特殊な状態コード301で応答して、装置が、getApplicationUpdateをコールすることで全プロセスを始めからスタートするよう強制する。1つのセットアップコマンドがフェイルすると、装置は、残りのコマンドの実行を停止する。
6)装置は、アプリケーションをスタートする。
7)アプリケーションは、それがインストールされたことをサーバーに通知する。サーバーは、このコールを使用して、装置の設定をスケジュールする。
8)装置は、サーバーから必要な設定をフェッチする。
9)アプリケーションは、自己テストの準備ができたことを任意の要求を通じてサーバーに通知する。サーバーは、このアプリケーションに対するある規定のテストデータをアクチベートする。
10)装置は、装置におけるセットアッププロセスが指定のアプリケーションに対して完了したことをサーバーに通知する。要求の一部分として、装置は、新たなソフトウェア同期アンカーを送信する。
11)アプリケーションは、使用の準備ができたことを任意の要求を通じてサーバーに通知する。
【0157】
アプリケーション交換データ構造
この章は、装置とサーバーとの間でのソフトウェアアプリケーションの交換に使用されるXML_RPCデータ構造を説明する。アプリケーション交換データ構造は、SetupInfo、SetupInfoItem、SetupCommand、NameValuePair、及びAppExResultを含む。
【0158】
SetupInfo構造は、装置が利用可能なソフトウェア変更についてサーバーに要求するときに使用される。サーバーは、装置に利用可能なソフトウェア更新を表わすSetupInfoインスタンスを変更する。
データメンバー:
description:これは、必須のフィールドであり、人間が読むことのできるものである。これは、全ソフトウェア更新を記述するもので、装置によって使用されて、ユーザが更新を受け容れるよう求められた場合にユーザに対しダイアログボックスでメッセージを表示するものである。
setupSize:これは、アプリケーション更新のためのスペース要求を指定する必須フィールドである。
sunshineDate:これは、ソフトウェアを更新できるときを指定する任意のフィールドである。フォーマットは、UTCである。サーバーへのアクセスは、装置がソフトウェアを間に合うようにインストールしないときには拒絶される。このフィールドが欠けたときには、装置は、ソフトウェア変更を直ちに処理するが、さもなければ、ユーザは、更新を今得たいか後で得たいか尋ねられる。
SetupInfoItems:これは、任意のフィールドで、ソフトウェア変更が存在するときにSetupInfoItem構造のアレーである。
【0159】
SetupInfoItem構造は、SetupInfo構造内で使用される。各SetupInfoItemは、装置に利用できるソフトウェア変更を表わす。
データメンバー:
setupType:これは、必須のフィールドであり、定数INSTALL=1、UPDATE=2、及びUNINSTALL=3、のうちの1つを含む。
additionalDescription:これは、任意のフィールドで、このセットアップアイテムに対する記述が、SetupInfoにおける全体的記述と独立し、それに追加されるもので、且つユーザに付加的に提示されることを指定する。このフラグが存在しないか又は偽である場合には、記述がユーザに提示されない。
setupInfoId:これは、必須のフィールドで、装置に対するアプリケーション設定変更を独特に識別する。
description:これは、ソフトウェア変更を記述する任意のフィールドである。
【0160】
SetupCommand構造は、セットアップコマンドをソフトウェア変更の一部分として送信するのに使用される。SetupCommand構造及びそれに対応するデータメンバーの一例を以下に示す。
setupType:これは、必須フィールドであり、定数INSTALL=1、UPDATE=2、及びUNINSTALL=3、のうちの1つを含む。
itemRef:これは、必須のフィールドである。SetupCommandアレーにおけるSetupCommandエレメントは、増加するアイテム参照番号でマークされる。このアイテム参照は、あるファンクションでは、アレーから1つのSetupCommandエレメントを識別するのに使用される。
URL:ダウンロードすべきセットアップコマンド又はファイルに対してURLを指定する任意のフィールドである。このフィールドは、通常、デフォールトによりセットされる。しかしながら、あるプラットホームでは、アンインストールのためにダウンロードする必要のあるソフトウェアはない。
CRCStr:これは、任意のフィールドで、CRC−32チェック和情報を含む。CRCは、CRCに基づくソフトウェアダウンロードをキャッシュ記憶するために装置により使用されてもよいし、又はダウンロードされたファイルが壊れたかどうかチェックするために使用されてもよい。
programId:これは、必須のフィールドであり、セットアップされているアプリケーションプログラムを独特に識別するIDを含む。
NameValuePairs:これは、任意のフィールドであり、NameValuePairデータ構造を指定する。
【0161】
NameValuePair構造は、SetupCommand構造の一部分として使用される。NameValuePair構造は、ネーム/バリュー対パラメータを指定するのに使用される。これらのパラメータは、このインストールに対して特定であり、例えば、特定のソフトウェア及び/又は装置タイプに必要とされるコマンドラインパラメータのような情報を搬送するのに使用される。
【0162】
AppExResult構造は、メソッド要求の結果を返送するのに使用される。これは、アプリケーション交換に関する情報を含む。
データメンバー:
SetupInfo:これは、任意のフィールドで、アプリケーションセットアップ情報を装置へ返送するのに使用される。このフィールドは、装置がgetApplicationUpdateをコールするときだけ返送される。
SetupCommand:これは、任意のフィールドで、アプリケーション変更(インストール、更新、又はアンインストール)に関連したセットアップコマンドを返送するのに使用される。このフィールドは、装置がinitiateApplicationUpdatesをコールするときに返送される。
result:これは、必須のフィールドで、アプリケーション変更メソッド要求の結果を含む。
【0163】
アプリケーション交換ファンクション
この章は、装置とサーバーとの間でのアプリケーションの交換を遂行するのに使用されるファンクションを説明する。AppExファンクションは、checkSyncAnchors、getApplicationUpdates、initiateApplicationUpdates、deviceSetupStarts、deviceSetupEnd、applicationInstalled、applicationReadyToTest、applicationReadyToGo、及びinitRefreshを含む。あるファンクションは、エラーコードをサーバーへ送信することができる。一実施形態では、エラーコードは、以下のテーブル5に定義される。
テーブル5
【0164】
ERR_CANT_DOWNLOAD_FILE又はERR_RAN_OUT_OF_DISKSPACEのような装置ローカルエラーについては、装置は、エラーをサーバーへ報告する前に、エラーを固定するための全ての考えられるステップを試みる(例えば、インターネット接続をチェックしたりハードドライブをクリーンアップしたりするようにユーザに頼む)ことに注意されたい。装置が現在ソフトウェア変更の問題を報告するためにエラーコードを送信するときには、サーバーが装置をディスエイブルする。
【0165】
checkSyncAnchorsは、装置が始動するたびに使用され、装置に知られた現在ソフトウェアアンカーを送信する。装置が保留中アンカーを有するときには、その保留中アンカーをサーバーにも送信する。或いは又、装置が保留中アンカーをもたないときには、保留中アンカーがサーバーへ送信されない。サーバーは、受け取ったアンカーを、サーバーに記憶されたアンカーと比較し、装置及びサーバーが同期ずれしているかどうか決定する。
AppExResult checkSyncAnchors (String anchor, StringpendingAnchor)
リターン:アンカーが一致するときには結果が200であり、アンカーが不一致のときには結果が417であるようなAppExResultのインスタンス
【0166】
getApplicationUpdatesメソッドは、装置に利用できる全アプリケーション更新のリストに関する情報を返送する。
AppExResult getApplicationUpdates (String anchor)
リターン:ソフトウェア変更が利用できるときにSetupInfo構造を含むAppExResultのインスタンス。さもなければ、SetupInfoメンバーはセットされない。
パラメータ:
・anchor−装置は、新たなアンカーを送信する。
【0167】
initiateApplicationUpdatesメソッドは、サーバーからインストラクションのリストを得て、アプリケーション変更(インストール、更新、又はアンインストール)プロセスをスタートするために、装置により呼び出される。サーバーにより返送される情報は、ダウンロードされるべきファイルと、装置上で実行されるべきコマンドとを含む。装置は、返送されたセットアップコマンドに載せられた順序でアプリケーション変更コマンドを実行する。
AppExResult initiateApplicationUpdates (String[] setupInfoIds)
リターン:SetupCommandアレーを含むAppExResultのインスタンス。
パラメータ:setupInfoIds−パラメータとして、装置は、getApplicationUpdates応答からsetupInfoIdsを送信する。
【0168】
deviceSetupStartsメソッドは、装置においてアプリケーションセットアップがスタートしたことをサーバーに通知する。これは、変更されているソフトウェアに関連した全ての古いサービスをサーバーが無効化できるようにする。他方、装置がアプリケーション更新プロセスを開始した後であって且つこのファンクションコールの前に新たなアプリケーション更新がサーバーにおいて追加された場合には、サーバーは、新たなアプリケーション更新が存在することを指示するエラーコード301を返送する。これが生じると、装置は、アプリケーション更新プロセスを再スタートする。
AppExResult deviceSetupStarts()
リターン:装置がAppExプロセスを再スタートすることを指示するために結果コード301を発生するAppExResultのインスタンス。
【0169】
装置は、このメソッドを要求することを試み、そしてサーバーから応答が返送されないときには、要求がサーバーにより受け取られたかどうか、又はサーバーからの応答が失われたかどうか分らない。この場合には、装置は、このメソッドに対して新たな要求で試みる。これは、応答が失われた場合には420エラーコードを生じさせることに注意されたい。
【0170】
deviceSetupEndメソッドは、装置におけるアプリケーションセットアップが完了したことをサーバーに通知する。サーバーは、更なるソフトウェア変更がサーバーにおいてその間にスケジュールされたかどうかチェックし、そして必要に応じて新たな通知を送出する。
AppExResult deviceSetupEnds (String anchor, int itemRef, int errorCode, StringerrorMsg)
パラメータ:
・anchor−装置は、現在インストールされたソフトウェアを表わす新たなアンカーを送信する。
・itemRef:このパラメータは、2つの方法で使用される。
第1に、itemRefは、位置“N”のコマンド、及びセットアップコマンドアレーにおいてその位置“N”より低い他の全てのコマンドは成功であり、そして他の全てのコマンドは実行されないことを指定する。
第2に、itemRefは、itemRefにより指定された位置、例えば、“M”におけるコマンドに対するセットアップが失敗し、“M”より低いオフセットをもつ他の全てのコマンドが成功であり、そして“M”より大きなオフセットをもつ全てのコマンドが実行されないことを指示する。
・errorCode−エラーの場合に、エラーの原因がここにリストされる。さもなければ、“OK”コードが返送される。
・errorMsg−このパラメータは、詳細なエラーメッセージを指定する。成功の場合には、このフィールドは、ナルである。
リターン:AppExResultのインスタント
【0171】
このメソッドは、通常のオペレーションのもとでコールされる。現在AppExプロセスが、AppExコードを含むプログラムをアンインストールする場合には、装置は、アンインストールをスタートする直前にこのメソッドをコールする。
【0172】
applicationInstalledメソッドは、アプリケーションがインストールされ又は更新されたことをサーバーに通知する。これは、REx API又はSetEx APIを使用して装置とサーバーとの間でデータを同期する各アプリケーションに対して必須である。このメソッドの主たる使用は、プログラム更新のためである。サーバーは、このメソッドをコールして、更新されたソフトウェアにより使用される設定をアクチベートする。
AppExResult ApplicationInstalled(String programId, int errorCode, String errorMsg)
パラメータ:
・programId−サーバー側でアプリケーションサービスを独特に識別する
・errorCode−エラーの場合には、エラーの原因がここにリストされる。さもなければ、OKコードが返送される。
・errorMsg−詳細なエラーメッセージを指定する。首尾良いアプリケーションインストールの場合には、このフィールドがナルである。
リターン:AppExResultのインスタンス
【0173】
applicationReadyToTestメソッドは、あるテストを行なって、それが正しく働くかどうかチェックすることを希望する旨、サーバーに通知する。サーバーは、このメソッドを使用して、あるテストデータをアクチベートする。
AppExResult ApplicationReadyToTest (String programId, int errorCode, String errorMsg)
パラメータ
・programId−サーバー側のアプリケーションサービスを独特に識別する
・eoorCode−エラーの場合、エラーの原因がここにリストされる。さもなければ、“OK”コードが返送される。
・errorMsg−詳細なエラーメッセージを指定する。成功の場合、このフィールドは、ナルである。
リターン:AppExResultのインスタンス
【0174】
applicationReadyToGoメソッドは、使用の準備ができたことをサーバーに通知する。applicationReadyToGoメソッドをコールするには、applicationInstalled又はapplicationReadyToTestをコールする各プログラムが必要とされる。
AppExResult ApplicationReadyToGo (String programId, int errorCode, String errorMsg)
パラメータ
・programId−サーバー側のアプリケーションサービスを独特に識別する
・eoorCode−エラーの場合、エラーの原因がここにリストされる。さもなければ、“OK”コードが返送される。
・errorMsg−詳細なエラーメッセージを指定する。成功の場合、このフィールドは、ナルである。
リターン:AppExResultのインスタンス
【0175】
initRefreshメソッドは、装置が、装置において全てのソフトウェアを再インストールしたいことをサーバーに通知するときに、使用される。サーバーは、この要求を受け取ると、装置にあってもよい全てのソフトウェアをインストールのためにマークする。装置は、このコールに対して首尾良い応答を受け取ると、完全なAppExプロセスを遂行して、コマンドを検索する。
AppExResult initRefresh()
リターン:AppExResultのインスタンス
【0176】
サーバーは、装置に対するソフトウェア変更を有するときに通知を送信する。装置がgetApplicationUpdatesをコールするときに、サーバーは、装置が通知を受け取ったと仮定し、そしてサーバー側の通知をクリアする。これは、ユーザがソフトウェアの変更を延期する場合及び装置が再スタートされる場合の両方に装置がgetApplicationUpdatesの結果を永続的なものにすることを意味する。装置は、AppExプロセスの中間で通知を受け取ると、その通知を無視することができる。装置がdeviceSetupEndをコールしてAppExプロセスを終了すると、サーバーは、更なるソフトウェア変更が存在するかどうかチェックし、そして必要に応じて新たな通知を送出する。
【0177】
アプリケーション交換状態コード
設定交換において、装置がゾンビモードにあるときに状態コード300が返送される。この場合には、装置は、最初に、装置プロビジョニングプロトコルを使用して装置タイプ識別を送信し、ゾンビモードを出る。
【0178】
deviceSetupStartsメソッドへのコールは、装置がgetApplicationUpdatesをコールすることにより全AppExプロセスを始めからスタートするように強制する301結果コードを返送することができる。getApplicationUpdatesに対する要求は、ソフトウェア変更が存在するかどうかサーバーが現在決定できないときに302結果コードを返送することができる。これは、サーバーが、applicationInstalled及び/又はapplicationReadyToGoをコールするために、新たにインストール又は更新されたソフトウェアプログラムを待機するときに生じることがある。この場合、装置は、遅延を増加しながら要求を後で数回再試みする。数回の再試みの後に、サーバーが、依然、302状態コードで応答する場合には、装置は、全AppExプロセスを終了し、次の通知を単に待機することになる。
【0179】
checkSyncAnchorsメソッドへのコールは、装置上のソフトウェアと、サーバーが装置上にあると考えているソフトウェアとが異なるものであることを指示する417結果コードを返送することができる。サーバーへの各コールは、エラーコード500を生じさせる。これは、サーバーがこのとき何らかの理由で装置コールに応答できないことを指示する一時的サーバーエラーである。データコンテンツは、サーバーにより検査されず、従って、間違っているとは考えられない。クライアントは、前記のように、同じインターバルを使用して同じ要求を再試みする。所与の回数の再試みの後に、クライアントは、再試みを終了し、そして通知又はポーリング時間切れといった次の通常の同期事象を待機する。
【0180】
ソフトウェア同期アンカー
ソフトウェア同期アンカーは、装置上のソフトウェアが、サーバーが装置上にあると考えているソフトウェアとは異なるときを検出するのに使用される。これは、ユーザが全装置をバックアップするように試みるときに生じる。この状況では、装置上のソフトウェアは、装置がバックアップから回復する前にサーバーにより装置にインストールされたソフトウェアと適合しないことがある。
【0181】
装置及びサーバーは、両方とも、それらが始めに同期することを保証するために同じソフトウェア同期アンカー値に初期化される。装置は、同期アンカーを駆動する。装置は、getApplicationUpdate又はdeviceSetupEndをコールするたびに、新たなアンカーをサーバーへ送信し、サーバーは、そのアンカーを記憶する。装置は、コールに対する首尾良い応答をサーバーから受け取ると、現在アンカーを、サーバーへ送信された新たなアンカーに置き換える。getApplicationUpdate又はdeviceSetupEndへのコールが失敗すると、装置は、サーバーが要求を受け取って新たなアンカーを記憶したかどうか分らない。それ故、装置は、要求を再びコールするよう試みるときに保留中の新たなアンカーを再送信する。
【0182】
装置は、スタートするたびに、checkSyncAnchorを使用してサーバーへ現在アンカーを送信する。装置は、deviceSetupEndコールに対して首尾良い応答を得ていない保留中の新規なアンカーを有するときに、このアンカーをcheckSyncAnchorsコールへのパラメータとして送信する。サーバーは、送られたアンカー(又は送信されたアンカー)を、装置から受け取った最後のアンカーと比較する。アンカーが一致しないときには、装置は、ユーザへ問題を報告し、そしてinitRefreshをコールして、スクラッチから完全ソフトウェアインストールをスタートする。
【0183】
アプリケーション交換状態
サーバーは、ソフトウェアインストール、アンインストール又は更新プロセス中には、2つの状態の一方にある。図24は、本発明の一実施形態によるアプリケーション交換状態遷移図である。装置が不法メソッドをコールすると、エラー状態は、サーバーが420状態コードをこのコールに対する応答として返送するようにさせる。その後、状態マシンは、その状態へ復帰し、そこからエラー状態へ移行する。
【0184】
エラー状態から出るために、装置は、getApplicationUpdateをコールし、そして全アプリケーション交換プロセスを再スタートする。これを行なうために、装置は、エラーコード(例えば、200)で且つ−1をitemRefとして、deviceSetupEndをコールする。次いで、以前に割り込まれたプロセスに対してクリーンな状態から新たなAppExプロセスをスタートする。
【0185】
アプリケーション交換インストール及び更新
装置がAppExを経てソフトウェアをインストールし又は更新するときに、インストール又は更新がフェイルすることがある。変更がセットアッププログラムにより完全にロールバックされていないときには(装置がクラッシュしたために)、ソフトウェアがもはや使用できないことがある。これは、装置上でAppExを遂行するソフトウェアを装置が更新するよう試みる場合に重大となる。
【0186】
装置は、サーバーとのAppExをまだ実行できる場合に、initRefreshメソッドを、次いで、AppExプロセスをコールして、装置上の全てのソフトウェアプログラムを(従って、壊れたソフトウェアプログラムも)再インストールするよう試みることができる。装置は、AppExプログラムをもはや実行できない場合には、ローダーを使用して、装置能力、例えば、装置タイプ識別情報を送信し、この場合も、URLをリモートインストーラーへ配送する。このコールは、サーバー側で全てのソフトウェアプログラムが再インストールに対してマークされることを意味する。装置は、リモートインストーラーをインストールし、次いで、AppExを使用して、ソフトウェアプログラムを再インストールする。
【0187】
以上、明瞭化のために、異なる機能的ユニット及びプロセッサを参照して本発明の実施形態について説明されたことが明らかであろう。しかしながら、本発明から逸脱せずに、異なる機能的ユニット又はプロセッサ間に機能を適宜に分散させられることも明らかであろう。例えば、個別のプロセッサ又はコントローラにより遂行されるべき機能は、同じプロセッサ又はコントローラによって遂行されてもよい。従って、特定の機能的ユニットを参照することは、厳密な論理的又は物理的構造又は編成を表わすのではなく、前記機能を与える適当な手段を参照するに過ぎないことが明らかであろう。
【0188】
本発明は、ハードウェア、ソフトウェア、ファームウェア又はその組み合せを含む任意の適当な形態で実施することができる。又、本発明は、1つ以上のデータプロセッサ及び/又はデジタル信号プロセッサ上で実行されるコンピュータソフトウェアとして部分的に実施されるのも任意である。本発明の実施形態のエレメント及びコンポーネントは、任意の適当な仕方で物理的に、機能的に及び論理的に実施されてもよい。実際に、機能は、単一ユニットで実施されてもよいし、複数のユニットで実施されてもよいし、又は他の機能的ユニットの一部分として実施されてもよい。従って、本発明は、単一のユニットで実施されてもよく、又は異なるユニットとプロセッサとの間に物理的及び機能的に分散されてもよい。
【0189】
当業者であれば、同じ基本的なメカニズム及び方法を使用しながら、ここに開示された実施形態の多数の考えられる変更や組み合せも使用できることが明らかであろう。以上の説明は、例示の目的で特定の実施形態を参照して書かれたものであった。しかしながら、前記説明は、これに尽きるものでもないし、又、本発明をこれに限定するものでもない。前記教示に鑑み、多数の変更や修正が考えられる。前記実施形態は、本発明の原理及びそれらの実際の応用を説明すると共に、当業者が、本発明及び種々の実施形態を、意図された特定用途に適するように種々変更を加えて最良に利用できるようにするために、選択されて説明されたものである。
【特許請求の範囲】
【請求項1】
通信ネットワーク内で1つ以上のユーザ装置を接続するための複数のエントリーポイントを与えるシステムにおいて、
前記1つ以上のユーザ装置と通信するサーバーであって、該サーバーが接続データセットを含み、且つ前記1つ以上のユーザ装置が前記接続データセットの部分を共有するようにしたサーバーと、
前記複数のエントリーポイントの1つから前記接続データセットにアクセスする要求をユーザ装置から受け取るためのロジックと、
前記ユーザ装置の属性を自動的に決定するためのロジックと、
前記ユーザ装置の属性を使用して所定のクライアント装置のデータベースから通信メソッドを選択するためのロジックと、
前記通信メソッドに基づき前記ユーザ装置をプロビジョニングするためのロジックと、を備えたシステム。
【請求項2】
前記1つ以上のユーザ装置は、少なくとも1つ以上のセルラー電話、ワイヤレスパーソナルデジタルアシスタント、ナビゲーション装置、パーソナルコンピュータ、ゲームコンソール、インターネットターミナル、及びキオスクを含む、請求項1に記載のシステム。
【請求項3】
前記接続データセットは、少なくとも1つ以上のeメール、連絡先、カレンダー、タスク、ノート、ピクチャー、音楽、ドキュメント、ビデオ、ブックマーク、及びリンクを含む、請求項1に記載のシステム。
【請求項4】
前記サーバーは、多数の地理的位置に分散された1つ以上のコンピュータ及びデータ記憶システムを含む、請求項1に記載のシステム。
【請求項5】
前記属性は、
装置タイプ記述と、
サービス記述と、
トランスコーディングと、
アカウントテンプレートと、
を含む請求項1に記載のシステム。
【請求項6】
前記ユーザ装置をプロビジョニングするためのロジックは、
SMSベースのプロビジョニングを遂行するロジックと、
装置ブラウザベースのプロビジョニングを遂行するロジックと、
実行可能なプログラムベースのプロビジョニングを遂行するロジックと、
ActiveXベースのプロビジョニングを遂行するロジックと、
を含む請求項1に記載のシステム。
【請求項7】
SMSベースのプロビジョニングを遂行する前記ロジックは、
証明書を要求しているユーザ装置へURLを送出するロジックであって、この証明書がeメールアドレス及びパスワードを含むようなロジックと、
前記ユーザ装置から前記証明書を受け取るロジックと、
前記ユーザ装置からの前記証明書を検証するときに前記ユーザ装置へプロビジョニングSMSを送出するロジックと、
を含む請求項6に記載のシステム。
【請求項8】
装置ブラウザベースのプロビジョニングを遂行する前記ロジックは、
証明書を要求しているユーザ装置へ新たな装置インジケータを送出するロジックであって、この証明書が電話番号を含むようなロジックと、
前記ユーザ装置から前記証明書を受け取るロジックと、
前記ユーザ装置からの前記証明書を検証するときに前記ユーザ装置へプロビジョニングSMSを送出するロジックと、
を含む請求項6に記載のシステム。
【請求項9】
実行可能なプログラムベースのプロビジョニングを遂行する前記ロジックは、
前記ユーザ装置がSDK装置であるかどうか決定するロジックと、
前記ユーザ装置を構成しそして証明書を要求するために前記ユーザ装置に実行可能なプログラムを送出するロジックであって、前記証明書が電話番号を含むようなロジックと、 前記ユーザ装置から前記証明書を受け取るロジックと、
前記ユーザ装置からの前記証明書を検証するときに前記ユーザ装置へ前記構成をダウンロードするロジックと、
を含む請求項6に記載のシステム。
【請求項10】
構成をダウンロードする前記ロジックは、
コンピュータプログラムをインストールするロジックと、
フィルタを適用するロジックと、
前記接続データセットに接続を適用するロジックと、
を備えた請求項9に記載のシステム。
【請求項11】
ActiveXベースのプロビジョニングを遂行する前記ロジックは、
ユーザ装置がActiveXイネーブルされたかどうか決定するロジックと、
ユーザ装置がActiveXイネーブルされた場合には、前記ユーザ装置にActiveXローダーをインストールするロジックと、
前記ユーザ装置において前記ActiveXローダーを実行するロジックと、
を備えた請求項6に記載のシステム。
【請求項12】
ユーザ装置をプロビジョニングする前記ロジックは、更に、
前記ユーザ装置へサービスをアクチベートするロジックと、
前記ユーザ装置からデータをインポートするロジックと、
前記ユーザ装置を所定のアカウントに接続するロジックと、
複写レコードを取り扱うロジックと、
前記レコードを前記ユーザ装置へ送出するロジックと、
を含む請求項6に記載のシステム。
【請求項13】
通信ネットワーク内で1つ以上のユーザ装置を接続するための複数のエントリーポイントを与える方法において、
前記1つ以上のユーザ装置と通信するサーバーを用意するステップであって、該サーバーが接続データセットを含み、且つ前記1つ以上のユーザ装置が前記接続データセットの部分を共有するようにしたステップと、
前記複数のエントリーポイントの1つから前記接続データセットにアクセスする要求をユーザ装置から受け取るステップと、
前記ユーザ装置の属性を自動的に決定するステップと、
前記ユーザ装置の属性を使用して所定のクライアント装置のデータベースから通信メソッドを選択するステップと、
前記通信メソッドに基づいてユーザ装置をプロビジョニングするステップと、
を備えた方法。
【請求項14】
前記1つ以上のユーザ装置は、少なくとも1つ以上のセルラー電話、ワイヤレスパーソナルデジタルアシスタント、ナビゲーション装置、パーソナルコンピュータ、ゲームコンソール、インターネットターミナル、及びキオスクを含む、請求項13に記載の方法。
【請求項15】
前記接続データセットは、少なくとも1つ以上のeメール、連絡先、カレンダー、タスク、ノート、ピクチャー、音楽、ドキュメント、ビデオ、ブックマーク、及びリンクを含む、請求項13に記載の方法。
【請求項16】
前記サーバーは、多数の地理的位置に分散された1つ以上のコンピュータ及びデータ記憶システムを含む、請求項13に記載の方法。
【請求項17】
前記属性は、
装置タイプ記述と、
サービス記述と、
トランスコーディングと、
アカウントテンプレートと、
を含む請求項13に記載の方法。
【請求項18】
ユーザ装置をプロビジョニングするための前記ステップは、
SMSベースのプロビジョニングを遂行する段階と、
装置ブラウザベースのプロビジョニングを遂行する段階と、
実行可能なプログラムベースのプロビジョニングを遂行する段階と、
ActiveXベースのプロビジョニングを遂行する段階と、
を含む請求項13に記載の方法。
【請求項19】
SMSベースのプロビジョニングを遂行する前記段階は、
証明書を要求しているユーザ装置へURLを送出し、この証明書は、eメールアドレス及びパスワードを含むものであり、
前記ユーザ装置から前記証明書を受け取り、
前記ユーザ装置からの前記証明書を検証するときに前記ユーザ装置へプロビジョニングSMSを送出する、
ことを含む請求項18に記載の方法。
【請求項20】
装置ブラウザベースのプロビジョニングを遂行する前記段階は、
証明書を要求しているユーザ装置へ新たな装置インジケータを送出し、この証明書は、電話番号を含むものであり、
前記ユーザ装置から前記証明書を受け取り、
前記ユーザ装置からの前記証明書を検証するときに前記ユーザ装置へプロビジョニングSMSを送出する、
ことを含む請求項18に記載の方法。
【請求項21】
実行可能なプログラムベースのプロビジョニングを遂行する前記段階は、
前記ユーザ装置がSDK装置であるかどうか決定し、
前記ユーザ装置を構成しそして証明書を要求するために前記ユーザ装置に実行可能なプログラムを送出し、前記証明書は、電話番号を含むものであり、
前記ユーザ装置から前記証明書を受け取り、
前記ユーザ装置からの前記証明書を検証するときに前記ユーザ装置へ前記構成をダウンロードする、
ことを含む請求項18に記載の方法。
【請求項22】
構成をダウンロードすることは、
コンピュータプログラムをインストールし、
フィルタを適用し、
前記接続データセットに接続を適用する、
ことを含む請求項21に記載の方法。
【請求項23】
ActiveXベースのプロビジョニングを遂行する前記段階は、
ユーザ装置がActiveXイネーブルされたかどうか決定し、
ユーザ装置がActiveXイネーブルされた場合には、前記ユーザ装置にActiveXローダーをインストールし、
前記ユーザ装置において前記ActiveXローダーを実行する、
ことを含む請求項18に記載の方法。
【請求項24】
ユーザ装置をプロビジョニングする前記ステップは、更に、
前記ユーザ装置へサービスをアクチベートする段階と、
前記ユーザ装置からデータをインポートする段階と、
前記ユーザ装置を所定のアカウントに接続する段階と、
複写レコードを取り扱う段階と、
前記レコードを前記ユーザ装置へ送出する段階と、
を含む請求項18に記載の方法。
【請求項25】
通信ネットワーク内で1つ以上のユーザ装置を接続するための複数のエントリーポイントを与えるコンピュータプログラム製品であって、少なくともプロセッサユニット、ユーザインターフェイス及びメモリを有する1つ以上のコンピュータシステムにより実行するためのコンピュータプログラムを記憶するメディアを備えたコンピュータプログラム製品において、
サーバーと前記1つ以上のユーザ装置との間で通信するためのコードであって、前記サーバーが接続データセットを含み、且つ前記1つ以上のユーザ装置が前記接続データセットの部分を共有するようにしたコードと、
前記複数のエントリーポイントの1つから前記接続データセットにアクセスする要求をユーザ装置から受け取るためのコードと、
前記ユーザ装置の属性を自動的に決定するためのコードと、
前記ユーザ装置の属性を使用して所定のクライアント装置のデータベースから通信メソッドを選択するためのコードと、
前記通信メソッドに基づき前記ユーザ装置をプロビジョニングするためのコードと、
を備えたコンピュータプログラム製品。
【請求項26】
前記1つ以上のユーザ装置は、少なくとも1つ以上のセルラー電話、ワイヤレスパーソナルデジタルアシスタント、ナビゲーション装置、パーソナルコンピュータ、ゲームコンソール、インターネットターミナル、及びキオスクを含む、請求項25に記載のコンピュータプログラム製品。
【請求項27】
前記接続データセットは、少なくとも1つ以上のeメール、連絡先、カレンダー、タスク、ノート、ピクチャー、音楽、ドキュメント、ビデオ、ブックマーク、及びリンクを含む、請求項25に記載のコンピュータプログラム製品。
【請求項28】
前記サーバーは、多数の地理的位置に分散された1つ以上のコンピュータ及びデータ記憶システムを含む、請求項25に記載のコンピュータプログラム製品。
【請求項29】
前記属性は、
装置タイプ記述と、
サービス記述と、
トランスコーディングと、
アカウントテンプレートと、
を含む請求項25に記載のコンピュータプログラム製品。
【請求項30】
ユーザ装置をプロビジョニングするための前記コードは、
SMSベースのプロビジョニングを遂行するコードと、
装置ブラウザベースのプロビジョニングを遂行するコードと、
実行可能なプログラムベースのプロビジョニングを遂行するコードと、
ActiveXベースのプロビジョニングを遂行するコードと、
を含む請求項25に記載のコンピュータプログラム製品。
【請求項31】
SMSベースのプロビジョニングを遂行する前記コードは、
証明書を要求しているユーザ装置へURLを送出するコードであって、前記証明書がeメールアドレス及びパスワードを含むようなコードと、
前記ユーザ装置から前記証明書を受け取るコードと、
前記ユーザ装置からの前記証明書を検証するときに前記ユーザ装置へプロビジョニングSMSを送出するコードと、
を含む請求項30に記載のコンピュータプログラム製品。
【請求項32】
装置ブラウザベースのプロビジョニングを遂行する前記コードは、
証明書を要求しているユーザ装置へ新たな装置インジケータを送出するコードであって、この証明書が電話番号を含むようなコードと、
前記ユーザ装置から前記証明書を受け取るコードと、
前記ユーザ装置からの前記証明書を検証するときに前記ユーザ装置へプロビジョニングSMSを送出するコードと、
を含む請求項30に記載のコンピュータプログラム製品。
【請求項33】
実行可能なプログラムベースのプロビジョニングを遂行する前記コードは、
前記ユーザ装置がSDK装置であるかどうか決定するコードと、
前記ユーザ装置を構成しそして証明書を要求するために前記ユーザ装置に実行可能なプログラムを送出するコードであって、前記証明書が電話番号を含むようなコードと、
前記ユーザ装置から前記証明書を受け取るコードと、
前記ユーザ装置からの前記証明書を検証するときに前記ユーザ装置へ前記構成をダウンロードするコードと、
を含む請求項30に記載のコンピュータプログラム製品。
【請求項34】
構成をダウンロードする前記コードは、
コンピュータプログラムをインストールするコードと、
フィルタを適用するコードと、
前記接続データセットに接続を適用するコードと、
を備えた請求項33に記載のコンピュータプログラム製品。
【請求項35】
ActiveXベースのプロビジョニングを遂行する前記コードは、
ユーザ装置がActiveXイネーブルされたかどうか決定するコードと、
ユーザ装置がActiveXイネーブルされた場合には、前記ユーザ装置にActiveXローダーをインストールするコードと、
前記ユーザ装置において前記ActiveXローダーを実行するコードと、
を備えた請求項30に記載のコンピュータプログラム製品。
【請求項36】
ユーザ装置をプロビジョニングする前記コードは、更に、
前記ユーザ装置へサービスをアクチベートするコードと、
前記ユーザ装置からデータをインポートするコードと、
前記ユーザ装置を所定のアカウントに接続するコードと、
複写レコードを取り扱うコードと、
前記レコードを前記ユーザ装置へ送出するコードと、
を含む請求項30に記載のコンピュータプログラム製品。
【請求項1】
通信ネットワーク内で1つ以上のユーザ装置を接続するための複数のエントリーポイントを与えるシステムにおいて、
前記1つ以上のユーザ装置と通信するサーバーであって、該サーバーが接続データセットを含み、且つ前記1つ以上のユーザ装置が前記接続データセットの部分を共有するようにしたサーバーと、
前記複数のエントリーポイントの1つから前記接続データセットにアクセスする要求をユーザ装置から受け取るためのロジックと、
前記ユーザ装置の属性を自動的に決定するためのロジックと、
前記ユーザ装置の属性を使用して所定のクライアント装置のデータベースから通信メソッドを選択するためのロジックと、
前記通信メソッドに基づき前記ユーザ装置をプロビジョニングするためのロジックと、を備えたシステム。
【請求項2】
前記1つ以上のユーザ装置は、少なくとも1つ以上のセルラー電話、ワイヤレスパーソナルデジタルアシスタント、ナビゲーション装置、パーソナルコンピュータ、ゲームコンソール、インターネットターミナル、及びキオスクを含む、請求項1に記載のシステム。
【請求項3】
前記接続データセットは、少なくとも1つ以上のeメール、連絡先、カレンダー、タスク、ノート、ピクチャー、音楽、ドキュメント、ビデオ、ブックマーク、及びリンクを含む、請求項1に記載のシステム。
【請求項4】
前記サーバーは、多数の地理的位置に分散された1つ以上のコンピュータ及びデータ記憶システムを含む、請求項1に記載のシステム。
【請求項5】
前記属性は、
装置タイプ記述と、
サービス記述と、
トランスコーディングと、
アカウントテンプレートと、
を含む請求項1に記載のシステム。
【請求項6】
前記ユーザ装置をプロビジョニングするためのロジックは、
SMSベースのプロビジョニングを遂行するロジックと、
装置ブラウザベースのプロビジョニングを遂行するロジックと、
実行可能なプログラムベースのプロビジョニングを遂行するロジックと、
ActiveXベースのプロビジョニングを遂行するロジックと、
を含む請求項1に記載のシステム。
【請求項7】
SMSベースのプロビジョニングを遂行する前記ロジックは、
証明書を要求しているユーザ装置へURLを送出するロジックであって、この証明書がeメールアドレス及びパスワードを含むようなロジックと、
前記ユーザ装置から前記証明書を受け取るロジックと、
前記ユーザ装置からの前記証明書を検証するときに前記ユーザ装置へプロビジョニングSMSを送出するロジックと、
を含む請求項6に記載のシステム。
【請求項8】
装置ブラウザベースのプロビジョニングを遂行する前記ロジックは、
証明書を要求しているユーザ装置へ新たな装置インジケータを送出するロジックであって、この証明書が電話番号を含むようなロジックと、
前記ユーザ装置から前記証明書を受け取るロジックと、
前記ユーザ装置からの前記証明書を検証するときに前記ユーザ装置へプロビジョニングSMSを送出するロジックと、
を含む請求項6に記載のシステム。
【請求項9】
実行可能なプログラムベースのプロビジョニングを遂行する前記ロジックは、
前記ユーザ装置がSDK装置であるかどうか決定するロジックと、
前記ユーザ装置を構成しそして証明書を要求するために前記ユーザ装置に実行可能なプログラムを送出するロジックであって、前記証明書が電話番号を含むようなロジックと、 前記ユーザ装置から前記証明書を受け取るロジックと、
前記ユーザ装置からの前記証明書を検証するときに前記ユーザ装置へ前記構成をダウンロードするロジックと、
を含む請求項6に記載のシステム。
【請求項10】
構成をダウンロードする前記ロジックは、
コンピュータプログラムをインストールするロジックと、
フィルタを適用するロジックと、
前記接続データセットに接続を適用するロジックと、
を備えた請求項9に記載のシステム。
【請求項11】
ActiveXベースのプロビジョニングを遂行する前記ロジックは、
ユーザ装置がActiveXイネーブルされたかどうか決定するロジックと、
ユーザ装置がActiveXイネーブルされた場合には、前記ユーザ装置にActiveXローダーをインストールするロジックと、
前記ユーザ装置において前記ActiveXローダーを実行するロジックと、
を備えた請求項6に記載のシステム。
【請求項12】
ユーザ装置をプロビジョニングする前記ロジックは、更に、
前記ユーザ装置へサービスをアクチベートするロジックと、
前記ユーザ装置からデータをインポートするロジックと、
前記ユーザ装置を所定のアカウントに接続するロジックと、
複写レコードを取り扱うロジックと、
前記レコードを前記ユーザ装置へ送出するロジックと、
を含む請求項6に記載のシステム。
【請求項13】
通信ネットワーク内で1つ以上のユーザ装置を接続するための複数のエントリーポイントを与える方法において、
前記1つ以上のユーザ装置と通信するサーバーを用意するステップであって、該サーバーが接続データセットを含み、且つ前記1つ以上のユーザ装置が前記接続データセットの部分を共有するようにしたステップと、
前記複数のエントリーポイントの1つから前記接続データセットにアクセスする要求をユーザ装置から受け取るステップと、
前記ユーザ装置の属性を自動的に決定するステップと、
前記ユーザ装置の属性を使用して所定のクライアント装置のデータベースから通信メソッドを選択するステップと、
前記通信メソッドに基づいてユーザ装置をプロビジョニングするステップと、
を備えた方法。
【請求項14】
前記1つ以上のユーザ装置は、少なくとも1つ以上のセルラー電話、ワイヤレスパーソナルデジタルアシスタント、ナビゲーション装置、パーソナルコンピュータ、ゲームコンソール、インターネットターミナル、及びキオスクを含む、請求項13に記載の方法。
【請求項15】
前記接続データセットは、少なくとも1つ以上のeメール、連絡先、カレンダー、タスク、ノート、ピクチャー、音楽、ドキュメント、ビデオ、ブックマーク、及びリンクを含む、請求項13に記載の方法。
【請求項16】
前記サーバーは、多数の地理的位置に分散された1つ以上のコンピュータ及びデータ記憶システムを含む、請求項13に記載の方法。
【請求項17】
前記属性は、
装置タイプ記述と、
サービス記述と、
トランスコーディングと、
アカウントテンプレートと、
を含む請求項13に記載の方法。
【請求項18】
ユーザ装置をプロビジョニングするための前記ステップは、
SMSベースのプロビジョニングを遂行する段階と、
装置ブラウザベースのプロビジョニングを遂行する段階と、
実行可能なプログラムベースのプロビジョニングを遂行する段階と、
ActiveXベースのプロビジョニングを遂行する段階と、
を含む請求項13に記載の方法。
【請求項19】
SMSベースのプロビジョニングを遂行する前記段階は、
証明書を要求しているユーザ装置へURLを送出し、この証明書は、eメールアドレス及びパスワードを含むものであり、
前記ユーザ装置から前記証明書を受け取り、
前記ユーザ装置からの前記証明書を検証するときに前記ユーザ装置へプロビジョニングSMSを送出する、
ことを含む請求項18に記載の方法。
【請求項20】
装置ブラウザベースのプロビジョニングを遂行する前記段階は、
証明書を要求しているユーザ装置へ新たな装置インジケータを送出し、この証明書は、電話番号を含むものであり、
前記ユーザ装置から前記証明書を受け取り、
前記ユーザ装置からの前記証明書を検証するときに前記ユーザ装置へプロビジョニングSMSを送出する、
ことを含む請求項18に記載の方法。
【請求項21】
実行可能なプログラムベースのプロビジョニングを遂行する前記段階は、
前記ユーザ装置がSDK装置であるかどうか決定し、
前記ユーザ装置を構成しそして証明書を要求するために前記ユーザ装置に実行可能なプログラムを送出し、前記証明書は、電話番号を含むものであり、
前記ユーザ装置から前記証明書を受け取り、
前記ユーザ装置からの前記証明書を検証するときに前記ユーザ装置へ前記構成をダウンロードする、
ことを含む請求項18に記載の方法。
【請求項22】
構成をダウンロードすることは、
コンピュータプログラムをインストールし、
フィルタを適用し、
前記接続データセットに接続を適用する、
ことを含む請求項21に記載の方法。
【請求項23】
ActiveXベースのプロビジョニングを遂行する前記段階は、
ユーザ装置がActiveXイネーブルされたかどうか決定し、
ユーザ装置がActiveXイネーブルされた場合には、前記ユーザ装置にActiveXローダーをインストールし、
前記ユーザ装置において前記ActiveXローダーを実行する、
ことを含む請求項18に記載の方法。
【請求項24】
ユーザ装置をプロビジョニングする前記ステップは、更に、
前記ユーザ装置へサービスをアクチベートする段階と、
前記ユーザ装置からデータをインポートする段階と、
前記ユーザ装置を所定のアカウントに接続する段階と、
複写レコードを取り扱う段階と、
前記レコードを前記ユーザ装置へ送出する段階と、
を含む請求項18に記載の方法。
【請求項25】
通信ネットワーク内で1つ以上のユーザ装置を接続するための複数のエントリーポイントを与えるコンピュータプログラム製品であって、少なくともプロセッサユニット、ユーザインターフェイス及びメモリを有する1つ以上のコンピュータシステムにより実行するためのコンピュータプログラムを記憶するメディアを備えたコンピュータプログラム製品において、
サーバーと前記1つ以上のユーザ装置との間で通信するためのコードであって、前記サーバーが接続データセットを含み、且つ前記1つ以上のユーザ装置が前記接続データセットの部分を共有するようにしたコードと、
前記複数のエントリーポイントの1つから前記接続データセットにアクセスする要求をユーザ装置から受け取るためのコードと、
前記ユーザ装置の属性を自動的に決定するためのコードと、
前記ユーザ装置の属性を使用して所定のクライアント装置のデータベースから通信メソッドを選択するためのコードと、
前記通信メソッドに基づき前記ユーザ装置をプロビジョニングするためのコードと、
を備えたコンピュータプログラム製品。
【請求項26】
前記1つ以上のユーザ装置は、少なくとも1つ以上のセルラー電話、ワイヤレスパーソナルデジタルアシスタント、ナビゲーション装置、パーソナルコンピュータ、ゲームコンソール、インターネットターミナル、及びキオスクを含む、請求項25に記載のコンピュータプログラム製品。
【請求項27】
前記接続データセットは、少なくとも1つ以上のeメール、連絡先、カレンダー、タスク、ノート、ピクチャー、音楽、ドキュメント、ビデオ、ブックマーク、及びリンクを含む、請求項25に記載のコンピュータプログラム製品。
【請求項28】
前記サーバーは、多数の地理的位置に分散された1つ以上のコンピュータ及びデータ記憶システムを含む、請求項25に記載のコンピュータプログラム製品。
【請求項29】
前記属性は、
装置タイプ記述と、
サービス記述と、
トランスコーディングと、
アカウントテンプレートと、
を含む請求項25に記載のコンピュータプログラム製品。
【請求項30】
ユーザ装置をプロビジョニングするための前記コードは、
SMSベースのプロビジョニングを遂行するコードと、
装置ブラウザベースのプロビジョニングを遂行するコードと、
実行可能なプログラムベースのプロビジョニングを遂行するコードと、
ActiveXベースのプロビジョニングを遂行するコードと、
を含む請求項25に記載のコンピュータプログラム製品。
【請求項31】
SMSベースのプロビジョニングを遂行する前記コードは、
証明書を要求しているユーザ装置へURLを送出するコードであって、前記証明書がeメールアドレス及びパスワードを含むようなコードと、
前記ユーザ装置から前記証明書を受け取るコードと、
前記ユーザ装置からの前記証明書を検証するときに前記ユーザ装置へプロビジョニングSMSを送出するコードと、
を含む請求項30に記載のコンピュータプログラム製品。
【請求項32】
装置ブラウザベースのプロビジョニングを遂行する前記コードは、
証明書を要求しているユーザ装置へ新たな装置インジケータを送出するコードであって、この証明書が電話番号を含むようなコードと、
前記ユーザ装置から前記証明書を受け取るコードと、
前記ユーザ装置からの前記証明書を検証するときに前記ユーザ装置へプロビジョニングSMSを送出するコードと、
を含む請求項30に記載のコンピュータプログラム製品。
【請求項33】
実行可能なプログラムベースのプロビジョニングを遂行する前記コードは、
前記ユーザ装置がSDK装置であるかどうか決定するコードと、
前記ユーザ装置を構成しそして証明書を要求するために前記ユーザ装置に実行可能なプログラムを送出するコードであって、前記証明書が電話番号を含むようなコードと、
前記ユーザ装置から前記証明書を受け取るコードと、
前記ユーザ装置からの前記証明書を検証するときに前記ユーザ装置へ前記構成をダウンロードするコードと、
を含む請求項30に記載のコンピュータプログラム製品。
【請求項34】
構成をダウンロードする前記コードは、
コンピュータプログラムをインストールするコードと、
フィルタを適用するコードと、
前記接続データセットに接続を適用するコードと、
を備えた請求項33に記載のコンピュータプログラム製品。
【請求項35】
ActiveXベースのプロビジョニングを遂行する前記コードは、
ユーザ装置がActiveXイネーブルされたかどうか決定するコードと、
ユーザ装置がActiveXイネーブルされた場合には、前記ユーザ装置にActiveXローダーをインストールするコードと、
前記ユーザ装置において前記ActiveXローダーを実行するコードと、
を備えた請求項30に記載のコンピュータプログラム製品。
【請求項36】
ユーザ装置をプロビジョニングする前記コードは、更に、
前記ユーザ装置へサービスをアクチベートするコードと、
前記ユーザ装置からデータをインポートするコードと、
前記ユーザ装置を所定のアカウントに接続するコードと、
複写レコードを取り扱うコードと、
前記レコードを前記ユーザ装置へ送出するコードと、
を含む請求項30に記載のコンピュータプログラム製品。
【図1a】
【図1b】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図1b】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【公開番号】特開2013−61953(P2013−61953A)
【公開日】平成25年4月4日(2013.4.4)
【国際特許分類】
【出願番号】特願2012−235955(P2012−235955)
【出願日】平成24年10月25日(2012.10.25)
【分割の表示】特願2008−521439(P2008−521439)の分割
【原出願日】平成18年7月6日(2006.7.6)
【出願人】(501438485)ヤフー! インコーポレイテッド (200)
【Fターム(参考)】
【公開日】平成25年4月4日(2013.4.4)
【国際特許分類】
【出願日】平成24年10月25日(2012.10.25)
【分割の表示】特願2008−521439(P2008−521439)の分割
【原出願日】平成18年7月6日(2006.7.6)
【出願人】(501438485)ヤフー! インコーポレイテッド (200)
【Fターム(参考)】
[ Back to top ]