(57)【特許請求の範囲】
【請求項１】
方法であって、
企業システムに備えられるコンピュータシステムが、前記企業システムにアクセスする複数のリモート装置のために、前記企業システムへのアクセス権の変更に対応する変更イベントの種類を判断するステップと、
前記コンピュータシステムが、前記変更イベントの種類に関連するアクションプロセスクラスを特定するステップとを含み、前記アクションプロセスクラスは、前記変更イベントの種類に応じて実行されるアクションプロセスを定義し、
前記コンピュータシステムが、前記アクセス権の変更に応じて前記アクションプロセスを実行するように、前記コンピュータシステムに備えられて前記複数のリモート装置と通信可能な複数のコンピューティングノードの各々の処理負荷に基づいて、前記複数のコンピューティングノードから一組のコンピューティングノードを選択するステップと、
前記コンピュータシステムが、前記複数のリモート装置のうち第１組のリモート装置のために、当該第１組のリモート装置に対応する変更イベントエントリに基づいて、第１変更イベントオブジェクトを設定するステップとを含み、
前記第１変更イベントオブジェクトは、前記第１組のリモート装置に対応する変更イベントエントリが示す前記第１組のリモート装置の各リモート装置を特定する情報および前記変更イベントの種類を含み、
前記コンピュータシステムが、前記複数のリモート装置のうち第２組のリモート装置のために、当該第２組のリモート装置に対応する変更イベントエントリに基づいて、第２変更イベントオブジェクトを設定するステップを含み、
前記第２変更イベントオブジェクトは、前記第２組のリモート装置に対応する変更イベントエントリが示す前記第２組のリモート装置の各リモート装置を特定する情報および前記変更イベントの種類を含み、
前記第１組のリモート装置の各リモート装置は、前記第２組のリモート装置の各リモート装置とは異なり、
前記一組のコンピューティングノードのうち第１コンピューティングノードが、前記第１変更イベントオブジェクトを用いて、第１アクションプロセスオブジェクトに対応のアクションプロセスを開始するステップを含み、前記第１アクションプロセスオブジェクトは、前記アクションプロセスクラスに基づいて設定され、前記第１アクションプロセスオブジェクトに対応のアクションプロセスは、前記第１変更イベントオブジェクトにより特定される前記第１組のリモート装置のそれぞれに第１指示を伝送するアクションプロセスを含み、前記第１組のリモート装置のそれぞれは前記第１指示を受信すると、当該第１指示に従い前記変更イベントに基づき前記企業システムに対するアクセス権を調整し、
前記一組のコンピューティングノードのうち第２コンピューティングノードが、前記第２変更イベントオブジェクトを用いて、第２アクションプロセスオブジェクトに対応のアクションプロセスを開始するステップを含み、前記第２アクションプロセスオブジェクトは、前記アクションプロセスクラスに基づいて設定され、前記第２アクションプロセスオブジェクトに対応のアクションプロセスは、前記第２変更イベントオブジェクトにより特定される前記第２組のリモート装置のそれぞれに第２指示を伝送するアクションプロセスを含み、前記第２組のリモート装置のそれぞれは前記第２指示を受信すると、当該第２指示に従い前記変更イベントに基づき前記企業システムに対するアクセス権を調整する、方法。
【請求項２】
前記コンピュータシステムが、前記第１組のリモート装置および前記第２組のリモート装置の各リモート装置に対応する変更イベントエントリを変更イベントキューに追加するステップをさらに含み、
前記変更イベントエントリは、さらに、前記アクセス権の変更の情報を示す、請求項１に記載の方法。
【請求項３】
前記第１変更イベントオブジェクトを設定するステップは、前記第１組のリモート装置に対応する変更イベントエントリに基づいて、前記第１変更イベントオブジェクトをインスタンス化するステップを含む、請求項２に記載の方法。
【請求項４】
前記第１組のリモート装置の各リモート装置からの応答の受信に応じて、前記変更イベントキューから、前記第１組のリモート装置に対応する前記変更イベントエントリを削除するステップをさらに含み、
前記応答は、前記第１組のリモート装置の各リモート装置が前記変更イベントの種類に対応する前記アクセス権の変更を適用したことを示す、請求項２または３に記載の方法。
【請求項５】
前記第１変更イベントオブジェクトを用いて、第１アクションプロセスオブジェクトに対応の前記アクションプロセスを開始するステップは、
前記第１変更イベントオブジェクトを用いて、前記アクションプロセスクラスをインスタンス化することによって、前記第１アクションプロセスオブジェクトを設定するステップと、
前記第１アクションプロセスオブジェクトを用いて、前記アクションプロセスを呼び出すステップとを含む、請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記第１アクションプロセスオブジェクトに応じて開始される前記アクションプロセスと、前記第２アクションプロセスオブジェクトに応じて開始される前記アクションプロセスとは、並行に開始される、請求項１から５のいずれか１項に記載の方法。
【請求項７】
前記変更イベントの種類は、ポリシーの変更を含み、
前記ポリシーの変更は、遵守ポリシーの変更、登録ポリシーの変更、ワークスペースポリシーの変更、装置ポリシーの変更、またはそれらの組み合わせを含む、請求項１から６のいずれか１項に記載の方法。
【請求項８】
一組のリモート装置に対して実行される前記アクションプロセスは、前記一組のリモート装置の各リモート装置に指示して、前記ポリシーの変更を適用することを含む、請求項７に記載の方法。
【請求項９】
前記変更イベントの種類は、アプリケーションの変更を含み、
前記アプリケーションの変更は、前記複数のリモート装置に利用可能なアプリケーションのカタログにアプリケーションの追加、前記カタログからアプリケーションの削除、前記カタログ内のアプリケーションのバージョンの変更、またはそれらの組み合わせを含む、請求項１から６のいずれか１項に記載の方法。
【請求項１０】
一組のリモート装置に対して実行される前記アクションプロセスは、前記一組のリモート装置の各リモート装置に指示して、前記アプリケーションの変更を適用することを含む、請求項９に記載の方法。
【請求項１１】
前記変更イベントの種類は、前記企業システムへのアクセス権に関連する同期設定の変更を含む、請求項１から６のいずれか１項に記載の方法。
【請求項１２】
一組のリモート装置に対して実行される前記アクションプロセスは、前記一組のリモート装置の各リモート装置に指示して、前記同期設定の変更を適用することを含む、請求項１１に記載の方法。
【請求項１３】
前記変更イベントオブジェクトおよび前記アクションプロセスオブジェクトは、通常のＪａｖａ（登録商標）オブジェクトである、請求項１から１２のいずれか１項に記載の方法。
【請求項１４】
プロセッサに、請求項１から１３のいずれか１項に記載の方法を実行させるプログラム。
【請求項１５】
企業システムに備えられるコンピュータシステムであって、
１つ以上のプロセッサと、
メモリとを備え、前記メモリは、前記１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに複数のステップを行わせる命令を格納し、前記複数のステップは、
前記企業システムにアクセスする複数のリモート装置のために、企業システムへのアクセス権の変更に対応する変更イベントの種類を判断するステップと、
前記変更イベントの種類に関連するアクションプロセスクラスを特定するステップを含み、前記アクションプロセスクラスは、前記変更イベントの種類に応じて実行されるアクションプロセスを定義し、前記複数のステップはさらに、
前記アクセス権の変更に応じて前記アクションプロセスを実行するように、前記コンピュータシステムに備えられて前記複数のリモート装置と通信可能な複数のコンピューティングノードの各々の処理負荷に基づいて、前記複数のコンピューティングノードから一組のコンピューティングノードを選択するステップと、
前記複数のリモート装置内の第１組のリモート装置のために、当該第１組のリモート装置に対応する変更イベントエントリに基づいて第１変更イベントオブジェクトを設定するステップと、を含み、
前記第１変更イベントオブジェクトは、前記第１組のリモート装置に対応する変更イベントエントリが示す前記第１組のリモート装置の各リモート装置を特定する情報および前記変更イベントの種類を含み、前記複数のステップは、さらに、
前記複数のリモート装置のうち第２組のリモート装置のために、当該第２組のリモート装置に対応する変更イベントエントリに基づいて、第２変更イベントオブジェクトを設定するステップを含み、
前記第２変更イベントオブジェクトは、前記第２組のリモート装置に対応する変更イベントエントリが示す前記第２組のリモート装置の各リモート装置を特定する情報および前記変更イベントの種類を含み、
前記第１組のリモート装置の各リモート装置は、前記第２組のリモート装置の各リモート装置とは異なり、前記複数のステップは、さらに、
前記一組のコンピューティングノードのうち第１コンピューティングノードに、前記第１変更イベントオブジェクトを用いて、第１アクションプロセスオブジェクトに対応のアクションプロセスを開始させるステップを含み、前記第１アクションプロセスオブジェクトは、前記アクションプロセスクラスに基づいて設定され、前記第１アクションプロセスオブジェクトに対応のアクションプロセスは、前記第１変更イベントオブジェクトにより特定される前記第１組のリモート装置のそれぞれに第１指示を伝送するアクションプロセスを含み、前記第１組のリモート装置のそれぞれは前記第１指示を受信すると、当該第１指示に従い前記変更イベントに基づき前記企業システムに対するアクセス権を調整し、前記複数のステップは、さらに、
前記一組のコンピューティングノードのうち第２コンピューティングノードに、前記第２変更イベントオブジェクトを用いて、第２アクションプロセスオブジェクトに対応のアクションプロセスを開始させるステップを含み、前記第２アクションプロセスオブジェクトは、前記アクションプロセスクラスに基づいて設定され、前記第２アクションプロセスオブジェクトに対応のアクションプロセスは、前記第２変更イベントオブジェクトにより特定される前記第２組のリモート装置のそれぞれに第２指示を伝送するアクションプロセスを含み、前記第２組のリモート装置のそれぞれは前記第２指示を受信すると、当該第２指示に従い前記変更イベントに基づき前記企業システムに対するアクセス権を調整する、システム。
【請求項１６】
前記複数のステップは、さらに、
前記複数のコンピューティングノードの各コンピューティングノードの前記処理負荷を計算するステップを含み、
前記コンピューティングノードの前記処理負荷は、前記コンピューティングノードにより開始されたアクションプロセスの数に基づいて計算され、
前記第１コンピューティングノードは、アクションプロセス閾値に基づいて、前記一組のコンピューティングノード用に選択され、
前記一組のコンピューティングノードの各コンピューティングノードは、前記アクションプロセス閾値を満たす前記一組のコンピューティングノードの各コンピューティングノードの前記処理負荷に基づいて、選択される、請求項１５に記載のシステム。
【請求項１７】
前記第１アクションプロセスオブジェクトを用いて呼び出される前記アクションプロセスは、前記アクセス権の変更を示す命令を前記第１組のリモート装置の各リモート装置に送信することを含み、
前記アクセス権の変更を示す命令は、前記アクセス権の変更を適用するように前記第１組のリモート装置の少なくとも１つのリモート装置に指示する、請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１４年９月２４日に出願され、「モバイルセキュリティマネージャ（ＭＳＭ）」と題された米国仮特許出願第６２／０５４５４４号の利益および優先権を主張し、２０１５年４月１７日に出願され、「企業システム内の装置の変更イベントの管理」と題された米国非仮出願第１４／６９００３４号の利益および優先権を主張するものであり、両方の出願の全体があらゆる目的で参照により本開示に援用される。
【背景技術】
【０００２】
背景
本開示は、一般的に、リモート装置を用いて企業（エンタープライズ）システムに対するアクセスに関連するイベントの管理に関する。より詳細には、企業システムへのアクセス権の変更に関連するイベントに関する情報をリモート装置に伝送するための技術が開示される。
【０００３】
モバイル装置を含む装置の普及に伴い、多くの企業は、ＢＹＯＤ（Bring Your Own Device）ポリシーを採用している。ＢＹＯＤによって、ユーザは、自分の装置を持ち込み、企業のシステムに接続して、企業により提供されたリソース（例えば、アプリケーションまたはデータ）にアクセスすることができる。ＢＹＯＤポリシーによって、ユーザは、自分の装置を個人使用のために引き続き使用することができる。企業システム内のユーザ所有装置のさまざまな用途（例えば、個人用途または企業用途）を管理することは、企業にとって最も重要な課題である。ユーザ所有装置による企業システムへのアクセス権を許可すると、新たなセキュリティリスクをもたらす可能性がある。ユーザ所有装置が企業システムへのアクセス権を取得すると、企業システムは、非遵守装置または装置の非遵守使用によるセキュリティリスクに曝される可能性がある。ユーザ所有装置が侵入（例えば、ハッキング、盗難、紛失）された場合、セキュリティ問題がより大きくなる。
【０００４】
企業システムにアクセスするユーザ所有装置および企業装置の管理を容易にするために、一部の企業は、モバイル装置管理（ＭＤＭ）システムおよび／またはモバイルアプリケーション管理（ＭＡＭ）システムを実装する。これらの管理システムは、企業システムへのアクセス権の管理および制御を促進することによって、企業システムおよび企業リソースの安全を確保することができる。企業システムへのアクセス権の管理および制御は、遵守およびリソースに関する情報の伝送、および企業システムへのアクセス権を維持するために取るべき措置を含む。
【０００５】
数千のユーザ（例えば、従業員、契約者および顧客）を所有する企業は、企業にアクセスする数千台の装置のアクセス権を管理する課題に直面する可能性がある。任意の時点において、企業は、企業システムへのアクセス権の変更を多くの装置に通知するために、これらの装置と通信する必要がある。情報を通信する必要のある装置の数によって、多大な負担が情報の伝送を管理するシステムにかかることになる。情報を装置に伝送することを促進するために利用されるシステムは、過負荷になることがあり、通知される必要のある装置の数によって応答しない場合もある。多くの場合、企業システムへのアクセス権の変更に関連する情報の伝送が遅れたり、配信されないことがある。より複雑なことに、多くの装置は、企業システムへのアクセス権に関連する複数の変更に影響される可能性があるため、これらの複数の変更に関する情報をこれらの装置に送信する必要がある。多くの場合、装置に発生したエラー（例えば、装置エラーまたは通信エラー）により、アクセス権の変更に関する情報が装置によって処理忘れまたは処理されなかったことがある。場合によって、以前にエラーが発生した装置に同様の変更に関する情報を通知するときに、エラーがこの装置に発生している可能性がある。そのため、一部の装置は、企業システムへのアクセス権の変更に関する情報を受信することができない。たとえば、あるアクセスポリシーがリソースへのアクセス権を取り消し、別のアクセスポリシーが取り消されたリソースへのアクセス権を提供する場合、最終的にそのリソースへのアクセス権が、アクセスポリシーに基づいたイベントの順序によって決定される。
【０００６】
メッセージングサービス、例えばＪａｖａ（登録商標）メッセージングサービス（ＪＭＳ）を実装することによって、出版-購読モデルをサポートすることができる。このモデルは、（出版者として機能する）企業システム内のアイテムの変更を、トピックの変更に興味ある全ての購読者に通知することができる。サーバクラスタ内の各ノードに１人のトピック購読者が存在する場合、メッセージングサービスは、購読者の間の変更処理を促進できなくなり、重複の作業または誤った配信順序をもたらす。メッセージングサービスは、鈍重であるため、企業システムへのアクセス権の変更に対応する新種または異種トピックを管理することができない。
【０００７】
上述した多くの通信課題によって、一部の装置は、企業システムへのアクセス権の変更に関する情報を受信できないことがある。企業は、企業システムにアクセスするユーザ所有装置および企業装置の両方を管理するための情報の伝送を改善する方法を模索している。
【発明の概要】
【課題を解決するための手段】
【０００８】
簡単な概要
本開示は、一般的に、リモート装置を用いて企業システムに対するアクセスに関連するイベントの管理に関する。より詳細には、企業システムへのアクセス権の変更に関連するイベントに関する情報をリモート装置に伝送するための技術が開示される。企業システムへのアクセス（アクセス権）は、リソースへのアクセスおよび／または企業システムへのアクセスを提供するリモート装置の安全な環境におけるアクションへのアクセスを含んでもよい。装置アクセス管理システムを実装して、企業システムにアクセスするリモート装置との通信を促進することができる。
【０００９】
装置アクセス管理システムは、変更イベント（例えば、企業システムへのアクセス権の変更）の種類に基づいて、変更イベントに関する情報を管理することができる。変更イベントの例としては、ポリシーの変更、アプリケーションの変更、および設定の変更を含むがこれらに限定されない。変更イベントに関する情報は、変更イベントの種類に基づいて、オブジェクト（「変更イベントオブジェクト」）、例えば普通のＪａｖａ（登録商標）オブジェクトとして実装されたデータ構造に保存されてもよい。異なる種類の変更イベントに応じて、メタデータクラスを定義することができる。メタデータクラスは、そのメタデータクラスに基づいて定義された変更イベントオブジェクトに保存することができる１つ以上のフィールド情報を定義することができる。新規のまたは異なる種類の変更イベントが定義される場合、新たなメタデータクラスを定義することができる。変更イベントの種類に基づいて、変更イベントオブジェクトを作成して、変更イベントに関する情報を保存することができる。
【００１０】
変更イベントに関する情報を永続的ものにすることにより、変更イベントに影響されるリモート装置に情報を確実に伝送するために、装置アクセス管理システムは、キュー（変更イベントキュー）を実装することができる。変更イベントキューは、変更イベントに応じて、各変更イベントオブジェクトに対応する情報（例えば、変更イベントエントリ）を保存することができる。装置アクセス管理システムは、変更イベントオブジェクト内の情報をリモート装置に送信し、変更イベントを伝送することによって、変更イベントを装置に通知することができる。いくつかの実施形態において、装置アクセス管理システムは、通知サービス（例えば、プッシュ通知サービス）を用いて、変更イベントをリモート装置に伝送することができる。リモート装置は、通知サービスと通信することによって、変更イベントに関する通知を受信することができる。変更イベントエントリは、変更イベントが変更イベントエントリに対応する変更イベントに影響される全ての装置に通知されるまで、変更イベントキューに残されてもよい。いくつかの実施形態において、変更イベントの通信を再試行するために、変更イベントをリモート装置に再送信してもよい。
【００１１】
いくつかの実施形態において、変更イベントの種類に応じて、アクションプロセスを定義することができる。アクションプロセスは、アクションプロセスクラスによって定義されたルーチンであってもよい。アクションプロセスは、変更イベントの種類に応じて開始することができる。変更イベントの種類は、その種類の変更イベントを表すアクションプロセスクラスに対応する。アクションプロセスクラスは、変更イベント（例えば、変更イベントオブジェクト）に関する情報を、その変更イベントに対応する変更に影響されるリモート装置に伝送することを含むことができる。リモート装置に伝送された情報は、変更イベントに基づいてアクセス権を調整するようにリモート装置に指示する命令またはコマンドを含むことができる。
【００１２】
いくつかの実施形態において、装置アクセス管理システムは、変更イベントに対応するアクセスプロセスを実行するために、複数のコンピューティングノードを利用することができる。変更イベントが通知されるリモート装置の数が多い場合、複数のコンピューティングノードは、アクションプロセスを実行することができる。例えば、変更イベントに影響されるリモート装置が何千台もあると判断した場合、複数のコンピューティングノードは、変更イベントを異なるリモート装置に通知するアクションプロセスを実行するよう要請され得る。各コンピューティングノードは、アクションプロセスの異なるインスタンスを実装することによって、変更イベントを異なる組のリモート装置に伝送することができる。単一コンピューティングノードの上で全てのリモート装置のアクションプロセスを実行するのではなく、複数のコンピューティングノードを使用して、変更イベントに影響される異なるリモート装置に対応するアクションプロセスを実行する時の負荷を分散することができる。リモート装置に対応するアクションプロセスを実行するように指定されたコンピューティングノードは、各リモート装置が変更イベントに関する通知を受信するまで、変更イベントを管理することができる。いくつかの実施形態において、リモート装置は、変更イベントを承認したことを示す情報をコンピューティングノードに送信することができる。アクションプロセスを複数のコンピューティングノード間で分散することにより、変更イベントをリモート装置に伝送するパフォーマンス効率を改善することができる。アクションプロセスの処理負荷を複数のコンピューティングノード間に分散することができるため、単一のコンピューティングノードでは、変更イベントに影響される全てのリモート装置のアクションプロセスを実行しなくても済む。
【００１３】
本発明のいくつかの実施形態は、コンピューティングシステムによって実現することができる。コンピューティングシステムは、装置アクセス管理システムの一部として実装することができる。コンピューティングシステムは、方法および処理を実施することができる。少なくとも１つの実施形態において、コンピューティングシステムは、１つ以上のプロセッサと、命令を保存するメモリとを含み、これらの命令は、１つ以上のプロセッサによって実行されると、１つ以上のプロセッサに処理を実施させる。処理を実施することにより、方法を実行することができる。いくつかの実施形態において、非一時的なコンピュータ読取可能な媒体は、１つ以上のプロセッサによって実行されると、処理を実施させる命令を含むことができる。いくつかの実施形態において、非一時的なコンピュータ読取可能な媒体は、悪意コードを含む電子通信からコンピュータを保護することができる。一例において、１つ以上のプロセッサは、コンピュータ読取可能な媒体に保存された命令を実行すると、以下に説明する方法および処理を実施することができる。さらに他の実施形態は、以下に説明する方法および処理を実施するための命令を使用または保存するシステムおよび機械読取可能な有形記憶媒体に関する。
【００１４】
少なくとも１つの実施形態において、方法は、コンピュータシステムによって実施されてもよい。この方法は、複数のリモート装置のために、企業システムへのアクセス権の変更に対応する変更イベントの種類を判断するステップを含むことができる。この方法は、変更イベントの種類に関連付けられたアクションプロセスクラスを特定するステップを含むことができる。アクションプロセスクラスは、変更イベントの種類に応じて実行すべくアクションプロセスを定義することができる。この方法は、アクセス権の変更に応じてアクションプロセスを実行するように、複数のコンピューティングノードの各々の処理負荷に基づいて、複数のコンピューティングノードから一組のコンピューティングノードを選択するステップを含むことができる。この方法は、変更イベントの種類に基づいて、複数のリモート装置内の第１組のリモート装置のために、第１変更イベントオブジェクトを設定するステップを含む。変更イベントオブジェクトは、アクセス権の変更に関する情報を示すことができる。第１変更イベントオブジェクトを設定するステップは、第１組のリモート装置に対応する変更イベントエントリに基づいて、第１変更イベントオブジェクトをインスタンス化するステップを含むことができる。第１組のリモート装置の変更イベントエントリは、第１組のリモート装置の各リモート装置を特定する情報を含むことができる。第１変更イベントオブジェクトは、第１組のリモート装置の各リモート装置を特定する情報を含むことができる。この方法は、変更イベントの種類に基づいて、複数のリモート装置のうち第２組のリモート装置のために、第２変更イベントオブジェクトを設定するステップを含む。変更イベントオブジェクトおよびアクションオブジェクトは、通常のＪａｖａ（登録商標）オブジェクト（POJO: plain old Java object）であってもよい。第１組のリモート装置の各リモート装置は、第２組のリモート装置の各リモート装置とは異なってもよい。
【００１５】
この方法は、一組のコンピューティングノードのうち第１コンピューティングノードによって、第１変更イベントオブジェクトを用いて、第１アクションプロセスオブジェクトに応じてアクションプロセスを開始するステップを含む。第１アクションプロセスオブジェクトは、アクションプロセスクラスに基づいて設定されてもよい。この方法は、一組のコンピューティングノードのうち第２コンピューティングノードによって、第２変更イベントオブジェクトを用いて、第２アクションプロセスオブジェクトに応じてアクションプロセスを開始するステップを含む。第２アクションプロセスオブジェクトは、アクションプロセスクラスに基づいて設定されてもよい。第１アクションプロセスオブジェクトに応じて開始されたアクションプロセスと、第２アクションプロセスオブジェクトに応じて開始されたアクションプロセスとは、並行（同時）に開始されてもよい。
【００１６】
いくつかの実施形態において、方法は、第１組のリモート装置および第２組のリモート装置の各リモート装置に対応する変更イベントエントリを変更イベントキューに追加するステップを含むことができる。変更イベントエントリは、アクセス権の変更および変更イベントの種類を示すことができる。この方法は、第１組のリモート装置の各リモート装置からの応答の受信に応じて、変更イベントキューから、第１組のリモート装置に対応する変更イベントエントリを削除するステップを含むことができる。上記の応答は、第１組のリモート装置の各リモート装置が変更イベントの種類に対応するアクセス権の変更を適用したことを示すことができる。
【００１７】
いくつかの実施形態において、第１変更イベントオブジェクトを用いて、第１アクションプロセスオブジェクトに応じてアクションプロセスを開始するステップは、第１変更イベントオブジェクトを用いてアクションプロセスクラスをインスタンス化することによって、第１アクションプロセスオブジェクトを設定するステップと、第１アクションプロセスオブジェクトを用いて、アクションプロセスを呼び出すステップとを含むことができる。
【００１８】
いくつかの実施形態において、第１アクションプロセスオブジェクトを用いて呼び出されたアクションプロセスは、アクセス権の変更を示す命令を第１組のリモート装置の各リモート装置に送信することを含む。命令は、アクセス権の変更を適用するように第１組のリモート装置の少なくとも１つのリモート装置に指示することができる。
【００１９】
いくつかの実施形態において、この方法は、複数のコンピューティングノードの各々の処理負荷を計算することを含むことができる。コンピューティングノードの処理負荷は、コンピューティングノードにより開始されたアクションプロセスの数に基づいて、計算されてもよい。第１コンピューティングノードは、アクションプロセス閾値に基づいて、一組のコンピューティングノード用に選択される。いくつかの実施形態において、一組のコンピューティングノードの各コンピューティングノードは、アクションプロセス閾値を満たす一組のコンピューティングノードの各コンピューティングノードの処理負荷に基づいて、選択される。
【００２０】
いくつかの実施形態において、この方法は、変更イベントの種類を特定するステップを含むことができる。変更イベントの種類は、ポリシーの変更を含み、ポリシーの変更は、遵守ポリシーの変更、登録ポリシーの変更、ワークスペースポリシーの変更、装置ポリシーの変更、またはそれらの組み合わせを含むことができる。一組のリモート装置に対して実行されたアクションプロセスは、一組のリモート装置の各リモート装置に指示して、ポリシーの変更を適用することを含むことができる。
【００２１】
いくつかの実施形態において、この方法は、変更イベントの種類を特定するステップを含むことができる。変更イベントの種類は、アプリケーションの変更を含み、アプリケーションの変更は、複数のリモート装置に利用可能なアプリケーションのカタログにアプリケーションの追加、カタログからアプリケーションの削除、カタログ内のアプリケーションのバージョンの変更、またはそれらの組み合わせを含むことができる。一組のリモート装置に対して実行されたアクションプロセスは、一組のリモート装置の各リモート装置に指示して、アプリケーションの変更を適用することを含むことができる。
【００２２】
いくつかの実施形態において、この方法は、変更イベントの種類を特定するステップを含むことができる。変更イベントの種類は、企業システムへのアクセス権に関連する同期設定の変更を含むことができる。一組のリモート装置に対して実行されたアクションプロセスは、一組のリモート装置の各リモート装置に指示して、同期設定の変更を適用することを含むことができる。
【００２３】
少なくとも１つの実施形態において、コンピュータシステムによって、別の方法を実施することができる。この方法は、複数のリモート装置上で実行されるアクションを判断するステップを含むことができる。この方法は、複数のリモート装置のうち、第１組のリモート装置および第２組のリモート装置の各リモート装置に対応する変更イベントエントリをキューに追加することによって、複数の変更イベントエントリをキューに追加するステップとを含むことができる。第１組のリモート装置の各リモート装置は、第２組のリモート装置の各リモート装置とは異なってもよい。この方法は、第１組のリモート装置のために、第１変更イベントエントリをキューから第１コンピューティングノードに割り当てるステップを含むことができる。この方法は、第１変更イベントエントリに応じて第１メタデータオブジェクトをインスタンス化し、第１組のリモート装置の各リモート装置を特定するメタデータを第１メタデータオブジェクトに保存するステップを含むことができる。第１メタデータオブジェクトのインスタンス化は、第１コンピューティングノード上で実行されてもよい。この方法は、第１コンピューティングノードから、第１メタデータオブジェクトに基づいて第１組のリモート装置の各リモート装置上で実行すべくアクションを指示するステップを含むことができる。この方法は、第２組のリモート装置のために、第２変更イベントエントリをキューから第２コンピューティングノードに割り当てるステップを含むことができる。この方法は、第２変更イベントエントリに応じて第２メタデータオブジェクトをインスタンス化し、第２組のリモート装置の各リモート装置を特定するメタデータを第２メタデータオブジェクトに保存するステップを含むことができる。この方法は、第２コンピューティングノードから、第２メタデータオブジェクトに基づいて第２組のリモート装置の各リモート装置上で実行すべくアクションを指示するステップを含むことができる。
【００２４】
上記の特徴および実施形態ならびに他の特徴および実施形態は、以下の明細書、特許請求の範囲および添付の図面を参照すればより明らかになるであろう。
【００２５】
以下、添付の図面を参照して、本発明の例示的な実施形態を詳細に説明する。
【図面の簡単な説明】
【００２６】
【図１】本発明のいくつかの実施形態に従って、企業システムへのアクセス権の変更の変更イベントを管理するための装置アクセス管理システムを含むコンピューティングシステムを高レベルで示す簡略図である。
【図２】本発明のいくつかの実施形態に従って、装置アクセス管理システムを高レベルでより詳細に示す図である。
【図３】本発明のいくつかの実施形態に従って、変更イベントに応じてアクションプロセスを開始するための処理シーケンスを示す図である。
【図４】本発明のいくつかの実施形態に従って、変更イベントに応じてアクションプロセスを開始するための処理シーケンスを示す図である。
【図５】本発明のいくつかの実施形態に従って、変更イベントに関する情報を保存するためのデータ構造の一例を示す図である。
【図６】本発明のいくつかの実施形態に従って、アクションプロセスオブジェクトを表すデータ構造の一例を示す図である。
【図７】本発明のいくつかの実施形態に従って、さまざまな種類の変更イベントオブジェクトを表すデータ構造の例を示す図である。
【図８】本発明のいくつかの実施形態に従って、変更イベントを企業システムにアクセスするリモート装置に伝送するプロセスを示すフローチャートである。
【図９】一実施形態を実施するための分散システムを示す簡略図である。
【図１０】本開示の一実施形態に従って、サービスをクラウドサービスとして提供することができるシステム環境の１つ以上の構成要素を示す簡略ブロック図である。
【図１１】本発明の一実施形態を実施するために使用され得る例示的なコンピュータシステムを示す図である。
【図１２】本発明の一実施形態を実施するために使用され得る例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【００２７】
詳細な説明
以下の記載において、本発明の実施形態を完全に理解するために、説明の目的で具体的な詳細を説明する。しかしながら、これらの具体的な詳細がなくても、さまざまな実施形態を実施できることは、明らかであろう。例えば、回路、システム、アルゴリズム、構造、技術、ネットワーク、プロセス、および他の構成要素は、実施形態を不必要な詳細により不明瞭にしないために、ブロック図の形式で要素として示されることがある。図面および説明は、限定的なものではない。
【００２８】
なお、各実施形態は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスとして説明されてもよい。フローチャートは、処理を連続プロセスとして記述しているが、複数の処理は、並行にまたは同時に実行されてもよい。また、処理の順序を改変してもよい。プロセスは、その処理が完了した時点で終了するが、図面に含まれていない追加ステップを含んでもよい。プロセスは、メソッド、関数、プロシージャ、サブルーチン、サブプログラムなどに対応してもよい。プロセスが関数に対応する場合、その終了は、その関数を呼び出し関数またはメイン関数にリターンすることに対応してもよい。
【００２９】
本開示は、一般的に、リモート装置を用いて企業システムに対するアクセスに関連するイベントの管理に関する。より詳細には、企業システムへのアクセス権の変更に関連するイベントに関する情報をリモート装置に伝送するための技術が開示される。企業システムへのアクセス（アクセス権）は、リソースへのアクセスおよび／または企業システムへのアクセスを提供するリモート装置の安全な環境におけるアクションへのアクセスを含んでもよい。装置アクセス管理システムを実装して、企業システムにアクセスするリモート装置との通信を促進することができる。
【００３０】
装置アクセス管理システムは、複数のコンピューティングシステムを利用して、変更イベントに関する情報をいくつかのリモート装置に伝送することができる。本発明のいくつかの実施形態の技術的利点は、さまざまな変更イベントを定義し、所定の時間で多数のリモート装置に変更イベントを通知することができるシステムを含む。メタデータクラスを用いて異なる変更イベントを定義することによって、変更イベントの通信を促進するために、コンピューティングシステムを追加または削除することができる。殆どまたは完全に設定する必要なく、コンピューティングシステムを追加して、変更イベントの種類に対応するメタデータクラスに応じて定義された変更イベントの種類に基づいて、変更イベントに関する情報を通信することができる。装置アクセス管理システムは、変更イベントの種類に基づいて、変更イベントに関する情報（例えば、企業システムへのアクセス権の変更）を管理することができる。変更イベントの種類の例として、ポリシーの変更、アプリケーションの変更、および設定の変更を含むがこれらに限定されない。変更イベントに関する情報は、変更イベントの種類に基づいて、オブジェクト（「変更イベントオブジェクト」）、例えば通常のＪａｖａ（登録商標）オブジェクト（plain old Java object）として実装されたデータ構造に保存されてもよい。異なる変更イベントの種類に応じて、メタデータクラスを定義することができる。メタデータクラスは、そのメタデータクラスに基づいて定義された変更イベントオブジェクトに保存することができる１つ以上のフィールド情報を定義することができる。新規または異なる種類の変更イベントが定義される場合、新たなメタデータクラスを定義することができる。変更イベントの種類に基づいて、変更イベントオブジェクトを作成して、変更イベントに関する情報を保存することができる。
【００３１】
変更イベントに関する情報を永続的ものにすることにより、変更イベントに影響されるリモート装置に情報を確実に伝送するために、装置アクセス管理システムは、キュー（変更イベントキュー）を実装することができる。変更イベントキューは、変更イベントに応じて、各変更イベントオブジェクトに対応する情報（例えば、変更イベントエントリ）を保存することができる。装置アクセス管理システムは、変更イベントオブジェクト内の情報をリモート装置に送信し、変更イベントを伝送することによって、装置に変更イベントを通信することができる。いくつかの実施形態において、装置アクセス管理システムは、通知サービス（例えば、プッシュ通知サービス）を用いて、変更イベントをリモート装置に伝送することができる。リモート装置は、通知サービスと通信することによって、変更イベントに関する通知を受信することができる。変更イベントエントリは、変更イベントが変更イベントエントリに対応する変更イベントに影響される全ての装置に通知されるまで、変更イベントキューに残されてもよい。いくつかの実施形態において、変更イベントの通信を再試行するために、変更イベントをリモート装置に再送信してもよい。
【００３２】
本発明のいくつかの実施形態の技術的利点は、変更イベントに関する情報を、変更イベントに影響されるリモート装置に確実に配信することを含む。装置アクセス管理システムは、変更イベントキューを用いて、変更イベントおよび変更イベントの順序に関する情報を管理することができる。一部のリモート装置は、さまざまな理由で、企業システムとの接続を失うことがある。変更イベントに影響される全てのリモート装置が通知されるまで、変更イベントが変更イベントキューに残るため、リモート装置は、変更イベントを発生した後でも、変更イベントに関する情報を取得することができる。他の変更イベントの通信を遅らせることなく、定期的に変更イベントをリモート装置に通知することができる。
【００３３】
本発明のいくつかの実施形態の技術的利点は、変更イベントの種類に基づいて異なるアクションプロセスを定義することを可能にするシステムを含む。いくつかの実施形態において、変更イベントの種類に応じて、アクションプロセスを定義することができる。アクションプロセスは、アクションプロセスクラスによって定義されたルーチンであってもよい。アクションプロセスに応じてアクションプロセスクラスを定義することによって、変更イベントを管理するために追加されたコンピューティングリソースを拡張するためのコンピューティングシステムは、追加の手動設定をする必要なく、アクションプロセスを容易に判断することができる。システムにおいて通知される装置の数が増えた場合、わずかな手動設定でシステムを簡単に拡張することによって、変更イベントを処理することができ、リモート装置に変更イベントを伝送することができる。アクションプロセスは、変更イベントの種類に応じて開始することができる。変更イベントの種類は、その変更イベントの種類を表すアクションプロセスクラスに対応する。アクションプロセスクラスは、変更イベント（例えば、変更イベントオブジェクト）に関する情報を、その変更イベントに対応する変更に影響されるリモート装置に伝送することを含むことができる。リモート装置に伝送された情報は、変更イベントに基づいてアクセスを調整するようにリモート装置に指示する命令またはコマンドを含むことができる。
【００３４】
いくつかの実施形態において、装置アクセス管理システムは、変更イベントに対応するアクセスプロセスを実行するために、複数のコンピューティングノードを利用することができる。変更イベントが通知されるリモート装置の数が多い場合、複数のコンピューティングノードは、アクションプロセスを実行することができる。例えば、変更イベントに影響されるリモート装置が何千台もあると判断した場合、複数のコンピューティングノードに、変更イベントを異なるリモート装置に通知するアクションプロセスを実行することを要請することができる。各コンピューティングノードは、アクションプロセスの異なるインスタンスを実装することによって、変更イベントを異なる組のリモート装置に伝送することができる。複数のコンピューティングノードを使用すると、多くの技術的利点が得られる。単一コンピューティングノードで全てのリモート装置のアクションプロセスを実行するのではなく、複数のコンピューティングノードを使用することによって、変更イベントに影響される異なるリモート装置に対応するアクションプロセスを実行する時の負荷を分散することができる。リモート装置に対応するアクションプロセスを実行するように指定されたコンピューティングノードは、各リモート装置が変更イベントに関する通知を受信するまで、変更イベントを管理することができる。いくつかの実施形態において、リモート装置は、変更イベントを承認したことを示す情報をコンピューティングノードに送信することができる。アクションプロセスを複数のコンピューティングノード間で分散することにより、変更イベントをリモート装置に伝送するパフォーマンス効率を改善することができる。アクションプロセスの処理負荷を複数のコンピューティングノード間に分散することができるため、１つのコンピューティングノードは、変更イベントに影響される全てのリモート装置のアクションプロセスを実行しなくても済む。コンピューティングノードが変更イベントをリモート装置に通知できない場合、他のコンピューティングノードの処理に影響を及ぼすことなく、異なるコンピューティングノードを利用して、続けてリモート装置に通知することができる。したがって、クラスを用いて変更イベントおよびアクションプロセスを定義することによって、使用可能な処理リソースを有するコンピューティングノードは、変更イベントに関する情報を伝送することができる。
【００３５】
図１は、本発明のいくつかの実施形態に従って、企業システムへのアクセス権の変更の変更イベントを管理するための装置アクセス管理システムを含むコンピューティングシステム１００を高レベルで示す簡略図である。具体的には、コンピューティングシステム１００を実装することによって、企業システムに遠隔にアクセスする装置（例えば、リモート装置）との通信を管理することができ、企業システムへのアクセス権に関連する情報（例えば、変更イベント）をこれらの装置に通知することができる。図１に示された実施形態は、単なる例示であり、請求される本発明の実施形態を不当に限定することを意図していない。当業者であれば、多くの変形例、代替例および修正例の存在が分かるであろう。
【００３６】
コンピューティングシステム１００は、企業に実装された企業システムの一部であってもよい。コンピューティングシステム１００は、企業システムによって提供された１つ以上のリソースへのアクセスを提供する企業コンピュータシステム１５０を含むことができる。リソースの例は、アプリケーション、サービス、データ、またはこれらの組み合わせを含んでもよい。リソースは、企業コンピュータシステム１５０によって提供されてもよく、または第三者プロバイダにホストされ、企業コンピュータシステム１５０によってリモート装置に提供されてもよい。
【００３７】
ユーザは、１つ以上のリモート装置、例えばリモート装置１０８−１、１０８−２、・・・１０８−Ｎ（まとめてリモート装置１０８という）を用いて、企業コンピューティングシステム１５０にアクセスすることができる。リモート装置１０８を用いて企業コンピュータシステム１５０に対するアクセスは、装置アクセス管理システム１２０によって制御および管理することができる。リモート装置１０８の各々は、セキュアコンテナアプリケーションを含むことができる。セキュアコンテナアプリケーションは、企業コンピュータシステム１５０にアクセスするように、装置アクセス管理システム１２０と通信するための安全な実行環境を提供することができる。リモート装置１０８は、装置アクセス管理システム１２０と通信することによって、企業コンピュータシステム１５０により提供されたリソースへのアクセス権を取得することができる。装置アクセス管理システム１２０によって制御された企業コンピュータシステム１５０へのアクセスは、リモート装置上のリソースへのアクセスおよび／またはセキュアコンテナアプリケーションにおけるアクションを実行するためのアクセスを含むことができる。
【００３８】
装置アクセス管理システム１２０は、企業コンピュータシステム１５０にアクセスするためのリモート装置１０８の認証および登録を管理することができる。いくつかの実施形態において、装置アクセス管理システム１２０は、リモート装置１０８を用いて企業コンピュータシステム１５０へのアクセスに関連する変更イベントを管理することができる。具体的には、装置アクセス管理システム１２０は、リモート装置１０８による企業コンピュータシステム１５０へのアクセス権の変更に関連するイベントの情報をリモート装置１０８に通信することができる。
【００３９】
コンピューティングシステム１００は、異なる通信ゾーンにそれぞれ対応する複数のゾーンに規定されてもよい。いくつかの実施形態において、リモート装置１０８は、外部通信ゾーン（「外部ゾーン」）１０２に配置されてもよい。装置アクセス管理システム１２０および企業コンピュータシステム１５０は、グリーン通信ゾーン（「グリーンゾーン」）１０６に配置されてもよい。グリーンゾーン１０６は、１つ以上の安全なネットワーク（例えば、企業ネットワーク）を含むことができる。グリーンゾーン１０６は、企業コンピューティング環境のファイアウォールの内側に配置されてもよい。外部ゾーン１０２は、非安全な外部ネットワーク（例えば、インターネット）の一部であってもよい。例えば、外部ゾーン１０２は、グリーンゾーン１０６のファイアウォールの外側に配置されてもよい。
【００４０】
いくつかの実施形態において、リモート装置１０８は、ＤＭＺ（Demilitarized Zone、非武装地帯）１０４に配置されたセキュリティアクセスシステム１１０を介して、グリーンゾーン１０６内のコンピュータシステムと通信することができる。ＤＭＺ１０４の例として、企業ＤＭＺが挙げられる。セキュリティアクセスシステム１１０は、リモート装置１０８と装置アクセス管理システム１２０との間の安全な通信を容易にすることができる。例えば、セキュリティアクセスシステム１１０は、リモート装置１０８および装置アクセス管理システム１２０のうちいずれか一方上のセキュアコンテナアプリケーションと、安全な通信接続（例えば、トンネル）を形成することができる。
【００４１】
セキュリティアクセスシステム１１０は、リモート装置のユーザを認証するサービスを提供することができる。セキュリティアクセスシステム１１０は、ユーザアクセス管理システム１３０と通信して、リモート装置のユーザを認証するための認証を取得することができる。例えば、セキュリティアクセスシステム１１０は、企業コンピュータシステム１５０によって提供されたリソースに対するシングルサインオン（ＳＳＯ）認証を容易にするために、ユーザアクセス管理システム１３０から認証トークンを取得することができる。一例において、セキュリティアクセスシステム１１０は、Oracle（登録商標）モバイルセキュリティアクセスサーバに含まれてもよい。Oracleモバイルセキュリティアクセスサーバは、Oracle社により提供されるOracleモバイルセキュリティスイートの一部である。
【００４２】
リモート装置１０８は、エンドポイント装置、装着型装置（例えば、スマートウォッチ）、消費者装置（例えば、電気製品）、パーソナルコンピュータ、デスクトップ、ＩＯＴ（Internet of Things：インターネット端末）装置、ラップトップ、携帯電話、タブレット、コンピュータ端末などのモバイル装置または携帯式装置、および他の種類の装置を含むがこれらに限定されないさまざまな種類の装置であってもよい。いくつかの実施形態において、リモート装置は、コンピューティング装置（例えば、モバイル装置、ＩＯＴゲートウェイまたはＩＯＴエッジ装置）上にホストされたアプリケーションであってもよい。いくつかの実施形態において、リモート装置は、別の装置上で動作しているエンドポイント、例えばワークスペースであってもよい。ワークスペースは、ワークスペースを動かす装置上の企業データおよびアプリケーションへのアクセスを提供する制御環境であってもよい。例えば、セキュアコンテナアプリケーションは、１つ以上のリモート装置１０８上で動作することができる。リモート装置の例として、企業コンピュータシステム１５０に関連付けられた企業から支給される装置（すなわち、企業装置）、または企業コンピュータシステム１５０にアクセスするために使用されるユーザの個人装置（「ＢＹＯＤ装置」）を含むがこれらに限定されない。
【００４３】
リモート装置は、その識別に関する情報、例えばＭＡＣ（メディアアクセス制御）アドレス、一意の装置識別子（ＵＤＩＤ）、または他の装置識別子を保存することができる。リモート装置は、そのリモート装置に関するメタデータ属性を保存することができる。リモート装置のメタデータ属性は、リモート装置上のオペレーティングシステムの種類、オペレーティングシステムのバージョン、リモート装置が他の装置上にホストされる場合のホスト識別子、装置の種類、ＩＭＥＩ（国際携帯電話端末識別）番号、リモート装置の型番、リモート装置のサービスプロバイダ（例えば、キャリア）、装置名、装置状態、またはリモート装置に関する他の情報を含むことができる。
【００４４】
特定の実施形態において、リモート装置は、１つ以上のアプリケーションを実施する（例えば、実行および動作する）ように構成することができる。例えば、１つ以上のリモート装置１０８は、「コンテナ化」アプリケーション、すなわち、特定のコンテナに安全に接続されたアプリケーションを保持するように設計されたセキュアコンテナアプリケーションを実行することができる。アプリケーションの例として、コンピュータアプリケーション、クライアントアプリケーション、専用クライアントアプリケーション、ワークスペース、コンテナなどを含むがこれらに限定されない。いくつかの実施形態において、１つ以上のネットワークを介して、リモート装置に実装されたアプリケーションにアクセスすることができ、またはそれを作動することができる。
【００４５】
リモート装置は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせを用いて実装され得るコンピューティング装置を含むことができる。リモート装置は、メモリと、１つ以上のプロセッサとを含むことができる。メモリは、プロセッサに結合されてもよく、命令を保存してもよい。これらの命令は、プロセッサによって実行されると、本開示に開示された１つ以上の処理、方法またはプロセスをプロセッサに実施させる。メモリは、コンピュータ読取可能な記憶媒体のような任意種類の永続記憶装置を用いて、実装されてもよい。
【００４６】
いくつかの実施形態において、リモート装置１０８は、１つ以上のさまざまな種類の通信ネットワークを介して、装置アクセス管理システム１２０および企業コンピュータシステム１５０に通信可能に接続されてもよい。通信ネットワークの例として、例えば、インターネット、ワイドアリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、イーサネット（登録商標）ネットワーク、公衆または私設ネットワーク、有線ネットワーク、無線ネットワーク、およびそれらの組み合わせを含むがこれらに限定されない。異なる通信プロトコルを用いて、IEEE 802.1XXプロトコルスイート、ＴＣＰ／ＩＰ、ＩＰＸ、ＳＡＮ、AppleTalk、Bluetooth（登録商標）、および他のプロトコルのような有線プロトコルおよび無線プロトコルの両方を含む通信を促進することができる。
【００４７】
装置アクセス管理システム１２０は、コンピュータシステムに実装することができる。コンピュータシステムは、汎用コンピュータ、（例えば、ＰＣサーバ、ＵＮＩＸ（登録商標）サーバ、ミッドレンジサーバ、メインフレームコンピュータ、およびラックマウントサーバなどを含む）専用サーバコンピュータ、サーバファーム、サーバクラスタ、分散型サーバ、または任意の他の適切な配置および／またはそれらの組み合わせであり得る１つ以上のコンピュータおよび／またはサーバを含むことができる。例えば、装置アクセス管理システム１２０は、サーバ１２２を含むことができる。全てまたは一部のサーバ１２２は、同様の地理上の位置または異なる地理上の位置に配置されてもよい。装置アクセス管理システム１２０を構成するコンピューティング装置は、任意のオペレーティングシステム、または、ＨＴＴＰサーバ、ＦＴＰサーバ、ＣＧＩサーバ、Ｊａｖａ（登録商標）サーバ、データベースサーバを含むさまざまな追加のサーバアプリケーションおよび／またはミッドティアアプリケーションのいずれかを実行することができる。例示的なデータベースサーバは、Oracle（登録商標）、Microsoft（登録商標）などから市販されているものを含むがこれらに限定されない。装置アクセス管理システム１２０は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせを用いて実装することができる。一例において、装置アクセス管理システム１２０は、Oracleモバイルセキュリティアクセスマネージャに含まれてもよい。Oracleモバイルセキュリティアクセスマネージャは、Oracle社により提供されるOracleモバイルセキュリティスイートの一部である。
【００４８】
装置アクセス管理システム１２０は、少なくとも１つのメモリ、１つ以上の処理ユニット（またはプロセッサ）、および記憶装置を含むことができる。処理ユニットは、ハードウェア、コンピュータ実行可能な命令、ファームウェア、またはそれらの組み合わせで、適切に実現されてもよい。処理ユニットのコンピュータ実行可能な命令またはファームウェア実装は、本開示に説明されたさまざまな処理、機能、方法および／またはプロセスを実行するのに任意の適切なプログラミング言語で書かれたコンピュータ実行可能な命令または機械実行可能な命令を含むことができる。装置アクセス管理システム１２０内のメモリは、処理ユニットにロード可能且つ実行可能なプログラム命令、およびこれらのプログラムの実行中に生成されたデータを保存することができる。メモリは、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ））および／または不揮発性メモリ（例えば、読出専用メモリ（ＲＯＭ）、フラッシュメモリなど）であってもよい。メモリは、コンピュータ読取可能な記憶媒体のような任意種類の永続記憶装置を用いて実現されてもよい。いくつかの実施形態において、コンピュータ読取可能な記憶媒体は、悪意コードを含む電子通信からコンピュータを保護するように構成されることができる。コンピュータ読取可能な記憶媒体は、プロセッサ上で実行されると、本開示に説明された処理をプロセッサに実行させる命令を保存することができる。
【００４９】
装置アクセス管理システム１２０は、追加記憶装置を含んでもよく、またはそれらに連接されてもよい。追加記憶装置としては、メモリ記憶装置または他の非一時的なコンピュータ読取可能な記憶媒体などの任意種類の永続記憶装置を用いて実現されてもよい。いくつかの実施形態において、ローカル記憶装置は、１つ以上のデータベース（例えば、文章データベース、関係データベース、または他の種類のデータベース）、１つ以上のファイルストア、１つ以上のファイルシステム、またはそれらの組み合わせを含んでもよく、それらを実装してもよい。例えば、装置アクセス管理システム１２０は、１つ以上のデータストア、例えばデータストア１６０に連接されてもよく、それを含んでもよい。メモリおよび追加記憶装置の両方は、コンピュータ読取可能な記憶媒体の例である。例えば、コンピュータ読取可能な記憶媒体は、コンピュータ読取可能な命令、データ構造、プログラムモジュールまたは他のデータなどの情報を保存するための任意の方法または技術で実現される揮発性または不揮発性媒体、取り外し可能または不可能な媒体を含むことができる。
【００５０】
いくつかの実施形態において、装置アクセス管理システム１２０は、企業コンピュータシステム１５０にアクセスするためのリモート装置１０８の登録および認証を管理することができる。企業システム１２０にアクセスするように登録されたユーザＩＤで、リモート装置１０８を登録することができる。ユーザＩＤを用いてユーザを認証すると同様に、リモート装置を認証するために使用されたＩＤ（識別子）を用いて、リモート装置を登録することができる。ＩＤは、リモート装置に提供されてもよく、そのリモート装置からの全てのさらなる通信を認証するために使用されてもよい。
【００５１】
装置アクセス管理システム１２０は、リモート装置１０８に関する情報をデータストア１６０の装置レジストリ１６２に保存することができる。この情報は、ユーザのＩＤと、そのＩＤで企業コンピュータシステム１５０にアクセスするように登録された１つ以上のリモート装置の各リモート装置の識別子との間の関係を示すことができる。装置アクセス管理システム１２０は、企業コンピュータシステム１５０にアクセスするためのユーザＩＤでリモート装置を登録するために、リモート装置に証明書を発行することができる。要求がリモート装置のＩＤに関連付けられたユーザＩＤからのものである場合、装置アクセス管理システム１２０は、そのリモート装置がコンピュータシステム１５０にアクセスすることを許可する。
【００５２】
装置アクセス管理システム１２０は、ＩＤ管理システム１４０に通信可能に接続されてもよい。ＩＤ管理システム１４０は、企業コンピュータシステム１５０のユーザの存続期間および企業コンピュータシステム１５０からアクセスできるリソースのために設定された関連するアカウントの存続期間を管理することができる。ＩＤ管理システム１４０は、企業コンピュータシステム１５０にアクセスするために定義された役割（例えば、ユーザグループ）を管理することができる。いくつかの実施形態において、ＩＤ管理システム１４０は、企業コンピュータシステム１５０にアクセスするために定義された役割に関するポリシーを管理することができる。ＩＤ管理システム１４０の例は、Oracle社によって提供されたOracleＩＤマネージャを含むことができる。
【００５３】
ユーザアクセス管理システム１３０は、装置アクセス管理システム１２０に通信可能に接続されてもよい。ユーザアクセス管理システム１３０は、範囲の管理、認証トークンの発行、更新トークンの発行、およびアクセストークンの発行を処理することができる。例えば、ユーザアクセス管理システム１３０は、セキュリティアクセスシステム１１０からの、リモート装置１０８によるアクセス要求を処理することができる。いくつかの実施形態において、ユーザアクセス管理システム１３０は、企業コンピュータシステム１５０によって提供されたリソースにアクセスするためのアクセスポリシーを管理することができる。アクセス管理システム１３０は、Oracle社によって提供されたOracleアクセスマネージャを含むことができる。
【００５４】
いくつかの実施形態において、装置アクセス管理システム１２０は、企業コンピュータシステム１５０にアクセスするように登録されたリモート装置１０８の設定情報を管理することができる。設定情報の例としては、装置の設定情報、インストール設定情報、同期設定情報、通信設定情報、アプリケーションの設定情報、または企業システムのアクセスに関連するその他の設定情報を含むがこれらに限定されない。設定に関する情報は、データストア１６０の設定データストア１６８に保存されてもよい。一部の設定情報は、リモート装置１０８から受信した情報に対応することができる。一部のリモート装置１０８に関する設定情報（例えば、装置の設定情報およびインストール設定情報）は、登録のために検証され、登録されたリモート装置１０８としての準拠性がチェックされる。いくつかの実施形態において、設定情報（例えば、同期設定情報）を一部のリモート装置１０８に送信することによって、リモート装置１０８上のセキュアコンテナアプリケーションを用いて、装置アクセス管理システム１２０および企業コンピュータシステム１５０との同期通信を構成することができる。
【００５５】
リモート装置１０８を用いて企業コンピュータシステム１５０に対するアクセスは、１つ以上のポリシーを用いて管理することができる。ポリシーは、データストア１６０のポリシーストア１７０に保存され、そこからアクセスされてもよい。ポリシーの例としては、登録ポリシー、遵守ポリシー、ワークスペースポリシー、および装置ポリシーを含むがこれらに限定されない。企業システムの管理者が、ポリシーを定義することができる。装置アクセス管理システム１２０は、リモート装置１０８がポリシーを遵守しているか否かを判断することができる。これらのポリシーは、リモート装置による企業コンピュータシステム１５０のアクセスを規定することができる。いくつかの実施形態において、装置アクセス管理システム１２０は、ポリシーに基づいて、是正措置を実行して、リモート装置によるアクセスを調整することができる。装置アクセス管理システム１２０は、命令をリモート装置に送信することによって、リモート装置に指示して、ポリシーの遵守に応じて是正措置を取ることができる。通知をリモート装置１０８に送信することによって、これらのリモート装置に、ポリシーの遵守および／またはポリシーの違反および遵守期間を知らせることができる。
【００５６】
上述したように、装置アクセス管理システム１２０は、変更イベント（例えば、アクセス権の変更に関連するイベント）に関する情報を、企業コンピュータシステム１５０にアクセスするために登録されたリモート装置１０８に伝送することを管理することができる。変更イベントに関する情報は、データストア１６０の変更イベントデータストア１６４に保存され、そこからアクセスされてもよい。いくつかの実施形態において、変更イベントに関する情報は、企業コンピュータシステム１５０、ＩＤ管理システム１４０、および／またはユーザアクセス管理システム１３０から受信することができる。変更イベントに関する情報は、管理者が操作しているコンピューティングシステムから受信することができる。
【００５７】
変更イベントの特定に際し、装置アクセス管理システム１２０は、変更イベントの種類を特定することができる。装置アクセス管理システム１２０は、変更イベントデータストア１６４から利用された変更イベントに関する情報に基づいて、変更イベントの種類を判断することができる。変更イベントの種類の例として、ポリシーの変更、アプリケーションの変更、および設定の変更を含むがこれらに限定されない。変更イベントの種類の他の例として、リモート装置上で実行されるセキュアコンテナアプリケーション内のリモート装置上のリソースへのアクセスの変更、およびセキュアコンテナアプリケーション内に実行可能なアクションの変更を含むがこれらに限定されない。例えば、アクションは、セキュアコンテナアプリケーション内のアプリケーションからセキュアコンテナアプリケーションコンテナの外部のアプリケーションにコピーペースト処理を実行することを含むことができる。いくつかの実施形態において、変更イベントは、リモート装置（例えば、リモート装置上で実行するセキュアコンテナアプリケーション）上で実施され得るアクセス権の変更に対応し得る。リモート装置を変更せず、装置アクセス管理システム１２０によってアクセス権の変更を実施した場合、そのアクセス権の変更は、リモート装置に伝送されなくてもよい。したがって、変更イベントは、リモート装置上で実施できる変更に対応し得る。変更イベントの種類は、図５および図７を参照して後述される。装置アクセス管理システム１２０は、その変更に合致する変更イベントクラスに基づいて、変更に対応する変更イベントの種類を判断することができる。
【００５８】
装置アクセス管理システム１２０は、永続的な変更イベントキュー１２４を実装して、企業システムへのアクセス権の変更に対応する変更イベントを管理することができる。変更イベントに関する情報は、変更イベントキュー１２４上の変更イベントエントリに配置され、１つ以上のサーバ１２２によって処理される。サーバ１２２を利用して、変更イベントに応じて企業コンピュータシステム１５０へのアクセス権を管理するためのアクションプロセスを実行することができる。変更イベントエントリは、変更イベントに影響される各リモート装置に変更イベントが通知されるまで削除されないように、変更イベントキュー１２４上に永続的に残されてもよい。いくつかの実施形態において、リモート装置は、サーバ１２２のうち１つのサーバと通信することによって、変更イベントに関する通知を受信した承認を示すメッセージを送信することができる。リモート装置と通信するサーバは、通知を伝送したサーバである。承認は、変更イベントに関する通知を受信したことを示すことができる。装置アクセス管理システム１２０は、変更イベントキュー１２４を用いて、変更イベントに影響される各リモート装置に変更イベントを確実に通知するように、変更イベントを管理することができる。場合によって、リモート装置は、変更イベントに基づいて企業コンピュータシステム１５０へのアクセス権を調整したときに、変更イベントの受信を示す承認を通信することができる。
【００５９】
いくつかの実施形態において、変更イベントに応じて、変更イベントオブジェクト（例えば、通常のＪａｖａ（登録商標）オブジェクト）をインスタンス化することができる。変更イベントの種類に応じて特定された変更イベントクラスに基づいて、変更イベントオブジェクトをインスタンス化することができる。変更イベントオブジェクトは、変更イベントに関する情報を保存することができる。変更イベントクラスは、変更イベントの種類に対応する変更イベントオブジェクトに保存される情報の種類を定義することができる。変更イベントクラスを特定する情報を用いて、リモート装置１０８を設定することができる。変更イベントクラスを定義することによって、リモート装置およびサーバ１２２は、変更イベントクラスによって定義された情報に基づいて、変更イベントの種類および変更イベントに対応する情報を特定することができる。
【００６０】
装置アクセス管理システム１２０は、変更イベントキュー１２４に特定された各変更イベントに応じてアクションプロセスを実行するように、１つ以上のサーバ１２２をスケジュールすることができる。アクションプロセスは、変更イベントに関する情報を、変更イベントに影響されるリモート装置に伝送することを含む。変更イベントに関する情報は、リモート装置に非同期に伝送されてもよい。場合によって、同一のリモート装置に影響する複数の変更イベントが発生することがある。この場合、非同期方式で各変更イベントを同一のリモート装置に伝送してもよい。しかしながら、各変更イベントは、変更イベントの発生順序に依存する場合、発生順序で伝送されてもよい。
【００６１】
数千のユーザが企業コンピュータシステム１５０にアクセスする場合、単一のサーバは、変更イベントに関する情報を全てまたは多くの変更イベントに影響されるリモート装置１０８に伝送することによって、過負荷になる可能性がある。装置アクセス管理システム１２０は、サーバ１２２の処理負荷を判断することによって、変更イベントに関する情報を伝送するために利用できる一組のサーバ１２２を決定することができる。アクションプロセスを実行するようにいくつかのサーバ１２２をスケジュールすることによって、他のアクションプロセスを処理することにより過負荷になっている一部のサーバ１２２の処理負荷を軽減することができる。
【００６２】
変更イベントを通信するための処理効率をさらに改善するために、装置アクセス管理システム１２０は、変更イベントに影響される異なる組のリモート装置のためのアクションプロセスを実行するように、サーバ１２２内の複数のサーバを要請することができる。サーバ１２２上のスケジューリング処理については、図２〜図４を参照して後述される。サーバ１２２に基づいて、複数のコンピューティングノードを作動することができる。図２〜図４は、企業システムへのアクセス権の変更に応じて、リモート装置上で措置を取るために使用され得る装置アクセス管理システム１２０および複数のコンピューティングノードを示している。図２〜図４を参照して説明される実施形態は、企業システムへのアクセス権の変更を通信し、これらの変更に応じてリモート装置上で措置を取る効率を改善するために、企業アクセス管理システム１２０が実施できる技術を示している。図２〜図４はさらに、変更をリモート装置に伝送するための時間を短縮するように、複数のコンピューティングノードの使用を実現する技術を示している。
【００６３】
変更イベントキュー１２４上の変更イベントエントリの各々に対して、装置アクセス管理システム１２０は、１つ以上のサーバ１２２に要請して、アクションプロセスを開始することができる。変更イベントエントリによって示される変更イベントの種類に基づいて、アクションプロセスを特定することができる。アクションプロセスは、アクションプロセスクラスによって定義されるルーチンであってもよい。アクションプロセスは、変更イベントの種類に応じて開始することができる。変更イベントの種類は、その種類の変更イベントを表すアクションプロセスクラスに対応する。アクションプロセスクラスは、変更イベント（例えば、変更イベントオブジェクト）に関する情報を、その変更イベントに対応する変更に影響されるリモート装置に伝送することを含むことができる。リモート装置に伝送される情報は、変更イベントに基づいて企業コンピュータシステム１５０へのアクセス権を調整するようにリモート装置に指示する命令またはコマンドを含むことができる。図６を参照して、アクションプロセスの例を説明する。
【００６４】
図２を参照して、図２は、実施形態に従って、装置アクセス管理システム１２０を高レベルでより詳細に示す図である。図２に示すように、装置アクセス管理システム１２０は、いくつかのサブシステムおよび／またはモジュール、例えば、変更イベントハンドラ２３２、アクションプロセッサ２３４、スケジューラ２３６、および装置マネージャ２４０を含むことができる。サブシステムおよび／またはモジュールは、ソフトウェア（例えば、プロセッサによって実行可能なプログラムコードおよび命令）、ハードウェア、またはそれらの組み合わせで実現されてもよい。いくつかの実施形態において、ソフトウェアは、メモリ（例えば、非一時的コンピュータ読取可能な媒体）、メモリ装置、または他の物理メモリに保存することができ、１つ以上の処理ユニット（例えば、１つ以上のプロセッサ、１つ以上のプロセッサコア、または１つ以上のＧＰＵ）によって実行することができる。
【００６５】
企業システム（例えば、企業コンピュータシステム１５０）へのアクセスを可能にするＢＹＯＤを採用することによって、多くのユーザは、自分のリモート装置を用いて、企業システムにアクセスすることができる。例えば、第１ユーザは、エンドポイント装置２１０−１、・・・２１０−Ｎ（まとめてエンドポイント装置２１０という）を使用して、企業システムにアクセスすることができる。同様に、第２ユーザは、エンドポイント装置２１２−１、・・・２１２−Ｎ（まとめてエンドポイント装置２１２という）を使用して、企業システムにアクセスすることができる。図２は、企業システムにアクセスするために使用され得るいくつかのリモート装置を示しているが、数千のユーザは、何千台のリモート装置を用いて、企業システムにアクセスすることができる。装置アクセス管理システム１２０を含むコンピューティングシステム（例えば、コンピューティングシステム１００）を用いて、企業システムへのアクセス権を管理することができる。何千台のリモート装置が企業システムにアクセスする場合、企業システムへのアクセス権の変更を管理することは困難である。変更を遵守することを確認するために、発生した各変更を複数の装置に通知する必要がある。
【００６６】
アクセス権の変更を多くのリモート装置に伝送するという難題を克服するために、装置アクセス管理システム１２０は、コンピューティングノード２２２−１、コンピューティングノード２２２−２、・・・コンピューティングノード２２２−Ｎ（まとめてコンピューティングノード２２２という）を利用することができる。コンピューティングノード２２２は、図１のサーバ１２２に実装されてもよい。図１のサーバ１２２を用いて、コンピューティングノード２２２を操作することができる。コンピューティングノード２２２の各々は、装置アクセス管理システム１２０に含まれてもよく、装置アクセス管理システム１２０に通信可能に接続されてもよい。以下で説明するように、複数のコンピューティングノードを利用して、異なるリモート装置に対して１つ以上のアクションプロセスを実行することができる。
【００６７】
装置マネージャ２４０は、企業システムにアクセスするリモート装置の登録および遵守を管理することができる。装置マネージャ２４０は、装置レジストリ１６２内のリモート装置に関する情報をチェックすることによって、変更イベントに影響されるリモート装置を監視および判断することができる。いくつかの実施形態において、装置マネージャ２４０は、企業システムにアクセスするリモート装置の登録に基づいて、リモート装置が変更イベントに影響されるか否かを判断することができる。
【００６８】
変更イベントハンドラ２３２は、リモート装置、例えばエンドポイント装置２１０およびエンドポイント装置２１２のために、企業システムへのアクセス権の変更に対応する変更イベントを判断することができる。変更イベントに関する情報は、変更イベントデータストア１６４から取得することができる。変更イベントハンドラ２３２は、変更に対応する変更イベントクラスに基づいて、変更イベントの種類を特定することができる。
【００６９】
変更イベントハンドラ２３２は、変更イベントに関する情報を保存するために、データ構造（例えば、変更イベントエントリ）を作成することができる。例えば、変更イベント１のために変更イベントエントリ２０２を作成し、変更イベント２のために変更イベントエントリ２０４を作成し、変更イベント３のために変更イベントエントリ２０６を作成することができる。変更イベント１〜３は、同一の時間に発生してもよく、異なる時間に発生してもよい。変更イベントエントリを変更イベントキュー１２４に追加することができる。１つ以上のコンピューティングノード２２２は、変更イベントに対応するアクションプロセスを実行するために、後でこの変更イベントキュー１２４を利用することができる。上記で説明したように、変更イベントを永続的に管理するように変更イベントキュー１２４を実装することによって、企業システムへのアクセス権の変更を、変更に影響されるリモート装置に確実に通知することができる。
【００７０】
変更イベントキュー１２４は、連結リスト行列、先入先出（ＦＩＦＯ）行列、または行列として実装される他の種類のデータ構造を含むがこれらに限定されない異なる種類の行列のうち１つまたはそれらの組み合せとして実装されてもよい。いくつかの実施形態において、変更イベントキュー１２４は、対応関係をもって変更イベントエントリを保存するデータベースとして実装されてもよい。いくつかの実施形態において、直列化法を用いて、変更イベントエントリを変更イベントキュー１２４に追加または削除することができる。直列化法の例として、拡張マークアップ言語（ＸＭＬ）直列化、または他の種類の直列化技術を含むがこれらに限定されない。
【００７１】
変更イベントエントリは、その変更イベントエントリによって特定される変更イベントに対応するアクションプロセスを実行するように１つ以上のコンピューティングノード２２２をスケジュールすることによって、処理されてもよい。いくつかの実施形態において、変更イベントキュー１２４は、変更イベントエントリを変更イベントキュー１２４に追加した順序に基づいたＦＩＦＯ順序に従って、処理されてもよい。いくつかの実施形態において、複数の変更イベントエントリは、１つ以上のコンピューティングノード２２２によって、並列に処理されてもよい。例えば、変更イベントエントリ２０４は、変更イベントエントリ２０２を処理する前に処理されてもよい。変更イベントエントリ２０２に対応する変更イベントが変更イベントエントリ２０２に特定されたリモート装置に通知されていない可能性があるため、変更イベントエントリ２０２の前に、変更イベントエントリ２０４を処理してもよい。変更を変更イベントエントリに特定された各リモート装置に通知するまで、変更イベントエントリは、変更イベントキュー１２４に残されてもよい。
【００７２】
変更イベントエントリ内の情報は、変更イベントの種類、企業システムへのアクセス権の変更、および変更に影響されるリモート装置の装置識別子を含むことができる。変更イベントエントリは、変更イベントを通知すべく一組のリモート装置を示すことができる。変更イベントエントリの例は、図５を参照して後述される。以下でさらに説明するように、コンピューティングノードは、変更イベントに応じてアクションプロセスを実行するように要求されることがある。アクションプロセスを実行するときに、コンピューティングノードは、変更イベントキュー１２４の変更イベントエントリを利用して、変更イベントに関する情報を判断することができる。
【００７３】
アクションプロセッサ２３４は、変更イベントの種類に基づいて、実行すべくアクションプロセスを判断することができる。いくつかの実施形態において、１つ以上の変更イベントクラスに対応して、アクションプロセスクラスを定義することができる。変更イベントに対して、アクションプロセッサ２３４は、変更イベントクラスに基づいてアクションプロセスクラスを判断することができる。変更イベントクラスは、変更イベントの種類に基づいて判断されてもよい。いくつかの実施形態において、データストア１６０は、アクションプロセスクラスと一種類以上の変更イベントとの間の関連を示す情報を保存することができる。アクションプロセスをスケジュールするために、コンピューティングノードは、アクションプロセスクラスのインスタンス（例えば、図６を参照して後述するアクションプロセスオブジェクト）を設定することができる。アクションプロセスオブジェクトを使用して、アクションプロセスクラスに対応するアクションプロセス（例えば、ルーチン）を呼び出すことができる。
【００７４】
スケジューラ２３６は、変更イベントキュー１２４上の変更イベントに対応するアクションプロセスを実行するように、１つ以上のコンピューティングノード２２２に指示することができる。いくつかの実施形態において、スケジューラ２３６は、変更イベントキュー１２４上の各変更イベントに対応するアクションプロセスを実行するように、異なるコンピューティングノードを要請することができる。
【００７５】
いくつかの実施形態において、スケジューラ２３６は、各コンピューティングノード２２２の処理負荷を評価することができる。コンピューティングノードの処理負荷は、そのコンピューティングノードの処理能力および／またはそのコンピューティングノードによって処理される作業の現在量を示す値に基づいて定義することができる。いくつかの実施形態において、１つ以上の第三者システムを用いて、コンピューティングノードの処理負荷を示す値を決定することができる。例えば、１つ以上の負荷分散システムを実装して、コンピューティングノード２２２の負荷を決定することができる。
【００７６】
さまざまな測定値を計算することによって、処理負荷を決定することができる。これらの測定値は、個別にまたはまとめて、コンピューティングノードの処理負荷を示すことができる。一例において、コンピューティングノードが管理できる変更イベントの数を示す値を計算することによって、コンピューティングノードの処理負荷を決定することができる。別の例において、コンピューティングノードによって実行されているアクションプロセスの数を計算することによって、コンピューティングノードの処理負荷を決定することができる。コンピューティングノードと通信しているリモート装置の数に基づいて、コンピューティングノードの処理負荷を決定することができる。
【００７７】
スケジューラ２３６は、変更イベントエントリに対応するアクションプロセスを実行できる一組のコンピューティングノード（例えば、１つ以上のコンピューティングノード）を選択することができる。変更イベントに対応するアクションプロセスを実行するように、一組のコンピューティングノードから１つ以上のコンピューティングノードを選択することができる。複数のコンピューティングノードから、一組のコンピューティングノードを選択できる。一組のコンピューティングノードは、１つ以上のコンピューティングノードを含むことができる。例えば、装置アクセス管理システム１２０は、コンピューティングノード２２２から、一組のコンピューティングノード（例えば、コンピューティングノード２２２−１および２２２−２を含む一組のコンピューティングノード）を選択することができる。
【００７８】
複数のコンピューティングノードの各々の処理負荷に基づいて、一組のコンピューティングノードを選択することができる。処理負荷閾値に基づいて、一組のコンピューティングノードを構成する各コンピューティングノードを選択してもよい。いくつかの実施形態において、一組のコンピューティングノードに選択された各コンピューティングノードは、処理負荷閾値を満たす処理負荷を有することができる。一例において、コンピューティングノードが処理できる変更イベントの閾値数に基づいて、処理負荷閾値を定義することができる。別の例において、コンピューティングノードが開始した処理の閾値数として定義されたアクションプロセス閾値に基づいて、処理負荷閾値を定義することができる。この例において、一組のコンピューティングノードの各々の処理負荷がアクションプロセス閾値を満たすように、処理負荷閾値に基づいて、各コンピューティングノードを選択してもよい。
【００７９】
何千台のリモート装置にアクセスされる企業システムにおいて、いくつかのコンピューティングノードが要求によって過負荷になり、リモート装置からの処理する必要がある他のランタイムトラフィックに応答しなくなることがある。処理負荷に基づいて一組のコンピューティングノードを選択するによって、変更イベントをリモート装置に伝送する処理効率を改善することができる。より多くの利用可能なコンピューティングリソースを有するコンピューティングノードを利用して、変更イベントをリモート装置に伝送することができる。さらに、変更イベントの種類およびこれらの種類の変更イベントに対応するアクションプロセスに基づいて変更イベントを定義することによって、追加の設定を行わずにコンピューティングノードを追加することができ、異なる種類の変更イベントを処理することができる。新規種類の変更イベントが特定される場合、新規変更イベントおよび対応するアクションプロセスを定義することができる。
【００８０】
いくつかの実施形態において、変更イベントハンドラ２３２は、１つの変更イベントに応じて、複数の変更イベントエントリを作成することができる。複数のコンピューティングノードを利用して、変更イベントをその変更に影響されるリモート装置に伝送する変更プロセスを実行するための負荷を分散するために、複数の変更イベントエントリを作成することができる。作成され得る変更イベントエントリの数は、アクションプロセスを実行するために選択された一組のコンピューティングノードに依存する。変更イベントを伝送するために利用される各コンピューティングノードは、作成された変更イベントエントリのうち異なる変更イベントエントリを利用することができる。変更イベントエントリは、変更イベントを通知する一組のリモート装置を示すことができる。１つの変更イベントエントリに対応する一組のリモート装置内の各リモート装置は、同一の変更イベントのために作成された別の変更イベントエントリに対応する１組のリモート装置内の各リモート装置と異なってもよい。変更イベントに対応する１つの変更イベントエントリに対応する一組のリモート装置は、同一の変更イベントのために作成された別の変更イベントエントリに対応する別組のリモート装置と異なる数のリモート装置を含んでもよい。
【００８１】
さまざまな技術を用いて、変更イベントエントリに対応するリモート装置の数を選択することができる。例えば、メモリページ内の装置識別子の数に基づいて、変更イベントエントリに対応するリモート装置の数を選択することができる。メモリページは、装置識別子を装置レジストリ１６２に保存する。メモリページから特定された装置識別子は、変更イベントエントリに保存されてもよく、アクションプロセスを行うために登録されたリモート装置を特定するために、コンピュータノードによって使用されてもよい。いくつかの実施形態において、変更イベントエントリに対応するリモート装置の数は、アクションプロセスを実行するために選択されたコンピューティングノードの数に基づいて選択されてもよい。一組のコンピューティングノードは、各コンピューティングノード２２２の処理負荷に基づいて、コンピューティングノード２２２から選択されてもよい。コンピューティングノードの数に基づいて、変更イベントを通知するリモート装置を、変更イベントエントリの間に平均的に分散することができる。いくつかの実施形態において、変更イベントエントリに対応するリモート装置の数を決定するときに、一組のコンピューティングノードの各々の処理負荷を考慮してもよい。
【００８２】
変更イベントエントリによって特定された変更イベントに対応するアクションプロセスを実行するように１つ以上のコンピューティングノードを選択すると、選択されたコンピューティングノードは、リモート装置に変更イベントの通信を処理することができる。いくつかの実施形態において、装置アクセス管理システム１２０内のモジュールおよびサブシステムは、各コンピューティングノードにより作動されるように構成されてもよい。
【００８３】
各コンピューティングノード２２２は、通信システムを介してリモート装置と通信することができる。通信システムを介して、各コンピューティングノード２２２と、１つ以上のリモート装置、例えばエンドポイント装置２１０およびエンドポイント装置２１２との間で、メッセージを伝送することができる。通信システムは、メッセージを送信、受信、保存、および／または利用するサービスを提供することができる。「メッセージ」としては、メールメッセージ、インスタントメッセージ（例えば、さまざまな「チャット」サービスを用いて、ユーザ間に送信されるメッセージ）、ＳＭＳ／ＭＭＳメッセージ（例えば、さまざまな移動通信データネットワークおよび他の無線データネットワークによってサポートされるショートメッセージングサービスおよび／またはマルチメディアメッセージングサービスプロトコルに準拠するメッセージ）、音声メッセージ、写真／画像メッセージ、ソーシャルネットワークメッセージなどが挙げられる。メッセージングサービスの例としては、Gmail（登録商標）（Google（登録商標）社のサービス）またはYahoo!（登録商標）Mail（Yahoo!社のサービス）などのメールサービスが挙げられる。他の例としては、Gmailのチャット機能またはFacebook（登録商標）（Facebook社のサービス）のチャット機能などのインスタントメッセージまたはチャットサービス、移動通信データキャリアによって提供されたＳＭＳ／ＭＭＳサービス、メッセージングコンポーネント（例えば、Facebook社またはLinkedIn（登録商標）社により提供されたソーシャルネットワーク）を備えるソーシャルネットワークサービスが挙げられる。通信システムは、装置アクセス管理システム１２０とリモート装置との間の通信を容易にするために、ウェブベースクライアントインターフェイス、専用アプリケーションプログラム、アプリケーションプログラムインターフェイス（ＡＰＩ）、および／または他のツールを提供することができる。
【００８４】
通信システムは、１つ以上のさまざまな種類の通信ネットワークを介して、リモート装置と通信することができる。通信ネットワークの例として、例えば、インターネット、ワイドアリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、イーサネット（登録商標）ネットワーク、公衆または私設ネットワーク、有線ネットワーク、無線ネットワーク、およびそれらの組み合わせを含むがこれらに限定されない。異なる通信プロトコルを用いて、IEEE802.XXプロトコルスイート、ＴＣＰ／ＩＰ、ＩＰＸ、ＳＡＮ、AppleTalk、Bluetooth（登録商標）、および他のプロトコルのような有線プロトコルおよび無線プロトコルの両方を含む通信を促進することができる。
【００８５】
いくつかの実施形態において、通信システムは、プッシュ通知サービス（例えば、Apple（登録商標）社により提供されたAppleプッシュ通知サービスまたはGoogle（登録商標）社により提供されたGoogle（登録商標）通知サービス）を実行することができる。プッシュ通知サービスは、リモート装置（例えば、エンドポイント装置２１０およびエンドポイント装置２２０）との通信を容易にすることができる。
【００８６】
変更イベントエントリに対して、変更イベントハンドラ２３２は、変更イベントエントリによって特定された変更イベントに基づいて、変更イベントオブジェクトをインスタンス化することができる。変更イベントオブジェクトは、変更イベントと変更イベントの通知対象であるリモート装置とを特定するメタデータを含むことができる。
【００８７】
アクションプロセッサ２３４は、変更イベントの種類に基づいて、実行すべくアクションプロセスを判断することができる。いくつかの実施形態において、１つ以上の変更イベントクラスに対応して、アクションプロセスクラスを定義することができる。変更イベントの場合、アクションプロセッサ２３４は、変更イベントクラスに基づいてアクションプロセスクラスを判断することができる。変更イベントクラスは、変更イベントの種類に基づいて判断されてもよい。いくつかの実施形態において、データストア１６０は、アクションプロセスクラスと一種類以上の変更イベントとの間の関連を示す情報を保存することができる。アクションプロセスをスケジュールするために、コンピューティングノードは、アクションプロセスクラスのインスタンス（例えば、図６を参照して後述するアクションプロセスオブジェクト）を設定することができる。アクションプロセスオブジェクトを使用して、アクションプロセスクラスに対応するアクションプロセス（例えば、ルーチン）を呼び出すことができる。アクションプロセスは、変更イベント（たとえば、変更イベントオブジェクト）に関する情報を１つ以上のリモート装置（例えば、エンドポイント装置２１０およびエンドポイント装置２１２）に通信することを含むことができる。
【００８８】
アクションプロセスを実行するときに、コンピューティングノードは、通信システムを用いて、変更イベントエントリによって特定された変更イベントに関する通知をリモート装置に送信することができる。通知は、リモート装置に非同期に送信されてもよい。リモート装置は、通信システムを定期的にチェックする（例えば、通信システムによって実装された通知サービスにプル要求を送信する）ことによって、リモート装置に影響を及ぼす変更イベントが発生したか否かを判断することができる。リモート装置は、通信システムにプル要求を送信することによって、変更イベントに関する情報を取得することができる。いくつかの実施形態において、通知は、エンドポイント装置を起動（例えば、スリープ解除）することによって、変更イベントに関する情報を取得させることができる。通信システムは、変更イベントキュー１２４内の変更イベントに対応する変更イベントエントリを利用することができる。いくつかの実施形態において、通信システムは、コンピューティングノード２２２のうち１つと通信することによって、エンドポイント装置からのプル要求によって示された変更イベントに対応する変更イベントエントリから情報を取得することができる。通信システムは、プル要求によって示された変更イベントに関する通知をエンドポイント装置に送信したコンピューティングノードと通信することができる。
【００８９】
各リモート装置は、コンピューティングノード２２２を含む装置アクセス管理システム１２０と通信するように構成されたセキュアコンテナアプリケーションを含むことができる。セキュアコンテナアプリケーションは、データストア１６０に含まれる情報、例えば変更イベントクラスおよびアクションプロセスクラスに関する情報を利用することができる。いくつかの実施形態において、セキュアコンテナアプリケーションは、コンピューティングノード２２２のうち１つから送信された変更イベントオブジェクトによって特定された変更イベントに応じて実行されるアクションプロセスを判断することができる。いくつかの実施形態において、コンピューティングノードからの変更イベントに関する指示に基づいて、セキュアコンテナアプリケーションは、１つ以上の処理（例えば、ポリシーの変更、アプリケーションの更新、または設定の調整）を実行するように構成されてもよい。セキュアコンテナアプリケーションは、通信システムと通信することによって変更イベントに関する通知を受信し、それに応答して、変更イベントに関する情報のプル要求を通信するように構成されてもよい。いくつかの実施形態において、セキュアコンテナアプリケーションは、通信システムをチェックして、変更イベントが発生したか否かを判断するように構成されてもよい。変更イベントがリモート装置に伝送されていない場合、通信システムは、変更イベントに関する情報をリモート装置に送信することができる。この情報は、変更イベントの要求に応答して送信されてもよい。
【００９０】
各々のコンピューティングノード２２２（例えば、コンピューティングノード２２２−１、コンピューティングノード２２２−２、・・・コンピューティングノード２２２−Ｎ）は、ランタイム環境（例えば、ランタイム２２４、ランタイム２２６、・・・ランタイム２２８）を具備することができる。ランタイム環境は、プロセスを実行するための複数の実行スレッド（例えば、スレッドプール）を含むことができる。図２に示す例において、コンピューティングノード２２２−１およびコンピューティングノード２２２−２は、異なる変更イベントに応じてアクションプロセスを並列に実行することができる。例えば、コンピューティングノード２２２−１およびコンピューティングノード２２２−２は、スレッド（例えば、スレッド１）上で、変更イベントキュー１２４上の変更イベントエントリ２０２に対応する変更イベント１に応じてアクションプロセス１を実行することができる。変更イベント１をエンドポイント装置２１０および２１２に通信するための処理効率を改善するために、エンドポイント装置２１０に対応するコンピューティングノード２２２−１上で、アクションプロセス１を実行し、エンドポイント装置２１２に対応するコンピューティングノード２２２−２上で、アクションプロセス１を実行することができる。変更イベント２を変更イベントキュー１２４に追加した場合、コンピューティングノード、例えばコンピューティングノード２２２−１は、変更イベント２に応じてアクションプロセス２を実行するようにスケジューリングされてもよい。アクションプロセス２は、スレッド１上で実行されるアクションプロセス１と並行して、スレッド２上で実行されてもよい。変更イベント３を変更イベントキュー１２４に追加した後、コンピューティングノード、例えばコンピューティングノード２２２−１は、変更イベント３に応じてアクションプロセス３を実行するようにスケジューリングされてもよい。アクションプロセス３は、スレッド１上で実行されるアクションプロセス１と並行して、スレッド２上で実行されてもよい。
【００９１】
コンピューティングノードは、変更イベントエントリで特定されたリモート装置のためのアクションプロセスを完了したときに、変更イベントキュー１２４から変更イベントエントリを削除することができる。変更イベントエントリで特定された全てのリモート装置のためのアクションプロセスが完了するまで、変更イベントエントリは、変更イベントキュー１２４上に永続に保持されてもよい。したがって、変更イベントエントリは、永続的であり、変更イベントキュー１２４上に保持される。一例において、変更イベントエントリは、全てのリモート装置が変更イベントエントリによって特定された変更イベントに関する情報を受信するまで、変更イベントキュー１２４上に保持される。別の例において、リモート装置が変更イベントエントリによって示された変更イベントを受信していない場合、またはリモート装置が承認を変更イベントに応じて呼び出されたアクションプロセスを開始したコンピュータノードに返送していない場合、変更イベントに対応する変更イベントエントリは、変更イベントキュー１２４上に保持される。変更イベントエントリを変更イベントキュー１２４に維持することにより、装置アクセス管理システム１２０は、全てのリモート装置が通知を受信し、変更イベントに対応するアクションを取ることを保証することができる。異なるリモート装置の異なるコンピューティングノード上で変更イベントに応じてアクションプロセスを開始することによって、処理遅延または実行遅延を回避することができる。リモート装置が応答しない（例えば、リモート装置が変更イベントを承認することができない、またはリモート装置が変更イベントに関する通知を受信することができない）ことによって、１つのコンピューティングノードを変更イベントエントリの処理から外すことはない。
【００９２】
図３は、本発明のいくつかの実施形態に従って、変更イベントに応じてアクションプロセスを開始するための処理シーケンス３００を示す図である。この例において、企業システム、例えば企業コンピュータシステム１５０にアクセスするように、複数のリモート装置（例えば、エンドポイント装置３１２、３１４、３１６および３１８）を登録することができる。
【００９３】
装置アクセス管理システム１２０は、変更イベントキュー１２４を実装して、変更イベントに影響されるリモート装置が確実に通知されるように変更イベントを永続的に管理することができる。変更イベントキュー１２４上の各変更イベントエントリに対して、コンピューティングノード２２２は、変更イベントエントリによって示された変更イベントの種類に基づいて、アクションプロセスを開始することができる。アクションプロセスは、変更イベントの種類との関連付けに基づいて特定されてもよい。アクションプロセスは、変更イベントに影響されるリモート装置に通知すること、場合によって、リモート装置に指示して、変更イベントに基づいて企業システムへのアクセス権を調整することを含むことができる。アクションプロセスの例は、図６を参照して説明する。
【００９４】
処理シーケンス３００は、装置アクセス管理システム１２０によって１つ以上の処理３１８を実行することにより開始されてもよい。装置アクセス管理システム１２０は、企業システムにアクセスするエンドポイント装置３１２、３１４、３１６および３１８の各々のアクセス権の変更に応じて発生した変更イベント（「変更イベント１」）を判断することができる。装置レジストリ（例えば、装置レジストリ１６２）にアクセスすることによって、企業システムにアクセスするために登録されたエンドポイント装置に関する情報を取得することができる。装置アクセス管理システム１２０は、登録されたエンドポイント装置に関する情報を用いて、変更イベントに影響されるエンドポイント装置を判断することができる。装置アクセス管理システム１２０は、アクセス権の変更の種類に対応している変更イベントの種類を特定することができる。変更イベントの種類を定義する情報を含む変更イベントデータストア１６４内の情報に基づいて、変更イベントの種類を判断することができる。
【００９５】
装置アクセス管理システム１２０は、変更イベントに関する情報を保存するために、データ構造（例えば、変更イベントエントリ）を作成することができる。いくつかの実施形態において、装置アクセス管理システム１２０は、１つの変更イベントに応じて複数の変更イベントエントリを作成することができる。例えば、変更イベント１に応じて変更イベントエントリ３０２および変更イベントエントリ３０４を作成することができる。変更イベントエントリ３０２は、エンドポイント装置３１２およびエンドポイント装置３１４を含む一組の装置３０６を示すことができる。変更イベントエントリ３０４は、エンドポイント装置３１６およびエンドポイント装置３１８を含む一組の装置３０８を示すことができる。変更イベントエントリ３０２および３０４の各々は、変更イベントキュー１２４に追加されてもよい。後で、コンピューティングノードは、この変更イベントキュー１２４を利用して、変更イベントに応じて開始するアクションプロセスを判断することができる。
【００９６】
いくつかの実施形態において、装置アクセス管理システム１２０は、変更イベント１に対応するアクションプロセス（「アクションプロセス１」）を実行するように、コンピューティングノード２２２から一組のコンピューティングノードを選択することができる。各コンピューティングノード２２２の処理負荷に基づいて、一組のコンピューティングノードを選択することができる。例えば、装置アクセス管理システム１２０は、コンピューティングノード２２２から、コンピューティングノード２２２−１および２２２−２を含む一組のコンピューティングノードを選択することができる。
【００９７】
装置アクセス管理システム１２０は、１つ以上の処理を実行して、選択された一組のコンピューティングノード（例えば、コンピューティングノード２２２−１およびコンピューティングノード２２２−２）により処理される変更イベント１をスケジュールすることができる。例えば、装置アクセス管理システム１２０は、変更イベントエントリ３０２を処理するようにコンピューティングノード２２２−１をスケジュールし（３２０）、変更イベントエントリ３０４を処理するようにコンピューティングノード２２２−２をスケジュールする（３２２）ことができる。
【００９８】
変更イベント１のスケジューリングによって、コンピューティングノード２２２−１および２２２−２の各々は、変更イベント１に対応する変更イベントエントリに対する処理を実行することができる。コンピューティングノード２２２−１は、変更イベントエントリ３０２に対する処理を実行することができ、コンピューティングノード２２２−２は、変更イベントエントリ３０４に対する処理を実行することができる。コンピューティングノード２２２−１は、コンピューティングノード２２２−２と並行に処理を実行することができる。
【００９９】
コンピューティングノード２２２−１およびコンピューティングノード２２２−２の各々は、変更イベントの種類に対応する変更イベントクラスに基づいて、変更イベント１に対応する変更イベントオブジェクトをインスタンス化することができる。変更イベント１用の変更イベントオブジェクトは、変更イベントエントリ（例えば、変更イベントエントリ３０２および変更イベントエントリ３０４）内の変更イベント１を定義する永続メタデータを含むことができる。換言すれば、変更イベント１に対応する変更イベントエントリに含まれた情報は、変更イベント１に応じてインスタンス化された変更イベントオブジェクトに含まれてもよい。例えば、変更イベントオブジェクトは、変更イベントエントリで特定された装置の装置識別子を含んでもよい。
【０１００】
コンピューティングノード２２２−１およびコンピューティングノード２２２−２の各々は、変更イベント１に応じてアクションプロセスオブジェクトを設定することができる。アクションプロセスクラスは、変更イベント１に対応する変更イベントエントリによって示された変更イベントの種類に基づいて、特定されてもよい。アクションプロセスクラスは、コンピューティングノードが実行すべきアクションプロセスを定義する実行ルーチン（例えば、run()ルーチン）を含むことができる。このルーチンは、コンピューティングノードによって、そのコンピューティングノードに利用可能な処理スレッド上で実行されてもよい。アクションプロセスは、変更イベントに関する情報を、変更イベントに対応する変更イベントオブジェクトで特定されたエンドポイント装置に伝送することを含むことができる。この情報は、変更イベントに応じて調整処理を行うように、エンドポイント装置によって実行される命令を含むことができる。アクションプロセスは、変更イベントに対応する変更イベントオブジェクトで特定された各エンドポイント装置に対して実行されてもよい。アクションプロセスは、複数のエンドポイント装置により並行に実行することができる。
【０１０１】
コンピューティングノード２２２−１およびコンピューティングノード２２２−２の各々は、変更イベント１に応じてアクションプロセスオブジェクトをインスタンス化することができる。コンピューティングノードは、インスタンス化された変更イベントオブジェクトに応じて、アクションプロセスオブジェクトをインスタンス化することができる。アクションプロセスオブジェクトは、変更イベントの種類に対応するアクションプロセスクラスに基づいて、インスタンス化することができる。変更イベントオブジェクトをアクションプロセスオブジェクトのインスタンス化のために実行されているルーチンに渡すことができる。アクションプロセスオブジェクトおよびアクションプロセスクラスの例は、図６を参照して以下に説明される。
【０１０２】
コンピューティングノード２２２−１および２２２−２の各々は、変更イベントの種類に基づいて特定されたアクションプロセスクラスに応じて実行ルーチンを呼び出すことによって、変更イベント１に対応するアクションプロセス１を開始することができる。コンピューティングノードは、インスタンス化したアクションオブジェクトの実行ルーチンを呼び出す。コンピューティングノード２２２−１は、装置組３０６内の各エンドポイント装置のためにアクションプロセス１を呼び出すことができる。コンピューティングノード２２２−２は、装置組３０８内の各エンドポイント装置のために、アクションプロセス１を呼び出すことができる。アクションプロセス１は、変更イベント１に関する情報を装置組内の各エンドポイント装置に送信することを含んでもよい。変更イベントに関する情報は、通知としてリモート装置に送信されてもよい。通知は、通知サービス（例えば、プッシュ通知サービス）をサポートする通信システムを介して送信されてもよい。いくつかの例において、通知は、図３に示される順序とは異なる順序で（例えば非同期的に）送信されてもよい。リモート装置は、通信システムと通信する（例えば、プル要求を送信する）ことによって、通知により特定された変更イベントに関する情報を取得することができる。コンピューティングノード２２２−１は、変更イベント１に関する情報を装置組３０６内の各エンドポイント装置に通知することができる（３２４、３２６）。コンピューティングノード２２２−２は、装置組３０８内の各エンドポイント装置に変更イベント１に関する情報を通知することができる（３２８、３３０）。エンドポイント装置に通知された情報は、変更イベントに従ってエンドポイント装置の動作を調整するための命令または情報を含むことができる。
【０１０３】
いくつかの実施形態において、エンドポイント装置がアクションプロセスに関する処理を完了したときに、コンピューティングノードは、そのエンドポイント装置から通知を受信することができる。エンドポイント装置が変更イベントについて通知され、変更イベントに応じてアクセスを調整する措置を実行したときに、アクションプロセスに関する処理が完了したとする。例えば、コンピューティングノード２２２−１は、装置組３０６のエンドポイント装置３１４から、エンドポイント装置３１４がアクションプロセス１を完了したことを示す承認３３２を受信することができる。例えば、コンピューティングノード２２２−２は、装置組３０８のエンドポイント装置３１６およびエンドポイント装置３１８から、エンドポイント装置３１６、３１８がアクションプロセス１を完了したことをそれぞれ示す承認３３４および承認３３６を受信することができる。リモート装置からの通知（例えば、承認）は、異なるエンドポイント装置から通知を送信する順序と非同期に受信されてもよい。
【０１０４】
コンピューティングノードは、変更イベントエントリで特定されたエンドポイント装置に対してアクションプロセスを完了したときに、変更イベントキュー１２４から変更イベントエントリを削除することができる。図３に示す例において、コンピューティングノード２２２−１は、処理３４０を実行することによって、アクションプロセスが装置組３０６内の各エンドポイント装置に対して完了したか否かを判断することができる。装置組３０６のエンドポイント装置３１２が変更イベント１に対する承認を通信していないため、コンピューティングノード２２２−１は、変更イベントキュー１２４から変更イベントエントリ３０２を削除しない。エンドポイント装置３１２が変更イベント１の承認を示すまで、変更イベントエントリ３０２は、変更イベントキュー１２４から削除されず、変更イベントキュー１２４上に保持される。
【０１０５】
いくつかの実施形態において、コンピューティングノード２２２−１は、変更イベントエントリ３０２における変更イベントの状態を示すことができる。コンピューティングノード２２２−１は、応答しないエンドポイント装置（例えば、エンドポイント装置３１２）に対してアクションプロセス１の実行を再試行することができる。再試行の回数は、装置アクセス管理システム１２０によって定義された変更イベントエントリ３０２に基づいて決定されてもよい。アクションプロセスの実行を再試行するために再試行回数に達したと判断する場合、コンピューティングノード２２２−１は、変更イベントキュー１２４から変更イベントエントリ３０２を削除する（デキューする）。コンピューティングノード２２２−１は、エンドポイント装置３１２に対するアクションプロセスが完了しなかったことを示す情報を、エラーログ（例えば、サーバ監査記録）に保存することができる。
【０１０６】
コンピューティングノード２２２−１は、変更イベント１に対応するアクションプロセス１の結果を示す結果情報３４２を送信することができる。結果情報３４２は、変更イベントエントリ３０２で特定されたエンドポイント装置に対するアクションプロセス１に関する承認の状態を示すことができる。例えば、結果情報３４２は、エンドポイント装置３１４から承認を受信しており、エンドポイント装置３１２から承認を受信しなかったことを示すことができる。結果情報３４２は、変更イベント１に関する通知を受信したエンドポイント装置を示すことができる。
【０１０７】
いくつかの実施形態において、アクションプロセスを実行しようとする後続試行は、異なるコンピューティングノードによって実行されてもよい。結果情報３４２を受信すると、装置アクセス管理システム１２０は、変更イベント１に応じて完了しなかったアクションプロセス１の実行を再試行するように、別のコンピューティングノード（例えば、コンピューティングノード２２２−２）をスケジュールすることができる（３４４）。
【０１０８】
エンドポイント装置組の各エンドポイント装置が変更イベントに対する承認を示したと判断した場合、コンピューティングノードは、変更イベントキュー１２４から変更イベントエントリを削除し、装置アクセス管理システム１２０に結果情報を送信することができる。例えば、コンピューティングノード２２２−２は、承認３３４、３３６を受信すると、変更イベントエントリ３０４を変更イベントキュー１２４から削除し、結果情報３４６を装置アクセス管理システム１２０に送信することができる。結果情報３４６は、変更イベントエントリ３０４に応じてアクションプロセス１が完了したことを示すことができる。
【０１０９】
装置アクセス管理システム１２０は、処理３４８を実行することによって、企業システム内に発生する追加の変更イベントに応じてアクションプロセスを実行するように１つ以上のコンピューティングノード２２２をスケジュールすることができる。例えば、図４は、本発明のいくつかの実施形態に従って、変更イベントに応じてアクションプロセスを開始するための処理シーケンス４００を示す図である。具体的には、図４は、装置アクセス管理システム１２０が変更イベント１を特定した後、特定する第２変更イベント（「変更イベント２」）の例を示している。図４に示された例において、処理４００は、処理３００を実行した後に実行されてもよい。いくつかの実施形態において、変更イベント２を特定した時間に基づいて、処理４００の全てまたは一部は、処理３００と並行に実行されてもよい。
【０１１０】
図３の例に続き、変更イベントエントリ３０２で特定された全てのエンドポイント装置（例えば、エンドポイント装置３１２、３１４）が変更イベント１に関する情報を受信するまで、変更イベントエントリ３０２は、変更イベントキュー１２４に永続的に残ることができる。変更イベントエントリに対応する変更イベントに影響される全ての装置が変更イベントについて通知されるまで、変更イベントエントリは、変更イベントキューに残されてもよい。いくつかの実施形態において、変更イベントの通信を再試行するために、変更イベントをリモート装置に再送信してもよい。変更イベントエントリ３０２などの変更イベントエントリは、別の変更イベント（例えば、変更イベント２）が特定された後でも、変更イベントキュー１２４上に残されてもよい。装置アクセス管理システム１２０は、変更イベント２に影響されるリモート装置、例えば、エンドポイント装置３１４、３１６、３１８を通知するように処理を実行することができる。
【０１１１】
コンピューティングノード２２２−１は、処理４２２を実行することによって変更イベント１に対するアクションプロセス１の実行を再試行して、変更イベント１をエンドポイント装置３１２に通知することができる。変更イベント１をエンドポイント装置３１２に通知する以前の試行ではエンドポイント装置３１２から承認を受信しなかったため、アクションプロセス１の実行を再試行することができる。アクションプロセス１は、変更イベント１に関する情報をエンドポイント装置１に通信すること４２４を含むことができる。
【０１１２】
変更イベントに関する情報は、通知としてリモート装置に伝送されてもよい。通知は、通知サービス（例えば、プッシュ通知サービス）をサポートする通信システムを介して伝送されてもよい。いくつかの例において、通知は、図３に示される順序とは異なる順序で（例えば非同期的に）伝送されてもよい。リモート装置は、通信システムと通信する（例えば、プル要求を送信する）ことによって、通知により特定された変更イベントに関する情報を取得することができる。
【０１１３】
処理４００は、装置イベント管理システム１２０が変更イベント２を処理することによって、変更イベント２に影響されるエンドポイント装置３１４、３１６、３１８を通知することを含むことができる。この例において、装置アクセス管理システム１２０は、２つの変更イベントエントリ４０６、４０８を作成することによって、変更イベント２を通信するための処理負荷をエンドポイント装置３１４、３１６、３１８の間に分散することができる。変更イベントエントリ４０６は、エンドポイント装置３１４に対して作成されてもよい。変更イベントエントリ４０８は、エンドポイント装置３１６、３１８を含む一組のエンドポイント装置４１０に対して作成されてもよい。
【０１１４】
装置アクセス管理システム１２０は、変更イベント２をエンドポイント装置３１４、３１６、３１８に通知するために、一組のコンピューティングノード（例えば、コンピューティングノード２２２−１、２２２−２）を選択することができる。装置アクセス管理システム１２０は、変更イベントエントリ４０６に応じてアクションプロセス（例えば、アクションプロセス２）を処理するようにコンピューティングノード２２２−１をスケジュールすることができ（４３０）、変更イベントエントリ４０８に応じてアクションプロセス２を処理するようにコンピューティングノード２２２−２をスケジュールすることができる（４５０）。いくつかの実施形態において、複数の変更イベントが互いに競合せずまたは互いに依存しない場合、コンピューティングノード２２２および装置アクセス管理システム１２０は、複数の変更イベントを並行に処理することができる。変更イベントは、たとえば、同一のポリシーの変更に関連する場合、競合する可能性がある。
【０１１５】
変更イベント２のスケジューリングによって、コンピューティングノード２２２−１は、変更イベントエントリ４０６に関する処理を実行し、コンピューティングノード２２２−２は、変更イベントエントリ４０８に関する処理を実行することができる。コンピューティングノード２２２−１およびコンピューティングノード２２２−２の各々は、変更イベントの種類に対応する変更イベントクラスに基づいて、変更イベント２に応じて変更イベントオブジェクトをインスタンス化することができる。コンピューティングノード２２２−１およびコンピューティングノード２２２−２の各々は、変更イベント２に応じてアクションプロセスオブジェクトを設定することができる。
【０１１６】
設定されたアクションプロセスオブジェクトを用いて、コンピューティングノード２２２−１は、エンドポイント装置３１４のために、アクションプロセス２を呼び出すことができ、コンピューティングノード２２２−２は、装置組４１０内の各エンドポイント装置のために、アクションプロセス２を呼び出すことができる。アクションプロセス２について、コンピューティングノード２２２−１は、変更イベント２に関する情報をエンドポイント装置３１４に伝送することができる（４３４）。コンピューティングノード２２２−２は、変更イベント２に関する情報を、装置組４１０内の各エンドポイント装置に伝送することができる（４５２、４５４）。コンピューティングノード２２２−１は、エンドポイント装置３１４から、エンドポイント装置３１４がアクションプロセス２を完了したことを示す承認４４０を受信することができる。コンピューティングノード２２２−２は、装置組４１０内のエンドポイント装置３１６、３１８から、エンドポイント装置３１６、３１８がアクションプロセス２を完了したことをそれぞれ示す承認４５６、４５８を受信することができる。リモート装置からの通知（例えば、承認）は、異なるエンドポイント装置から通知を送信する順序と非同期に受信されてもよい。
【０１１７】
いくつかの実施形態において、コンピューティングノードは、異なるアクションプロセスを処理し始めた後、エンドポイント装置から１つのアクションプロセスに関する通信（例えば、承認）を受信してもよい。例えば、コンピューティングノード２２２−１は、アクションプロセス２を処理し始めた後、エンドポイント装置３１２から承認４３８を受信することができる。アクションプロセス１を再試行するために、承認４３８を受信することができる。承認４３８は、特定の順序を有すると示されているが、アクションプロセス２に応じて、コンピューティングノード２２２−１とエンドポイント装置３１４との間に行われた通信の前に、後に、または同時に受信されてもよい。
【０１１８】
コンピューティングノード２２２−１は、エンドポイント装置３１２がアクションプロセス１を完了したか否かを判断することができる。承認４３８を受信すると、コンピューティングノード２２２−１は、変更イベントキュー１２４から変更イベントエントリ３０２を削除し、装置アクセス管理システム１２０に結果情報４３６を送信することができる。結果情報４３６は、変更イベントエントリ３０２に応じてアクションプロセス１が完了したことを示すことができる。
【０１１９】
コンピューティングノード２２２−１は、エンドポイント装置３１４がアクションプロセス２を完了したか否かを判断することができる。承認４４０を受信すると、コンピューティングノード２２２−１は、変更イベントキュー１２４から変更イベントエントリ４０６を削除し、装置アクセス管理システム１２０に結果情報４４２を送信することができる。結果情報４４２は、変更イベントエントリ４０６に応じてアクションプロセス２が完了したことを示すことができる。
【０１２０】
コンピューティングノード２２２−２は、エンドポイント装置３１６、３１８がアクションプロセス２を完了したか否かを判断することができる。承認４５６、４５８を受信すると、コンピューティングノード２２２−２は、変更イベントキュー１２４から変更イベントエントリ４０８を削除し、装置アクセス管理システム１２０に結果情報４６０を送信することができる。結果情報４６０は、変更イベントエントリ４０８に応じてアクションプロセス２が完了したことを示すことができる。
【０１２１】
装置アクセス管理１２０は、変更イベントキュー１２４上に存在し得る追加の変更イベントエントリを処理するための処理４６２を実行することができる。処理４００は、変更イベントキュー１２４が空になったときに終了する。
【０１２２】
図５は、本発明のいくつかの実施形態に従って、変更イベントに関する情報を保存するためのデータ構造５１０の一例を示す図である。具体的に、データ構造５１０は、変更イベントエントリの情報を保存することができる。変更イベントエントリに保存されるデータは、変更イベントに関するメタデータを含むことができる。いくつかの実施形態において、異なる変更イベントの各々に応じて、データ構造５１０のインスタンス（「変更イベントオブジェクト」）を作成してもよい。上述したように、コンピューティングノードが変更イベントエントリによって示された変更イベントに応じてアクションを実行するために、変更イベントエントリは、キュー（例えば、変更イベントキュー１２４）で管理されてもよい。コンピューティングノードは、変更イベントエントリに保存された情報に基づいて、実行すべく処理（例えば、開始するアクションプロセス）を決定することができる。いくつかの実施形態において、変更イベントオブジェクトは、変更イベントエントリ用のデータ構造５１０に含まれる情報に基づいて作成されてもよい。変更イベントエントリの例は、変更イベントエントリ３０２、変更イベントエントリ３０４、変更イベントエントリ４０６、および変更イベントエントリ４０８を含むことができる。いくつかの実施形態において、変更イベントオブジェクトは、Ｊａｖａ（登録商標）クラスに基づいて定義された通常のＪａｖａ（登録商標）オブジェクトであってもよい。
【０１２３】
いくつかの実施形態において、データ構造５１０は、メタデータクラス（「変更イベントクラス」）に基づいて定義されてもよい。メタデータクラスは、変更イベントに応じて保存される情報の種類を定義することができる。メタデータクラスは、一意的な変更イベントを特定するために、変更イベントに応じて、１つ以上の情報フィールドを定義することができる。メタデータクラスは、任意種類の変更イベントに応じて保存された情報の種類を定義するテンプレートクラスであってもよい。データ構造５１０は、さまざまな種類の変更イベントに応じて実装することができる。いくつかの実施形態において、異なる種類の変更イベントに応じて、メタデータクラスを各々定義することができる。変更イベントオブジェクトは、データ構造５１０によって表されるメタデータオブジェクトであってもよい。変更イベントオブジェクトのデータ構造５１０に保存されたデータは、メタデータを含むことができる。メタデータは、変更イベントエントリから得られたデータを含むことができる。変更イベントオブジェクトは、変更イベントの種類に応じて変更イベントクラスをインスタンス化することによって生成することができる。変更イベントオブジェクトを表すデータ構造５１０は、インスタンス化された変更イベントクラスによって定義された種類の情報を含むことができる。
【０１２４】
データ構造５１０は、配列、レコード、関係データベーステーブル、ハッシュテーブル、リンクリスト、または他の種類のデータ構造を含むがこれらに限定されない異なる種類のデータ構造のうち１つのデータ構造またはそれらの組み合わせとして実現されてもよい。例示の目的のために、データ構造５１０は、特定の数のフィールドを有する構成で示されているが、示されたものよりも多いフィールドまたは少ないフィールドを有する異なる構成に定義されてもよい。データ構造５１０の各インスタンスは、例えば変更イベントデータストア１６４などのデータストアに保存されてもよい。
【０１２５】
図５に示す例において、データ構造５１０は、変更イベントの種類を示す情報を含むフィールド５１２（「変更イベントの種類」）を含むことができる。変更イベントの種類の例としては、ポリシーの変更、アプリケーションの変更、または同期設定の変更を含むがこれらに限定されない。
【０１２６】
データ構造５１０のフィールド５１４（「変更」）は、変更に関する詳細を示す情報を含むことができる。例えば、フィールド５１４は、ポリシーの変更により変更されたポリシーを示すことができる。いくつかの実施形態において、フィールド５１４は、変更に関連する情報を含むまたは参照することができる。例えば、ポリシーが変更された場合、フィールド５１４は、変更されたポリシーへの参照を含むことができる。フィールド５１４の情報は、変更イベントに応じて作成された変更イベントオブジェクトに含まれてもよい。
【０１２７】
データ構造５１０は、変更イベントをリモート装置に伝送する状態を示す情報を含むフィールド５１６（「変更イベントの状態」）を含むことができる。コンピューティングノードは、フィールド５１６の情報を用いて、変更イベントに応じて実行されているアクションプロセスの状態を判断することができる。変更イベント状態の例として、保留、エラー、再試行、または承認済みを含むがこれらに限定されない。例えば、コンピューティングノードは、装置５２０によって特定されたリモート装置の各々が、アクションプロセスを行うためのリモート装置に伝送された変更イベントを承認したか否かを判断することができる。コンピューティングノードは、変更イベントの状態に基づいて、変更イベントに対応するアクションプロセスの実行を再試行するか否かを判断することができる。コンピューティングノードは、変更イベントの状態を示す情報でフィールド５１６を更新することができる。
【０１２８】
データ構造５１０は、変更イベントに対応するアクションプロセスを実行するリモート装置組内の各リモート装置の装置情報（例えば、装置識別子）を含むフィールド５１８（「装置」）を含むことができる。リモート装置組内の各装置の装置情報は、装置レジストリから取得することができる。装置情報は、企業システムに登録されたユーザＩＤとの関連付けに基づいて特定されてもよい。
【０１２９】
データ構造５１０は、変更イベントに応じてアクションプロセスを再試行するための設定を示すフィールド５２０（「再試行設定」）を含むことができる。再試行設定は、変更イベントの種類などのさまざまな要因に依存することができる。再試行設定は、アクションプロセスを試行する回数を示すことができる。コンピューティングノードおよび装置アクセス管理システム１２０は、再試行設定を用いて、リモート装置によって承認されなかった変更イベントに応じて、再びアクションプロセスを呼び出すか否かを判断することができる。
【０１３０】
図６は、本発明のいくつかの実施形態に従って、アクションプロセスオブジェクトを表すデータ構造６１０の一例を示す図である。データ構造６１０は、変更イベントに対応するアクションプロセスに関する情報を保存することができる。データ構造６１０は、変更イベントに対応するアクションプロセスオブジェクトとして、インスタンス化されてもよい。いくつかの実施形態において、データ構造６１０は、クラス（「アクションプロセスクラス」）に基づいて、作成されてもよい。アクションプロセスクラスは、Ｊａｖａ（登録商標）クラスとして定義されてもよい。アクションプロセスオブジェクトは、Ｊａｖａ（登録商標）クラスとして定義されたアクションプロセスクラスに基づいてインスタンス化された通常のＪａｖａ（登録商標）オブジェクトであってもよい。アクションプロセスクラスは、図１のアクションプロセスデータストア１６６などのデータストアに保存することができる。アクションプロセスクラスは、アクションプロセスクラスに基づいてインスタンス化されたアクションプロセスオブジェクトに保存することができる１つ以上のフィールド情報を定義することができる。
【０１３１】
いくつかの実施形態において、変更イベントの種類に対応する異なるアクションプロセスに応じて、異なるアクションプロセスクラスを定義することができる。いくつかの実施形態において、異なる変更イベントの種類に応じて、異なるアクションプロセスクラスを定義することができる。１種類の変更イベントに応じて複数のアクションクラスを定義することができ、その種類の変更イベントに応じて異なるアクションプロセスを実行することができる。
【０１３２】
データ構造６１０は、配列、レコード、関係データベーステーブル、ハッシュテーブル、リンクリスト、または他の種類のデータ構造を含むがこれらに限定されない異なる種類のデータ構造のうち１つのデータ構造またはそれらの組み合わせとして実現されてもよい。例示の目的のために、データ構造６１０は、特定の数のフィールドを有する構成で示されているが、示されたものよりも多いフィールドまたは少ないフィールドを有する異なる構成に定義されてもよい。データ構造６１０の各インスタンスは、例えばアクションプロセスデータストア１６６などのデータストアに保存されてもよい。
【０１３３】
データ構造６１０のフィールド６１２は、アクションプロセスオブジェクトに対応するある変更イベントの種類に応じて実行されるアクションプロセスを特定する情報を含むことができる。アクション処理の例としては、ポリシーの変更処理、アプリケーションの変更処理および同期設定の変更処理を含むがこれに限定されない。変更イベントの種類によって、実行されるアクションプロセスが異なってもよい。いくつかの実施形態において、単一種類の変更イベントに応じて、異なるアクションプロセスを定義してもよく、その種類の変更イベントには、異なる変更を関連付けてもよい。
【０１３４】
データ構造６１０は、変更イベントをリモート装置に伝送する状態を示す情報を含むフィールド６１４（「変更イベントの状態」）を含むことができる。コンピューティングノードは、フィールド６１４の情報を用いて、変更イベントに応じて実行されているアクションプロセスの状態を判断することができる。変更イベント状態の例として、保留、エラー、再試行、または承認済みを含むがこれらに限定されない。例えば、コンピューティングノードは、各リモート装置がアクションプロセスを行うためのリモート装置に伝送された変更イベントを承認したか否かを判断することができる。リモート装置は、開始時にアクションプロセスに渡された変更イベントオブジェクトによって特定されてもよい。コンピューティングノードは、変更イベントの状態に基づいて、変更イベントに対応するアクションプロセスの実行を再試行するか否かを判断することができる。
【０１３５】
アクションプロセスは、アクションプロセスクラス内の１つ以上のルーチンによって定義されてもよい。ルーチンは、アクションプロセスを実行するためのコード（例えば、命令）を含むことができる。アクションプロセスクラスに基づいてインスタンス化されたアクションプロセスオブジェクトを用いて、ルーチンを呼び出すことができる。例えば、アクションプロセスクラスは、実行ルーチン（例えば、run()ルーチン）を含むことができる。このアクションプロセスクラスは、実行プロセスオブジェクトに応じて呼び出されると、ルーチンを実行し始める。いくつかの実施形態において、実行メソッドは、変更イベントに関する情報を示す変更イベントオブジェクトを受け入れることができる。実行メソッドは、変更イベントオブジェクト内の情報を用いて、変更イベントに応じてアクションプロセスを実行することができる。
【０１３６】
アクションプロセスクラスは、変更イベントの種類に関連付けられたアクセス権の変更に特有である１つ以上のルーチンを含むことができる。一部のルーチンは、変更イベントに応じてアクションプロセスを実行するようにリモート装置に指示するコードを含み得る。ルーチンは、変更イベントをリモート装置に送信し、変更イベントに応じてアクションプロセスを実行するようリモート装置に指示するコードを含むことができる。例えば、フィールド６１２がポリシーの変更を示す場合、アクションプロセスは、リモート装置上のポリシーの変更を含むことができる。ルーチンは、変更イベントに関する情報およびリモート装置上で変更されるポリシーをリモート装置に送信することができる。
【０１３７】
以下は、アクションプロセスクラスの一例である。
【０１３８】
【数１】
0006499281.tif 000002
【０１３９】
上記の例において、実行ルーチン（例えば、run()）を呼び出すことによって、リモート装置上のポリシーの更新を含むアクションプロセスを開始することができる。実行ルーチンは、アクションクラスによって定義された他のルーチンを呼び出すことができる。いくつかの実施形態において、アクションプロセスクラスは、アクションプロセスに関連する１つ以上の追加ルーチンを備えたアプリケーションプログラミングインターフェイス（ＡＰＩ）を含むことができる。ルーチンは、アクションプロセスクラスのためにインスタンス化されたアクションプロセスオブジェクトに対応するアクションプロセスクラスによって呼び出されてもよい。ルーチンの例は、「setTaskFailed()」および「setTaskCompleted()」を含むことができる。これらのルーチンによって、アクションプロセスに関する情報をデータ構造６１０に保存することができる。例えば、「setTaskFailed()」を呼び出すことによって、「エラー」という変更イベントの状態を示すアクションプロセスオブジェクトの情報をフィールド６１４に保存することができる。別の例において、「setTaskCompleted()」を呼び出すことによって、「承認済み」という変更イベントの状態を示す情報をフィールド６１４に保存することができる。実行メソッドは、実行メソッドを呼び出すために使用されたアクションプロセスオブジェクト内のフィールド６１４によって示された変更イベントの状態に基づいて、アクションプロセスの実行を判断することができる。
【０１４０】
データ構造６１０は、変更イベントに応じてアクションプロセスを再試行するための設定を示すフィールド６１６（「再試行設定」）を含むことができる。再試行設定は、変更イベントの種類などのさまざまな要因に依存することができる。再試行設定は、アクションプロセスを試行する回数を示すことができる。コンピューティングノードおよび装置アクセス管理システム１２０は、再試行設定を用いて、リモート装置によって承認されなかった変更イベントに応じて、再びアクションプロセスを呼び出すか否かを判断することができる。
【０１４１】
データ構造６１０のフィールド６１８は、変更イベントオブジェクトを含むことができる。フィールド６１８は、ストレージ内の変更イベントオブジェクトへの参照を示すことができ、または情報を変更イベントオブジェクト自体に含むことができる。フィールド６１８を用いて、実行メソッドに渡される変更イベントオブジェクトを保存することができる。コンピューティングノードは、フィールド６１８に参照される変更イベントオブジェクトの変更イベント状態を更新することができる。いくつかの実施形態において、アクションクラスの実行メソッドは、フィールド６１８から参照される変更イベントオブジェクト内の情報を利用することができる。
【０１４２】
図７は、本発明のいくつかの実施形態に従って、さまざまな種類の変更イベントオブジェクトを表すデータ構造７１０、７３０および７５０の例を示す図である。データ構造７１０、７３０および７５０の各々は、企業システムへのアクセス権の変更に関する情報を含む変更イベントオブジェクトの例を表す。上述したように、変更イベントオブジェクトに関する情報は、変更イベントオブジェクトによって特定された変更イベントに影響される各リモート装置に送信されてもよい。いくつかの実施形態において、変更イベントオブジェクトを送信して、変更イベントに関する情報を提供することができる。変更イベントオブジェクト内の情報を用いて、変更イベントオブジェクトによって示された変更に従って企業システムへのアクセス権を調整するようにリモート装置が実行する処理を判断することができる。
【０１４３】
メタデータクラスに基づいて、変更イベントオブジェクトを定義することができる。メタデータクラスに基づいて、変更イベントオブジェクトをインスタンス化することができる。データ構造７１０、７３０および７５０のようなデータ構造は、メタデータクラスに基づいてインスタンス化された変更イベントオブジェクトとして作成されてもよい。メタデータクラスは、そのメタデータクラスに基づいてインスタンス化された変更イベントオブジェクトに保存された情報の種類を定義することができる。各種類の変更イベントに応じて、異なるメタデータクラスを定義することができる。変更イベントオブジェクトは、変更イベントに関する１つ以上の情報フィールドを含むことができる。フィールドは、変更イベントオブジェクトをインスタンス化するメタデータクラスに基づいて定義されてもよい。したがって、変更イベントオブジェクトは、変更イベントの種類に応じて、メタデータクラスに基づいて定義されたフィールドを含むことができる。異なるメタデータクラスの例は、以下に説明される。いくつかの実施形態において、変更イベントオブジェクトは、Ｊａｖａ（登録商標）クラスに基づいて定義された通常のＪａｖａ（登録商標）オブジェクトであってもよい。
【０１４４】
データ構造７１０、７３０および７５０の各々は、配列、レコード、関係データベーステーブル、ハッシュテーブル、リンクリスト、または他の種類のデータ構造を含むがこれらに限定されない異なる種類のデータ構造のうち１つのデータ構造またはそれらの組み合わせとして実現されてもよい。例示の目的のために、データ構造７１０、７３０および７５０の各々は、特定の数のフィールドを有する構成で示されているが、示されたものよりも多いフィールドまたは少ないフィールドを有する異なる構成に定義されてもよい。データ構造７１０、７３０および７５０の各々の各インスタンスは、例えば変更イベントデータストア１６４などのデータストアに保存されてもよい。
【０１４５】
データ構造７１０は、ポリシーの変更として分類された一種の変更イベントに対応する変更イベントオブジェクトの例である。データ構造７１０のフィールド７１２（「変更イベントの種類」）は、「ポリシーの変更」を一種の変更イベントとして特定する情報を含むことができる。ポリシーの変更の例として、遵守ポリシーの変更、登録ポリシーの変更、ワークスペースポリシーの変更、および装置ポリシーの変更を含むがこれらに限定されない。
【０１４６】
以下は、ポリシーの変更に応じて定義されたメタデータクラス（「ポリシー変更クラス」）の例である。
【０１４７】
【数２】
0006499281.tif 000003
【０１４８】
いくつかの実施形態において、メタデータクラスは、そのクラスに基づいてインスタンス化されたオブジェクトに保存された情報を取得するためのルーチンを含むことができる。たとえば、上記のポリシー変更クラスは、変更イベントオブジェクトに保存された情報を取得するためのルーチン、例えばgetEndpointIds()、setEndpointIds()およびgetType()を含むことができる。
【０１４９】
フィールド７１４（「ポリシーの種類」）は、企業システムにアクセスするために変更されたポリシーの種類を示す情報を含む。ポリシーの種類は、データ構造７１０をインスタンス化するメタデータクラス内で定義することができる。ポリシーの種類の例として、登録ポリシー、遵守ポリシー、ワークスペースポリシー、および装置ポリシーを含むがこれらに限定されない。
【０１５０】
いくつかの実施形態において、データ構造７１０は、変更されたポリシーに関する情報を示すポリシー情報フィールド７１６（「ポリシー情報」）を含むことができる。フィールド７１６は、変更されたポリシーのポリシー名、ポリシー、ポリシー識別子、およびそのポリシーを特定する他の情報を含むがこれらに限定されない。
【０１５１】
データ構造７１０のフィールド７１８（「アプリケーション更新」）は、ポリシーの変更によって変更されたアプリケーションを特定する情報を含むことができる。いくつかの実施形態において、ポリシー変更クラスは、ポリシーに応じて追加または削除されたアプリケーションを定義することができる。
【０１５２】
データ構造７１０のフィールド７２０（「設定の更新」）は、ポリシーの変更に応じて変更された設定（例えば、同期設定）を特定する情報を含むことができる。いくつかの実施形態において、ポリシー変更クラスは、ポリシーに応じて追加または削除された設定を定義することができる。
【０１５３】
データ構造７１０のフィールド７２２（「グループの更新」）は、ポリシーの変更に応じて変更されたユーザグループを特定する情報を含むことができる。いくつかの実施形態において、ポリシー変更クラスは、ポリシーに応じて追加または削除されたグループを定義することができる。ユーザグループは、１つ以上の役割に関連付けられたユーザのグループとして定義されてもよい。
【０１５４】
データ構造７１０のフィールド７２４（「装置識別子」）は、装置識別子などの装置情報を含むことができる。各装置識別子は、データ構造７１０によって表された変更に影響されるリモート装置を特定することができる。
【０１５５】
データ構造７３０は、アプリケーションの変更として分類された一種の変更イベントに対応する変更イベントオブジェクトの一例である。データ構造７３０のフィールド７３２（「変更イベントの種類」）は、「アプリケーションの変更」を一種の変更イベントとして特定する情報を含むことができる。アプリケーションの変更の例として、複数のリモート装置に利用可能なアプリケーションのカタログにアプリケーションの追加、カタログからアプリケーションの削除、カタログ内のアプリケーションのバージョンの変更、アプリケーションへのアクセス権の変更、リモート装置にプッシュできるアプリケーションへのアクセス権の変更、または他の種類のアプリケーションの変更を含むがこれらに限定されない。
【０１５６】
以下は、ポリシーの変更に応じて定義されたメタデータクラス（「ポリシー変更クラス」）の例である。
【０１５７】
【数３】
0006499281.tif 000004
【０１５８】
データ構造７３０のフィールド７３４（「アプリケーション識別子」）は、変更された１つ以上のアプリケーションの識別子に関する情報を含むことができる。アプリケーション識別子を使用して、ストレージ内のアプリケーションを参照することができる。
【０１５９】
データ構造７３０のフィールド７３６（「旧バージョン」）は、変更前のアプリケーションのバージョン識別子を含むことができる。フィールド７３８（「新バージョン」）は、変更後のアプリケーションのバージョン識別子を含むことができる。リモート装置は、古いバージョンと新たなバージョンとの間のバージョン変更に基づいて、アプリケーションを更新するか否かを判断することができる。
【０１６０】
データ構造７３０のフィールド７３８（「配信情報」）は、変更されたアプリケーションをさらに特定するために使用される配信識別子に関する情報を含むことができる。
【０１６１】
データ構造７３０のフィールド７４０（「装置識別子」）は、装置識別子などの装置情報を含むことができる。各装置識別子は、データ構造７３０によって表された変更に影響されるリモート装置を特定することができる。
【０１６２】
データ構造７５０は、同期設定の変更として分類された一種の変更イベントに対応する変更イベントオブジェクトの例である。データ構造７５０のフィールド７５２（「変更イベントの種類」）は、「同期設定の変更」を一種の変更イベントとして特定する情報を含むことができる。
【０１６３】
データ構造７５０のフィールド７５４（「同期設定」）は、変更された１つ以上の同期設定（例えば、設定１、設定２など）に関する情報を含むことができる。設定の例として、セキュアなワークスペースの１つ以上のクライアント設定および／または１つ以上のリモート装置設定、例えば電子メール設定、ネットワーク設定（例えば、仮想プライベートネットワーク設定またはWifi（登録商標）設定）を含むがこれらに限定されない。いくつかの実施形態において、フィールド７５４は、変更された設定自体、または変更された設定を保存するストレージへの参照を含むことができる。
【０１６４】
データ構造７５０のフィールド７５６（「更新」）は、同期設定に対する変更の種類に関する情報を含むことができる。変更の種類の例は、設定の追加、設定の削除、または設定の更新を含む。
【０１６５】
データ構造７５０のフィールド７５８（「装置識別子」）は、装置識別子などの装置情報を含むことができる。各装置識別子は、データ構造７５０によって表された変更に影響されるリモート装置を特定することができる。
【０１６６】
図８を参照して、本発明のいくつかの実施形態に従って、変更イベントを企業システムにアクセスするリモート装置に伝送するプロセスを示すフローチャート８００である。いくつかの実施形態において、図８に示すプロセスは、図１〜図４に示された装置アクセス管理システム１２０および／または１つ以上のコンピューティングノードを用いて実施することができる。
【０１６７】
フローチャート８００に示されたプロセスは、１つ以上の処理ユニット（例えば、プロセッサコア）、ハードウェア、またはそれらの組み合わせによって実行されるソフトウェア（例えば、コード、命令、プログラム）に実施されてもよい。ソフトウェアは、（例えば、メモリ装置または非一時的なコンピュータ読取可能な記憶媒体上の）メモリに保存されてもよい。フローチャート８００の特定の一連の処理ステップは、限定することを意図していない。別の実施形態に従って、他の一連のステップを実行することもできる。例えば、本発明の代替の実施形態は、異なる順序で上述したステップを実行することができる。さらに、図８に示された各ステップは、複数のサブステップを含み、これらの複数のサブステップは、各ステップに応じてさまざまな順序で実行されてもよい。さらに、特定のアプリケーションに応じて、ステップを追加してもよく、削除してもよい。図８に示された処理が企業システムへのアクセス権の単一の変更に関するものであるが、この処理は、企業システムへのアクセス権の複数の変更に応じて実行されてもよい。図８に示された処理が企業システムへのアクセス権に対応する単一種類の変更イベントに関するものであるが、この処理は、企業システムへのアクセス権に対応する複数種類の変更イベントに応じて実行されてもよい。当業者であれば、多くの変形例、変更例および代替例を認識するであろう。
【０１６８】
フローチャート８００の処理は、ステップ８０２において、複数のリモート装置のために、企業システムへのアクセス権の変更に対応する変更イベントの種類を判断することによって開始される。例えば、装置アクセス管理システム１２０は、企業コンピュータシステム１５０へのアクセス権の変更に対応する変更イベントを特定し、変更イベントの種類を判断することができる。装置アクセス管理システム１２０は、企業システムへのアクセス権を管理することができる。アクセスの管理は、リモート装置の遵守ポリシーの管理、リモート装置に配布されたアプリケーションの管理、および／またはリモート装置と企業システムとの通信に関する同期設定の管理を含む。
【０１６９】
変更イベントの種類は、例えば、ポリシーの変更、アプリケーションの変更、企業システムへのアクセス権に関連する同期設定の変更、または企業システムへのアクセス権に関連する他の種類の特定可能な変更を含むことができる。変更イベントは、リモート装置を使用して企業システムへのアクセス権の変更に個別にまたは組み合わせで対応する１つ以上のイベントに対応することができる。いくつかの実施形態において、変更イベントは、複数種類の変更イベントに対応することができる。
【０１７０】
１種類の変更イベントは、例えば、ポリシーの変更である。ポリシーの変更の例として、企業システムにアクセスするための遵守ポリシーの変更、企業システムにアクセスするようにリモート装置を登録するための登録ポリシーの変更、企業システムにアクセスするリモート装置上のワークスペースに関するワークスペースポリシーの変更、または企業システムにアクセスするリモート装置の装置ポリシーの変更を含むことができる。ポリシーの変更は、ポリシーが作成、更新または削除されるときに特定できる。ポリシーの変更は、変更イベントとして特定できる。リモート装置を用いて企業システムへのアクセス権に関連するポリシーが変更されたときに、変更イベントの種類を判断することができる。
【０１７１】
例えば、別種類の変更イベントは、アプリケーションの変更である。アプリケーションの変更の例として、複数のリモート装置に利用可能なアプリケーションカタログにアプリケーションの追加、カタログからアプリケーションの削除、カタログ内のアプリケーションのバージョン変更、または、企業システムにアクセスするアプリケーションに関連する他の変更を含むことができる。アプリケーションが変更されまたは企業システムのユーザに利用可能なアプリケーショングループに追加される場合、アプリケーションの変更が変更イベントとして特定されてもよい。
【０１７２】
さらに別種類の変更イベントは、例えば、企業システムへのアクセス権に関連する同期設定の変更である。同期設定の変更の例として、ポリシー同期期間の変更またはアプリケーション同期設定の変更を含むことができる。
【０１７３】
ステップ８０４において、変更イベントの種類に関連付けられたアクションプロセスクラスを特定することができる。上述したように、アクションプロセスオブジェクトは、アクションプロセスクラスによって定義された情報を保存するデータ構造に対応することができる。アクションプロセスクラスは、一種類以上の変更イベントに関連付けられてもよい。アクションプロセスクラスは、アクションプロセスクラスに関連する一種類以上の変更イベントに応じてリモート装置上で実行すべくアクションプロセスを定義することができる。したがって、アクションプロセスオブジェクトは、アクションプロセスオブジェクトを定義するアクションプロセスクラスに関連付けられた一種類以上の変更イベントに関連付けられてもよい。アクションプロセスクラスは、変更イベントの種類（例えば、ステップ８０２に判断された変更イベントの種類）に基づいて特定することができる。
【０１７４】
ステップ８０６において、１つ以上のコンピューティングノードの処理負荷を判断することができる。例えば、装置アクセス管理システム１２０は、各コンピューティングノード２２２の処理負荷を判断することができる。コンピューティングノードの処理負荷は、そのコンピューティングノードの処理能力および／またはそのコンピューティングノードによって処理される作業の現在量を示す値に対応してもよい。いくつかの実施形態において、１つ以上の第三者システムを用いて、コンピューティングノードの処理負荷を示す値を決定することができる。
【０１７５】
さまざまな測定値を計算することによって、処理負荷を確定することができる。これらの測定値は、個別にまたはまとめて、コンピューティングノードの処理負荷を示すことができる。一例において、コンピューティングノードが管理できる変更イベントの数を示す値を計算することによって、コンピューティングノードの処理負荷を確定することができる。別の例において、コンピューティングノードによって実行されているアクションプロセス（例えば、アクションプロセスクラスに基づいて形成されたアクションプロセスオブジェクトを用いて開始されたアクションプロセス）の数を計算することによって、コンピューティングノードの処理負荷を確定することができる。
【０１７６】
ステップ８０８において、アクセス変更に対応するアクションプロセスを実行する一組のコンピューティングノードを選択することができる。一組のコンピューティングノードは、複数のコンピューティングノードから選択できる。一組のコンピューティングノードは、１つ以上のコンピューティングノードを含むことができる。例えば、装置アクセス管理システム１２０は、コンピューティングノード２２２から、一組のコンピューティングノード（例えば、コンピューティングノード２２２−１および２２２−２を含む一組のコンピューティングノード）を選択することができる。
【０１７７】
一組のコンピューティングノードは、複数のコンピューティングノードの各々の処理負荷（例えば、ステップ８０６で判断された処理負荷）に基づいて選択されてもよい。一組のコンピューティングノードの各コンピューティングノードは、処理負荷閾値に基づいてコンピューティングノード組に選択されてもよい。いくつかの実施形態において、一組のコンピューティングノードに選択された各コンピューティングノードは、処理負荷閾値を満たす処理負荷を有することができる。一例において、コンピューティングノードが処理できる変更イベントの閾値数に基づいて、処理負荷閾値を定義することができる。別の例において、コンピューティングノードが開始した処理の閾値数として定義されたアクションプロセス閾値に基づいて、処理負荷閾値を定義することができる。この例において、各コンピューティングノードの処理負荷がアクションプロセス閾値を満たすように、処理負荷閾値に基づいて、一組のコンピューティングノードの各コンピューティングノードを選択してもよい。
【０１７８】
フローチャート８００の処理は、１つ以上の後続プロセスフロー、例えばプロセスフロー８２０およびプロセスフロー８３０を含むことができる。アクションプロセス（たとえば、ステップ８０４で特定されたアクションプロセスクラスによって定義されたアクションプロセス）を各プロセスフローにおいて実施することができる。各プロセスフローは、企業システムにアクセスする複数のリモート装置のうち、変更された一組のリモート装置に対して実施されてもよい。プロセスフロー（例えば、プロセスフロー８２０）を行うための一組のリモート装置（例えば、装置組３０６）内の各リモート装置は、異なるプロセスフロー（例えば、プロセスフロー８３０）を行うための一組のリモート装置（例えば、装置組３０８）内の各リモート装置と異なってもよい。いくつかの実施形態において、これらのプロセスフローは、互いに並行して実行されてもよい。
【０１７９】
図８の例において、プロセスフロー８２０は、ステップ８０２で変更イベントの種類を判断した複数のリモート装置のうち、第１組のリモート装置（例えば、装置組３０６）に対して実施することができる。ステップ８１０において、第１組のリモート装置の変更イベントオブジェクトを設定することができる。上述のように、変更イベントオブジェクトは、情報を保存するデータ構造に対応することができる。変更イベントオブジェクトに保存される情報は、変更イベントクラスに基づいて定義されてもよい。変更イベントオブジェクトは、企業システムへのアクセス権の変更に関する情報を示すことができる。複数種類の変更イベントの各々に応じて、異なる変更イベントクラスを定義することができる。変変更イベントの種類に基づいて、変更イベントオブジェクトを設定することができる。変更イベントの種類に対応する変更イベントクラスを用いて、変更イベントオブジェクトを設定することができる。
【０１８０】
第１組の装置のアクセス変更に対応して、変更イベントオブジェクトを設定してもよい。アクセス権が変更された装置の組に対応する変更イベントエントリをキュー（例えば、図１の変更イベントキュー１２４）に配置してもよい。いくつかの実施形態において、変更イベントエントリをデータ構造として定義することができる。変更イベントエントリは、変更イベントの種類に対応する変更イベントに応じて保存された情報の種類を示すことができる。例えば、変更イベントオブジェクトと同様に、アクセス権の変更に対する変更イベントの種類に対応する変更イベントクラスに基づいて、変更イベントエントリを定義することができる。変更イベントエントリは、第１組の装置のアクセス権の変更を示す情報および変更イベントの種類を含むことができる。変更イベントエントリは、第１組のリモート装置の各リモート装置を特定する情報を含むことができる。変更イベントオブジェクトの設定は、キューに配置された第１組のリモート装置の変更イベントエントリに基づいて、変更イベントオブジェクトをインスタンス化することを含むことができる。いくつかの実施形態において、変更イベントオブジェクトは、一旦設定されると、変更イベントオブジェクトを設定した装置組を特定する情報を含むことができる。
【０１８１】
ステップ８１２において、第１アクションプロセスオブジェクトに応じてアクションプロセスを開始する。アクションプロセスは、ステップ８０４で特定されたアクションプロセスクラスに応じて定義することができる。第１アクションプロセスオブジェクトに応じてアクションプロセスをインスタンス化することは、アクションプロセスクラスに基づいて第１アクションプロセスオブジェクトを設定することを含むことができる。第１アクションプロセスオブジェクトは、アクションプロセスクラスをインスタンス化することによって設定することができる。アクションプロセスクラスをインスタンス化する際に、変更イベントオブジェクト、例えば、ステップ８１０で設定された変更イベントオブジェクトは、アクションプロセスクラスに渡される。第１アクションプロセスオブジェクトに応じてアクションプロセスをインスタンス化することは、第１アクションプロセスオブジェクトを用いて、アクションプロセスを呼び出すことを含むことができる。アクションプロセスクラスで提供されたルーチンを呼び出すことによって、アクションプロセスを呼び出すことができる。アクションプロセスを呼び出すと、第１アクションプロセスオブジェクトをルーチンに渡すことができる。
【０１８２】
プロセスフロー８３０は、第２組のリモート装置（例えば、装置組３０８）に対して実施することができる。ステップ８１４において、ステップ８０２で変更イベントの種類を判断した複数のリモート装置のうち、第２組のリモート装置の変更イベントオブジェクトを設定することができる。第２組のリモート装置のアクセス変更に応じて、変更イベントオブジェクトを設定することができる。
【０１８３】
ステップ８１６において、第２アクションプロセスオブジェクトに応じてアクションプロセスを開始する。アクションプロセスは、ステップ８０４で特定されたアクションプロセスクラスに応じて定義することができる。第２アクションプロセスオブジェクトに応じてアクションプロセスをインスタンス化することは、アクションプロセスクラスに基づいて第２アクションプロセスオブジェクトを設定することを含むことができる。第２アクションプロセスオブジェクトは、アクションプロセスクラスをインスタンス化することによって設定することができる。アクションプロセスクラスをインスタンス化する際に、変更イベントオブジェクト、例えば、ステップ８１０で設定された変更イベントオブジェクトは、アクションプロセスクラスに渡される。第２アクションプロセスオブジェクトに応じてアクションプロセスをインスタンス化することは、第２アクションプロセスオブジェクトを用いて、アクションプロセスを呼び出すことを含むことができる。アクションプロセスクラスで提供されたルーチンを呼び出すことによって、アクションプロセスを呼び出すことができる。アクションプロセスを呼び出すと、第２アクションプロセスオブジェクトをルーチンに渡すことができる。いくつかの実施形態において、ステップ８１０で第１アクションプロセスオブジェクトに応じて開始されたアクションプロセスは、ステップ８１６で第２アクションプロセスオブジェクトに応じて開始されたアクションプロセスと並行に実行することができる。
【０１８４】
フローチャート８００の処理は、ステップ８１８で終了する。すなわち、プロセスフロー（例えば、プロセスフロー８２０およびプロセスフロー８３０）の各々は、処理を完了した後に終了する。
【０１８５】
図９は、一実施形態を実施するための分散システム９００を示す簡略図である。図示の実施形態において、分散システム９００は、１つ以上のクライアントコンピューティング装置９０２、９０４、９０６および９０８を含む。クライアントコンピューティング装置９０２、９０４、９０６および９０８は、ネットワーク９１０を介して、ウェブブラウザまたは専用クライアント（例えば、Oracleフォーム）などのクライアントアプリケーションを実行および動作させるように構成される。サーバ９１２は、ネットワーク９１０を介して、リモートクライアントコンピューティング装置９０２、９０４、９０６および９０８と通信可能に接続されてもよい。
【０１８６】
さまざまな実施形態において、サーバ９１２は、リモート装置を用いて企業システムへのアクセス権に関連するイベントを管理するための装置アクセス管理システムを実現することができる１つ以上のサービスまたはソフトウェアアプリケーションを実行するように構成されてもよい。特定の実施形態において、サーバ９１２は、非仮想環境および仮想環境を含むことができる他のサービスまたはソフトウェアアプリケーションを提供することができる。いくつかの実施形態において、これらのサービスは、クライアントコンピューティング装置９０２、９０４、９０６および／または９０８のユーザに対して、ウェブベースまたはクラウドサービスとして、またはＳａａＳ（Software as a Service）モデルとして提供されてもよい。ユーザは、クライアントアプリケーション９０２、９０４、９０６および／または９０８を操作することによって、１つ以上のクライアントアプリケーションを利用して、サーバ９１２と情報交換して、これらの要素によって提供されたサービスを利用することができる。
【０１８７】
図９に示された構成において、システム９００のソフトウェア要素９１８、９２０および９２２は、サーバ９１２上に実装されたものとして示されている。他の実施形態において、システム９００の１つ以上の構成要素および／またはこれらの構成要素によって提供されたサービスは、１つ以上のクライアントコンピューティング装置９０２、９０４、９０６および／または９０８によって実現されてもよい。クライアントコンピューティング装置を操作するユーザは、１つ以上のクライアントアプリケーションを利用して、これらの構成要素によって提供されたサービスを使用することができる。これらの構成要素は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実現されてもよい。理解すべきことは、分散型システム９００と異なって、さまざまな異なるシステム構成が可能であることである。図９に示されたシステムは、実施形態を実施するための分散型システムの一例であり、限定することを意図していない。
【０１８８】
クライアントコンピューティング装置９０２、９０４、９０６および／または９０８は、さまざまな種類のコンピューティングシステムを含むことができる。例えば、クライアントコンピューティング装置は、Microsoft Windows Mobile（登録商標）のようなソフトウェア、および／またはiOS、Windows Phone（登録商標）、Android（登録商標）、BlackBerry（登録商標）１０、Palm OSなどのさまざまなモバイルオペレーティングシステムを実行する手持ち式携帯装置装置（例えば、iPhone（登録商標）、携帯電話、iPad（登録商標）、コンピューティングタブレット、携帯情報端末（ＰＤＡ））または装着型装置（例えば、Google Glass（登録商標）ヘッドマウントディスプレイ）を含むことができる。これらの装置は、さまざまなアプリケーション、例えばさまざまなインターネット関連アプリケーション、メールアプリケーションおよびショートメッセージングサービス（ＳＭＳ）アプリケーションをサポートすることができ、さまざまな他の通信プロトコルを使用することができる。また、例示として、Microsoft Windows（登録商標）オペレーティングシステム、Apple Macintosh（登録商標）オペレーティングシステムおよび／またはＬｉｎｕｘ（登録商標）オペレーティングシステムのさまざまなバージョンを動かすパーソナルコンピュータおよび／またはラップトップコンピュータを含む汎用のパーソナルコンピュータであってもよい。クライアントコンピューティング装置は、たとえば、さまざまなＧＮＵ/Ｌｉｎｕｘオペレーティングシステム、たとえば、Google Chrome OSを含むがこれに限定されない市販のＵＮＩＸ（登録商標）またはＵＮＩＸに類似するさまざまなオペレーティングシステムを動かすワークステーションコンピュータであってもよい。さらに、クライアントコンピューティング装置は、ネットワーク９１０を介して通信可能な他の電子機器、例えばシンクライアントコンピュータ、インターネット対応のゲームシステム（たとえば、Kinect（登録商標）ジェスチャ入力装置を備えるまたは備えないMicrosoft Xboxゲームコンソール）、および／またはパーソナルメッセージング装置などであってもよい。
【０１８９】
図９の分散システム９００は、４つのクライアントコンピューティング装置を備えると示されているが、任意数のクライアントコンピューティング装置をサポートすることができる。他の装置、たとえばセンサを有する装置は、サーバ９１２と情報交換することができる。
【０１９０】
分散型システム９００のネットワーク９１０は、ＴＣＰ／ＩＰ（伝送制御プロトコル／インターネットプロトコル）、ＳＮＡ（システムネットワークアーキテクチャ）、ＩＰＸ（インターネットパケット交換）、およびAppleTalkなどを含むがこれらに限定されないさまざまな市販プロトコルのいずれかを使用してデータ通信をサポートすることができ、当業者に熟知される任意種類のネットワークであってもよい。単なる例示として、ネットワーク９１０は、ローカルエリアネットワーク（ＬＡＮ）、イーサネット（登録商標）に基づくネットワーク、トークンリング、広域ネットワーク、インターネット、仮想プライベートネットワーク（ＶＰＮ）、イントラネット、エクストラネット、公衆交換電話網（ＰＳＴＮ）、赤外線ネットワーク、無線ネットワーク（たとえば、IEEE（Institute of Electrical and Electronic Engineers）802.11プロトコルスイート、Bluetooth（登録商標）、および／または任意の他の無線プロトコルの下で動作するネットワーク）および／またはこれらのネットワークと他のネットワークの組み合わせを含むことができる。
【０１９１】
サーバ９１２は、１つ以上の汎用コンピュータ、専用サーバコンピュータ（例示として、ＰＣ（パーソナルコンピュータ）サーバ、ＵＮＩＸ（登録商標）サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウントサーバを含む）、サーバファーム、サーバクラスタ、または任意の他の適切な構成および／または組み合わせから構成されてもよい。サーバ９１２は、仮想オペレーティングシステムを動かす１つ以上の仮想マシン、または仮想化に関与する他のコンピューティングアーキテクチャを含むことができる。論理記憶装置の１つ以上のフレキシブルプールを仮想化して、サーバの仮想記憶装置を維持することができる。仮想ネットワークは、ソフトウェア定義ネットワークを用いて、サーバ９１２によって制御することができる。さまざまな実施形態において、サーバ９１２は、前述の開示に記載された１つ以上のサービスまたはソフトウェアアプリケーションを実行するように構成することができる。例えば、サーバ９１２は、本開示の実施形態に従って上記に説明した処理を実行するためのサーバに対応することができる。
【０１９２】
サーバ９１２は、上述したものいずれかを含むオペレーティングシステム、および任意の市販サーバオペレーティングシステムを動かすことができる。サーバ９１２は、ＨＴＴＰ（ハイパーテキスト転送プロトコル）サーバ、ＦＴＰ（ファイル転送プロトコル）サーバ、ＣＧＩ（共通ゲートウェイインターフェイス）サーバ、Ｊａｖａ（登録商標）サーバ、データベースサーバなどを含むさまざまな追加サーバアプリケーションおよび／またはミッドティアアプリケーションのいずれかを実行することができる。例示的なデータベースサーバは、Oracle（登録商標）、Microsoft（登録商標）、Sybase（登録商標）、IBM（登録商標）などの会社から市販されているものを含むがこれらに限定されない。
【０１９３】
いくつかの実現例において、サーバ９１２は、クライアントコンピューティング装置９０２、９０４，９０６、および９０８のユーザから受信したデータフィードおよび／またはイベント更新を分析および統合する１つ以上のアプリケーションを含んでもよい。例示として、データフィードおよび／またはイベント更新は、Twitter（登録商標）フィード、Facebook（登録商標）更新または１つ以上の第３情報源および連続データストリームから受信したリアルタイム更新を含むがこれらに限定されない。リアルタイム更新は、センサデータアプリケーション、金融相場表示機、ネットワーク性能測定ツール（たとえば、ネットワーク監視およびトラフィック管理アプリケーション）、ページ遷移（Clickstream）解析ツール、自動車交通監視装置などに関連するリアルタイムイベントを含むことができる。また、サーバ９１２は、クライアントコンピューティング装置９０２、９０４、９０６および９０８の１つ以上の表示装置を介して、データフィードおよび／またはリアルタイムイベントを表示するための１つ以上のアプリケーションを含むこともできる。
【０１９４】
また、分散型システム９００は、１つ以上のデータベース９１４および９１６を含むこともできる。これらのデータベースは、本発明の実施形態によって使用されるユーザ対話情報、使用パターン情報、適合ルール情報、および他の情報を保存するためのメカニズムを提供することができる。データベース９１４および９１６は、さまざまな場所に常駐することができる。例示として、１つ以上のデータベース９１４および９１６は、サーバ９１２の近く（および／またはその中）の非一時記憶媒体に常駐することができる。代替的には、データベース９１４および９１６は、リモートサーバ９１２から離れており、ネットワークに基づく接続または専用接続を介して、サーバ９１２と通信している。一組の実施形態において、データベース９１４および９１６は、保存領域ネットワーク（ＳＡＮ）に常駐することができる。同様に、サーバ９１２に帰する機能を実行するための任意の必要なファイルは、必要に応じて、サーバ９１２上に／またはサーバ９１２から離れた場所に保存されてもよい。一組の実施形態において、データベース９１４および９１６は、たとえば、Oracleにより提供されるデータベースなどの関係データベースを含むことができる。これらの関係データベースは、ＳＱＬフォーマット命令に応じて、データを取得、保存および更新するように構成されている。
【０１９５】
いくつかの実施形態において、クラウド環境は、リモート装置を用いて企業システムに対するアクセスに関するイベントを管理するための１つ以上のサービスを提供することができる。図１０は、本開示の一実施形態に従って、サービスをクラウドサービスとして提供することができるシステム環境１０００の１つ以上の構成要素を示す簡略ブロック図である。図１０に示された実施形態において、システム環境１０００は、１つ以上のクライアントコンピューティング装置１００４、１００６および１００８を含む。ユーザは、これらのクライアントコンピューティング装置を用いて、クラウドインフラストラクチャシステム１００２と情報交換することができる。クラウドインフラストラクチャシステム１００２は、リモート装置を用いて企業システムに対するアクセスに関するイベントを管理するサービスを含むクラウドサービスを提供することができる。クラウドインフラストラクチャシステム１００２は、サーバ１１１０について上述したものを含み得る１つ以上のコンピュータおよび／またはサーバを備えることができる。
【０１９６】
理解すべきことは、図１０に示されたクラウドインフラストラクチャシステム１００２は、図示された構成要素以外の構成要素を備えてもよいことである。さらに、図１０に示されたものは、本発明の実施形態を組み込むことができるクラウドインフラストラクチャシステムの一例に過ぎない。いくつかの他の実施形態において、クラウドインフラストラクチャシステム１００２は、図示よりも多いまたは少ない構成要素を有してもよく、２つ以上の構成要素を組み合わせてもよく、または異なる構成または配置の構成要素を有してもよい。
【０１９７】
クライアントコンピューティング装置１００４、１００６、および１００８は、クライアントコンピューティング装置９０２、９０４、９０６、および９０８と同様であってもよい。クライアントコンピューティング装置１００４、１００６、および１００８は、ウェブブラウザ、専用クライアントアプリケーション（たとえば、Oracleフォーム）または他のアプリケーションなどのクライアントアプリケーションを作動するように構成されることができる。ユーザは、クライアントアプリケーションを用いてクラウドインフラストラクチャシステム１００２と情報交換することによって、クラウドインフラストラクチャシステム１００２により提供されたサービスを利用することができる。例示的なシステム環境１０００は、３つのクライアントコンピューティング装置を備えると示されているが、任意数のクライアントコンピューティング装置をサポートすることができる。他の装置、たとえばセンサを有する装置は、クラウドインフラストラクチャシステム１００２と情報交換することができる。
【０１９８】
ネットワーク１０１０は、クライアント１００４、１００６および１００８とクラウドインフラストラクチャシステム１００２との間のデータの通信および交換を促進することができる。各ネットワークは、上記でネットワーク９１０に関して説明したプロトコルをさまざまな市販プロトコルのいずれかを用いてデータ通信をサポートすることができ、当業者に熟知する任意種類のネットワークであってもよい。
【０１９９】
特定の実施形態において、クラウドインフラストラクチャシステム１００２によって提供されたサービスは、需要に応じて、クラウドインフラストラクチャシステムからユーザに提供できる多くのサービスを含んでよい。リモート装置を使用して企業システムに対するアクセスに関するイベントの管理に関連するサービスに加えて、オンラインデータの保存およびバックアップ、Ｗｅｂベースの電子メールサービス、ホストされたオフィススイートおよび文章連携サービス、データベース処理、管理された技術サポートサービスを含むがこれらに限定されないさまざまなサービスを提供することができる。クラウドインフラストラクチャシステムによって提供されるサービスは、ユーザのニーズを満たすように動的に拡張できる。
【０２００】
特定の実施形態において、クラウドインフラストラクチャシステム１００２によって提供されたサービスの特定の例示は、本明細書において、「サービスインスタンス」と呼ばれる。一般的には、インターネットなどの通信ネットワークを介して、クラウドサービスプロバイダのシステムからユーザに提供できる任意のサービスは、「クラウドサービス」と呼ばれる。典型的には、パブリッククラウド環境において、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客のオンプレミスサーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションを提供することができ、ユーザは、必要に応じて、インターネットなどの通信ネットワークを介して、アプリケーションを注文し、使用することができる。
【０２０１】
いくつかの例において、コンピュータネットワーククラウドインフラストラクチャ内のサービスは、保護されたコンピュータネットワークのストレージアクセス、ホストされたデータベース、ホストされたＷｅｂサーバ、ソフトウェアアプリケーション、またはクラウドベンダによってユーザに提供された他のサービス、または当該技術分野に知られている他のサービスを含むことができる。たとえば、サービスは、インターネットを介して、クラウド上のリモートストレージに対して、パスワードにより保護されたアクセスを含むことができる。別の例として、サービスは、Ｗｅｂサービスにホストされている関係データベースおよびネットワーク上の開発者により私的使用のためのスクリプト言語ミドルウェアエンジンを含むことができる。別の例として、サービスは、クラウドベンダのウェブサイト上でホストされている電子メールソフトウェアアプリケーションに対するアクセスを含むことができる。
【０２０２】
特定の実施形態において、クラウドインフラストラクチャシステム１００２は、セルフサービスのサブスクリプションに基づく、柔軟なスケーラビリティ、信頼性、高可用性および安全性を有する方法で、顧客に提供できる一連のアプリケーション、ミドルウェアおよびデータベースサービスを含むことができる。このようなクラウドインフラストラクチャシステムの例示として、本願譲受人により提供されたOracleパブリッククラウドが挙げられる。
【０２０３】
クラウドインフラストラクチャシステム１００２はまた、「ビッグデータ」に関連する計算および分析サービスを提供してもよい。「ビッグデータ」という用語は、一般的に非常に大きなデータセットを指す。分析者および研究者が、保存された「ビッグデータ」を利用して、大量のデータを視覚化し、傾向を検出し、および／またはデータと情報交換することができる。このようなビッグデータおよび関連するアプリケーションは、さまざまなレベルおよびさまざまな規模でインフラストラクチャシステムにホストされ、操作されることができる。並行に連結された数十、数百、または数千のプロセッサは、ビッグデータを処理することによって、データを表示することができ、もしくはデータまたはデータの表現に作用する外力をシミュレートすることができる。これらのデータセットは、これらのデータセットは、データベースに編成されたデータまたは構造化モデルに従って編成されたデータなどの構造化データおよび／または非構造化データ（例えば、電子メール、画像、データブロブ（バイナリ大型対象物）、ウェブページ、複合イベント処理）を含むことができる。実施形態の能力を活用して、より多くの（またはより少ない）コンピューティングリソースを比較的迅速に目的物に集中させることによって、クラウドインフラストラクチャシステムは、企業、政府機関、研究機関、個人、個人同士または組織同士のグループまたは他の実体からの需要に基づいて、大きなデータセットに関するタスクの実行により適切になる。
【０２０４】
さまざまな実施形態において、クラウドインフラストラクチャシステム１００２は、顧客から申込んだクラウドインフラストラクチャシステム１００２のサービスを自動的に提供、管理および追跡するように構成されることができる。クラウドインフラストラクチャシステム１００２は、さまざまな展開モデルを介して、クラウドサービスを提供することができる。たとえば、サービスは、クラウドサービスを販売する組織に所有された（たとえば、Oracleに所有された）クラウドインフラストラクチャシステム１００２を有するパブリッククラウドモデルで提供され、一般人または異なる業界の企業に利用されることができる。別の例として、サービスは、単一の組織に専用されたクラウドインフラストラクチャシステム１００２を有するプライベートクラウドモデルで提供され、組織内の１つ以上の実体に利用されることができる。また、クラウドサービスは、集団クラウドモデルで提供されてもよい。よって、クラウドインフラストラクチャシステム１００２およびクラウドインフラストラクチャシステム１００２により提供されたサービスは、関連する集団内の複数の組織によって共有される。また、クラウドサービスは、２つ以上の異なるモデルの組み合わせからなるハイブリッドクラウドモデルで提供されてもよい。
【０２０５】
いくつかの実施形態において、クラウドインフラストラクチャシステム１００２によって提供されたサービスは、SaaS（Software as a Service）カテゴリ、PaaS（Platform as a Service）カテゴリ、IaaS（Infrastructure as a Service）カテゴリ、またはハイブリッドサービスを含む他のカテゴリのサービスに準拠して提供された１つ以上のサービスを含むことができる。顧客は、サブスクリプションの申込みによって、クラウドインフラストラクチャシステム１００２によって提供された１つ以上のサービスを注文することができる。これに応じて、クラウドインフラストラクチャシステム１００２は、顧客のサブスクリプション申込書に含まれたサービスを提供する処理を行う。
【０２０６】
いくつかの実施形態において、クラウドインフラストラクチャシステム１００２によって提供されたサービスは、アプリケーションサービス、プラットフォームサービスおよびインフラストラクチャサービスを含むがこれらに限定されない。いくつかの例において、アプリケーションサービスは、SaaSプラットフォームを介して、クラウドインフラストラクチャシステムによって提供されてもよい。SaaSプラットフォームは、SaaSカテゴリに準拠するクラウドサービスを提供するように構成されてもよい。たとえば、SaaSプラットフォームは、統合の開発および展開プラットフォーム上でオンデマンドアプリケーションのスイートを構築し、提供するように、機能することができる。SaaSプラットフォームは、SaaSサービスを提供するために、基礎のソフトウェアおよびインフラストラクチャを管理し、制御することができる。SaaSプラットフォームにより提供されたサービスを利用することによって、顧客は、クラウドインフラストラクチャシステム上で動作するアプリケーションを利用することができる。顧客は、別々のライセンスおよびサポートを購入する必要なく、アプリケーションサービスを取得することができる。さまざまな異なるSaaSサービスを提供することができる。例示としては、販売実績管理、企業統合、および大規模組織のビジネス柔軟性に対する解決策を提供するサービスを含むがこれらに限定されない。
【０２０７】
いくつかの実施形態において、プラットフォームサービスは、PaaSプラットフォームを介してクラウドインフラストラクチャシステム１００２によって提供されてもよい。PaaSプラットフォームは、PaaSカテゴリに準拠するクラウドサービスを提供するように構成されてもよい。プラットフォームサービスの例としては、共有されている共通アーキテクチャ上で既存のアプリケーションを統合する能力、およびプラットフォームにより提供された共有サービスを活用する新規アプリケーションを構築する能力を組織（たとえば、Oracle）に与えるサービスを含むがこれに限定されない。PaaSプラットフォームは、PaaSサービスを提供するために、基礎のソフトウェアおよびインフラストラクチャを管理および制御することができる。顧客は、別々のライセンスおよびサポートを購入する必要なく、クラウドインフラストラクチャシステム１００２によって提供されたPaaSサービスを取得することができる。プラットフォームサービスの例としては、oracle Ｊａｖａクラウドサービス（JCS）、Oracleデータベースクラウドサービス（DBCS）およびその他を含むがこれらに限定されない。
【０２０８】
PaaSプラットフォームにより提供されたサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムにサポートされているプログラミング言語およびツールを利用することができ、展開されたサービスを制御することができる。いくつかの実施形態において、クラウドインフラストラクチャシステムによって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス（たとえば、Oracle Fusionミドルウェアサービス）、およびＪａｖａクラウドサービスを含むことができる。一実施形態において、データベースクラウドサービスは、データベースリソースを蓄積する能力を組織に与えることができる共有サービス展開モデルをサポートすることができ、DBaaS（Database as a Service）をクラウドデータベースとして顧客に提供することができる。ミドルウェアクラウドサービスは、クラウドインフラストラクチャシステム上でさまざまなビジネスアプリケーションを開発および展開するためのプラットフォームを顧客に提供することができ、Ｊａｖａクラウドサービスは、クラウドインフラストラクチャシステム上でＪａｖａアプリケーションを展開するためのプラットフォームを顧客に提供することができる。
【０２０９】
種々の異なるインフラストラクチャサービスは、IaaSプラットフォームによって、クラウドインフラストラクチャシステムに提供されてもよい。これらのインフラストラクチャサービスは、SaaSプラットフォームおよびPaaSプラットフォームにより提供されたサービスを利用する顧客のために、ストレージ、ネットワークおよびその他の基本的なコンピューティングリソースとしての基礎コンピューティングリソースの管理と制御を容易にする。
【０２１０】
特定の実施形態において、クラウドインフラストラクチャシステム１００２はまた、クラウドインフラストラクチャシステムを利用する顧客に、さまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース１０３０を含むことができる。一実施形態において、インフラストラクチャリソース１０３０は、PaaSプラットフォームおよびSaaSプラットフォームによって提供されたサービスを実行するために、事前に統合され且つ最適化されたハードウェアの組み合わせ、例えばサーバリソース、ストレージリソースおよびネットワークリソース、および他のリソースを含んでもよい。
【０２１１】
いくつかの実施形態において、クラウドインフラストラクチャシステム１００２内のリソースは、複数のユーザに共有されることができ、各々の需要に応じて動的に再割り当てることができる。また、リソースは、異なるタイムゾーンでユーザに割り当てることができる。たとえば、クラウドインフラストラクチャシステム１００２は、指定時間内でクラウドインフラストラクチャシステムのリソースを第一時間帯における第一グループのユーザに利用させ、その後、同様のリソースを異なる時間帯における別のグループのユーザに再配分することができ、リソースを最大に利用することができる。
【０２１２】
特定の実施形態において、複数の内部共有サービス１０３２は、提供され、クラウドインフラストラクチャシステム１００２の異なる構成要素またはモジュールに共有されおよびクラウドインフラストラクチャシステム１００２によって提供されたサービスに共有されることができる。これらの内部共有サービスは、安全性および識別サービス、統合サービス、企業リポジトリサービス、企業管理サービス、ウイルススキャンおよびホワイトリストサービス、高可用性のバックアップおよびリカバリサービス、クラウドサポートを可能にするサービス、メールサービス、通知サービス、およびファイル転送サービスなどを含むがこれらに限定されない。
【０２１３】
特定の実施形態において、クラウドインフラストラクチャシステム１００２は、クラウドインフラストラクチャシステム内のクラウドサービス（たとえば、SaaSサービス、PaaSサービスおよびIaaSサービス）を包括的に管理する機能を提供することができる。一実施形態において、クラウド管理機能は、クラウドインフラストラクチャシステム１００２などによって受信した顧客のサブスクリプションを提供、管理、および追跡する機能を含んでもよい。
【０２１４】
一実施形態において、図１０に示すように、クラウド管理機能は、１つ以上のモジュール、たとえば、オーダー管理モジュール１０２０、オーダーオーケストレーションモジュール１０２２、オーダー支給モジュール１０２４、オーダー管理監視モジュール１０２６、およびＩＤ管理モジュール１０２８によって提供される。これらのモジュールは、１つ以上のコンピュータおよび／またはサーバを含んでもよく、これらを用いて形成されてもよい。これらのコンピュータおよび／またはサーバは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、または任意の他の適切な配置および／またはこれらの組み合わせであってもよい。
【０２１５】
例示的な処理１０３４において、顧客は、クライアント装置、たとえば、クライアント装置１００４、１００６または１００８を使用して、クラウドインフラストラクチャシステム１００２により提供された１つ以上のサービスをリクエストし、クラウドインフラストラクチャシステム１００２によって提供された１つ以上のサービスをオーダーすることによって、クラウドインフラストラクチャシステム１００２と情報交換することができる。特定の実施形態において、顧客は、クラウドユーザインターフェイス（ＵＩ）、クラウドＵＩ  １０１０、クラウドＵＩ  １０１４および／またはクラウドＵＩ  １０１６にアクセスし、これらのＵＩを介して、サブスクリプションをオーダーすることができる。クラウドインフラストラクチャシステム１００２が顧客のオーダーに応答して受信したオーダー情報は、顧客と、クラウドインフラストラクチャシステム１００２により提供され、顧客が購読しようとする１つ以上のサービスとを識別する情報を含むことができる。
【０２１６】
ステップ１０３６において、顧客から受信したオーダー情報は、オーダーデータベース１０１８に保存することができる。このオーダーが新たなオーダーである場合、そのオーダーに新たなレコードを作成することができる。一実施形態において、オーダーデータベース１０１８は、クラウドインフラストラクチャシステム１０１８によって操作され、他のシステム要素と連動して操作されるいくつかのデータベースのうち１つであってもよい。
【０２１７】
ステップ１０３８において、オーダー情報をオーダー管理モジュール１０２０に転送することができる。オーダー管理モジュール１０２０は、オーダーに関連する請求および会計機能、たとえば、オーダーの確認、および確認後オーダーの記入を実行するように構成されてもよい。
【０２１８】
ステップ１０４０において、オーダーに関する情報をオーダーオーケストレーションモジュール１０２２に伝送することができる。オーダーオーケストレーションモジュール１０２２は、顧客がオーダーしたサービスおよびリソースの提供を準備するように構成される。いくつかの例において、オーケストレーションモジュール１０２２は、オーダー支給モジュール１０２４のサービスを使用して、支給を行うことができる。特定の実施形態において、オーケストレーションモジュール１０２２は、各オーダーに関連付けられたビジネスプロセスを管理することができ、ビジネスロジックを適用することによって、オーダーに対して支給をするか否かを判断することができる。
【０２１９】
図１０の実施形態に示すように、ステップ１０４２において、新規サブスクリプションのオーダーを受信すると、オーダーオーケストレーションモジュール１０２２は、リソースを割り当て、サブスクリプションオーダーを満たすために必要なリソースを構成するように、リクエストをオーダー支給モジュール１０２４に送信する。オーダー支給モジュール１０２４は、顧客がオーダーしたサービス用のリソースを割り当てることができる。オーダー支給モジュール１０２４は、クラウドインフラストラクチャシステム１０００により提供されたクラウドサービスと、リクエストされたサービスを提供するためのリソースを供給するために使用される物理的な実装層との間の抽象化レベルを形成する。このように、オーダーオーケストレーションモジュール１０２２は、たとえば、サービスおよびリソースをその場で支給するかまたは事前に支給するか、リクエストに応じて割り当てる／与えるかなどの実装詳細から単離されることができる。
【０２２０】
ステップ１０４４において、サービスおよびリソースを支給した後、要求されたサービスが現在使用可能であることを示す通知を加入顧客に送信することができる。場合によって、顧客が要求されたサービスの使用を開始できるように、情報（例えば、リンク）を顧客に送信することができる。
【０２２１】
ステップ１０４６において、オーダー管理監視モジュール１０２６は、顧客のサブスクリプションオーダーを管理および追跡することができる。いくつかの例において、オーダー管理監視モジュール１０２６は、サブスクリプションオーダー内のサービスの利用統計、たとえば、ストレージの使用量、データの転送量、ユーザの数、システムの起動時間およびシステムの停止時間を収集するように構成されることができる。
【０２２２】
特定の実施形態において、クラウドインフラストラクチャシステム１０００は、ＩＤ管理モジュール１０２８を含むことができる。ＩＤ管理モジュール１０２８は、クラウドインフラストラクチャシステム１２００において、識別サービス、たとえば、アクセス管理および認可サービスを提供するように構成することができる。いくつかの実施形態において、ＩＤ管理モジュール１０２８は、クラウドインフラストラクチャシステム１００２によって提供されたサービスを利用したい顧客に関する情報を制御することができる。このような情報は、顧客のＩＤを承認する情報、およびさまざまなシステムリソース（たとえば、ファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど）に対して許可された顧客の実行権限を記載する情報を含むことができる。また、ＩＤ管理モジュール１０２８は、各顧客に関する記述情報の管理、記述情報にアクセスおよび変更する方法の管理、および記述情報にアクセスおよび変更した顧客の管理を行うこともできる。
【０２２３】
図１１は、本発明のさまざまな実施形態を実現することができるコンピュータシステム１１００の一例を示す図である。いくつかの実施形態において、コンピュータシステム１１００を用いて、上述したさまざまなサーバおよびコンピュータシステムのいずれかを実現することができる。図１１に示すように、コンピュータシステム１１００は、さまざまなサブシステム、例えばバスサブシステム１１０２を介して、複数の周辺と通信する処理ユニット１１０４を含む。周辺サブシステムは、処理加速ユニット１１０６と、Ｉ／Ｏサブシステム１１０８と、記憶サブシステム１１１１と、通信サブシステム１１２４とを含むことができる。記憶サブシステム１１１１は、有形コンピュータ読取可能記憶媒体１１２２と、システムメモリ１１１０とを含む。
【０２２４】
バスサブシステム１１０２は、コンピュータシステム１１００のさまざまな構成要素およびサブシステムが必要に応じて相互通信させるための機構を形成する。図示には、バスサブシステム１１０２を単一のバスとして概略的に示しているが、代替的な実施形態において、バスサブシステムは、複数のバスを利用してもよい。バスサブシステム１１０２は、メモリバスまたはメモリコントローラ、周辺バス、およびさまざまなバスアーキテクチャのいずれかを使用するローカルバスを備えるいくつかの種類のバス構造のいずれかを有してもよい。たとえば、このようなアーキテクチャは、業界標準アーキテクチャ（ISA）バス、マイクロチャネルアーキテクチャ（MCA）バス、拡張ISA（EISA）バス、ビデオエレクトロニクス規格協会（VESA）ローカルバス、および周辺構成要素相互接続（PCI）バスを含むことができる。これらのバスは、IEEE P1386.1規格などに準拠した製造されたメザニンバスとして実現することができる。  処理サブシステム１１０４は、コンピュータシステム１１００の動作を制御し、１つ以上の処理ユニット１１３２、１１３４などを含むことができる。処理ユニットは、１つ以上のプロセッサコア、例えば、単一コアプロセッサまたはマルチコアプロセッサ、またはそれらの組み合わせを含んでもよい。いくつかの実施形態において、処理サブシステム１１０４は、１つ以上の専用コプロセッサ、例えばグラフィックプロセッサ、デジタル信号プロセッサ（ＤＳＰ）などを含むことができる。いくつかの実施形態において、処理サブシステム１１０４の処理ユニットの一部または全部は、特定用途向け集積回路（ＡＳＩＣ）またはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などの特装回路を用いて実現することができる。
【０２２５】
いくつかの実施形態において、処理サブシステム１１０４内の処理ユニットは、システムメモリ１１１０またはコンピュータ読取可能な記憶媒体１１２２に保存された命令を実行することができる。さまざまな実施形態において、処理ユニットは、さまざまなプログラムまたはコード命令を実行することができ、複数のプログラムまたはプロセスを同時に実行することができる。任意の時点において、実行されるプログラムコードの一部または全部は、システムメモリ１１１０および／または１つ以上の記憶装置を潜在的に含むコンピュータ読取可能な記憶媒体１１２２に常駐することができる。適切なプログラミングによって、処理サブシステム１１０４は、リモート装置を使用して企業システムに対するアクセスに関するイベントを管理するための上述したさまざまな機能を提供することができる。
【０２２６】
特定の実施形態において、コンピュータシステム１１００によって実行された処理を全体的に加速するために、特定の処理または処理サブシステム１１０４によって実行される処理の一部をオフロードするように、処理加速ユニット１１０６を設けてもよい。
【０２２７】
Ｉ／Ｏサブシステム１１０８は、コンピュータシステム１１００に情報を入力するための装置および機構、および／またはコンピュータシステム１１００からまたはコンピュータシステム１１００を介して情報を出力するための装置および機構を含むことができる。一般的に、「入力装置」という用語を使用する場合、コンピュータシステム１１００に情報を入力するために使用されるさまざまの可能な種類の装置および機構を含むことができる。ユーザインターフェイス入力装置は、キーボード、マウスまたはトラックボールなどのポインティング装置、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声命令認識システムを備える音声入力装置、マイクロフォン、および他の種類の入力装置を含んでもよい。また、ユーザインターフェイス入力装置は、たとえば、Microsoft Kinect（登録商標）モーションセンサのようなモーション検知および／またはジェスチャ認識装置を含んでもよい。Microsoft Kinect（登録商標）モーションセンサは、ジェスチャおよび音声命令を利用する自然ユーザインターフェース（NUI）を介して、Microsoft Xbox（登録商標）３６０ゲームコントローラなどの入力装置を制御することができ、それと対話することができる。また、ユーザインターフェイス入力装置は、Google Glass（登録商標）瞬き検出器のような眼球ジェスチャ認識装置を含むことができる。Google Glass（登録商標）瞬き検出器は、ユーザの眼球活動（たとえば、写真を撮るときおよび／またはメニューを選択するときの「瞬き」）を検出し、眼球活動を入力装置（たとえば、Google Glass（登録商標））に入力する入力に変換する。さらに、ユーザインターフェイス入力装置は、音声命令を介してユーザと音声認識システム（たとえば、Siri（登録商標）ナビゲータ）との対話を可能にする音声認識検出装置を含んでもよい。
【０２２８】
ユーザインターフェイス入力装置の他の例として、三次元（３Ｄ）マウス、ジョイスティックまたはポインティングスティック、ゲームパッド、グラフィックタブレット、スピーカなどのオーディオ／ビジュアル装置、デジタルカメラ、デジタルビデオカメラ、ポータブルメディアプレーヤ、ウェブカメラ、イメージスキャナ、指紋スキャナ、バーコードリーダ、３Ｄスキャナ、３Ｄプリンタ、レーザ距離計、および視線追跡装置を含むがこれらに限定されない。さらに、ユーザインターフェイス入力装置は、たとえば、コンピュータ断層撮影装置、磁気共鳴像装置、超音波放射断層撮影装置、および医療用超音波装置などのような医用画像入力装置を含んでもよい。また、ユーザインターフェイス入力装置は、たとえば、ＭＩＤＩキーボードおよび電子楽器などの音声入力装置を含んでもよい。
【０２２９】
ユーザインターフェイス出力装置は、ディスプレイサブシステム、インジケータライト、またはオーディオ出力装置などの非視覚ディスプレイを含んでもよい。ディスプレイサブシステムは、たとえば、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）またはプラズマディスプレイを使用するフラットパネル装置、投射装置またはタッチスクリーンであってもよい。一般的に、「出力装置」という用語を使用する場合、コンピュータシステム１８００から情報をユーザまたは他のコンピュータに出力するための全ての可能な種類の装置および機構を含むことを意図している。たとえば、ユーザインターフェイス出力装置は、文字、画像およびオーディオ／ビデオ情報を視覚的に伝送するさまざまな表示装置、たとえば、モニタ、プリンタ、スピーカ、ヘッドフォン、カーナビゲーションシステム、プロッタ、音声出力装置、およびモデムを含むがこれらに限定されない。
【０２３０】
記憶サブシステム１１１８は、コンピュータシステム１１００によって使用される情報を保存するためのリポジトリまたはデータストアを提供する。また、記憶サブシステム１１１８は、いくつかの実施例の機能を提供する基本的なプログラミングおよびデータ構造を保存するための有形のコンピュータ読取可能な記憶媒体を提供し得る。処理サブシステム１１０４によって実行されたときに上記の機能を提供するソフトウェア（プログラム、コードモジュール、命令）が記憶サブシステム１１１８に保存され得る。これらのソフトウェアモジュールまたは命令は、処理サブシステム１１０４の１つ以上の処理ユニットによって実行され得る。また、記憶サブシステム１１１８は、本発明に従って使用されるデータを保存するためのリポジトリを提供し得る。
【０２３１】
記憶サブシステム１１１８は、揮発性メモリ装置および不揮発性メモリ装置を含む１つ以上の非一時的メモリ装置を含むことができる。図１１に示すように、記憶サブシステム１１１８は、システムメモリ１１１０およびコンピュータ読取可能な記憶媒体１１２２を含む。システムメモリ１１１０は、いくつかのメモリ、例えばプログラム実行中に命令およびデータを保存するための揮発性メインランダムアクセスメモリ（ＲＡＭ）および固定命令を保存する不揮発性読取専用メモリ（ＲＯＭ）またはフラッシュメモリを含むことができる。いくつかの実現例では、始動中などにコンピュータシステム１１００内の素子間で情報を転送することを助ける基本ルーチンを含む基本入力／出力システム（basic input/output system：ＢＩＯＳ）が、一般にＲＯＭに保存され得る。ＲＡＭは、一般的には、処理サブシステム１１０４によって現在に処理され、実行されているデータおよび／またはプログラムモジュールを含む。いくつかの実現例において、システムメモリ１１１０は、スタティックランダムアクセスメモリ（static random access memory：ＳＲＡＭ）またはダイナミックランダムアクセスメモリ（dynamic random access memory：ＤＲＡＭ）などの複数の異なるタイプのメモリを含むことができる。
【０２３２】
限定ではなく一例として、図１１に示すように、システムメモリ１１１０は、クライアントアプリケーション、ウェブブラウザ、ミッドティア（mid-tier）アプリケーション、関係データベース管理システム（relational database management system：ＲＤＢＭＳ）などを含み得るアプリケーションプログラム１８１２、プログラムデータ１１１４およびオペレーティングシステム１１１６も示す。一例として、オペレーティングシステム１１１６は、さまざまなバージョンのMicrosoft Windows（登録商標）、Apple Machintosh（登録商標）および／もしくはＬｉｎｕｘオペレーティングシステム、さまざまな市販のＵＮＩＸ（登録商標）もしくはＵＮＩＸライクオペレーティングシステム（さまざまなＧＮＵ／Ｌｉｎｕｘオペレーティングシステム、Google Chrome（登録商標）ＯＳなどを含むが、これらに限定されるものではない）、および／または、ｉＯＳ、Windows（登録商標）フォン、Android（登録商標）ＯＳ、BlackBerry（登録商標）10 ＯＳおよびPalm（登録商標）ＯＳオペレーティングシステムなどのモバイルオペレーティングシステムを含むことができる。
【０２３３】
コンピュータ読取可能な記憶媒体１１２２は、いくつかの実施例の機能を提供するプログラミングおよびデータ構成を保存することができる。処理サブシステム１１０４のプロセッサによって実行されたときに上記の機能を提供するソフトウェア（プログラム、コードモジュール、命令）が記憶サブシステム１１１８に保存され得る。一例として、コンピュータ読取可能な記憶媒体１１２２は、取外し不可能な不揮発性磁気媒体から読取るまたは当該媒体に書込むハードディスクドライブ、取外し可能な不揮発性磁気ディスクから読取るまたは当該ディスクに書込む磁気ディスクドライブ、ならびに、ＣＤ  ＲＯＭ、ＤＶＤおよびBlu-Ray（登録商標）ディスクまたは他の光学式媒体などの取外し可能な不揮発性光学ディスクから読取るまたは当該ディスクに書込む光学式ディスクドライブを含み得る。コンピュータ読取可能な記憶媒体１１２２は、Zip（登録商標）ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス（universal serial bus：ＵＳＢ）フラッシュドライブ、セキュアデジタル（secure digital：ＳＤ）カード、ＤＶＤディスク、デジタルビデオテープなどを含み得るが、これらに限定されるものではない。また、コンピュータ読取可能な記憶媒体１１２２は、フラッシュメモリベースのＳＳＤ、企業向けフラッシュドライブ、固体ＲＯＭなどの不揮発性メモリに基づく固体ドライブ（solid-state drive：ＳＳＤ）、固体ＲＡＭ、ダイナミックＲＡＭ、スタティックＲＡＭなどの揮発性メモリに基づくＳＳＤ、ＤＲＡＭベースのＳＳＤ、磁気抵抗ＲＡＭ（magnetoresistive RAM：ＭＲＡＭ）ＳＳＤ、およびＤＲＡＭとフラッシュメモリベースのＳＳＤとの組み合わせを使用するハイブリッドＳＳＤを含み得る。ディスクドライブおよびそれらの関連のコンピュータ読取可能な媒体１１２２は、コンピュータシステム１１００のために、コンピュータ読取可能な命令、データ構造、プログラムモジュールおよび他のデータの保存を提供することができる。
【０２３４】
特定の実施形態において、記憶サブシステム１１００は、コンピュータ読取可能な記憶媒体１１２２にさらに接続可能なコンピュータ読取可能な記憶媒体リーダ１１２０を含み得る。コンピュータ読取可能な記憶媒体１１２２は、システムメモリ１１１０とともに、または必要に応じてシステムメモリ１１１０と組み合わせて、コンピュータ読取可能な情報を保存するための記憶媒体に加えて、リモート記憶装置、ローカル記憶装置、固定的な記憶装置および／または取外し可能な記憶装置を包括的に表すことができる。
【０２３５】
特定の実施形態において、コンピュータシステム１１００は、１つ以上の仮想マシンを実行するためのサポートを提供することができる。コンピュータシステム１１００は、仮想マシンの構成および管理を容易にするために、ハイパーバイザなどのプログラムを実行することができる。各仮想マシンは、メモリ、コンピュータ（例えば、プロセッサ、コア）、Ｉ／Ｏ、およびネットワークリソースに割り当てられてもよい。各仮想マシンは、通常、独自のオペレーティングシステムを実行する。各仮想マシンのオペレーティングシステムは、コンピュータシステム１１００によって実行される仮想マシンは、各々同一または異なるオペレーティングシステムを実行してもよい。したがって、コンピュータシステム１１００は、複数のオペレーティングシステムを同時に実行することができる。各マシンは通常、他の仮想マシンから独立して動作する。
【０２３６】
通信サブシステム１１２４は、他のコンピュータシステムおよびネットワークとのインターフェイスを提供する。通信サブシステム１１２４は、他のシステムからデータを受信し、コンピュータシステム１１００から他のシステムにデータを送信するためのインターフェイスとして機能する。例えば、通信サブシステム１１２４によって、コンピュータシステム１１００は、インターネットを介して１つ以上のクライアントコンピューティング装置との通信チャネルを形成し、クライアントコンピューティング装置との間に情報を送受信することができる。
【０２３７】
通信サブシステム１１２４は、有線通信プロトコルおよび／または無線通信プロトコルの両方をサポートすることができる。例えば、特定の実施形態において、通信サブシステム１１２４は、（たとえば３Ｇ、４ＧまたはＥＤＧＥ（enhanced data rates for global evolution）などの携帯電話技術、高度データネットワーク技術を用いて）無線音声および／またはデータネットワークにアクセスするための無線周波数（radio frequency：ＲＦ）トランシーバ素子、WiFi（IEEE 802.11ファミリ標準または他のモバイル通信技術またはそれらの任意の組み合わせ）（登録商標）、全地球測位システム（global positioning system：ＧＰＳ）レシーバ素子、および／または、他の構成要素を含み得る。いくつかの実施例では、通信サブシステム１１２４は、無線インターフェイスに加えて、または無線インターフェイスの代わりに、有線ネットワーク接続（たとえばイーサネット）を提供することができる。
【０２３８】
通信サブシステム１１２４は、さまざまな形態のデータを受信および送信することができる。例えば、いくつかの実施形態において、通信サブシステム１１２４は、構造化されたおよび／または構造化されていないデータフィード１１２６、イベントストリーム１１２８、イベント更新１１３０などの形態で入力通信を受信することができる。例えば、通信サブシステム１１２４は、ソーシャルメディアネットワークのユーザおよび／またはTwitter（登録商標）フィード、Facebook（登録商標）更新、ＲＳＳ（Rich Site Summary）フィードなどのウェブフィードなどのデータフィード１１２６をソーシャルネットワークおよび／または他の通信サービスのユーザからリアルタイムで受信し、および／または、１つ以上の第三者情報源からリアルタイム更新を受信するように構成されてもよい。
【０２３９】
特定の実施形態において、通信サブシステム１１２４は、連続的なデータストリームの形態でデータを受信するように構成され得て、当該データは、連続的である場合もあれば本質的に明確な端部を持たない状態で境界がない場合もあるリアルタイムイベントのイベントストリーム１１２８および／またはイベント更新１１３０を含み得る。連続的なデータを生成するアプリケーションの例としては、たとえばセンサデータアプリケーション、金融ティッカ、ネットワーク性能測定ツール（たとえばネットワークモニタリングおよびトラフィック管理アプリケーション）、クリックストリーム分析ツール、自動車交通モニタリングなどを含み得る。
【０２４０】
また、通信サブシステム１１２４は、構造化されたおよび／または構造化されていないデータフィード１１２６、イベントストリーム１１２８、イベント更新１１３０などを、コンピュータシステム１１００に連結された１つ以上のストリーミングデータソースコンピュータと通信し得る１つ以上のデータベースに出力するように構成されてもよい。
【０２４１】
コンピュータシステム１１００は、手持ち式携帯機器（たとえばiPhone（登録商標）携帯電話、iPad（登録商標）計算タブレット、ＰＤＡ）、装着型装置（例えば、Google Glass（登録商標）ヘッドマウントディスプレイ）、ＰＣ、ワークステーション、メインフレーム、キオスク、サーバラックまたはその他のデータ処理システムを含むさまざまなタイプのうち、１つであってもよい。
【０２４２】
コンピュータおよびネットワークが絶え間なく進化し続けるため、図１１に示されているコンピュータシステム１１００の説明は、特定の例として意図されているにすぎない。図１１に示されているシステムよりも多くのまたは少ない数の構成要素を有する多くの他の構成が可能である。本明細書に提供された開示および教示に基づいて、当業者は、さまざまな実施例を実現するための他の手段および／または方法を理解するであろう。
【０２４３】
図１２は、本発明の一実施形態を実現するために使用され得る例示的なコンピュータシステム１２００を示す図である。コンピューティングシステム１２００は、機能ブロック図として示されている。上述した本発明の原理に従って、コンピュータシステム１２００を設定することができる。コンピュータシステム１２００の機能ブロックは、本発明の原理を実行するために、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組み合わせで実装することができる。当業者であれば、図１２に記載された機能ブロックを組み合せることによって、またはサブブロックに分割することによって、上述した本発明の原理を実施できることを理解することができる。したがって、本明細書の説明は、本明細書に記載された機能ブロックの任意の可能な組み合せまたは分離またはさらなる定義をサポートすることができる。図１２に示すように、コンピュータシステム１２００は、判断ユニット１２０２、識別ユニット１２０４、選択ユニット１２０６、設定ユニット１２０８、設定ユニット１２１０、および計算ユニット１２１２を含む。
【０２４４】
判断ユニット１２０２は、複数のリモート装置のために、企業システムへのアクセス権の変更に対応する変更イベントの種類を判断することができる。識別ユニット１２０４は、変更イベントの種類に関連するアクションプロセスクラスを識別することができ、アクションプロセスクラスは、変更イベントの種類に応じて実行されるアクションプロセスを定義する。選択ユニット１２０６は、アクセス権の変更に応じてアクションプロセスを実行するように、複数のコンピューティングノードの各々の処理負荷に基づいて、複数のコンピューティングノードから一組のコンピューティングノードを選択するステップことができる。設定ユニット１２０８は、変更イベントの種類に基づいて、複数のリモート装置のうち第１組のリモート装置の第１変更イベントオブジェクトを設定することができ、変更イベントオブジェクトはアクセス権の変更に関する情報を示す。設定ユニット１２１０は、変更イベントの種類に基づいて、複数のリモート装置内の第２組のリモート装置に対する第２変更イベントオブジェクトを設定することができ、第１組のリモート装置の各リモート装置は、第２組のリモート装置の各リモート装置とは異なる。
【０２４５】
特定の実施形態において、一組のコンピューティングノードのうち第１コンピューティングノードによって、第１変更イベントオブジェクトを用いて、第１アクションプロセスオブジェクトに応じてアクションプロセスを開始する。第１アクションプロセスオブジェクトは、アクションプロセスクラスに基づいて設定される。
【０２４６】
特定の実施形態において、一組のコンピューティングノードのうち第２コンピューティングノードによって、第２変更イベントオブジェクトを用いて、第２アクションプロセスオブジェクトに応じてアクションプロセスを開始するステップを含み、第２アクションプロセスオブジェクトは、アクションプロセスクラスに基づいて設定される。
【０２４７】
特定の実施形態において、計算ユニット１２１２は、複数のコンピューティングノードの各々の処理負荷を計算することができる。コンピューティングノードの処理負荷は、コンピューティングノードにより開始されたアクションプロセスの数に基づいて計算される。第１コンピューティングノードは、アクションプロセス閾値に基づいて、一組のコンピューティングノード用に選択される。一組のコンピューティングノードの各コンピューティングノードは、アクションプロセス閾値を満たす一組のコンピューティングノードの各コンピューティングノードの処理負荷に基づいて、選択される。
【０２４８】
特定の実施形態において、第１アクションプロセスオブジェクトを用いて呼び出されたアクションプロセスは、アクセス権の変更を示す命令を第１組のリモート装置の各リモート装置に送信することを含み、命令は、アクセス権の変更を適用するように第１組のリモート装置の少なくとも１つのリモート装置に指示する。
【０２４９】
少なくとも１つの例によれば、企業システムへのアクセス権の変更に対する変更イベントを管理するための装置が提供される。この装置は、複数のリモート装置上で実行されるアクションを判断するための手段と、複数のリモート装置のうち、第１組のリモート装置および第２組のリモート装置の各リモート装置に対応する変更イベントエントリをキューに追加することによって、複数の変更イベントエントリをキューに追加するための手段とを含み、第１組のリモート装置の各リモート装置は、第２組のリモート装置の各リモート装置とは異なり、第１組のリモート装置のために、第１変更イベントエントリをキューから第１コンピューティングノードに割り当てるための手段と、第１変更イベントエントリに応じて第１メタデータオブジェクトをインスタンス化し、第１組のリモート装置の各リモート装置を特定するメタデータを第１メタデータオブジェクトに保存するための手段と、第１コンピューティングノードから、第１メタデータオブジェクトに基づいて第１組のリモート装置の各リモート装置上で実行すべくアクションを指示するための手段と、第２組のリモート装置のために、第２変更イベントエントリをキューから第２コンピューティングノードに割り当てるための手段と、第２変更イベントエントリに応じて第２メタデータオブジェクトをインスタンス化し、第２組のリモート装置の各リモート装置を特定するメタデータを第２メタデータオブジェクトに保存するための手段と、第２コンピューティングノードから、第２メタデータオブジェクトに基づいて第２組のリモート装置の各リモート装置上で実行すべくアクションを指示するための手段を含むことができる。特定の実施形態において、第１メタデータオブジェクトのインスタンス化は、第１コンピューティングノード上で実行される。
【０２５０】
本発明の特定の実施形態を説明してきたが、さまざまな変更、改変、代替構成、および同等物も本発明の範囲内に包含される。変更は、開示された特徴の任意の適切な組み合わせを含む。本発明の実施形態は、特定のデータ処理環境内で動作するのに限定されず、複数のデータ処理環境内で自由に動作することができる。さらに、一連の特定の処置およびステップを用いて本発明の実施形態を説明してきたが、本発明の範囲が説明された一連の処置およびステップに限定されないことは、当業者にとって明らかであろう。上述した実施形態のさまざまな特徴および態様は、個別にまたは共同で使用することができる。
【０２５１】
さらに、ハードウェアおよびソフトウェアの特定の組み合わせを用いて本発明の実施形態を説明してきたが、ハードウェアおよびソフトウェアの他の組み合わせも本発明の範囲内に含まれることを認識すべきである。ハードウェアのみ、ソフトウェアのみ、またはそれらの組み合わせを用いて、本発明の実施形態を実現することができる。本開示に記載されたさまざまなプロセスは、同一のプロセッサまたは任意の組み合わせの異なるプロセッサ上で実行することができる。したがって、特定の処理を実行するように構成要素またはモジュールを構成すると説明する場合、その構成は、例えば、その処理を実行するように電子回路を設計することによって、その処理を実行するようにプログラム可能な電子回路（マイクロプロセッサなど）をプログラムすることによって、またはそれらの組み合わせによって実現することができる。プロセスは、プロセス間の通信を行う従来技術を含むがこれに限定されないさまざまな技術を用いて通信を行うことができる。異なる対のプロセスは、異なる技術を使用することができ、または同一対のプロセスは、異なる時間で異なる技術を使用することができる。
【０２５２】
したがって、明細書および図面は、限定的な意味ではなく例示的な意味であるとみなすべきである。しかしながら、特許請求の範囲により定められた幅広い主旨および範囲から逸脱することなく、追加、削減、削除および他の修飾および変更を行ってもよいことは、明らかであろう。したがって、本発明の特定の実施形態を説明したが、これらの実施形態は、限定することを意図していない。さまざまな変更およびその等価物は、添付の特許請求の範囲に含まれる。
【図１】
0006499281.tif 000005
【図２】
0006499281.tif 000006
【図３】
0006499281.tif 000007
【図４】
0006499281.tif 000008
【図５】
0006499281.tif 000009
【図６】
0006499281.tif 000010
【図７】
0006499281.tif 000011
【図８】
0006499281.tif 000012
【図９】
0006499281.tif 000013
【図１０】
0006499281.tif 000014
【図１１】
0006499281.tif 000015
【図１２】
0006499281.tif 000016