(57)【要約】本明細書において説明する実施形態は、コンピューティング・デバイスにコンフィギュレーション・シナリオを順守させるために、コンピューティング・デバイスによってコンプライアンス設定を実装することを対象とする。実例をあげると、コンピューティング・デバイスは、コンピューティング・デバイスをコンフィギュレーション・シナリオに順守させるために、コンピューティング・デバイスによって実装するコンプライアンス設定を記述するコンフィギュレーション情報を、サーバーから受信することができる。更に、コンピューティング・デバイスは、コンフィギュレーション情報によって示されコンプライアンス設定を実装するコンフィギュレーション・プロセスを記述する状態機械を識別する状態機械を実行して、コンピューティング・デバイスにコンプライアンス設定を組み込むことができる。【選択図】図１
2021533454.tif 000002
【特許請求の範囲】
【請求項１】
モバイル・デバイスであって、
少なくとも１つのプロセッサー回路と、
前記少なくとも１つのプロセッサー回路によって実行されるように構成されたプログラム・コードを格納する少なくとも１つのメモリとを備え、
前記プログラム・コードが、
前記モバイル・デバイスにコンフィギュレーション・シナリオを順守させるために、前記モバイル・デバイスによって実装するコンプライアンス設定を記述するコンフィギュレーション情報を、サーバーから受信し、
前記コンフィギュレーション情報を格納するように構成されたコンフィギュレーション・マネージャと、
前記コンフィギュレーション・マネージャから、前記コンプライアンス設定を前記モバイル・デバイス内に実装するトリガーを受信し、
前記コンフィギュレーション情報によって示され、前記コンプライアンス設定を実装するコンフィギュレーション・プロセスを記述する状態機械を識別し、
前記状態機械を実行して、前記モバイル・デバイスに前記コンプライアンス設定を組み込むように構成されたオーケストレーター・エンジンと、
を備える、モバイル・デバイス。
【請求項２】
請求項１記載のモバイル・デバイスにおいて、前記オーケストレーター・エンジンが、更に、
前記状態機械を実行して、前記モバイル・デバイスが前記コンフィギュレーション情報にしたがってしかるべく構成されているか否か判定するように構成される、モバイル・デバイス。
【請求項３】
請求項１記載のモバイル・デバイスにおいて、
前記オーケストレーター・エンジンが、更に、前記状態機械を実行することによって生成されたコンフィギュレーション結果をコンフィギュレーション情報データー・ストアに格納するように構成され、前記コンフィギュレーション・マネージャが、更に、前記コンフィギュレーション結果を前記コンフィギュレーション情報データー・ストアから入手し、前記コンフィギュレーション結果を前記サーバーに送信するように構成される、モバイル・デバイス。  
【請求項４】
請求項１記載のモバイル・デバイスにおいて、前記コンフィギュレーション・マネージャが、更に、
前記コンフィギュレーション情報を解析し、
前記コンフィギュレーション情報に伴うエラーを判定し、前記エラーの訂正を前記サーバーに要求するように構成される、モバイル・デバイス。
【請求項５】
請求項１記載のモバイル・デバイスにおいて、前記コンフィギュレーション・マネージャが、更に、
前記コンフィギュレーション情報をコンフィギュレーション情報データー・ストアに格納し、前記格納したコンフィギュレーション情報を前記サーバーに送信し、
前記コンフィギュレーション情報を前記サーバーに送ったことに応答して、更新コンフィギュレーション情報および／または追加のコンフィギュレーション情報を前記サーバーから受信するように構成される、モバイル・デバイス。
【請求項６】
請求項１記載のモバイル・デバイスにおいて、前記状態機械が、前記モバイル・デバイス上の状態機械データー・ストアに格納される、モバイル・デバイス。
【請求項７】
請求項１記載のモバイル・デバイスにおいて、前記コンフィギュレーション情報が、前記サーバーから、拡張可能マークアップ言語（ＸＭＬ）ファイルで受信され、前記拡張マークアップ言語（ＸＭＬ）ファイルが、前記コンプライアンス設定に関連付けられたペイロードと、前記ペイロードのダウンロードおよび処理のための対応するユニフォーム・リソース識別子（ＵＲＩ）とを含む、モバイル・デバイス。
【請求項８】
方法であって、
モバイル・デバイスにコンフィギュレーション・シナリオを順守させるために、前記モバイル・デバイスによって実装するコンプライアンス設定を記述するコンフィギュレーション情報を、サーバーから受信するステップと、
前記コンフィギュレーション情報を格納するステップと、 
前記モバイル・デバイスにおいて前記コンプライアンス設定を実装するトリガーを受信するステップと、 
前記コンフィギュレーション情報によって示され、前記コンプライアンス設定を実装するコンフィギュレーション・プロセスを記述する状態機械を識別するステップと、
前記状態機械を実行して、前記モバイル・デバイスに前記コンプライアンス設定を組み込むステップとを含む、方法。  
【請求項９】
請求項８記載の方法であって、更に、
前記状態機械を実行して、前記モバイル・デバイスが前記コンフィギュレーション情報にしたがってしかるべく構成されているか否か判定するステップを含む、方法。  
【請求項１０】
請求項８記載の方法であって、更に、
前記状態機械を実行することによって生成されたコンフィギュレーション結果をコンフィギュレーション情報データー・ストアに格納するステップと、
前記コンフィギュレーション情報データー・ストアから前記コンフィギュレーション結果を入手するステップと、
前記コンフィギュレーション結果を前記サーバーに送信するステップとを含む、方法。
【請求項１１】
請求項８記載の方法であって、更に、
前記コンフィギュレーション情報を解析するステップと、
前記コンフィギュレーション情報に伴うエラーを判定するステップと、
前記エラーの訂正を前記サーバーに要求するステップとを含む、方法。
【請求項１２】
請求項８記載の方法であって、更に、
前記コンフィギュレーション情報をコンフィギュレーション情報データー・ストアに格納するステップと、
前記格納したコンフィギュレーション情報を前記サーバーに送信するステップと、
前記コンフィギュレーション情報を前記サーバーに送ったことに応答して、更新コンフィギュレーション情報および／または追加のコンフィギュレーション情報を前記サーバーから受信するステップとを含む、方法。
【請求項１３】
請求項８記載の方法において、前記状態機械が、前記モバイル・デバイス上の状態機械データー・ストア上に格納される、方法。
【請求項１４】
請求項８記載の方法において、前記コンフィギュレーション情報が、前記サーバーから、拡張マークアップ言語（ＸＭＬ）ファイルで受信され、前記拡張マークアップ言語（ＸＭＬ）ファイルが、前記コンプライアンス設定に関連付けられたペイロードと、前記ペイロードのダウンロードおよび処理のための対応するユニフォーム・リソース識別子（ＵＲＩ）とを含む、方法。    
【請求項１５】
コンピューター・プログラム・ロジックが記録されているコンピューター読み取り可能媒体を含むコンピューター・プログラム製品であって、
プロセッサーが請求項８〜１４のいずれか１項を実行することを可能にするコンピューター・プログラム・ロジック手段を備える、コンピューター・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]  モバイル・デバイス管理（ＭＤＭ：Mobile device management）とは、従業員が生産性を維持し企業方針に違反しないことを確保する方法である。多くの組織は、ＭＤＭ製品／サービスを使用して、それらの従業員の活動を管理する。ＭＤＭは、主に、企業データー分離、電子メールの安全性確保、デバイス上における企業文書の安全性確保、企業方針の施行、ならびに種々の部類のラップトップおよびハンドヘルドを含むモバイル・デバイスの統合および管理を扱う。組織のネットワークにおける全てのモバイル・デバイスのデーターおよびコンフィギュレーション設定を管理ならびに保護することによって、ＭＤＭはサポート・コストおよび事業リスクを減らすことができる。
【発明の概要】
【課題を解決するための手段】
【０００２】
[0002]  この摘要は、以下で詳細な説明において更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を識別することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。
【０００３】
[0003]  本明細書において説明する実施形態は、コンピューティング・デバイスにコンフィギュレーション・シナリオを順守させるために、コンピューティング・デバイスによってコンプライアンス設定を実装することに関する。実例をあげると、コンピューティング・デバイスは、サーバーから、コンフィギュレーション情報を受信することができる。コンフィギュレーション情報は、コンピューティング・デバイスにコンフィギュレーション・シナリオを順守させることを、コンピューティング・デバイスによって実施するためのコンプライアンス設定を記述する。更に、コンピューティング・デバイスは、コンプライアンス設定を実装するコンフィギュレーション・プロセスを記述するコンフィギュレーション情報によって示される（例えば、識別子によって）状態機械を識別することができる。状態機械は、コンピューティング・デバイスにコンプライアンス設定を組み込む(configure)ために実行することができる。状態機械を実行すると、依存性(dependencies)と共にコンフィギュレーション情報に含まれるペイロードを、状態機械によって指令される順序で処理し、コンピューティング・デバイスを構成することができる。
【０００４】
[0004]  本発明の更に他の特徴および利点、ならびに本発明の種々の実施形態の構造および動作について、添付図面を参照しながら以下で詳しく説明する。尚、本発明は、本明細書において説明する具体的な実施形態には限定されないことを注記しておく。このような実施形態は、本明細書では、例示の目的に限って提示されるに過ぎない。本明細書に含まれる教示に基づけば、他の実施形態も当業者には明らかであろう。
【０００５】
[0005]  添付図面は、本明細書に組み込まれその一部を形成し、実施形態を図示する。更に、添付図面は、説明と併せて実施形態の原理を更に説明し、当業者が実施形態を実施および使用することを可能にする役割を果たす。
【図面の簡単な説明】
【０００６】
【図１】図１は、実施形態例にしたがって、コンピューティング・デバイスにコンフィギュレーション・シナリオを順守させるために、コンピューティング・デバイスによってコンプライアンス設定を実装するシステムのブロック図を示す。
【図２Ａ】図２Ａは、図１のシステムの更に詳細な例であり、実施形態例にしたがって、コンピューティング・デバイスにコンフィギュレーション・シナリオを順守させるために、コンピューティング・デバイスによってコンプライアンス設定を実装するシステムのブロック図を示す。
【図２Ｂ】図２Ｂは、図１のシステムの更に詳細な例であり、実施形態例にしたがって、コンピューティング・デバイスにコンフィギュレーション・シナリオを順守させるために、コンピューティング・デバイスによってコンプライアンス設定を実装するシステムの他のブロック図を示す。
【図３】図３は、実施形態例にしたがって、コンピューティング・デバイスにコンフィギュレーション・シナリオを順守させるために、コンピューティング・デバイスによってコンプライアンス設定を実装する方法例のフローチャートを示す。
【図４】図４は、実施形態例にしたがって、しかるべくモバイル・デバイスが構成されたか否か判定する方法例のフローチャートを示す。
【図５】図５は、実施形態例にしたがって、コンフィギュレーション結果を格納および送信する方法例のフローチャートを示す。
【図６】図６は、実施形態にしたがって、コンフィギュレーション情報に伴うエラーの訂正を要求する方法例のフローチャートを示す。
【図７】図７は、実施形態にしたがって、更新コンフィギュレーション情報および／または追加のコンフィギュレーション情報を受信する方法例のフローチャートを示す。
【図８】図８は、実施形態を実施することができる例示的なユーザー・デバイスのブロック図である。
【図９】図９は、実施形態を実施するために使用することができるコンピューティング・デバイス例のブロック図である。
【発明を実施するための形態】
【０００７】
[0016]  本発明の特徴および利点は、以下に明記する詳細な説明を、添付図面と併せて検討することによって、一層明らかになるであろう。図面において、同様の参照記号は全体を通じて対応する要素を識別する。図面において、同様の参照番号は総じて同一の、機能的に同様な、および／または構造的に同様な要素を示す。要素が最初に出てくる図面は、対応する参照番号における最も左側にある桁（１つまたは複数）によって示される。
【０００８】
１．導入
[0017]  本明細書および添付図面は、本発明の特徴を組み込んだ１つ以上の実施形態を開示する。本発明の範囲は、開示する実施形態に限定されるのではない。開示する実施形態は、単に本発明を例示するに過ぎず、開示する実施形態を修正した変形も、本発明によって包含される。本発明の実施形態は、添付する特許請求の範囲によって定められるものとする。
【０００９】
[0018]  明細書において「一実施形態」(one embodiment)、「実施形態」(an embodiment)、「実施形態例」(an example embodiment)等に言及するときは、その記載される実施形態が、特定の特徴、構造、または特性を含むのはもっともであるが、あらゆる実施形態が必ずしもその特定の特徴、構造、または特性を含まなくてもよいことを示す。更に、このような語句は必ずしも同じ実施形態を指すわけではない。更にまた、ある実施形態に関して特定の特徴、構造、または特性が記載されるとき、そのような特徴、構造、または特性を、明示的に記載されているか否かには関係なく、他の実施形態と関連付けて実現する(effect)ことは、当業者の知識の範囲内でできることを具申する。
【００１０】
[0019]  以下に多数の例示的な実施形態について説明する。尚、本明細書において示す章／副章の見出しはいずれも、限定であることを意図するのではないことを注記しておく。この文書全体を通じて実施形態について説明するが、あらゆる種類の実施形態がいずれの章／副章の下にも含まれることが可能である。更に、いずれの章／副章において開示される実施形態も、同じ章／副章および／または異なる章／副章において説明される他のいずれの実施形態とでも、任意の仕方で組み合わせることができる。
【００１１】
ＩＩ．デバイス・コンプライアンスを管理するシステムおよび方法
[0020]  今日の企業用モバイル・デバイス管理（ＭＤＭ）プロセスの典型的な構造(construct)では、モバイル・デバイスのコンフィギュレーションを実行および監視し、大量のデーターを格納し、連続的なエラー・チェックおよび予防保全を行う役割を担わせるために、ＭＤＭサーバーを使用する。このような機能は、数百台、数千台、数万台、数百万台、数億台、更に多くのデバイスを含む、企業の多数のデバイスのために実行される場合もある。その結果、サーバーは、企業のネットワークのモバイル技術リソースの全てが正しく構成され、セキュリティおよび他の重要なプロトコルの制限(confines)内で機能し、アップデートを実装しそれに適合しているか否か判定するために、数え切れない程の「コンピューティング・カロリー」(computing calories)を頻繁に切り替える(churn)（例えば、大量の処理パワーを使用する）。
【００１２】
[0021]  これが意味するのは、サーバーが、企業のネットワーク上にある多くの個々のモバイル・デバイスと通信し、コンフィギュレーション・プロセスおよび報告の必要性を最終的に監視しなければならないことにより、大きな負担がかかるということである。このシナリオでは、デバイス数、純然なトラフィック(sheer traffic)、およびコンフィギュレーション・ボリュームが単に与えられるだけであり、企業にとってスケーラビリティは非常に困難である。言い換えると、サーバーは、膨大な量の管理すべき作業を有する。更に、コンフィギュレーションの施行が効率化されておらず、その特性(nature)がデバイスに特定的であるために、このコンフィギュレーション・プロセスは、他の場合には防げたかもしれないエラーを孕むおそれがある。
【００１３】
[0022]  これらの欠点(limitations)は、デバイス管理プロセスにおけるサーバーの関与を変更することによって、最終的に改善することができる。例えば、実施形態では、サーバーは、モバイル・デバイスにそれ自体のコンフィギュレーションを実行するように要求することによって、生産性向上を体験することができる。本明細書において説明する実施形態では、サーバーはコンフィギュレーションの詳細をモバイル・デバイスに供給することができ、モバイル・デバイスが、一般化された状態機械として作用することによって、コンフィギュレーション・プロセスを駆動することができる。これらおよびその他の実施形態については、以下で図１に関して更に詳しく説明する。尚、本明細書において説明する実施形態は、Ａｐｐｌｅ  ｉＯＳ（登録商標）およびＧｏｏｇｌｅ  Ａｎｄｒｏｉｄ（商標）のような任意のオペレーティング・システム／コンピューティング・プラットフォームに適用できること、そして本明細書においてＭｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）および／またはそのコンポーネントに言及するのは、説明および例示の目的のために過ぎず、限定と解釈してはならないことを注記しておく。
【００１４】
[0023]  図１は、実施形態例にしたがって、コンピューティング・デバイスにコンフィギュレーション・シナリオを順守させるために、コンピューティング・デバイスによってコンプライアンス設定を実装するコンプライアンス施行システム１００のブロック図である。図１に示すように、システム１００は、サーバー１０２、コンピューティング・デバイス１０４、および１つ以上のデーター・ストア１０８を含み、これらは企業ネットワーク１１０を通じて通信可能に結合されている。サーバー１０２は、コンプライアンス・エンジン１２２を含む。コンピューティング・デバイス１０４は、コンプライアンス・エージェント１２０を含む。１つのコンピューティング・デバイス１０４が示されているが、サーバー１０２によって供給されたコンプライアンス設定を有する任意の数のコンピューティング・デバイスがシステム１００内に存在してもよく、数十台、数百台、数千台、数万台、数百万台、数億台、そしてそれよりも多い数のコンピューティング・デバイスが含まれてもよい。データー・ストア（１つまたは複数）１０８は、１つ以上の物理メモリーおよび／または記憶デバイスを含んでもよい。データー・ストア（１つまたは複数）１０８は、本明細書において記載する、および／または本開示の利益を有する当業者によって理解される、任意の種類の物理メモリーおよび／または記憶デバイスであってもよい。企業ネットワーク１１０は、企業の１箇所以上の場所にある企業デバイス（例えば、コンピューティング・デバイス１０４および図示しない他のコンピューティング・デバイス）を他の企業デバイスに相互接続する目的で、そして企業デバイスがコンピューティング・リソースにアクセスするおよび／またはコンピューティング・リソースを共有することを可能にするために、企業によって敷設されたプライベート・コンピューター・ネットワークを含む。
【００１５】
[0024]  コンピューティング・デバイス１０４は、企業の１人以上の構成員（例えば、従業員）によって利用されるデバイス、またそうでなければアクセス可能なデバイスである。本明細書において使用する場合、「企業」(enterprise)という用語は、業務、非営利団体、および政府機関を含む、多種多様の組織の内任意のものを広く指す。コンピューティング・デバイス１０４のユーザーを、本明細書では、「企業ユーザー」または単に「ユーザー」と呼んでもよい。コンピューティング・デバイス１０４は、例えばそして限定ではなく、デスクトップ・コンピューター、ラップトップ・コンピューター、タブレット・コンピューター、ネットブック、スマート・フォン等を含むことができる。コンピューティング・デバイス１０４の更に他の例については、図８および図９を参照して以下で説明する。
【００１６】
[0025]  データー・ストア（１つまたは複数）１０８は、コンピューティング・デバイス１０４および／または１つ以上の他のコンピューティング・デバイスについてのコンフィギュレーション情報１１２を格納するように構成することができる。実施形態では、コンフィギュレーション情報１１２をサーバー１０２のメモリーにローカルに格納してもよい。コンフィギュレーション情報１１２は、コンピューティング・デバイス１０４および／またはコンピューティング・デバイス１０４のユーザーに対する１つ以上のコンプライアンス設定を指定することができ、特定のコンフィギュレーション・シナリオにしたがってコンピューティング・デバイス１１２上にインストールするためのデーター、１つ以上のファイル等を含むことができる。例えば、コンフィギュレーション情報１１２の第１コンプライアンス設定は、コンピューティング・デバイス１０４の第１ユーザーに関連付けられてもよく、コンフィギュレーション情報１１２の第２コンプライアンス設定は、コンピューティング・デバイス１０４の第２ユーザーに関連付けられてもよい。コンプライアンス設定の例には、コンピューティング・デバイス１０４によって実装される暗号設定、コンピューティング・デバイス１０４によって実装されるセキュリティ設定、コンピューティング・デバイス１０４上にインストールするために必要とされるアプリケーションまたはオペレーティング・システムの少なくとも１つの最小バージョン等が含まれるが、これらに限定されるのではない。暗号設定（１つまたは複数）は、コンピューティング・デバイス１０４に含まれる記憶デバイスを暗号化すべきか否か（例えば、ＢｉｔＬｏｃｋｅｒ（商標）のような、しかしこれには限定されない暗号化プログラムによって）指定することができる。セキュリティ設定は、コンピューティング・デバイス１０４によって実装されるパスワード・ポリシー（例えば、パスワード長を最短で１０文字、１２文字等に設定する）、コード署名をコンピューティング・デバイス１０４によって実装すべきか否か、信頼プラットフォーム・モジュール（ＴＰＭ）をコンピューティング・デバイス１０４によって実装すべきか否か等を指定することができる。尚、以上で説明したコンプライアンス設定は純粋に例示であること、そして他のコンフィギュレーション設定が使用されてもよいことを注記しておく。
【００１７】
[0026]  サーバー１０２は、コンフィギュレーション・シナリオに関して、コンピューティング・デバイス１０４を含むコンピューティング・デバイスのコンプライアンスを管理するように構成することができる。このようなコンピューティング・デバイスは、静止デバイス（例えば、デスクトップ・コンピューター）、および／またはモバイル・デバイス（例えば、スマート・フォン、ラップトップ、タブレット・コンピューター、ウェアラブル・コンピューティング・デバイス（例えば、Ｇｏｏｇｌｅ（登録商標）Ｇｌａｓｓ（商標）、仮想現実ヘッドセットのようなスマート・グラスを含む頭部装着デバイス、スマート・ウォッチ等）等）を含むことができる。モバイル・デバイスを管理するとき、サーバー１０２をモバイル・デバイス・マネージャ（ＭＤＭ）と呼ぶこともできる。コンフィギュレーション・シナリオは、１組の離散ポリシー程度に単純であっても、仮想プライベート・ネットワーク（ＶＰＮ）接続のための構成程度に複雑であてもよい。ポリシー（例えば、データー・ポリシーおよび／またはセキュリティ・ポリシー）は、企業によって指定することができる。ポリシーは、１つ以上のコンプライアンス設定（１つまたは複数）にしたがって指定されてもよい。コンプライアンス設定（１つまたは複数）は、企業のアドミニストレーター（例えば、ＩＴ（情報技術）アドミニストレーター）、あるいは企業ユーザーの代わりにコンピューティング・デバイス１０４をデプロイ、維持、および／または構成する役割を担うことができる、企業内の他の人によって指定されてもよい。
【００１８】
[0027]  図１に示すように、サーバー１０２はコンプライアンス・エンジン１２２を備えている。コンプライアンス・エンジン１２２は、コンピューティング・デバイス１０４に供給するコンフィギュレーション情報１１２を決定し、決定したコンフィギュレーション情報１１２をコンピューティング・デバイス１０４に供給することができる。例えば、サーバー１０２は、コンプライアンス・マニフェストの形態で、または特定の１組のデバイスへのデプロイのためのコンフィギュレーション設定を示す他の文書の形態で、コンフィギュレーション情報１１２を受信および／またはコンフィギュレーション情報１１２にアクセスすることができる。サーバー１０２は、ネットワーク１１０を通じてデーター・ストア１０８からコンフィギュレーション情報１１２を入手し、コンフィギュレーション情報１１２を、コンピューティング・デバイス１０４のような、指示されたデバイスにネットワーク１１０を通じて供給することができる。ネットワーク１１０を通じたコンフィギュレーション情報１１２の送信は、図１において、破線１１２によって示されている。コンフィギュレーション情報１１２は、コンピューティング・デバイス１０４にコンフィギュレーション・シナリオを順守させるために、コンピューティング・デバイス１０４（および必要に応じて他のデバイス）によって実装するためのコンプライアンス設定を指定することができる。
【００１９】
[0028]  コンピューティング・デバイス１０４は、コンフィギュレーション情報１１２によって指定されたコンプライアンス設定（１つまたは複数）を実装するように構成することができる。図１に示すように、コンピューティング・デバイス１０４はコンプライアンス・エージェント１２０を備えている。コンピューティング・デバイス１０４は、コンプライアンス・エージェント１２０を実行するように構成することができ、コンプライアンス・エージェント１２０は、コンピューティング・デバイス１０４上でコンフィギュレーション・シナリオに対するコンプライアンス設定を実装するコンフィギュレーション・プロセスを記述する状態機械を識別し実行することによって、受信したコンフィギュレーション情報１１２によって指定されたコンプライアンス設定を実装するように構成される。例えば、コンプライアンス・エージェント１２０は、状態機械１１８を、コンフィギュレーション情報１１２によって示された状態機械として識別し、コンフィギュレーション・シナリオを順守するためのコンプライアンス設定をコンピューティング・デバイス１０４に組み込むために、状態機械１１８を実行することができる。
【００２０】
[0029]  実施形態によれば、種々の方法で状態機械１１８を生成することができる。例えば、構築プロセスの間に、１つ以上の文書を生成し（例えば、開発者によって）、コンピューティング・デバイス１０４上でコンパイルし格納してもよい。例えば、サーバーがユーザー・インターフェース（ＵＩ）を消費およびレンダリングする（例えば、サーバー１０２においてコンプライアンス・エンジン１２２によって生成されるアドミン・コンソールにおいて）ことを可能にするコンフィギュレーション・シナリオを記述する１つ以上のファイル、ならびに状態機械が、構築の間に生成される。このＵＩは、ＩＴアドミンが特定のコンフィギュレーション・シナリオについてのコンフィギュレーション情報を入力することを可能にし、次いでコンフィギュレーション情報をコンピューティング・デバイス１０４に送ることができる。コンフィギュレーション情報は、特定のコンフィギュレーション・シナリオにしたがってコンピューティング・デバイスのセキュリティおよび機能的挙動を変更するために、本明細書において説明するように、コンフィギュレーション・サービス・プロバイダ（ＣＳＰ）を利用してコンピューティング・デバイス１０４によって処理される。ＣＳＰとは、デバイス上においてコンフィギュレーション設定を読み出す、設定する、変更する、または削除するためのインターフェースである。更に、状態機械（例えば、状態機械１１８）を処理するとき、状態機械によって指令される順序にしたがってＣＳＰが呼び出され、サーバーによって供給されるコンフィギュレーション情報を使用して、コンピューティング・デバイスにおいて所望の状態を実現する。
【００２１】
[0030]  状態機械１１８にしたがってコンフィギュレーション設定を実装した後、コンプライアンス・エージェント１２０は承認（例えば、「アラート」）をコンプライアンス・エンジン１２２に出す(provide)ことができる。承認は、コンピューティング・デバイスがコンフィギュレーション設定を実装したこと、または障害が発生したことを示す。コンフィギュレーション設定の実装成功を示す承認を受けると、コンプライアンス・エンジン１１２は、コンピューティング・デバイス１０４を、コンフィギュレーション・シナリオを順守するものとして指定することができる。コンプライアンス・エンジン１１２は、種々の方法で承認を維持することができる。
【００２２】
[0031]  例えば、サーバー１０２は、ユーザー−デバイス・ペアリング毎に、特定のユーザー−デバイス・ペアリングが順守しているか否かについての指定を含むコンプライアンス・レコード１０６を維持することができる。例えば、コンプライアンス・レコード１０６は、複数のエントリーを含み、各エントリーが特定のユーザー−デバイス対を指定する、データー構造（例えば、テーブル）と、そのユーザー−デバイス対が順守しているか否かに関する指示とを含むことができる。サーバー１０２は、更に、ユーザー−デバイス・ペアリング毎に実装されたコンフィギュレーション設定のローカル・コンフィギュレーション・リファレンス１１４を維持するように構成することができる。コンフィギュレーション・リファレンス１１４は、複数のエントリーを含み、各エントリーが特定のユーザー−デバイス対を指定する、データー構造（例えば、テーブル）と、その対によって実装されたコンフィギュレーション設定とを含むことができる。尚、以上で説明したコンフィギュレーション・リファレンス１１４および／またはコンプライアンス・レコード１０６の構造および／または編成は純粋に例示であること、そして他の構造および／または編成が使用されてもよいことを注記しておく。コンフィギュレーション・リファレンス１１４およびコンプライアンス・レコード１０６は、サーバー１０２によって任意の場所にそして任意の方法で、維持することができ、データー・ストア１０８または他の場所に格納することを含む。
【００２３】
[0032]  コンプライアンス・エンジン１２２は、コンピューティング・デバイス（１つまたは複数）１０４がコンプライアンス規則を順守し続けているか否か、リファレンス１１４を使用して判定するように構成することができる。このようにすることによって、コンプライアンス・エンジン１２２は、コンピューティング・デバイス（１つまたは複数）１０４によって実装されたコンフィギュレーション設定を判定するために、単にリファレンス１１４にアクセスすれば済み、コンピューティング・デバイス（１つまたは複数）１０４にそれらのコンフィギュレーション設定について問い合わせる必要がない。コンプライアンス・エンジン１２２は、何らかの適したトリガリング・イベントを検出したときに、コンピューティング・デバイス（１つまたは複数）１０４が順守し続けているか否か、判定することができる。トリガリング・イベントには、所定の時間期間の経過、アドミニストレーター、監査人、および／またはコンピューティング・デバイス１０４および／または他のコンピューティング・デバイスが１つ以上のコンプライアンス設定および／または要件を順守しているか否かを管理する、確認することを望む、またそうでなければ知る／確認することに関心がある他の人および／またはエンティティからの要求が含まれる。デバイスがコンプライアンス設定／要件を順守しているか否か判定する要求は、数百台、数千台、または数百万台のデバイスを含む任意の数のデバイスに関係付けることもできる。したがって、コンフィギュレーション・リファレンス１１４および／またはコンプライアンス・レコード１０６からこのようなコンプライアンス情報にアクセスすることによって、対象の各デバイスに別個にプールしなければならないことに関して、サーバー１０２によって大量の処理パワーを消費しなくても済む。
【００２４】
[0033]  実施形態では、図１のシステム１００は、種々の方法で実装することができる。実例をあげると、図２Ａは、実施形態例によるシステム２００の詳細なブロック図を示す。システム２００はシステム１００の一例である。図２Ａに示すように、システム２００は、サーバー１０２とコンピューティング・デバイス２０４とを含む。コンピューティング・デバイス２０４は、図１を参照して先に説明したような、コンピューティング・デバイス１０４の一例である。更に図２Ａに示すように、コンピューティング・デバイス２０４は、コンプライアンス・エージェント２２０、状態機械（ＳＭ）データー・ストア２２４、およびコンフィギュレーション情報（ＣＩ）データー・ストア２２２を含む。状態機械データー・ストア２２４およびコンフィギュレーション情報データー・ストア２２２は、各々、本明細書において記載する任意の種類の物理メモリーおよび／または記憶デバイスを含む、および／または本開示から利益が得られる当業者には理解されるような、１つ以上の物理メモリーおよび／または記憶デバイス（１つまたは複数）を含むことができる。コンプライアンス・エージェント２２０は、図１を参照して先に説明したような、コンプライアンス・エージェント１２０の一例である。
【００２５】
[0034]  サーバー１０２は、コンピューティング・デバイス２０４に供給するコンフィギュレーション情報１１２を決定し、決定したコンフィギュレーション情報１１２をコンピューティング・デバイス２０４に供給するように構成される。例えば、ユーザーに新たにプロビジョニングされたコンピューティング・デバイスにユーザーが最初にログインするとき、サーバー１０２は、このコンピューティング・デバイスおよび／またはユーザーに関連付けられたデバイス・コンフィギュレーション情報１１２を引き出し、コンフィギュレーション情報１１２をコンピューティング・デバイスに供給することができる。加えて、または代わりに、サーバー１０２は、そのコンピューティング・デバイスおよび／またはユーザーに関連付けられたコンフィギュレーション情報１１２を引き出し、ソフトウェアまたはファームウェア（デバイス・ドライバーを含む）が新たにコンピューティング・デバイスにインストールされるとき、新たなハードウェアがコンピューティング・デバイスに追加されるとき、ソフトウェアおよび／またはファームウェアが更新されるもしくはコンピューティング・デバイスから削除されるとき、ハードウェアがコンピューティング・デバイスから取り外されるとき、および／またはコンピューティング・デバイスのコンフィギュレーションを変更する他のイベントの間に、コンフィギュレーション情報１１２をコンピューティング・デバイスに供給することができる。
【００２６】
[0035]  図１を参照して説明したコンピューティング・デバイス１０４と同様、コンピューティング・デバイス２０４は、コンプライアンス・エージェント２２０を実行するように構成することができ、コンプライアンス・エージェント２２０は、コンフィギュレーション情報１１２によって指定されるコンフィギュレーション設定を実装するように構成される。更に具体的には、コンプライアンス・エージェント２２０は、所望のコンフィギュレーション・シナリオに基づいて、該当する状態機械を消費する。サーバー１０２は、「コンフィギュレーション・シナリオ識別子」をコンフィギュレーション情報１１２内に設け、コンピューティング・デバイス２０４に該当する状態機械を指定することができる。コンプライアンス・エージェント２２０は、この識別子を利用して、オーケストレーター(orchestrator)が従うための正しい状態機械を発見することができる。以下で更に詳しく説明するように、サーバー１０２によって供給されたコンフィギュレーション情報１１２は、次いで、コンプライアンス・エージェント２２０によって、状態機械に基づいて該当するＣＳＰに供給される。
【００２７】
[0036]  図２Ａに示すように、コンプライアンス・エージェント２２０は、コンフィギュレーション・マネージャ２０６とオーケストレーター・エンジン２０８とを含む。更に、コンフィギュレーション・マネージャ２０６は、コンプライアンス・コンフィギュレーション情報ハンドラー２２８と、コンフィギュレーション情報エラー・チェッカー２１０とを含む。
【００２８】
[0037]  コンプライアンス・コンフィギュレーション情報ハンドラー２２８は、コンフィギュレーション情報１１２（例えば、ＳｙｎｃＭＬまたはＣＤＭ（Ｃｏｎｔｅｎｔ  Ｄｅｌｉｖｅｒｙ  Ｎｅｔｗｏｒｋ）を通じたコンピューティング・デバイス２０４への配信）に、サーバー１０２のコンプライアンス・エンジン１２２からアクセスし、コンフィギュレーション情報１１２をコンフィギュレーション情報データー・ストア２２２に格納するように構成することができる（図２Ａにおいて、サーバー１１２、コンプライアンス・コンフィギュレーション情報ハンドラー２２８、およびコンフィギュレーション情報データー・ストア２２２間の破線１１２によって図示する通り）。他の例として、コンフィギュレーション情報１１２はＪａｖａＳｃｒｉｐｔ  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ（ＪＳＯＮ）によって供給することもできる。コンフィギュレーション情報１１２は、サーバーによってコンピューティング・デバイスに直接配信することができ、またはサーバーが、コンピューティング・デバイスに、どこでコンフィギュレーション情報１１２を入手するか、ＣＤＮ（以下で更に詳しく説明する）を通じて、命令することもできる。
【００２９】
[0038]  コンフィギュレーション情報１１２は、任意の適した形態を有することができる。実施形態によれば、コンフィギュレーション情報１１２は、拡張可能マークアップ言語（ＸＭＬ）ファイルによって表されてもよく、コンプライアンス設定に関連付けられたペイロードと、このペイロードのダウンロードおよび処理のための対応するユニフォーム・リソース識別子（ＵＲＩ）とを含む。例えば、ＣＤＮ格納ペイロード(CDN stored payload)は、ペイロードの非同期ダウンロードおよび処理のためのＵＲＩを示す別個のタグを含むことができる。更に例示すると、１組の別々のポリシー（例えば、ポリシーＣＳＰによって提示される）についての単純なコンフィギュレーション・シナリオであれば、ＸＭＬファイルに、１つのペイロードだけが含まれればよい場合もある。更に複雑なコンフィギュレーション・シナリオ（例えば、ＶＰＮ接続に対するコンフィギュレーション）では、ＸＭＬファイル内に複数のペイロードを指定する必要がある場合もある。例えば、ＶＰＮコンフィギュレーション・シナリオでは、プロファイル・ペイロードおよび証明書ペイロード(certificate payload)を供給する場合もある。これらのシナリオ・コンフィギュレーション・ファイルは、コンピューティング・デバイスとの同期セッションを試す前に、サーバーによって作成することができる。これによって、サーバーと相互作用するコンピューティング・デバイス毎に要求に応じて同じファイルを作成することを回避し、もっと有用な作業を実行するためにサーバーを利用可能のまま残しておくことにより、スケーラビリティを高める。
【００３０】
[0039]  以下に、ポリシーＣＳＰによって設定されるポリシーを示すシナリオ・コンフィギュレーションＸＭＬファイルの例を示す。このファイルは複数の宣言型コンフィギュレーション・ペイロードを含む。尚、このシナリオ・コンフィギュレーションＸＭＬファイル例の「ｉｄ」、「ｃｈｅｃｋｓｕｍ」および「ＯＳＤｅｆｉｎｅｄＳｃｅｎａｒｉｏ」属性が一意の識別子を構成することを注記しておく。更に、注記するのは、この例における「ＯＳＤｅｆｉｎｅｄＳｃｅｎａｒｉｏ」属性が、これは公開されたコンフィギュレーション・シナリオであることを示すということであり、これが意味するのは、このコンフィギュレーション・シナリオが、このコンフィギュレーション・シナリオをどのように構成するか指令する宣言型コンフィギュレーション・シナリオ状態機械を、拠り所にするということである。この状態機械は、オペレーティング・システム（ＯＳ）ビルドが宣言型コンフィギュレーション・シナリオ状態機械Ｗｉｎｄｏｗｓ（登録商標）マニフェストをコンパイルした後に、レジストリーに格納することができる。更に、この挙動が状態機械において指定することもできるので、各ペイロードが不可分である(atomic)べきか指定しなくてもよい場合、または文書全体が不可分であるべきか指定しなくてもよい場合もある。加えて、以下のＸＭＬファイルは、いくつかのコンピューティング・デバイスの広いポリシーを設定し、暗号化機能の例（即ち、Ｍｉｃｒｏｓｏｆｔ（登録商標）ＢｉｔＬｏｃｋｅｒ（商標））を構成する。
【００３１】
【表１】
2021533454.tif 000003
【００３２】
[0040]  以下に、ＭＤＭによって定められたコンフィギュレーション・シナリオを記述するマルチペイロードＸＭＬファイルの一例を示す。この例では、宣言型コンフィギュレーション・シナリオ状態機械がないので、以下のとおりとなる。
【００３３】
【表２】
2021533454.tif 000004
【００３４】
[0041]  コンプライアンス・コンフィギュレーション情報ハンドラー２２８は、更に、（例えば、Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ（ＨＴＴＰ）ＧＥＴメソッド要求を使用して）コンフィギュレーション情報１１２をサーバー１０２に要求し、コンフィギュレーション情報１１２をコンフィギュレーション情報エラー・チェッカー２１０に供給するように構成することができる。
【００３５】
[0042]  コンフィギュレーション情報エラー・チェッカー２１０は、コンフィギュレーション情報１１２を解析し、コンフィギュレーション情報１１２におけるエラー（例えば、ＸＭＬコンフィギュレーション・シナリオ・ファイルにおけるＸＭＬコード、属性、ＵＲＩに伴うエラー等）を判定し、エラーの訂正をサーバー１０２に要求するように構成することができる。実例をあげると、コンフィギュレーション情報１１２がＸＭＬファイルとして表される、先に論じた例では、コンフィギュレーション情報エラー・チェッカー２１０は、ＸＭＬコードを解析および確認し、ＵＲＩをレジストリー位置に格納し、何らかのエラーが検出された場合、同期してエラーをサーバー１０２に報告し、サーバー１０２によってエラーを修復する(amend)ように要求することができる（図２Ａにおいて、破線２１６によって図示する通り）。従来では、ＭＤＭサーバーが、コンフィギュレーション情報には不一致もエラーもないことを確認する(ensure)。しかしながら、クライアント・デバイスが不一致およびエラーを検出することによって、ＭＤＭサーバーに直ちにフィードバックを供給することが可能になり、コンフィギュレーション情報におけるいずれのエラーも早い訂正(correction)を可能にする。
【００３６】
[0043]  コンプライアンス・コンフィギュレーション情報ハンドラー２２８は、更に、格納したコンフィギュレーション情報１１２をサーバー１０２に送信し、コンフィギュレーション情報をサーバー１０２に送ったことに応答して、更新コンフィギュレーション情報および／または追加のコンフィギュレーション情報をサーバー１０２から受信するように構成することができる。例えば、コンプライアンス・コンフィギュレーション情報ハンドラー２２８は、コンフィギュレーション情報データー・ストア２２２に格納されているコンフィギュレーション情報データー１１２をサーバー１０２に送ることによって、そのステータス（例えば、期限切れまたは古い）を確認するように構成することができ、サーバー１０２によって判定された、格納されているコンフィギュレーション情報１１２のステータスに基づいて、サーバー１０２は、コンプライアンス・コンフィギュレーション情報ハンドラー２２８に、更新コンフィギュレーション情報および／または追加のコンフィギュレーション情報を供給することができる。その後、コンプライアンス・コンフィギュレーション情報ハンドラー２２８は、受信した更新コンフィギュレーション情報および／または追加のコンフィギュレーション情報を、コンフィギュレーション情報データー・ストア２２２に格納することができる（図２Ａにおいて破線２１４によって図示する通り）。以下で説明するように、コンプライアンス・エージェント２２０のオーケストレーター・エンジン２０８は、コンフィギュレーション情報１１２において受信されたコンフィギュレーション設定を実装するように構成され、それに基づいてコンフィギュレーション結果２２６を生成する。
【００３７】
[0044]  具体的には、図２Ｂは、実施形態例によるシステム２３０の詳細なブロック図を示す。システム２３０は、システム１００の更に他の例である。図２Ｂに示すように、システム２３０はサーバー１０２とコンピューティング・デバイス２４４とを含む。コンピューティング・デバイス２４４は、図１のコンピューティング・デバイス１０４の更に他の例である。更に、コンピューティング・デバイス２４４は、コンプライアンス・エージェント２４０、ＳＭデーター・ストア２２４、およびコンフィギュレーション情報データー・ストア２２２を含む。コンプライアンス・エージェント２４０は、図１を参照して先に説明したような、コンプライアンス・エージェント１２０の更に他の例である。
【００３８】
[0045]  図１を参照して説明したコンピューティング・デバイス１０４と同様、コンピューティング・デバイス２４４はコンプライアンス・エージェント２４０を実行する。コンプライアンス・エージェント２４０は、コンフィギュレーション情報１１２によって指定されたコンフィギュレーション設定を実装するように構成される。図２Ｂに示すように、コンプライアンス・エージェント２４０は、コンフィギュレーション・マネージャ２０６とオーケストレーター・エンジン２０８とを含む。コンフィギュレーション・マネージャ２０６は、コンプライアンス・コンフィギュレーション情報ハンドラー２２８と、設定実装トリガラー(triggerer)２３２とを含む。オーケストレーター・エンジン２０８は、状態機械セレクター２３４と状態機械実行エンジン２３６とを含む。コンプライアンス・エージェント２４０のこれらの機能的特徴(features)については、以下で説明する。
【００３９】
[0046]  設定実装トリガラー２３２は、オーケストレーター・エンジン２０８を作動させて、コンフィギュレーション情報１１２によって記述されたコンプライアンス設定をコンピューティング・デバイス２４４に実装するように構成される。例えば、図２Ｂに示すように、設定実装トリガラー２３２は、トリガー２１８を状態機械セレクター２３４に供給する。更に具体的には、図２Ａを参照して先に説明したように、トリガー２１８は、コンフィギュレーション情報エラー・チェッカー２１０がコンフィギュレーション情報１１２を解析および確認した後に、タスクのスケジューリングを行わせることができる（そして、スケジューリングされたタスクは、「ＤｅｃｌａｒｅｄＣｏｎｆｉｇｕｒａｔｉｏｎ」（ＣＳＰ）によって起動することができる）。実施形態によれば、タスクはアクティビティ・キューに格納され、アクティビティ・キューに格納されている未処理のタスクが全て処理された後に、処理することができる。
【００４０】
[0047]  状態機械セレクター２３４は、設定実装トリガラー２３２からトリガーを受け取り、コンプライアンス設定をコンピューティング・デバイス２４４に実装するように構成される。実施形態では、状態機械セレクター２３４は、コンフィギュレーション情報１１２によって示され、コンプライアンス設定を実装するコンフィギュレーション・プロセスを記述する状態機械を識別する。トリガー２１８を受け取った後、状態セレクター機械(state selector machine)２３４は、格納されているコンフィギュレーション情報１１２をコンフィギュレーション情報データー・ストア２２２から入手し、格納されているコンフィギュレーション情報１１２の属性を消費した後、状態機械１１８がコンフィギュレーション情報１１２と関連付けられていると判定することができる。実例をあげると、コンフィギュレーション情報１１２は、特定の状態機械に対して識別子を指定することができる。
【００４１】
[0048]  状態機械セレクター２３４は、更に、状態機械１１８を状態機械実行エンジン２３６に供給するように構成することができる。状態機械実行エンジン２３６は、コンピューティング・デバイス２４４に、コンフィギュレーション情報１１２に記述されているコンプライアンス設定を組み込むために、状態機械１１８を実行するように構成される。例えば、状態機械セレクター２３４は、依存性と共にコンフィギュレーション情報１１２に含まれるペイロードを、状態機械１１８によって指令される順序で処理することができる（図２Ａを参照して説明した通り）。あるいは、コンフィギュレーション情報１１２と関連付けられた状態機械がない場合、コンフィギュレーション情報１１２によって指定されたペイロードは、コンフィギュレーション情報１１２によって指令された順序で処理される。更に、状態機械セレクター２３４は、状態機械１１８のマニフェストを入手するために、状態機械データー・ストア２２４にアクセスすることができる。マニフェストは、状態機械１１８とその依存性とを含むことができる。
【００４２】
[0049]  宣言型コンフィギュレーション・シナリオ状態機械マニフェストのＸＭＬファイルの例を、以下に再現する。
【００４３】
【表３】
2021533454.tif 000005
【００４４】
[0050]  状態機械実行エンジン２３６は、更に、コンフィギュレーション結果２２６（例えば、ＵＲＩおよび値、イベント、最後のエラー・コード、ステータス等を有するＸＭＬファイル）をコンフィギュレーション情報データー・ストア２２２に格納するように構成することができる。例えば、コンフィギュレーション結果２２６は、図１に関して先に説明した１つ以上のコンプライアンス・レコード１０６および／またはコンフィギュレーション・リファレンス１１４を含むことができる。コンプライアンス・コンフィギュレーション情報ハンドラー２２８は、コンフィギュレーション結果２２６をコンフィギュレーション情報データー・ストア２２２から入手し、サーバー１０２によって分析するために、コンフィギュレーション結果２２６をコンプライアンス・エンジン１２２に供給する（図２Ｂにおいて、破線２２６によって図示する通り）ように構成することができる。コンフィギュレーション結果２２６がエラーを含む場合、サーバー１０２は、コンプライアンス・コンフィギュレーション情報ハンドラー２２８に、確認情報１１２の早期バージョンを供給し、モバイル・デバイスに対するあらゆる誤った変更を取り消すようにすることができ、オーケストレーター・エンジン２０８に、コンピューティング・デバイスの状態を状態機械の実行前の状態にロールバックさせるように指令することによって、誤った変更を取り消すことを含む。
【００４５】
[0051]  例えば、本明細書において説明する実施形態によれば、状態機械は、コンフィギュレーション・シナリオについて指示するコンフィギュレーションを含む(contain)こともできる。更に例示すると、状態はエンティティ「ＦｒｏｍＳｔａｔｅ」、「Ａｃｔｉｖｉｔｙ」、および「ＴｏＳｔａｔｅ」によって記述することもできる。Ａｃｔｉｖｉｔｙは、コンフィギュレーション・シナリオ・オーナー（１つまたは複数）によって所有および作成された実行可能コードの形態を有することができる。更に、Ａｃｔｉｖｉｔｙは、次のステップに進むときに使用するために、実行時に異なるＴｏＳｔａｔｅ状態に戻ることができる。ＡｃｔｉｖｉｔｙがＴｏＳｔａｔｅを変更しない場合、デフォルトのＴｏＳｔａｔｅが使用され、状態機械のデーター表現内に指定される。Ａｃｔｉｖｉｔｙは、このＡｃｔｉｖｉｔｙに誘導される(marshalled)ＸＭＬとして表現された入力データーおよび出力データーを予め定めておくこともできる。これによって、個々のＡｃｔｉｖｉｔｙを別々に開発および検査できることを確保する。ＡｃｔｉｖｉｔｙにＴｏＳｔａｔｅを変更させることができると、状態機械に対する実行時の調節に対応できる。状態機械は、コンフィギュレーション・シナリオを構成、確認、リフレッシュ、および削除するために使用することもできる。
【００４６】
[0052]  システム１００、２００、および２３０は、その機能を実行するために、種々の方法で動作することができる。実例をあげると、図３は、実施形態例にしたがって、コンピューティング・デバイスにコンフィギュレーション・シナリオを順守させるために、コンピューティング・デバイスによってコンプライアンス設定を実装する方法のフローチャート３００を示す。図１、図２Ａ、および図２Ｂを引き続き参照しながら、図３について説明する。しかしながら、フローチャート３００、ならびに図１、図２Ａ、および図２Ｂのシステム１００、２００、および２３０に関する以下の論述に基づけば、他の構造および動作の実施形態も当業者には明白であろう。
【００４７】
[0053]  図３に示すように、フローチャート３００はステップ３０２において開始する。ステップ３０２において、サーバーからコンフィギュレーション情報を受信する。コンフィギュレーション情報は、モバイル・デバイスにコンフィギュレーション・シナリオを順守させるために、モバイル・デバイスによって実装するコンプライアンス設定を記述する。例えば、図１、図２Ａ、および図２Ｂを引き続き参照すると、コンプライアンス・コンフィギュレーション情報ハンドラー２２８が情報１１２をサーバー１０２のコンプライアンス・エンジン１２２から受信する。
【００４８】
[0054]  ステップ３０４において、コンフィギュレーション情報を格納する。例えば、図１、図２Ａ、および図２Ｂを引き続き参照すると、コンプライアンス・コンフィギュレーション情報ハンドラー２２８はコンフィギュレーション情報１１２をコンフィギュレーション情報データー・ストア２２２に格納する。
【００４９】
[0055]  ステップ３０６において、モバイル・デバイスにコンプライアンス設定を実装するトリガーを受信する。例えば、図１、図２Ａ、および図２Ｂを引き続き参照すると、設定実装トリガラー(triggerer)２３２が、トリガー２１８をオーケストレーター・エンジン２０８の状態機械セレクター２３４に供給し、コンフィギュレーション情報１１２によって記述されたコンプライアンス設定のコンピューティング・デバイス２４４内における実装を開始する。
【００５０】
[0056]  ステップ３０８において、コンプライアンス設定を実装するコンフィギュレーション・プロセスを記述するコンフィギュレーション情報によって示された状態機械を識別する。例えば、図１、図２Ａ、および図２Ｂを引き続き参照すると、トリガー２１８を受信した後、状態セレクター機械(state selector machine)２３４は、格納されているコンフィギュレーション情報１１２をコンフィギュレーション情報データー・ストア２２２から入手し、状態機械１１８がコンフィギュレーション情報１１２と関連付けられていると判定する。
【００５１】
[0057]  ステップ３１０において、図１、図２Ａ、および図２Ｂを引き続き参照すると、状態機械を実行して、モバイル・デバイスにコンプライアンス設定を組み込む。例えば、図１、図２Ａ、および図２Ｂを引き続き参照すると、状態機械セレクター２３４は状態機械１１８（またはそれに対するポインター）を状態機械実行エンジン２３６に供給し、状態機械実行エンジン２３６は状態機械１１８を実行して、コンフィギュレーション情報１１２に記述されたコンプライアンス設定をコンピューティング・デバイス２４４に組み込む。
【００５２】
[0058]  図４は、実施形態例にしたがって、モバイル・デバイスがコンフィギュレーション情報にしたがってしかるべく構成されたか否か判定する方法のフローチャート４００を示す。図１、図２Ａ、および図２Ｂを引き続き参照しながら、図４について説明する。しかしながら、フローチャート４００、ならびに図１、図２Ａ、および図２Ｂのシステム１００、２００、および２３０に関する以下の論述に基づけば、他の構造および動作の実施形態も当業者には明白であろう。
【００５３】
[0059]  図４に示すように、フローチャート４００はステップ４０２を含む。ステップ４０２において、状態機械を実行して、モバイル・デバイスがコンフィギュレーション情報にしたがってしかるべく構成されたか否か判定する。例えば、図１、図２Ａ、および図２Ｂを引き続き参照すると、状態機械実行エンジン２３６は、コンピューティング・デバイス２４４のコンフィギュレーションを変更せずに状態機械１１８を実行し、コンピューティング・デバイス２４４が正しいコンフィギュレーション状態にあることを評価する。具体的には、本明細書において説明する実施形態によれば、状態機械は２つのモード、「構成」(Configure)モードおよび「分析」(Analyze)モードのいずれかで実行することができる。構成モードでは、コンフィギュレーション情報に基づいてコンピューティング・デバイスを構成する（先に説明した通り）。分析モードでは、コンピューティング・デバイスへの変更を行わずに、コンピューティング・デバイスの評価を実行し、このデバイスが実際に正しいコンフィギュレーション状態にあることを確認する。例えば、状態機械は、コンピューティング・デバイスの１つ以上の現在の設定および／または他の情報（特定のハードウェア／ソフトウェア／ファームウェア・コンフィギュレーションに関する）を引き出すように構成される（例えば、オペレーティング・システムのバージョン番号、他のアプリケーションのバージョン番号、ＤＬＬ（ダイナミック−リンク・ライブラリー）ファイルのような、ファイルにおけるエントリー等を判定し、１つ以上のファイルの存在または不在を判定する等）。状態機械は、引き出した情報を、状態機械によって維持されているまたはアクセス可能な、コンピューティング・デバイスについての正しいコンフィギュレーション情報と比較することができる。全ての情報が一致した場合、状態機械は、コンピューティング・デバイスが特定のコンフィギュレーションに準拠していることを示すとしてよい。全ての情報が一致しない場合、状態機械は、コンピューティング・デバイスが準拠していないことを示すとしてよい。
【００５４】
[0060]  先に説明したように、状態機械によって実行された個々のコンフィギュレーションの結果をコンプライアンス・エンジンに送信することができる。例えば、図５は、実施形態にしたがってコンフィギュレーション結果を格納および送信する方法のフローチャート５００を示す。図１、図２Ａ、および図２Ｂを引き続き参照しながら、図５について説明する。しかしながら、フローチャート５００、ならびに図１、図２Ａ、および図２Ｂのシステム１００、２００、および２３０に関する以下の論述に基づけば、他の構造および動作の実施形態も当業者には明白であろう。
【００５５】
[0061]  図５に示すように、フローチャート５００はステップ５０２において開始する。ステップ５０２において、状態機械を実行することによって生成されたコンフィギュレーション結果を、コンフィギュレーション情報データー・ストアに格納する。例えば、図１、図２Ａ、および図２Ｂを引き続き参照すると、状態機械実行エンジン２３６は、コンフィギュレーション結果２２６をコンフィギュレーション情報データー・ストア２２２に格納する。実施形態では、コンフィギュレーション結果２２６は１つ以上の指示を含むことができる。実例をあげると、コンフィギュレーション結果２２６は、オーケストレーター・エンジン２０８がコンフィギュレーション設定（１つまたは複数）のインストールに成功したこと、インストールが進行中であること、または障害が発生しコンフィギュレーション設定（１つまたは複数）のインストールに失敗したことの指示を出すのでもよい。障害が発生した場合、コンフィギュレーション結果２２６は、１つ以上のエラー（エラー・コードおよび／または記述によって）、イベント追跡（例えば、デバッギングに使用することができる、状態機械実行についての情報のロギング）、および／または状態機械によって生成された他の診断データーを表に纏めることによって、というようにして、障害の指示を含むことができる。
【００５６】
[0062]  ステップ５０４および５０６において、コンフィギュレーション情報データー・ストアからコンフィギュレーション結果を入手し（ステップ５０４）、サーバーに送信する（ステップ５０６）。例えば、図１、図２Ａ、および図２Ｂを引き続き参照すると、コンプライアンス・コンフィギュレーション情報ハンドラー２２８が、コンフィギュレーション結果２２６をコンフィギュレーション情報データー・ストア２２２から入手し、サーバー１０２によって分析するために、コンフィギュレーション結果２２６をコンプライアンス・エンジン１２２に供給する。コンフィギュレーション結果２２６がエラーを含む場合、サーバー１０２は、モバイル・デバイスに対するあらゆる誤った変更を取り消すように、コンプライアンス・コンフィギュレーション情報ハンドラー２２８に確認情報１１２の早期のバージョンを供給することができる。これには、コンピューティング・デバイスの状態を状態機械の実行前の状態にロールバックさせるように、オーケストレーター・エンジン２０８に指令することによって、誤った変更を取り消すことを含む。実例をあげると、状態機械を実行する前に、または状態機械の実行中に、コンピューティング・デバイスの現在の状態を保存することができ（例えば、設定のバージョン、状態機械の実行前に存在していたファイル等の内影響を受けたものを保存する）、コンピューティング・デバイスを、保存した状態情報に復帰させることによって、保存された状態をコンピューティング・デバイスに再構成することができる。あるいは、障害状態の詳細な分析を実行できるように、判明している直前の、即ち、最後の正しい状態にロールバックしないように、コンピューティング・デバイスに命令することもできる。実例をあげると、「開発者モード」（または他の名称によって）と呼ばれる他のモードを定めてもよく、このモードでは、コンピューティング・デバイスは、エラーの場合、判明している最後の正しい状態にロールバックしない。
【００５７】
[0063]  更に、状態機械の実行中にエラーに遭遇した場合、コンプライアンス・エージェントが、以前の状態にロールバックするのではなく、このエラーを訂正しようと試みてもよいことを注記しておく。実例をあげると、図６は、実施形態例にしたがって、コンフィギュレーション情報に伴うエラーを訂正する要求を行う方法のフローチャート６００を示す。図１、図２Ａ、および図２Ｂを引き続き参照しながら、図６について説明する。しかしながら、フローチャート６００、ならびに図１、図２Ａ、および図２Ｂのシステム１００、２００、および２３０に関する以下の論述に基づけば、他の構造および動作の実施形態も当業者には明白であろう。
【００５８】
[0064]  フローチャート６００はステップ６０２から開始する。ステップ６０２において、コンフィギュレーション情報を解析する。例えば、オーケストレーター・エンジン２０８が、受信したエラー・コード／エラー記述に対応する１つ以上のコンフィギュレーション設定についてのコンフィギュレーション情報１１２を解析するように構成することができる。
【００５９】
[0065]  ステップ６０４において、コンフィギュレーション情報に伴うエラーを判定する。実施形態では、解析中に、オーケストレーター・エンジン２０８が、受信したエラー・コード／エラー記述に対応する１つ以上のコンフィギュレーション設定を判定することができる。
【００６０】
[0066]  ステップ６０６において、サーバーにエラーの訂正を要求する。実施形態では、コンプライアンス・エージェント２４０が、エラーの訂正を要求するために、エラー情報（例えば、エラー・コード、エラー記述、イベント追跡等）をコンプライアンス１２２に送信することができる。
【００６１】
[0067]  実例をあげると、図１、図２Ａ、および図２Ｂを引き続き参照し、コンフィギュレーション情報１１２がＸＭＬファイルによって表される、先に論じた例では、コンフィギュレーション情報エラー・チェッカー２１０がこのＸＭＬファイルを解析および確認し、ＵＲＩをレジストリー位置に格納し、何らかのエラーが検出された場合、同期してエラーをサーバー１０２に報告し、サーバー１０２に直ちにエラーを修復するように要求することができる。
【００６２】
[0068]  尚、エラー訂正要求に応答して、および／または任意の他の時点において、コンプライアンス・エンジン１２２は、更新コンフィギュレーション情報をコンプライアンス・エージェントに供給できることを注記しておく。実例をあげると、図７は、実施形態例にしたがって、更新コンフィギュレーション情報および／または追加のコンフィギュレーション情報を受信する方法のフローチャート７００を示す。図１、図２Ａ、および図２Ｂを引き続き参照しながら、図７について説明する。しかしながら、フローチャート７００、ならびに図１、図２Ａ、および図２Ｂのシステム１００、２００、および２３０に関する以下の論述に基づけば、他の構造および動作の実施形態も当業者には明白であろう。
【００６３】
[0069]  図７に示すように、フローチャート７００はステップ７０２から開始する。ステップ７０２において、コンフィギュレーション情報をコンフィギュレーション情報データー・ストアに格納する。例えば、図２Ａおよび図２Ｂを引き続き参照して、コンフィギュレーション情報１１２をコンフィギュレーション情報データー・ストア２２２に格納する。
【００６４】
[0070]  ステップ７０４において、格納されているコンフィギュレーション情報をサーバーに送信する。実施形態では、コンプライアンス・エージェント２４０がコンフィグレーション１１２をサーバー１０２におけるコンプライアンス・エンジン１２２に、エラーのため（先に説明した通り）、アップデートのチェックのため、および任意の他の理由を含む、何らかの理由で送信することができる。実例をあげると、コンプライアンス・コンフィギュレーション情報ハンドラー２２８が、コンフィギュレーション情報データー・ストア２２２に格納されているコンフィギュレーション情報１１２のステータスを確認する（例えば、期限切れまたは古い）のでもよい。ハンドラー２２８が、コンフィギュレーション情報１１２にエラーが含まれる、期限切れである、古い等を判定した場合、ハンドラー２２８はコンフィギュレーション情報１１２（またはその一部）をサーバー１０２に送信することができる。
【００６５】
[0071]  ステップ７０６において、コンフィギュレーション情報をサーバーに送ったことに応答して、更新コンフィギュレーション情報および／または追加のコンフィギュレーション情報をサーバーから受信する。格納されているコンフィギュレーション情報１１２についてサーバー１０２によって判定されたステータスに基づいて、サーバー１０２は、コンプライアンス・コンフィギュレーション情報ハンドラー２２８に、更新コンフィギュレーション情報および／または追加のコンフィギュレーション情報を提供することができる。したがって、コンプライアンス・コンフィギュレーション情報ハンドラー２２８は、更新コンフィギュレーション情報および／または追加のコンフィギュレーション情報によって、コンフィギュレーション情報データー・ストア２２２を更新することができる。
【００６６】
[0072]  したがって、実施形態は、コンフィギュレーション設定を多数のデバイスにプッシュする効率を高め、これらがコンフィギュレーション設定を受信し実装したことに基づいて、このようなデバイスの要求に対する順守を追跡し続ける。
【００６７】
[0073]  実施形態は、より多くの役割をクライアント・デバイスに委譲してこれら自体を所望の状態にすることによって、クライアント／サーバーのレイテンシー（データー転送命令の後における、データー転送が開始するまでの遅延）を低減する。各クライアント・デバイスは、サーバーからのコンフィギュレーション設定を実装する要求を受け入れ、直ちにサーバーに戻す(turn back) 。要求は、非同期でクライアント・デバイスによって処理される。クライアント・デバイスが要求を完了したとき、そのクライアント・デバイスによるコンフィギュレーション設定の実装の成功または失敗を示すアラートを、サーバーに送るセッションを開始する。また、実施形態は、サーバーがクライアント・デバイスの状態を連続的に監視し、断片的に所望のデバイス状態を維持する必要性をなくすことによって、クライアントとサーバー・デバイスとの間におけるネットワーク・アクティビティを減らす。実施形態では、サーバーは、各クライアントに、所望の状態を（コンフィギュレーション設定の形態で）供給し、クライアントが設定を維持することを予測する（そして、そうすることができない場合、サーバーによって促されることなく、サーバーに通知する）。また、実施形態は、サービス・プロバイダー（例えば、ソフトウェアおよび／またはハードウェア・プロバイダー）に、それら自体の製品のためにプロセスを管理させることを必要とせずに、クライアント・デバイスに設定を組み込むために、サーバーによって開始される均一な方法を提供する。
【００６８】
ＩＩＩ．モバイル・デバイスおよび静止デバイスの実施形態例
[0074]  以上で説明したシステムおよび方法は、図１〜図７を参照して説明したデバイス・コンプライアンス管理の実施形態を含み、ハードウェアで、あるいはソフトウェアおよび／またはファームウェアの一方もしくは双方と組み合わせたハードウェアで実装することができる。例えば、コンプライアンス・エンジン１１２、コンプライアンス・エージェント１２０、オーケストレーター・エンジン２０８、コンフィギュレーション情報エラー・チェッカー２１０、コンプライアンス・エージェント２２０、コンプライアンス・コンフィギュレーション情報ハンドラー２２８、設定実装トリガラー２３２、状態機械セレクター２３４、状態機械実行エンジン２３６、コンプライアンス・エージェント２４０、および／または本明細書において説明したコンポーネントの各々、更にはフローチャート３００、４００、５００、６００、および７００は、各々、１つ以上のプロセッサーにおいて実行されコンピューター読み取り可能記憶媒体に格納されるように構成されたコンピューター・プログラム・コード／命令として実装することができる。あるいは、コンプライアンス・エンジン１１２、コンプライアンス・エージェント１２０、オーケストレーター・エンジン２０８、コンフィギュレーション情報エラー・チェッカー２１０、コンプライアンス・エージェント２２０、コンプライアンス・コンフィギュレーション情報ハンドラー２２８、設定実装トリガラー２３２、状態機械セレクター２３４、状態機械実行エンジン２３６，コンプライアンス・エージェント２４０、および／または本明細書において説明したコンポーネントの各々、更にはフローチャート３００、４００、５００、６００、および７００は、ハードウェア・ロジック／電気回路として実装されてもよい。実施形態では、コンプライアンス・エンジン１１２、コンプライアンス・エージェント１２０、オーケストレーター・エンジン２０８、コンフィギュレーション情報エラー・チェッカー２１０、コンプライアンス・エージェント２２０、コンプライアンス・コンフィギュレーション情報ハンドラー２２８、設定実装トリガラー２３２、状態機械セレクター２３４、状態機械実行エンジン２３６，コンプライアンス・エージェント２４０、および／または本明細書において説明したコンポーネントの各々、更にはフローチャート３００、４００、５００、６００、および７００は、１つ以上のＳｏＣ（システム・オン・チップ）に実装することもできる。ＳｏＣは、プロセッサー（例えば、中央処理ユニット（ＣＰＵ）、マイクロコントローラー、マイクロプロセッサー、ディジタル信号プロセッサー（ＤＳＰ）等）、メモリー、１つ以上の通信インターフェース、および／または更に他の回路の内１つ以上を含む集積回路チップを含み、随意に、機能を実行するために、受信したプログラム・コードを実行することおよび／または埋め込みファームウェアを含むこともできる。
【００６９】
[0075]  更に、サーバー１０２、コンピューティング・デバイス（１つまたは複数）１０４、コンピューティング・デバイス２０４、およびコンピューティング・デバイス２４４は、各々、種々のデバイス型で実装することができる。実例をあげると、図８は、全体的にコンポーネント８０２として示す、種々の随意のハードウェアおよびソフトウェア・コンポーネントを含む例示的なモバイル・デバイス８００のブロック図を示す。コンプライアンス・エンジン１１２、コンプライアンス・エージェント１２０、オーケストレーター・エンジン２０８、コンフィギュレーション情報エラー・チェッカー２１０、コンプライアンス・エージェント２２０、コンプライアンス・コンフィギュレーション情報ハンドラー２２８、設定実装トリガラー２３２、状態機械セレクター２３４、状態機械実行エンジン２３６，コンプライアンス・エージェント２４０、および／またはフローチャート３００、４００、５００、６００、および７００の内、任意の数の特徴／エレメントならびにそれらの組み合わせは、当業者には知られているように、モバイル・デバイスの実施形態に含まれるコンポーネント８０２として、更には追加のおよび／または代わりの機能／エレメントとして実装することができる。尚、コンポーネント８０２はいずれも、コンポーネント８０２の他のいずれとも通信することができるが、図示を容易にするために、全ての接続は示されていないことを注記しておく。モバイル・デバイス８００は、本明細書のどこかで説明したまたは言及した種々のモバイル・デバイス、あるいはそうでなければ知られている種々のモバイル・デバイスの内任意のもの（例えば、セル・フォン、スマート・フォン、ハンドヘルド・コンピューター、パーソナル・ディジタル・アシスタント（ＰＤＡ）等）とすることができ、セルラーまたは衛星ネットワークのような１つ以上の通信ネットワーク８０４を通じて、１つ以上のモバイル・デバイスとのワイヤレス双方向通信、あるいはローカル・エリアまたはワイド・エリア・ネットワークとのワイヤレス双方向通信を可能にすることができる。
【００７０】
[0076]  図示するモバイル・デバイス８００は、信号コード化、画像処理、データー処理、入力／出力処理、電力制御、および／またはその他の機能というようなタスクを実行する、プロセッサー回路８１０と呼ばれるコントローラーまたはプロセッサーを含むことができる。プロセッサー回路８１０は、中央処理ユニット（ＣＰＵ）、マイクロコントローラー、マイクロプロセッサー、および／または他の物理ハードウェア・プロセッサー回路として、１つ以上の物理ハードウェア電気回路デバイス・エレメントおよび／または集積回路デバイス（半導体材料チップまたはダイ）に実装される電気および／または光回路である。プロセッサー回路８１０は、１つ以上のアプリケーション８１４、オペレーティング・システム８１２のプログラム・コード、メモリー８２０に格納されている任意のプログラム・コード等というような、コンピューター読み取り可能媒体に格納されているプログラム・コードを実行することができる。オペレーティング・システム８１２は、コンポーネント８０２の割り当ておよび使用法、ならびに１つ以上のアプリケーション・プログラム８１４（別名、アプリケーション、「アプリ」等）に対するサポートを制御することができる。アプリケーション・プログラム８１４は、共通のモバイル・コンピューティング・アプリケーション（例えば、電子メール・アプリケーション、カレンダー、連絡先管理、ウェブ・ブラウザー、メッセージング・アプリケーション）、および任意の他のコンピューティング・アプリケーション（例えば、ワード・プロセッシング・アプリケーション、マッピング・アプリケーション、メディア・プレーヤー・アプリケーション）を含むことができる。
【００７１】
[0077]  図示のように、モバイル・デバイス８００はメモリー８２０を含むことができる。メモリー８２０は、非リムーバブル・メモリー８２２および／またはリムーバブル・メモリー８２４を含むことができる。非リムーバブル・メモリー８２２は、ＲＡＭ、ＲＯＭ、フラッシュ・メモリー、ハード・ディスク、または他の周知のメモリー記憶技術を含むことができる。リムーバブル・メモリー８２４は、フラッシュ・メモリー、またはＧＳＭ通信システムにおいて周知のサブスクライバー識別モジュール（ＳＩＭ）カード、または「スマート・カード」のような、他の周知のメモリー記憶技術を含むことができる。メモリー８２０は、オペレーティング・システム８１２およびアプリケーション８１４を実行するためのデーターおよび／またはコードを格納するために使用することができる。データーの例には、ウェブ・ページ、テキスト、画像、音響ファイル、ビデオ・データー、あるいは１つ以上の有線またはワイヤレス・ネットワークを通じて１つ以上のネットワーク・サーバーまたは他のデバイスに送られる他のデーター集合、および／または１つ以上のネットワーク・サーバーまたは他のデバイスから受信される他のデーター集合を含むことができる。メモリー８２０は、国際モバイル・サブスクライバー識別（ＩＭＳＩ）のようなサブスクライバー識別子、および国際モバイル機器識別子（ＩＭＥＩ）のような機器識別子を格納するために使用することができる。このような識別子は、ユーザーおよび機器を識別するために、ネットワーク・サーバーに送信することができる。
【００７２】
[0078]  多数のプログラムをメモリー８２０に格納することができる。これらのプログラムには、オペレーティング・システム８１２、１つ以上のアプリケーション・プログラム８１４、ならびに他のプログラム・モジュールおよびプログラム・データーが含まれる。このようなアプリケーション・プログラムまたはプログラム・モジュールの例には、例えば、図１〜図７を参照して説明したデバイス・コンプライアンス管理の実施形態を含む、前述のシステムを実装するためのコンピューター・プログラム・ロジック（例えば、コンピューター・プログラム・コードまたは命令）を含むことができる。
【００７３】
[0079]  モバイル・デバイス８００は、タッチ・スクリーン８３２、マイクロフォン８３４、カメラ８３６、物理キーボード８３８、および／またはトラックボール８４０というような１つ以上の入力デバイス８３０、ならびにスピーカー８５２およびディスプレイ８５４のような１つ以上の出力デバイス８５０をサポートすることができる。
【００７４】
[0080]  他の可能な出力デバイス（図示せず）には、圧電または他の触覚出力デバイスを含むことができる。デバイスの中には、１つよりも多い入力／出力機能を提供できる(serve)ものもある。例えば、タッチ・スクリーン８３２およびディスプレイ８５４を組み合わせて１つの入力／出力デバイスにすることができる。入力デバイス８３０は、自然ユーザー・インターフェース（ＮＵＩ）を含むことができる。
【００７５】
[0081]  当技術分野において十分に理解されているように、ワイヤレス・モデム（１つまたは複数）８６０をアンテナ（１つまたは複数）（図示せず）に結合することができ、プロセッサー回路８１０と外部デバイスとの間における双方向通信をサポートすることができる。モデム（１つまたは複数）８６０は、包括的に示されており、モバイル通信ネットワーク８０４および／または他の無線系モデム（例えば、Ｂｌｕｅｔｏｏｔｈ７６４および／またはＷｉ−Ｆｉ７６２）と通信するためのセルラー・モデム８６６を含むことができる。セルラー・モデム８６６は、ＧＳＭ、３Ｇ、４Ｇ、５Ｇ等のような任意の適した通信規格または技術にしたがって通話(phone call)（そして随意にデーター送信）を可能にするように構成することができる。ワイヤレス・モデム（１つまたは複数）８６０の少なくとも１つは、通例、１つのセルラー・ネットワーク内、セルラー・ネットワーク間、またはモバイル・デバイスと公衆電話交換網（ＰＳＴＮ）との間におけるデーターおよび音声通信のためのＧＳＭネットワークのような、１つ以上のセルラー・ネットワークとの通信に合わせて構成される。
【００７６】
[0082]  モバイル・デバイス８００は、更に、少なくとも１つの入力／出力ポート８８０、電源８８２、汎地球測位システム（ＰＧＳ）受信機のような衛星ナビゲーション・システム受信機８８４、加速度計８８６、および／またはＵＳＢポート、ＩＥＥＥ１３９４（ＦｉｒｅＷｉｒｅ）ポート、および／またはＲＳ−２３２ポートとすることができる物理コネクター８９０も含むことができる。当業者には認められるであろうが、任意のコンポーネントが存在しないことが可能であり、他のコンポーネントが付加的に存在することも可能であるので、図示するコンポーネント８０２は必須ではなく、全てを含むのでもない。
【００７７】
[0083]  更に、図９は、実施形態を実施することができるコンピューティング・デバイス９００の例示的な実施態様を示し、この実施態様は、コンピューティング・デバイス１０４、コンピューティング・デバイス２０４、コンピューティング・デバイス２４４、サーバー１０２を含む。本明細書において提供するコンピューティング・デバイス９００の説明は、例示の目的に限って行われるのであり、限定することは意図していない。関連技術（１つまたは複数）において習熟した者には分かるであろうが、実施形態は更に他の種類のコンピューター・システムにおいて実施することもできる。
【００７８】
[0084]  図９に示すように、コンピューティング・デバイス９００は、プロセッサー回路９０２と呼ばれる１つ以上のプロセッサー、システム・メモリー９０４、およびバス９０６を含む。バス９０６は、システム・メモリー９０４からプロセッサー回路９０２までを含む種々のシステム・コンポーネントを結合する。プロセッサー回路９０２は、中央処理ユニット（ＣＰＵ）、マイクロコントローラー、マイクロプロセッサー、および／または他の物理ハードウェア・プロセッサー回路として、１つ以上の物理ハードウェア電気回路デバイス・エレメントおよび／または集積回路デバイス（半導体材料チップまたはダイ）に実装される電気および／または光回路である。プロセッサー回路９０２は、オペレーティング・システム９３０、アプリケーション・プログラム９３２、他のプログラム９３４等のプログラム・コードというような、コンピューター読み取り可能媒体に格納されているプログラム・コードを実行することができる。バス９０６は、様々な型式のバス構造の内任意のものの１つ以上を表し、メモリー・バスまたはメモリー・コントローラー、周辺バス、加速グラフィック・ポート、および種々のバス・アーキテクチャの内任意のものを使用するプロセッサーまたはローカル・バスを含む。システム・メモリー９０４は、リード・オンリー・メモリー（ＲＯＭ）９０８およびランダム・アクセス・メモリー（ＲＡＭ）９１０を含む。基本入力／出力システム９１２（ＢＩＯＳ）はＲＯＭ９０８に格納されている。
【００７９】
[0085]  また、コンピューティング・デバイス９００は、次のドライブ、ハード・ディスクから読み出しハード・ディスクに書き込むためのハード・ディスク・ドライブ９１４、リムーバブル磁気ディスク９１８から読み出しリムーバブル磁気ディスク９１８に書き込むための磁気ディスク・ドライブ９１６、およびＣＤ  ＲＯＭ、ＤＶＤ  ＲＯＭ、または他の光媒体のようなリムーバブル光ディスク９２２から読み出しリムーバブル光ディスク９２２に書き込むための光ディスク・ドライブ９２０の内１つ以上を有する。ハード・ディスク・ドライブ９１４、磁気ディスク・ドライブ９１６、および光ディスク・ドライブ９２０は、それぞれ、ハード・ディスク・ドライブ・インターフェース９２４、磁気ディスク・ドライブ・インターフェース９２６、および光ドライブ・インターフェース９２８によって、バス９０６に接続されている。これらのドライブおよびその関連するコンピューター読み取り可能媒体は、コンピューター読み取り可能な命令、データー構造、プログラム・モジュール、およびコンピューターについてのその他のデーターの不揮発性格納に対応する(provide)。ハード・ディスク、リムーバブル磁気ディスク、およびリムーバブル光ディスクについて説明したが、フラッシュ・メモリー・カード、ディジタル・ビデオ・ディスク、ＲＡＭ、ＲＯＭ、およびその他のハードウェア記憶媒体のような、他の種類のハードウェア・ベースのコンピューター読み取り可能記憶媒体も、データーを格納するために使用することができる。
【００８０】
[0086]  ハード・ディスク、磁気ディスク、光ディスク、ＲＯＭ、またはＲＡＭ上に多数のプログラム・モジュールを格納することができる。これらのプログラムには、オペレーティング・システム９３０、１つ以上のアプリケーション・プログラム９３２、他のプログラム９３４、およびプログラム・データー９３６が含まれる。アプリケーション・プログラム９３２または他のプログラム９３４は、例えば、図１〜図７を参照して説明したデバイス・コンプライアンス管理の実施形態を含む、前述のシステムを実装するためのコンピューター・プログラム・ロジック（例えば、コンピューター・プログラム・コードまたは命令）を含むことができる。
【００８１】
[0087]  ユーザーは、キーボード９３８およびポインティング・デバイス９４０のような入力デバイスを介して、コマンドおよび情報をコンピューティング・デバイス９００に入力することができる。他の入力デバイス（図示せず）には、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナー、タッチ・スクリーンおよび／またはタッチ・パッド、音声入力を受けるための音声認識システム、ジェスチャ入力を受けるためのジェスチャ認識システム等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、バス９０６に結合されたシリアル・ポート・インターフェース９４２を介してプロセッサー回路９０２に接続されるが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス（ＵＳＢ）のような他のインターフェースによって接続されてもよい。
【００８２】
[0088]  また、ビデオ・アダプター８４６のようなインターフェースを介して、表示画面９４４もバス９０６に接続されている。表示画面８４４は、コンピューティング・デバイス９００の外部にあっても、その中に組み込まれてもよい。表示画面９４４は、情報を表示するだけでなく、ユーザー・コマンドおよび／または他の情報を受け取る（例えば、接触、指のジェスチャ、仮想キーボード等によって）ためのユーザー・インターフェースとなることも可能である。表示画面９４４に加えて、コンピューティング・デバイス９００はスピーカーおよびプリンターのような他の周辺出力デバイス（図示せず）も含むことができる。
【００８３】
[0089]  コンピューティング・デバイス９００は、アダプターまたはネットワーク・インターフェース９５０、モデム９５２、またはネットワークを通じて通信を確立するための他の手段を介して、ネットワーク９４８（例えば、インターネット）に接続される。モデム９５２は、内蔵型でも外付け型でもよく、図９に示すように、シリアル・ポート・インターフェース９４２を介してバス９０６に接続することができ、またはパラレル・インターフェースを含む他の型のインターフェースを使用して、バス９０６に接続することもできる。
【００８４】
[0090]  本明細書において使用する場合、「コンピューター・プログラム媒体」、「コンピューター読み取り可能媒体」、および「コンピューター読み取り可能記憶媒体」という用語は、通常、ハード・ディスク・ドライブ９１４に関連付けられたハード・ディスク、リムーバブル磁気ディスク９１８、リムーバブル光ディスク９２２、ＲＡＭ、ＲＯＭ、フラッシュ・メモリー・カード、ディジタル・ビデオ・ディスク、ｚｉｐディスク、ＭＥＭ、ナノテクノロジー・ベースの記憶デバイスというような他の物理ハードウェア媒体、および更に別の型式の物理／有形ハードウェア記憶媒体（図９のシステム・メモリー９０４を含む）というような、物理ハードウェア媒体を指すために使用される。このようなコンピューター読み取り可能記憶媒体は、通信媒体から区別され、これらとは重なり合わない（通信媒体を含まない）。通信媒体は、通例、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、またはその他のデーターを、搬送波のような変調データー信号内に具体化する。「変調データー信号」という用語は、その特性の内１つ以上が、信号内に情報をエンコードするような方法で設定または変更された信号を意味する。一例として、そして限定ではなく、通信媒体は、音響、ＲＦ、赤外線、およびその他のワイヤレス媒体というようなワイヤレス媒体と、有線媒体とを含む。また、実施形態はこのような通信媒体も対象とする。
【００８５】
[0091]  先に注記したように、コンピューター・プログラムおよびモジュール（アプリケーション・プログラム９３２および他のプログラム９３４を含む）は、ハード・ディスク、磁気ディスク、光ディスク、ＲＯＭ、ＲＡＭ、またはその他のハードウェア記憶媒体上に格納することができる。このようなコンピューター・プログラムは、ネットワーク・インターフェース９５０、シリアル・ポート・インターフェース９５２、または任意の他の型式のインターフェースを介して受信することもできる。このようなコンピューター・プログラムは、アプリケーションによって実行またはロードされると、コンピューティング・デバイス９００が、本明細書において論じた実施形態の機能(features)を実現することを可能にする。したがって、このようなコンピューター・プログラムは、コンピューティング・デバイス９００のコントローラーを表す。
【００８６】
[0092]  また、実施形態は、任意のコンピューター読み取り可能媒体上に格納されたコンピューター・コードまたは命令を含むコンピューター・プログラム製品も対象にする。このようなコンピューター・プログラム製品は、ハード・ディスク・ドライブ、光ディスク・ドライブ、メモリー・デバイス・パッケージ、携帯用メモリー・スティック、メモリー・カード、およびその他の型式の物理ストレージ・ハードウェアを含む。
【００８７】
ＩＶ．追加の例示的な実施形態
[0093]  実施形態では、モバイル・デバイスは、少なくとも１つのプロセッサー回路と、少なくとも１つのプロセッサー回路によって実行されるように構成されたプログラム・コードを格納する少なくとも１つのメモリーとを備える。プログラム・コードは、モバイル・デバイスにコンフィギュレーション・シナリオを順守させるために、モバイル・デバイスによって実装するコンプライアンス設定を記述するコンフィギュレーション情報を、サーバーから受信し、コンフィギュレーション情報を格納するように構成されたコンフィギュレーション・マネージャと、コンフィギュレーション・マネージャから、コンプライアンス設定をモバイル・デバイス内に実装するトリガーを受信し、コンフィギュレーション情報によって示され、コンプライアンス設定を実装するコンフィギュレーション・プロセスを記述する状態機械を識別し、この状態機械を実行して、モバイル・デバイスにコンプライアンス設定を組み込むように構成されたオーケストレーター・エンジンとを備える。
【００８８】
[0094]  前述のモバイル・デバイスの実施形態において、オーケストレーター・エンジンが、更に、状態機械を実行して、モバイル・デバイスがコンフィギュレーション情報にしたがってしかるべく構成されているか否か判定するように構成される。
【００８９】
[0095]  前述のモバイル・デバイスの実施形態において、オーケストレーター・エンジンが、更に、状態機械を実行することによって生成されたコンフィギュレーション結果をコンフィギュレーション情報データー・ストアに格納するように構成され、コンフィギュレーション・マネージャが、更に、コンフィギュレーション結果をコンフィギュレーション情報データー・ストアから入手し、コンフィギュレーション結果をサーバーに送信するように構成される。
【００９０】
[0096]  前述のモバイル・デバイスの実施形態において、コンフィギュレーション・マネージャが、更に、コンフィギュレーション情報を解析し、コンフィギュレーション情報に伴うエラーを判定し、エラーの訂正をサーバーに要求するように構成される。
【００９１】
[0097]  前述のモバイル・デバイスの実施形態において、コンフィギュレーション・マネージャが、更に、コンフィギュレーション情報をコンフィギュレーション情報データー・ストアに格納し、格納したコンフィギュレーション情報をサーバーに送信し、コンフィギュレーション情報をサーバーに送ったことに応答して、更新コンフィギュレーション情報および／または追加のコンフィギュレーション情報をサーバーから受信するように構成される。
【００９２】
[0098]  前述のモバイル・デバイスの実施形態において、状態機械が、モバイル・デバイス上の状態機械データー・ストアに格納される。
【００９３】
[0099]  前述のモバイル・デバイスの実施形態において、コンフィギュレーション情報が、サーバーから、拡張可能マークアップ言語（ＸＭＬ）ファイルで受信され、拡張マークアップ言語（ＸＭＬ）ファイルが、コンプライアンス設定に関連付けられたペイロードと、ペイロードのダウンロードおよび処理のための対応するユニフォーム・リソース識別子（ＵＲＩ）とを含む。
【００９４】
[0100]  他の実施形態において、方法は、モバイル・デバイスにコンフィギュレーション・シナリオを順守させるために、モバイル・デバイスによって実装するコンプライアンス設定を記述するコンフィギュレーション情報を、サーバーから受信するステップと、コンフィギュレーション情報を格納するステップと、モバイル・デバイスにおいてコンプライアンス設定を実装するトリガーを受信するステップと、コンフィギュレーション情報によって示され、コンプライアンス設定を実装するコンフィギュレーション・プロセスを記述する状態機械を識別するステップと、状態機械を実行して、モバイル・デバイスにコンプライアンス設定を組み込むステップとを含む。
【００９５】
[0101]  実施形態において、前述の方法は、更に、状態機械を実行して、モバイル・デバイスがコンフィギュレーション情報にしたがってしかるべく構成されているか否か判定するステップを含む。
【００９６】
[0102]  実施形態において、前述の方法は、更に、状態機械を実行することによって生成されたコンフィギュレーション結果をコンフィギュレーション情報データー・ストアに格納するステップと、コンフィギュレーション情報データー・ストアからコンフィギュレーション結果を入手するステップと、コンフィギュレーション結果をサーバーに送信するステップとを含む。
【００９７】
[0103]  実施形態において、前述の方法は、更に、コンフィギュレーション情報を解析するステップと、コンフィギュレーション情報に伴うエラーを判定するステップと、エラーの訂正をサーバーに要求するステップとを含む。
【００９８】
[0104]  実施形態において、前述の方法は、更に、コンフィギュレーション情報をコンフィギュレーション情報データー・ストアに格納するステップと、格納したコンフィギュレーション情報をサーバーに送信するステップと、コンフィギュレーション情報をサーバーに送ったことに応答して、更新コンフィギュレーション情報および／または追加のコンフィギュレーション情報をサーバーから受信するステップとを含む。
【００９９】
[0105]  前述の方法の実施形態において、状態機械が、モバイル・デバイス上の状態機械データー・ストア上に格納される。
【０１００】
[0106]  前述の方法の実施形態において、コンフィギュレーション情報が、サーバーから、拡張マークアップ言語（ＸＭＬ）ファイルで受信され、拡張マークアップ言語（ＸＭＬ）ファイルが、コンプライアンス設定に関連付けられたペイロードと、ペイロードのダウンロードおよび処理のための対応するユニフォーム・リソース識別子（ＵＲＩ）とを含む。
【０１０１】
[0107]  他の実施形態において、コンピューター読み取り可能記憶媒体は、それ自体にプログラム命令が記録されており、プログラム命令がモバイル・デバイスの少なくとも１つの処理回路によって実行されると、方法を実行する。この方法は、サーバーから、モバイル・デバイスにコンフィギュレーション・シナリオを順守させるために、モバイル・デバイスによって実装するコンプライアンス設定を記述するコンフィギュレーション情報を受信するステップと、コンフィギュレーション情報を格納するステップと、モバイル・デバイスにおいてコンプライアンス設定を実装するトリガーを受信するステップと、コンフィギュレーション情報によって示され、コンプライアンス設定を実装するコンフィギュレーション・プロセスを記述する状態機械を識別するステップと、状態機械を実行して、モバイル・デバイスにコンプライアンス設定を組み込むステップとを含む。
【０１０２】
[0108]  前述の方法の実施形態において、状態機械を実行して、モバイル・デバイスがコンフィギュレーション情報にしたがってしかるべく構成されているか否か判定するステップを含む。
【０１０３】
[0109]  前述の方法の実施形態において、この方法が、更に、状態機械を実行することによって生成されたコンフィギュレーション結果をコンフィギュレーション情報データー・ストアに格納するステップと、コンフィギュレーション情報データー・ストアからコンフィギュレーション結果を入手するステップと、コンフィギュレーション結果をサーバーに送信するステップとを含む。
【０１０４】
[0110]  前述の方法の実施形態において、コンフィギュレーション情報を解析するステップと、コンフィギュレーション情報に伴うエラーを判定するステップと、エラーの訂正をサーバーに要求するステップとを含む。
【０１０５】
[0111]  前述の方法の実施形態において、コンフィギュレーション情報をコンフィギュレーション情報データー・ストアに格納するステップと、格納したコンフィギュレーション情報をサーバーに送信するステップと、コンフィギュレーション情報をサーバーに送ったことに応答して、更新コンフィギュレーション情報および／または追加のコンフィギュレーション情報をサーバーから受信するステップとを含む。
【０１０６】
[0112]  前述の方法の実施形態において、コンフィギュレーション情報が、サーバーから、拡張マークアップ言語（ＸＭＬ）ファイルで受信され、拡張マークアップ言語（ＸＭＬ）ファイルが、コンプライアンス設定に関連付けられたペイロードと、ペイロードのダウンロードおよび処理のための対応するユニフォーム・リソース識別子（ＵＲＩ）とを含む。
【０１０７】
Ｖ．結論
[0113]  以上、種々の実施形態について説明したが、これらは例として提示されたに過ぎず限定ではないことは理解されてしかるべきである。尚、これらの実施形態の主旨および範囲から逸脱することなく、形態および詳細において種々の変更を行えることは、当業者には明白であろう。したがって、実施形態の広さ(breadth)および範囲は、前述した例示的な実施形態のいずれによっても限定されず、以下の特許請求の範囲およびその均等のみにしたがって定められてしかるべきである。
【図１】
2021533454.tif 000006
【図２Ａ】
2021533454.tif 000007
【図２Ｂ】
2021533454.tif 000008
【図３】
2021533454.tif 000009
【図４】
2021533454.tif 000010
【図５】
2021533454.tif 000011
【図６】
2021533454.tif 000012
【図７】
2021533454.tif 000013
【図８】
2021533454.tif 000014
【図９】
2021533454.tif 000015
【国際調査報告】
2021533454.tif 000016
2021533454.tif 000017