(57)【要約】  保護されたフィールドに対する自動動作検出のためのシステムおよび方法が提供される。データモデル設定を使用して、クラウドベースのアプリケーションによって使用されるデータモデルのどの属性が、アプリケーションとクライアントデバイスとの間の通信を監視するデータセキュリティプロバイダによって保護されるかを指定できる。クラウドベースのアプリケーションのどの動作が保護されたフィールドに対してサポートされるかが自動的に判断できる。クラウドベースのアプリケーションは、属性が保護されたフィールドであるかどうかに応じて、バリデータ、オートコンプリート、検索演算子などの特定の機能を有効または無効にするように設定できる。
2019501437.tif 000002
【特許請求の範囲】
【請求項１】
クラウドベースのアプリケーションによって使用されるデータモデルの１つ以上の属性を、前記クラウドベースのアプリケーションとクライアントデバイスとの間の通信を監視するデータセキュリティプロバイダによって保護されているとして示すデータモデル設定を、コンピューティングデバイスによって受信することと、
前記コンピューティングデバイスによって、前記データモデル設定を使用して１つ以上の保護されたフィールドを判断することと、
前記コンピューティングデバイスによって、前記１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションを判断することと、
前記コンピューティングデバイスによって、前記１つ以上の保護されたフィールドを使用して実行され得る前記１つ以上のアクションに基づいて、前記クラウドベースのアプリケーションを設定することとを含む、方法。
【請求項２】
前記データモデル設定を受信することは、前記データセキュリティプロバイダから情報を受信することを含む、請求項１に記載の方法。
【請求項３】
前記データモデル設定を使用して前記１つ以上の保護されたフィールドを判断することは、前記データモデルのどの属性が保護されたフィールドとして指定されているかを判断することを含む、請求項１に記載の方法。
【請求項４】
前記１つ以上の保護されたフィールドを使用して実行され得る前記１つ以上のアクションを判断することは、サポートされるアクションを判断することを含む、請求項１に記載の方法。
【請求項５】
前記１つ以上の保護されたフィールドを使用して実行され得る前記１つ以上のアクションを判断することは、サポートされていないアクションを判断することを含む、請求項１に記載の方法。
【請求項６】
前記１つ以上の保護されたフィールドを使用して実行され得る前記１つ以上のアクションに基づいて前記クラウドベースのアプリケーションを設定することは、機能を有効にすることを含む、請求項１に記載の方法。
【請求項７】
前記１つ以上の保護されたフィールドを使用して実行され得る前記１つ以上のアクションに基づいて前記クラウドベースのアプリケーションを設定することは、機能を無効にすることを含む、請求項１に記載の方法。
【請求項８】
１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに方法を実行させる命令が格納された非一時的な機械読取可能記憶媒体であって、前記方法は、
クラウドベースのアプリケーションによって使用されるデータモデルの１つ以上の属性を、前記クラウドベースのアプリケーションとクライアントデバイスとの間の通信を監視するデータセキュリティプロバイダによって保護されているとして示すデータモデル設定を受信することと、
前記データモデル設定を使用して１つ以上の保護されたフィールドを判断することと、
前記１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションを判断することと、
前記１つ以上の保護されたフィールドを使用して実行され得る前記１つ以上のアクションに基づいて、前記クラウドベースのアプリケーションを設定することとを含む、非一時的な機械読取可能記憶媒体。
【請求項９】
前記データモデル設定を受信することは、前記データセキュリティプロバイダから情報を受信することを含む、請求項８に記載の非一時的な機械読取可能記憶媒体。
【請求項１０】
前記データモデル設定を使用して前記１つ以上の保護されたフィールドを判断することは、前記データモデルのどの属性が保護されたフィールドとして指定されているかを判断することを含む、請求項８に記載の非一時的な機械読取可能記憶媒体。
【請求項１１】
前記１つ以上の保護されたフィールドを使用して実行され得る前記１つ以上のアクションを判断することは、サポートされるアクションを判断することを含む、請求項８に記載の非一時的な機械読取可能記憶媒体。
【請求項１２】
前記１つ以上の保護されたフィールドを使用して実行され得る前記１つ以上のアクションを判断することは、サポートされていないアクションを判断することを含む、請求項８に記載の非一時的な機械読取可能記憶媒体。
【請求項１３】
前記１つ以上の保護されたフィールドを使用して実行され得る前記１つ以上のアクションに基づいて前記クラウドベースのアプリケーションを設定することは、機能を有効にすることを含む、請求項８に記載の非一時的な機械読取可能記憶媒体。
【請求項１４】
システムであって、
プロセッサと、
命令の組を格納するメモリとを備え、前記命令は、前記プロセッサによって実行されると、前記プロセッサに、
クラウドベースのアプリケーションによって使用されるデータモデルの１つ以上の属性を、前記クラウドベースのアプリケーションとクライアントデバイスとの間の通信を監視するデータセキュリティプロバイダによって保護されているとして示すデータモデル設定を受信させ、
前記データモデル設定を使用して１つ以上の保護されたフィールドを判断させ、
前記１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションを判断させ、
前記１つ以上の保護されたフィールドを使用して実行され得る前記１つ以上のアクションに基づいて、前記クラウドベースのアプリケーションを設定させる、システム。
【請求項１５】
前記データモデル設定を受信することは、前記データセキュリティプロバイダから情報を受信することを含む、請求項１４に記載のシステム。
【請求項１６】
方法であって、
クライアントデバイスのユーザによって使用されているクラウドベースのアプリケーションのデータに対して前記クライアントデバイスによって開始された検索から、第１の検索基準を、コンピューティングデバイスによって受信することを備え、前記第１の検索基準は、前記クライアントデバイスの通信を監視するデータセキュリティプロバイダによって保護されていない前記クラウドベースのアプリケーションの前記データの一部に当てはまるよう判断され、前記方法はさらに、
前記第１の検索基準を使用して前記クラウドベースのアプリケーションの前記データに対して第１の検索を実行することに基づく第１の検索結果を前記コンピューティングデバイスによって受信することと、
第２の検索基準を使用して前記データセキュリティプロバイダのデータに対する第２の検索を実行することに基づく第２の検索結果を前記コンピューティングデバイスによって受信することと、
前記第１の検索結果および前記第２の検索結果を、前記コンピューティングデバイスによって第３の検索結果に統合することと、
前記コンピューティングデバイスによって、前記第３の検索結果を前記クライアントデバイスに通信することとを備える、方法。
【請求項１７】
前記データセキュリティプロバイダの前記データに対して前記第２の検索を実行することに基づいて前記第２の検索結果を受信することは、前記クラウドベースのアプリケーションの前記データにおいて前記データセキュリティプロバイダによって使用される置換データを識別する情報を受信することを含む、請求項１６に記載の方法。
【請求項１８】
前記データセキュリティプロバイダの前記データに対して前記第２の検索を実行することに基づいて前記第２の検索結果を受信することは、前記クラウドベースのアプリケーションの前記データにおいて１つ以上の行を識別する行キーのセットを受信することを含む、請求項１６に記載の方法。
【請求項１９】
前記第１の検索結果と前記第２の検索結果とを前記第３の検索結果に統合することは、前記第２の検索結果を用いて前記第１の検索結果をフィルタリングすることを含む、請求項１６に記載の方法。
【請求項２０】
前記第１の検索結果と前記第２の検索結果とを前記第３の検索結果に統合することは、前記第１の検索結果および前記第２の検索結果をマージすることを含む、請求項１６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願への相互参照
本願は  ２０１５年１０月２３日に出願された、「保護されたフィールド上での自動動作検出（AUTOMATIC OPERATION DETECTION ON PROTECTED FIELD）」と題する米国仮出願第６２／２４５，６０８号および２０１５年１０月２３日に出願された「統合検索（FEDERATED SEARCH）」と題する米国仮出願第６２／２４５，５７４号に対する優先権および利益を主張し、それらの全内容をすべての目的のためにここに引用により援用する。
【背景技術】
【０００２】
発明の背景
データのプライバシーを管理する規制およびポリシーからなる複雑なウェブがある。 最も頻繁に引用されるのは、医療保険の相互運用性および説明責任に関する法令（Health Insurance Portability and Accountability Act）（ＨＩＰＡＡ）、ならびに支払いカード業界データセキュリティ基準（Payment Card Industry Data Security Standard）（ＰＣＩ  ＤＳＳ）である。欧州のデータ保護法は、さらには、ＥＵまたは国境を越えて個人識別可能情報が移動することを禁じている場合が多い。これは、パブリッククラウドの無制限の使用にいくつかの明白な制限を課す。組織は、法執行機関や政府職員が彼らのクラウドサービスプロバイダから直接データにアクセスし、企業を完全に迂回する可能性があることも懸念している。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
たとえば、欧州のデータ保護法では、特定の人物にリンクすることができる個人データが、ＥＵ（欧州連合）外またはさらには特定の国境外に移動することを禁止している。このような法律は、組織がクラウドにデータを保存または処理することを禁止することができ、なぜならば、インフラストラクチャプロバイダが複数のグローバルな場所にデータを保存、処理、またはバックアップできるからである。米国では、医療保険の相互運用性および説明責任に関する法令（Health Insurance Portability and Accountability Act）（ＨＩＰＡＡ）のような規制は個人健康情報（ＰＨＩ）のまわりにセキュリティおよびプライバシーを維持することを要する。そうすることの複雑さは、医療コストの上昇を遅らせる可能性があるコスト効率の高いパブリッククラウドベースのソリューションをヘルスケアプロバイダが使用することを思いとどまらせる可能性がある。
【０００４】
データのセキュリティ、レジデンシー、プライバシーの問題を回避する方法の１つは、クラウドに入るデータを難読化することである。難読化の２つの一般的な方法は、暗号化およびトークン化である。これらのアプローチのいずれかを使用することにより、組織がクラウドベースのアプリケーションの恩恵を享受する一方で、データが覗き見に対して解読不可なままであることを確実にする。暗号化では、アルゴリズムスキームを使用して、平文情報を読み取り不可能な暗号文に変換する。情報を復号し、それを元の平文形式に戻すには、キー（またはアルゴリズム）が必要である。トークン化は、機密データの保護のためのますます普及しているアプローチである。これには、実際の値の代わりとして、トークン（またはエイリアス）とのデータ置換の使用が含まれる。数学的プロセスを使用してデータを変換する暗号化とは異なり、トークン化はランダムな文字を使用して実際のデータを置換する。トークンを解読して実際のデータに戻すことができる「キー」はない。
【０００５】
トークン化のプロセスでは、機密データは、「ボールト（貴重品保管室）」と呼ばれる中央の安全性の高いサーバに送信され、そこで機密データは安全に保存される。同時に、ランダムな一意の文字セット（トークン）が生成され、実際のデータの代わりに使用するために返される。ボールトマネージャは、再度必要になったときにトークン値を実際のデータと交換できるようにする参照データベースを維持する。その間に、覗き見に対して何の意味をもたないトークン値は、実際のデータに対する信頼できる置換物として、さまざまなクラウドベースのアプリケーションで使用することができる。
【０００６】
売買業者は、販売が終了した後、機密クレジットカード情報に対する代用物としてトークン化されたデータを使用することがよくある。これにより、売買業者は、実際のカードデータを危険にさらすことなく、顧客の取引に関する販売分析を実行することができる。さらに、ＰＣＩは、支払取引以外のものに対してライブカードデータを使用することを禁じている。取引後データをトークン化することにより、売買業者は彼らのＰＣＩ負担を軽減でき、なぜならば、彼らのバックエンドシステムには機密データが存在しないからである。
【０００７】
患者レコード、顧客アカウントレコード、人事情報など、他のタイプの機密データにも同じ方法を適用できる。実際のデータをトークン化することは、それを害から守り、セキュリティ、レジデンシー、およびプライバシーの要件に対処する。トークン化されたデータは、どこにでも--たとえクラウド内であっても--保存および使用でき、なぜならば、それは紛失されたり盗難されたりしても実際のデータに戻すことができないからである。
【課題を解決するための手段】
【０００８】
発明の簡単な概要
本開示の以下の部分は、少なくとも本主題の基本的な理解を提供する目的のために、本開示内に見出される１つ以上の革新、実施形態、および／または実施例の簡略化された概要を提示する。この概要は、特定の実施形態または実施例の広範な概要を提供しようとするものではない。さらに、この概要は、実施形態または実施例の鍵となる／重要な要素を特定すること、または本開示の主題の範囲を説明することを意図するものではない。したがって、この概要の１つの目的は、後に提示されるより詳細な説明の前置きとして、本開示内に見られるいくつかの革新、実施形態、および／または実施例を簡略化した形で提示することであり得る。
【０００９】
例示的な実施形態では、コンピューティングデバイスによって実行される方法が提供される。本方法は、クラウドベースのアプリケーションによって使用されるデータモデルの１つ以上の属性を、クラウドベースのアプリケーションとクライアントデバイスとの間の通信を監視するデータセキュリティプロバイダによって保護されているとして示すデータモデル設定を受信することと、データモデル設定を使用して１つ以上の保護されたフィールドを判断することと、１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションを判断することと、１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションに基づいて、クラウドベースのアプリケーションを設定することとを備える。
【００１０】
ある実施形態では、データモデル設定を受信することは、データセキュリティプロバイダから情報を受信することを含む。オプションとして、データモデル設定を使用して１つ以上の保護されたフィールドを判断することは、データモデルのどの属性が保護されたフィールドとして指定されているかを判断することを含む。オプションとして、１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションを判断することは、サポートされるアクションを判断することを含む。オプションとして、１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションを判断することは、サポートされていないアクションを判断することを含む。
【００１１】
ある実施形態では、１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションに基づいてクラウドベースのアプリケーションを設定することは、機能を有効にすることを含む。オプションとして、１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションに基づいてクラウドベースのアプリケーションを設定することは、機能を無効にすることを含む。
【００１２】
例示的な実施形態において、１つ以上のプロセッサによって実行されると、１つ以上のプロセッサに、ある方法を実行させる命令が格納されるための非一時的な機械読取可能記憶媒体が提供される。本方法は、クラウドベースのアプリケーションによって使用されるデータモデルの１つ以上の属性を、クラウドベースのアプリケーションとクライアントデバイスとの間の通信を監視するデータセキュリティプロバイダによって保護されているとして示すデータモデル設定を受信することと、データモデル設定を使用して１つ以上の保護されたフィールドを判断することと、１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションを判断することと、１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションに基づいて、クラウドベースのアプリケーションを設定することとを備える。
【００１３】
ある実施形態では、１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションに基づいてクラウドベースのアプリケーションを設定することは、機能を有効にすることを含む。オプションとして、１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションに基づいてクラウドベースのアプリケーションを設定することは、機能を無効にすることを含む。
【００１４】
ある実施形態では、１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションに基づいてクラウドベースのアプリケーションを設定することは、機能を有効にすることを含む。オプションとして、１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションに基づいてクラウドベースのアプリケーションを設定することは、機能を無効にすることを含む。
【００１５】
例示的な実施形態において、プロセッサと、プロセッサによって実行されると、プロセッサに、ある方法を実行させる命令の組を格納するメモリとを含むシステムが提供される。本方法は、クラウドベースのアプリケーションによって使用されるデータモデルの１つ以上の属性を、クラウドベースのアプリケーションとクライアントデバイスとの間の通信を監視するデータセキュリティプロバイダによって保護されているとして示すデータモデル設定を受信することと、データモデル設定を使用して１つ以上の保護されたフィールドを判断することと、１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションを判断することと、１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションに基づいて、クラウドベースのアプリケーションを設定することとを備える。
【００１６】
ある実施形態では、１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションに基づいてクラウドベースのアプリケーションを設定することは、機能を有効にすることを含む。オプションとして、１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションに基づいてクラウドベースのアプリケーションを設定することは、機能を無効にすることを含む。
【００１７】
ある実施形態では、１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションに基づいてクラウドベースのアプリケーションを設定することは、機能を有効にすることを含む。オプションとして、１つ以上の保護されたフィールドを使用して実行され得る１つ以上のアクションに基づいてクラウドベースのアプリケーションを設定することは、機能を無効にすることを含む。
【００１８】
例示的な実施形態では、コンピューティングデバイスによって実行される方法が提供される。この方法は、クライアントデバイスのユーザによって使用されているクラウドベースのアプリケーションのデータに対してクライアントデバイスによって開始された検索から第１の検索基準を受信することを備える。第１の検索基準は、クライアントデバイスの通信を監視するデータセキュリティプロバイダによって保護されていないクラウドベースのアプリケーションのデータの一部に当てはまるよう判断される。本方法はさらに、第１の検索基準を使用してクラウドベースのアプリケーションのデータに対して第１の検索を実行することに基づく第１の検索結果を受信することと、第２の検索基準を使用してデータセキュリティプロバイダのデータに対する第２の検索を実行することに基づく第２の検索結果を受信することと、第１の検索結果および第２の検索結果を第３の検索結果に統合することと、第３の検索結果をクライアントデバイスに通信することとを備える。
【００１９】
ある実施形態では、データセキュリティプロバイダのデータに対して第２の検索を実行することに基づいて第２の検索結果を受信することは、クラウドベースのアプリケーションのデータにおいてデータセキュリティプロバイダによって使用される置換データを識別する情報を受信することを含む。オプションとして、データセキュリティプロバイダのデータに対して第２の検索を実行することに基づいて第２の検索結果を受信することは、クラウドベースのアプリケーションのデータにおいて１つ以上の行を識別する行キーのセットを受信することを含む。オプションとして、第１の検索結果と第２の検索結果とを第３の検索結果に統合することは、第２の検索結果を用いて第１の検索結果をフィルタリングすることを含む。オプションとして、第１の検索結果と第２の検索結果とを第３の検索結果に統合することは、第１の検索結果および第２の検索結果をマージすることを含む。
【００２０】
いくつかの実施形態では、第３の検索結果をクライアントデバイスに通信することは、クラウドベースのアプリケーションのデータにおいて、第２の検索基準を満たす、データセキュリティプロバイダによって記憶されるデータを表す１つ以上のトークンを通信することを含む。オプションとして、第３の検索結果をクライアントデバイスに通信することは、クラウドベースのアプリケーションのデータにおいて、第２の検索基準を満たす、データセキュリティプロバイダによって記憶されるデータを表す１つ以上の暗号化されたデータを通信することを含む。
【００２１】
例示的な実施形態において、１つ以上のプロセッサによって実行されると、１つ以上のプロセッサに、ある方法を実行させる命令が格納されるための非一時的な機械読取可能記憶媒体が提供される。この方法は、クライアントデバイスのユーザによって使用されているクラウドベースのアプリケーションのデータに対してクライアントデバイスによって開始された検索から第１の検索基準を受信することを備える。第１の検索基準は、クライアントデバイスの通信を監視するデータセキュリティプロバイダによって保護されていないクラウドベースのアプリケーションのデータの一部に当てはまるよう判断される。本方法はさらに、第１の検索基準を使用してクラウドベースのアプリケーションのデータに対して第１の検索を実行することに基づく第１の検索結果を受信することと、第２の検索基準を使用してデータセキュリティプロバイダのデータに対する第２の検索を実行することに基づく第２の検索結果を受信することと、第１の検索結果および第２の検索結果を第３の検索結果に統合することと、第３の検索結果をクライアントデバイスに通信することとを備える。
【００２２】
ある実施形態では、データセキュリティプロバイダのデータに対して第２の検索を実行することに基づいて第２の検索結果を受信することは、クラウドベースのアプリケーションのデータにおいてデータセキュリティプロバイダによって使用される置換データを識別する情報を受信することを含む。オプションとして、データセキュリティプロバイダのデータに対して第２の検索を実行することに基づいて第２の検索結果を受信することは、クラウドベースのアプリケーションのデータにおいて１つ以上の行を識別する行キーのセットを受信することを含む。オプションとして、第１の検索結果と第２の検索結果とを第３の検索結果に統合することは、第２の検索結果を用いて第１の検索結果をフィルタリングすることを含む。オプションとして、第１の検索結果と第２の検索結果とを第３の検索結果に統合することは、第１の検索結果および第２の検索結果をマージすることを含む。
【００２３】
いくつかの実施形態では、第３の検索結果をクライアントデバイスに通信することは、クラウドベースのアプリケーションのデータにおいて、第２の検索基準を満たす、データセキュリティプロバイダによって記憶されるデータを表す１つ以上のトークンを通信することを含む。オプションとして、第３の検索結果をクライアントデバイスに通信することは、クラウドベースのアプリケーションのデータにおいて、第２の検索基準を満たす、データセキュリティプロバイダによって記憶されるデータを表す１つ以上の暗号化されたデータを通信することを含む。
【００２４】
例示的な実施形態において、プロセッサと、プロセッサによって実行されると、プロセッサに、ある方法を実行させる命令の組を格納するメモリとを含むシステムが提供される。この方法は、クライアントデバイスのユーザによって使用されているクラウドベースのアプリケーションのデータに対してクライアントデバイスによって開始された検索から第１の検索基準を受信することを備える。第１の検索基準は、クライアントデバイスの通信を監視するデータセキュリティプロバイダによって保護されていないクラウドベースのアプリケーションのデータの一部に当てはまるよう判断される。本方法はさらに、第１の検索基準を使用してクラウドベースのアプリケーションのデータに対して第１の検索を実行することに基づく第１の検索結果を受信することと、第２の検索基準を使用してデータセキュリティプロバイダのデータに対する第２の検索を実行することに基づく第２の検索結果を受信することと、第１の検索結果および第２の検索結果を第３の検索結果に統合することと、第３の検索結果をクライアントデバイスに通信することとを備える。
【００２５】
ある実施形態では、データセキュリティプロバイダのデータに対して第２の検索を実行することに基づいて第２の検索結果を受信することは、クラウドベースのアプリケーションのデータにおいてデータセキュリティプロバイダによって使用される置換データを識別する情報を受信することを含む。オプションとして、データセキュリティプロバイダのデータに対して第２の検索を実行することに基づいて第２の検索結果を受信することは、クラウドベースのアプリケーションのデータにおいて１つ以上の行を識別する行キーのセットを受信することを含む。オプションとして、第１の検索結果と第２の検索結果とを第３の検索結果に統合することは、第２の検索結果を用いて第１の検索結果をフィルタリングすることを含む。オプションとして、第１の検索結果と第２の検索結果とを第３の検索結果に統合することは、第１の検索結果および第２の検索結果をマージすることを含む。
【００２６】
いくつかの実施形態では、第３の検索結果をクライアントデバイスに通信することは、クラウドベースのアプリケーションのデータにおいて、第２の検索基準を満たす、データセキュリティプロバイダによって記憶されるデータを表す１つ以上のトークンを通信することを含む。オプションとして、第３の検索結果をクライアントデバイスに通信することは、クラウドベースのアプリケーションのデータにおいて、第２の検索基準を満たす、データセキュリティプロバイダによって記憶されるデータを表す１つ以上の暗号化されたデータを通信することを含む。
【００２７】
本開示の主題の性質および均等物（ならびに提供される固有のまたは明示的な利点および改良点）のさらなる理解は、上記のセクションに加えて、本開示の残りの部分、図面、および特許請求の範囲を参照することによって、実現されるはずである。
【００２８】
本開示内に見出されるこれらの革新、実施形態、および／または例を合理的に説明および例示するために、１つ以上の添付図面を参照することができる。 １つ以上の添付図面を説明するために使用される追加の詳細または例は、特許請求される発明、ここに記載されている実施形態および／もしくは実施例、または本開示内に呈示されている任意の革新の現在理解されているベストモードのいずれの範囲に対する限定としても考えられるべきではない。
【図面の簡単な説明】
【００２９】
【図１】本発明による一実施形態におけるクラウドベースのアプリケーションを開発するためのシステム環境のブロック図である。
【図２】本発明による一実施形態における、クラウドベースのアプリケーションをプライバシー、レジデンシー、およびセキュリティに提供するシステムのブロック図である。
【図３Ａ】本発明による一実施形態におけるエンタープライズインフラストラクチャシステム内からクライアントデバイスを使用して見た場合のクラウドベースのアプリケーションに関連付けられたユーザインタフェース（ＵＩ）ページの図である。
【図３Ｂ】本発明による一実施形態におけるクラウドインフラストラクチャシステム内から使用して見た場合のクラウドベースのアプリケーションに関連付けられたＵＩページの図である。
【図４】本発明による一実施形態におけるエンティティ間で共有される属性を示すブロック図である。
【図５】本発明による一実施形態におけるプライバシー、レジデンシーおよびセキュリティサーバの自己記述設定を提供するメッセージシーケンスチャートを示す。
【図６】本発明による一実施形態における自己記述設定を利用するためのメッセージシーケンスチャートを示す。
【図７】本発明の一実施形態による自己記述設定を伴ってクラウドベースのアプリケーションに関して使用されるさまざまなレイヤを示す図である。
【図８】本発明による一実施形態における、暗号化されたクリアテキストカラムのための同じテーブルの共有をサポートするための方法のフローチャートである。
【図９】本発明による一実施形態における保護されたフィールドの自動動作検出のための方法のフローチャートである。
【図１０】本発明による一実施形態における統合検索のための方法のフローチャートである。
【図１１】実施の形態の１つを実現するための分散型システムの簡略図を示す。
【図１２】この発明のさまざまな実施の形態が実現されてもよい例示的なコンピュータシステムを示す。
【発明を実施するための形態】
【００３０】
発明の詳細な記載
Ｉ．導入
以下の記載では、説明のために、特定の詳細はこの発明の実施の形態の十分な理解を提供するために述べられる。しかしながら、さまざまな実施の形態がこれらの特定の詳細なしに実施されてもよいことは明らかである。たとえば、不必要な詳細により実施形態を曖昧にすることのないように、回路、システム、ネットワーク、プロセスおよび他のコンポーネントは、ブロック図の形式でコンポーネントとして示されてもよい。他の例では、実施形態を曖昧にすることを回避するために、周知の回路、プロセス、アルゴリズム、構造および技術は、不必要な詳細なしで示されてもよい。図および記載は、制限的になるようには意図されない。むしろ、以下の例示的な実施形態の説明は、例示的な実施形態を実現するための実施可能な説明を当業者に提供するものである 。添付の特許請求の範囲に記載されている本発明の精神および範囲から逸脱することなく、要素の機能および配置をさまざまに変更できることが理解されるべきである。
【００３１】
また、個々の実施形態は、フローチャート、フロー図、データフロー図、構造図またはブロック図として示されるプロセスとして説明されてもよい。フローチャートは動作をシーケンシャルなプロセスとして説明することができるが、多くの動作は並列または同時に実行されてもよい。さらに、動作の順序は並べ替えられてもよい。プロセスは、その動作が完了すると終了するが、図に含まれていないさらなることを有していてもよい。プロセスは、メソッド、関数、プロシージャ、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応している場合、その終了は、その関数を呼出し関数またはmain関数へと戻すことに対応し得る。
【００３２】
「機械読取可能な媒体」または「コンピュータ読取可能な媒体」という語は、命令および／またはデータを記憶したり、含んでいたり、または担持したりすることができる携帯型または固定式のストレージデバイス、光学式ストレージデバイス、無線チャネルおよびさまざまな他の媒体を含むが、これらに限定されるものではない。コードセグメントまたは機械実行可能な命令は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または、命令、データ構造もしくはプログラム文のいずれかの組合せを表し得る。コードセグメントは、情報、データ、引数、パラメータまたはメモリコンテンツを受け渡すおよび／または受信することによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージ受け渡し、トークン受け渡し、ネットワーク送信などを含む任意の好適な手段によって受け渡されたり、転送されたり、または送信されたりしてもよい。
【００３３】
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実現される場合、必要なタスクを実行するためのプログラムコードまたはコードセグメントは、機械読取可能な媒体またはコンピュータ読取可能な媒体に記憶されてもよい。１つ以上のプロセッサが必要なタスクを実行してもよい。
【００３４】
いくつかの図面に示されたシステムは、さまざまな構成で提供されてもよい。いくつかの実施形態では、システムは、システムの１つ以上のコンポーネントがクラウドコンピューティングシステムの１つ以上のネットワークに分散された分散型システムとして構成することができる。さらなる実施形態では、システムは、システムの１つ以上のコンポーネントが単一の構造またはパッケージに組み込まれた単一のシステムとして構成されてもよい。
【００３５】
II．クラウドベースのアプリケーション開発
アプリケーションとはソフトウェアプログラムを指し、それは実行時、特定の所望のタスクを行なう。一般に、いくつかのアプリケーションは、１つ以上のオペレーティングシステム（operating system：ＯＳ）、（たとえばＪａｖａ（登録商標）プログラミング言語をサポートする）仮想マシン、デバイスドライバなどを含む実行時環境において実行される。開発者はしばしば、所望のアプリケーションを実現／開発するためのアプリケーション開発フレームワーク（Application Development Framework：ＡＤＦ）（それら自体がアプリケーションである）を使用する。ＡＤＦは、アプリケーションの開発において直接的／間接的に使用され得る１組の予め定義されたコード／データモジュールを提供する。ＡＤＦはまた、統合開発環境（integrated development environment：ＩＤＥ）、コード生成部、デバッガなどのツールを提供してもよい。一般に、ＡＤＦは、再使用可能なコンポーネントを提供することによって、アプリケーション開発を単純化する。再使用可能なコンポーネントは、たとえば、所望のタスクを行なうためのコンポーネントを選択し、選択されたコンポーネントの外観、挙動、および対話を定義することにより、ユーザインターフェイス（ＵＩ）およびアプリケーションロジックを定義するために、アプリケーション開発者によって使用され得る。オラクル社（Oracle Corp.）からの「オラクルＡＤＦ」（Oracle ADF）といったいくつかのＡＤＦは、緩い結合とより容易なアプリケーション開発および保守とを促進するモデル・ビュー・コントローラ（model-view-controller：ＭＶＣ）設計パターンに基づいている。
【００３６】
図１は、本発明による一実施形態におけるクラウドベースのアプリケーションを開発するためのシステム環境１００のブロック図である。図示された実施形態では、システム環境１００は、１つ以上のクライアントコンピューティングデバイス１０４、１０６、および１０８にクラウドサービスを提供するクラウドインフラストラクチャシステム１０２を含む。クライアントコンピューティングデバイス１０４、１０６、および１０８は、クラウドインフラストラクチャシステム１０２と対話するためにユーザによって使用されてもよい。クライアントコンピューティングデバイス１０４、１０６、および１０８は、クラウドインフラストラクチャシステム１０２によって提供されるサービスを使用するためにクラウドインフラストラクチャシステム１０２と対話するためにクライアントコンピューティングデバイスのユーザによって使用され得る、ウェブブラウザ、専用クライアントアプリケーション（たとえば、オラクル・フォームズ（Oracle Forms））、または何らかの他のアプリケーションといったクライアントアプリケーションを動作させるように構成されてもよい。
【００３７】
クラウドインフラストラクチャシステム１０２は、図示されたもの以外のコンポーネントを有していてもよい。また、図１に示す実施形態は、この発明の一実施形態を取入れ得るクラウドインフラストラクチャシステムの単なる一例である。いくつかの他の実施形態では、クラウドインフラストラクチャシステム１０２は、図１に示すものよりも多い、または少ないコンポーネントを有していてもよく、２つ以上のコンポーネントを組合せてもよく、もしくは、異なる構成または配置のコンポーネントを有していてもよい。
【００３８】
クライアントコンピューティングデバイス１０４、１０６、および１０８は、携帯型ハンドヘルドデバイス（たとえば、ｉＰｈｏｎｅ（登録商標）、携帯電話、ｉＰａｄ（登録商標）、コンピューティングタブレット、携帯情報端末（personal digital assistant：ＰＤＡ））、またはウェアラブルデバイス（たとえば、グーグル・グラス（Google Glass）（登録商標）頭部装着型ディスプレイ）であってもよく、マイクロソフト・ウィンドウズ・モバイル（Microsoft Windows Mobile）（登録商標）などのソフトウェア、および／または、ｉＯＳ、ウィンドウズ（登録商標）フォン、アンドロイド、ブラックベリー（登録商標）１０、パームＯＳなどのさまざまなモバイルＯＳを実行し、インターネット、電子メール、ショートメッセージサービス（short message service：ＳＭＳ）、ブラックベリー（登録商標）、または他の通信プロトコルに対応している。クライアントコンピューティングデバイス１０４、１０６、および１０８は、マイクロソフト・ウィンドウズ（登録商標）、アップル・マッキントッシュ（登録商標）、および／またはＬｉｎｕｘ（登録商標）ＯＳのさまざまなバージョンを実行するパーソナルコンピュータおよび／またはラップトップコンピュータを例として含む、汎用パーソナルコンピュータであり得る。クライアントコンピューティングデバイス１０４、１０６、および１０８は、たとえばグーグル・クロームＯＳなどのさまざまなＧＮＵ／ＬｉｎｕｘＯＳを何ら限定されることなく含む、商業的に入手可能なさまざまなＵＮＩＸ（登録商標）またはＵＮＩＸ様ＯＳのうちのいずれかを実行するワークステーションコンピュータであり得る。それに代えて、またはそれに加えて、クライアントコンピューティングデバイス１０４、１０６、および１０８は、ネットワーク１１０を通して通信可能である、シンクライアントコンピュータ、インターネット対応ゲーミングシステム（たとえば、Ｋｉｎｅｃｔ（登録商標）ジェスチャー入力デバイスを有する、または有さない、マイクロソフトＸｂｏｘゲーミングコンソール）、および／またはパーソナルメッセージングデバイスといった、任意の他の電子デバイスであってもよい。
【００３９】
例示的なシステム環境１００は３つのクライアントコンピューティングデバイスを有して図示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサを有するデバイスなどの他のデバイスが、クラウドインフラストラクチャシステム１０２と対話してもよい。
【００４０】
ネットワーク１１０は、クライアント１０４、１０６、および１０８とクラウドインフラストラクチャシステム１０２との間のデータの通信および交換を容易にしてもよい。ネットワーク１１０は、伝送制御プロトコル／インターネットプロトコル（transmission control protocol/Internet protocol：ＴＣＰ／ＩＰ）、システムネットワークアーキテクチャ（systems network architecture：ＳＮＡ）、インターネットパケット交換（Internet packet exchange：ＩＰＸ）、アップル・トーク（Apple Talk）などを何ら限定されることなく含む、商業的に入手可能なさまざまなプロトコルのうちのいずれかを使用してデータ通信をサポートできる、当業者にはよく知られた任意のタイプのネットワークであってもよい。単なる例として、ネットワーク１１０は、イーサネット（登録商標）、トークンリング（Token-Ring）などに基づくものといった、ローカルエリアネットワーク（local area network：ＬＡＮ）であり得る。ネットワーク１１０は、ワイドエリアネットワークおよびインターネットであり得る。それは、仮想プライベートネットワーク（virtual private network：ＶＰＮ）を何ら限定されることなく含む仮想ネットワーク、イントラネット、エクストラネット、公衆交換電話網（public switched telephone network：ＰＳＴＮ）、赤外線ネットワーク、無線ネットワーク（たとえば、電気電子技術者協会（the Institute of Electrical and Electronics：ＩＥＥＥ）８０２．１１プロトコルスイート、Bluetooth（登録商標）、および／または任意の他の無線プロトコルのうちのいずれかの下で動作するネットワーク）、ならびに／もしくは、これらのおよび／または他のネットワークの任意の組合せを含み得る。
【００４１】
クラウドインフラストラクチャシステム１０２は、１つ以上のコンピュータおよび／またはサーバを含んでいてもよい。これらのコンピュータシステムまたはサーバは、１つ以上の汎用コンピュータ、専用サーバコンピュータ（パーソナルコンピュータ（ＰＣ）サーバ、ＵＮＩＸ（登録商標）サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウントサーバなどを例として含む）、サーバファーム、サーバクラスタ、もしくは任意の他の適切な構成および／または組合せで構成されてもよい。さまざまな実施形態では、クラウドインフラストラクチャシステム１０２に関連付けられた１つ以上のコンピュータシステムまたはサーバは、前述の開示で説明された１つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、クラウドインフラストラクチャシステム１０２に関連付けられた１つ以上のコンピュータシステムまたはサーバは、この開示の一実施形態に従った、ここに記載された処理を行なうためのサーバに対応していてもよい。
【００４２】
クラウドインフラストラクチャシステム１０２に関連付けられた１つ以上のコンピュータシステムまたはサーバは、上述のもののうちのいずれかを含むＯＳ、および商業的に入手可能な任意のサーバＯＳを実行してもよい。クラウドインフラストラクチャシステム１０２に関連付けられた１つ以上のコンピュータシステムまたはサーバはまた、ハイパーテキスト伝送プロトコル（hypertext transport protocol：ＨＴＴＰ）サーバ、ファイル転送プロトコル（file transfer protocol：ＦＴＰ）サーバ、コモンゲートウェイインターフェイス（common gateway interface：ＣＧＩ）サーバ、ＪＡＶＡ（登録商標）サーバ、データベースサーバなどを含む、さまざまな追加のサーバアプリケーションおよび／または中間層アプリケーションのうちのいずれかを実行してもよい。
【００４３】
ある実施形態では、クラウドインフラストラクチャシステム１０２によって提供されるサービスは、オンラインデータストレージおよびバックアップソリューション、ウェブベースの電子メールサービス、ホスト型オフィススイートおよび文書コラボレーションサービス、データベース処理、管理された技術サポートサービスなどといった、クラウドインフラストラクチャシステム１０２のユーザにとってオンデマンドで利用可能にされる多数のサービスを含んでいてもよい。クラウドインフラストラクチャシステム１０２によって提供されるサービスは、そのユーザの必要性を満たすために動的にスケール変更され得る。クラウドインフラストラクチャシステム１０２によって提供されるサービスの特定のインスタンス化は、ここに「サービスインスタンス」と呼ばれる。一般に、クラウドサービスプロバイダのシステムから、インターネットなどの通信ネットワークを介してユーザに利用可能とされる任意のサービスは、「クラウドサービス」と呼ばれる。典型的には、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを作り上げるサーバおよびシステムは、顧客自身の構内サーバおよびシステムとは異なっている。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションをホストしてもよく、ユーザは、インターネットなどの通信ネットワークを介してオンデマンドでアプリケーションをオーダーし、使用してもよい。
【００４４】
いくつかの例では、クラウドインフラストラクチャ１０２によってインスタンス化されたサービスインスタンスは、クラウドベンダーによってユーザに提供されるかまたは当該技術分野において他の態様で公知であるようなストレージ、ホスト型データベース、ホスト型ウェブサーバ、ソフトウェアアプリケーション、もしくは他のサービスへの、保護されたコンピュータネットワークアクセスを含んでいてもよい。たとえば、クラウドインフラストラクチャ１０２によってインスタンス化されたサービスインスタンスは、インターネットを通した、クラウド上のリモートストレージへの、パスワードで保護されたアクセスを含み得る。別の例として、クラウドインフラストラクチャ１０２によってインスタンス化されたサービスインスタンスは、ネットワーク化された開発者による私的使用のための、ウェブサービスベースのホスト型リレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、クラウドインフラストラクチャ１０２によってインスタンス化されたサービスインスタンスは、クラウドベンダーのウェブサイト上でホストされる電子メールソフトウェアアプリケーションへのアクセスを含み得る。
【００４５】
ある実施形態では、クラウドインフラストラクチャシステム１０２は、セルフサービスで、サブスクリプションベースで、弾力的にスケーラブルで、信頼でき、高可用性で、かつセキュアな態様で顧客に提供される、アプリケーション、ミドルウェア、開発サービス、およびデータベースサービス提供物一式を含んでいてもよい。クラウドインフラストラクチャサービス１０２において具現化されたような、そのようなクラウドインフラストラクチャシステムの一例は、オラクル社からの「オラクル・パブリック・クラウド」（Oracle Public Cloud）である。
【００４６】
クラウドインフラストラクチャシステム１０２は、さまざまなデプロイメントモデルを介してクラウドサービスを提供してもよい。たとえば、サービスは、クラウドインフラストラクチャシステム１０２がクラウドサービスを販売する組織によって所有され（たとえば、オラクル社によって所有され）、サービスが一般大衆またはさまざまな産業企業にとって利用可能とされる、パブリッククラウドモデルの下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム１０２が単一の組織のためにのみ動作され、その組織内の１つ以上のエンティティのためのサービスを提供し得る、プライベートクラウドモデルの下で提供されてもよい。クラウドサービスはまた、クラウドインフラストラクチャシステム１０２、およびクラウドインフラストラクチャシステム１０２によって提供されるサービスが、関連するコミュニティにおけるいくつかの組織によって共有される、コミュニティクラウドモデルの下で提供されてもよい。クラウドサービスはまた、２つ以上の異なるモデルの組合せであるハイブリッドクラウドモデルの下で提供されてもよい。
【００４７】
いくつかの実施形態では、クラウドインフラストラクチャシステム１０２によって提供されるサービスは、ソフトウェア・アズ・ア・サービス（Software as a Service：ＳａａＳ）カテゴリー、プラットフォーム・アズ・ア・サービス（Platform as a Service：ＰａａＳ）カテゴリー、インフラストラクチャ・アズ・ア・サービス（Infrastructure as a Service：ＩａａＳ）カテゴリー、ＭＢａａＳカテゴリー、または、ハイブリッドサービスを含むサービスの他のカテゴリーの下で提供される、１つ以上のサービスを含んでいてもよい。いくつかの実施形態では、クラウドインフラストラクチャシステム１０２によって提供されるサービスは、アプリケーションサービス、プラットフォームサービス、インフラストラクチャサービス、バックエンドサービスなどを、何ら限定されることなく含んでいてもよい。いくつかの例では、アプリケーションサービスは、ＳａａＳプラットフォームを介して、クラウドインフラストラクチャシステム１０２によって提供されてもよい。ＳａａＳプラットフォームは、ＳａａＳカテゴリーに該当するクラウドサービスを提供するように構成されてもよい。たとえば、ＳａａＳプラットフォームは、統合された開発およびデプロイメントプラットフォーム上にオンデマンドアプリケーション一式を構築し、配信するための能力を提供してもよい。ＳａａＳプラットフォームは、ＳａａＳサービスを提供するための根底的なソフトウェアおよびインフラストラクチャを管理し、制御してもよい。ＳａａＳプラットフォームによって提供されるサービスを利用することにより、顧客は、クラウドインフラストラクチャシステム上で実行されるアプリケーションを利用できる。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、アプリケーションサービスを取得できる。さまざまな異なるＳａａＳサービスが提供されてもよい。例は、大型組織のための販売実績管理、企業統合、およびビジネス柔軟性についてのソリューションを提供するサービスを、何ら限定されることなく含む。
【００４８】
いくつかの実施形態では、プラットフォームサービスは、ＰａａＳプラットフォームを介して、クラウドインフラストラクチャシステム１０２によって提供されてもよい。ＰａａＳプラットフォームは、ＰａａＳカテゴリーに該当するクラウドサービスを提供するように構成されてもよい。プラットフォームサービスの例は、（オラクルなどの）組織が共有の共通アーキテクチャ上で既存のアプリケーションを統合できるようにするサービスと、プラットフォームによって提供される共有のサービスを活用する新しいアプリケーションを構築するための能力とを、何ら限定されることなく含んでいてもよい。ＰａａＳプラットフォームは、ＰａａＳサービスを提供するための根底的なソフトウェアおよびインフラストラクチャを管理し、制御してもよい。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、クラウドインフラストラクチャシステム１０２によって提供されるＰａａＳサービスを取得できる。プラットフォームサービスの例は、オラクル社からの「オラクルＪａｖａクラウド・サービス」（Java Cloud Service：ＪＣＳ）、オラクル社からの「オラクル・データベース・クラウド・サービス」（Database Cloud Service：ＤＢＣＳ）などを、何ら限定されることなく含む。
【００４９】
ＰａａＳプラットフォームによって提供されるサービスを利用することにより、顧客は、クラウドインフラストラクチャシステム１０２によってサポートされるプログラミング言語およびツールを採用するとともに、デプロイメントされたサービスを制御することができる。いくつかの実施形態では、クラウドインフラストラクチャシステム１０２によって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス（たとえば、オラクル・フュージョン・ミドルウェア（Oracle Fusion Middleware）サービス）、およびＪａｖａクラウドサービスを含んでいてもよい。一実施形態では、データベースクラウドサービスは、組織がデータベースリソースをプールし、データベースクラウドの形をしたデータベース・アズ・ア・サービスを顧客に提供することを可能にする共有のサービスデプロイメントモデルをサポートしてもよい。ミドルウェアクラウドサービスは、顧客がさまざまなビジネスアプリケーションを開発してデプロイメントするためのプラットフォームを提供してもよく、Ｊａｖａクラウドサービスは、顧客がクラウドインフラストラクチャシステムにおいてＪａｖａアプリケーションをデプロイメントするためのプラットフォームを提供してもよい。
【００５０】
クラウドインフラストラクチャシステム１０２において、さまざまな異なるインフラストラクチャサービスが、ＩａａＳプラットフォームによって提供されてもよい。これらのインフラストラクチャサービスは、ＳａａＳプラットフォームおよびＰａａＳプラットフォームによって提供されるサービスを利用する顧客のための、ストレージ、ネットワーク、ならびに他の基礎的コンピューティングリソースなどの根底的なコンピューティングリソースの管理および制御を容易にする。
【００５１】
ある実施形態では、クラウドインフラストラクチャシステム１０２は、クラウドインフラストラクチャシステムにおけるクラウドサービス（たとえば、ＳａａＳ、ＰａａＳ、ＩａａＳ、およびＭＢａａＳサービス）の包括的管理を提供してもよい。一実施形態では、クラウド管理機能性は、クラウドインフラストラクチャシステム１０２によって受信された顧客のサブスクリプションをプロビジョニングし、管理し、追跡するための能力などを含んでいてもよい。さまざまな実施形態では、クラウドインフラストラクチャシステム１０２は、クラウドインフラストラクチャシステム１０２によって提供されるサービスへの顧客のサブスクリプションを自動的にプロビジョニングし、管理し、追跡するように適合されてもよい。顧客は、クラウドインフラストラクチャシステム１０２によって提供される１つ以上のサービスを、サブスクリプションオーダーを介してオーダーしてもよい。クラウドインフラストラクチャシステム１０２は次に、顧客のサブスクリプションオーダーにおけるサービスを提供するために処理を行なう。
【００５２】
一実施形態では、クラウド管理機能性は、オーダー管理および監視モジュール１１４などの１つ以上のモジュールによって提供されてもよい。これらのモジュールは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、もしくは任意の他の適切な構成および／または組合せであり得る、１つ以上のコンピュータおよび／またはサーバを含んでいてもよく、もしくはそれらを使用して提供されてもよい。
【００５３】
例示的な動作では、クライアントコンピューティングデバイス１０４、１０６または１０８を使用する顧客は、クラウドインフラストラクチャシステム１０２によって提供される１つ以上のサービスを要求することにより、クラウドインフラストラクチャシステム１０２と対話してもよい。顧客は、さまざまな手段を使用して、サービス要求１３４をクラウドインフラストラクチャシステム１０２に発行してもよい。サービス要求１３４は、クラウドインフラストラクチャシステム１０２によって提供される１つ以上のサービスについてサブスクリプションオーダーを出すこと、クラウドインフラストラクチャシステム１０２によって提供される１つ以上のサービスにアクセスすること、などを含んでいてもよい。ある実施形態では、顧客は、クラウドＵＩ１３２、１３４、１３８にアクセスし、これらのＵＩを介してサブスクリプションオーダーを出してもよい。顧客がオーダーを出したことに応答してクラウドインフラストラクチャシステム１０２が受信したオーダー情報は、顧客を識別する情報と、顧客が申し込むつもりである、クラウドインフラストラクチャシステム１０２によって提供される１つ以上のサービスを識別する情報とを含んでいてもよい。顧客によってオーダーが出された後で、オーダー情報がクラウドＵＩ１３２、１３４、および／または１３８を介して受信される。
【００５４】
この例では、オーダー管理および監視モジュール１１２が、顧客から受信した情報をオーダーデータベースへ送信して、顧客によって出されたオーダーを格納させる。オーダーデータベースは、クラウドインフラストラクチャシステム１０２によって動作され、他のシステム要素とともに動作される、いくつかのデータベースのうちの１つであり得る。オーダー管理および監視モジュール１１２は、オーダーデータベースに格納されたオーダー情報のすべてまたは一部を含む情報をオーダー管理モジュールへ発送してもよい。場合によっては、オーダー管理モジュールは、オーダーを検証し、検証後にオーダーを予約するといった、オーダーに関連する請求および課金機能を行なうように構成されてもよい。
【００５５】
ある実施形態では、クラウドインフラストラクチャシステム１００は、アイデンティティ管理モジュール１１４を含んでいてもよい。アイデンティティ管理モジュール１１４は、クラウドインフラストラクチャシステム１０２においてアクセス管理および認証サービスなどのアイデンティティサービスを提供するように構成されてもよい。いくつかの実施形態では、アイデンティティ管理モジュール１１４は、クラウドインフラストラクチャシステム１０２によって提供されるサービスを利用したい顧客についての情報を制御してもよい。そのような情報は、そのような顧客のアイデンティティを認証する情報と、さまざまなシステムリソース（たとえば、ファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど）に対してそれらの顧客がどのアクションを行なうことが認可されているかを記述する情報とを含み得る。アイデンティティ管理モジュール１１４はまた、各顧客についての記述的情報と、その記述的情報が誰によってどのようにアクセスされ、修正され得るかについての記述的情報との管理を含んでいてもよい。
【００５６】
ある実施形態では、クラウドインフラストラクチャシステム１０２はまた、クラウドインフラストラクチャシステム１０２の顧客にさまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース１１６を含んでいてもよい。一実施形態では、インフラストラクチャリソース１１６は、ＰａａＳプラットフォームおよびＳａａＳプラットフォームによって提供されるサービスを実行するために、サーバ、ストレージ、およびネットワーキングリソースといったハードウェアの予め統合され最適化された組合せを含んでいてもよい。
【００５７】
いくつかの実施形態では、クラウドインフラストラクチャシステム１０２におけるリソースは、複数のユーザによって共有され、要望ごとに動的に再割当てされてもよい。加えて、リソースは、異なる時間帯におけるユーザに割当てられてもよい。たとえば、クラウドインフラストラクチャシステム１０２は、第１の時間帯における第１の一組のユーザが、特定数の時間、クラウドインフラストラクチャシステムのリソースを利用することを可能にし、次に、異なる時間帯に位置する別の一組のユーザへの同じリソースの再割当てを可能にして、それによりリソースの利用を最大化してもよい。
【００５８】
ある実施形態では、クラウドインフラストラクチャシステム１０２の異なるコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム１０２が提供するサービスによって共有される、多くの内部共有サービス１１８が提供されてもよい。これらの内部共有サービス１１８は、セキュリティおよびアイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウィルススキャニングおよびホワイトリストサービス、高可用性、バックアップおよび復元サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを、何ら限定されることなく含んでいてもよい。
【００５９】
ある実施形態では、クラウドインフラストラクチャシステム１０２の異なるコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム１０２が提供するサービスによって共有される、多くの外部共有サービス１２０が提供されてもよい。これらの外部共有サービス１２０は、セキュリティおよびアイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウィルススキャニングおよびホワイトリストサービス、高可用性、バックアップおよび復元サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを、何ら限定されることなく含んでいてもよい。
【００６０】
さまざまな実施形態では、外部共有サービス１２０は、アクセス、データ変換、自動化などをエンタープライズコンピュータシステム１２６に提供する１つ以上のコンポーネントを含んでいてもよい。エンタープライズコンピュータシステム１２６へのアクセスは、クラウドインフラストラクチャシステム１０２の異なるコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム１０２が提供するサービスによって、共有されてもよい。いくつかの実施形態では、エンタープライズコンピュータシステム１２６へのアクセスは、１人以上のサブスクライバに制限される、クラウドインフラストラクチャシステム１０２が提供するサービスインスタンスによって、共有されてもよい。
【００６１】
さらなる実施形態では、外部共有サービス１２０は、クラウドインフラストラクチャシステム１０２の異なるコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム１０２が提供するサービスによって共有される、外部アプリケーションプログラミングインターフェイス（application programming interface：ＡＰＩ）サービス１２８を含んでいてもよい。これらの外部ＡＰＩサービス１２８は、他の第三者サービスまたはエンティティによって提供されるＡＰＩを、何ら限定されることなく含んでいてもよい。
【００６２】
クラウドインフラストラクチャシステム１０２では、ＭＣＳ１２２によって、さまざまな異なるモバイルクラウドサービスが提供されてもよい。本発明のいくつかの実施形態によれば、ＭＣＳ１２２は、モバイルコンピューティングデバイスとエンタープライズコンピュータシステム（たとえば、エンタープライズコンピュータシステム１２４および１２６）との間の通信を容易にする。ＭＣＳ１２２は、エンタープライズデータおよび認証情報を格納するために使用される１つ以上のメモリ記憶装置（ローカルストレージ）を含んでいてもよい。エンタープライズデータは、エンタープライズコンピュータシステム１２６から、あるいはクライアントコンピューティングデバイス１０４、１０６、または１０８から受信されてもよく、もしくは、クラウドインフラストラクチャシステム１０２によって変換されたエンタープライズデータを含んでいてもよく、もしくはそれらの組合せであってもよい。認証情報は、アイデンティティ管理システム１１６から受信されてもよく、および／または、クラウドインフラストラクチャシステム１０２によって生成されてもよい。いくつかの実施形態では、認証情報は、サービスについての要求に関するユーザのセキュリティ認証を示す情報を含んでいてもよい。
【００６３】
エンタープライズコンピュータシステム１２６などのエンタープライズコンピュータシステムは、クラウドインフラストラクチャシステム１０２のファイアウォールを越えて、クラウドインフラストラクチャシステム１０２とは異なる地理的場所（たとえば、リモートの地理的場所）に物理的に位置していてもよい。いくつかの実施形態では、エンタープライズコンピュータシステム１２６は、１つ以上の異なるコンピュータまたはサーバを含んでいてもよい。いくつかの実施形態では、エンタープライズコンピュータシステム１２６は、単一のコンピュータシステムの一部であってもよい。
【００６４】
ある実施形態では、エンタープライズコンピュータシステム１２６は、１つ以上の異なるプロトコルを使用して、クラウドインフラストラクチャシステム１０２と通信してもよい。エンタープライズコンピュータシステム１２６の各々は、異なる通信プロトコルを使用して、クラウドインフラストラクチャシステム１０２と通信してもよい。エンタープライズコンピュータシステム１２６は、同じまたは異なるセキュリティプロトコルをサポートしてもよい。いくつかの実施形態では、ＭＣＳ１２２は、エンタープライズコンピュータシステム１２６との通信を取扱うためのエージェントシステムを含んでいてもよい。
【００６５】
プロトコルは、ＳＰｅｅＤＹ（ＳＰＤＹ）などの通信プロトコルを含んでいてもよい。プロトコルは、ＨＴＴＰベースのプロトコルなどのアプリケーションプロトコルを含んでいてもよい。いくつかの実施形態では、エンタープライズコンピュータシステム１２６は、ＲＥＳＴまたはシンプル・オブジェクト・アクセス・プロトコル（Simple Object Access Protocol：ＳＯＡＰ）などの通信プロトコルを使用して、クラウドインフラストラクチャシステム１０２と通信してもよい。たとえば、ＲＥＳＴプロトコルは、ユニフォームリソース識別子（uniform resource identifier：ＵＲＩ）またはユニフォームリソースロケータ（uniform resource locator：ＵＲＬ）を含むフォーマットをサポートしてもよい。ＲＥＳＴプロトコルを使用する通信のためにフォーマット化されたエンタープライズデータは、ＪａｖａＳｃｒｉｐｔ（登録商標）オブジェクト表記法（JavaScript Object Notation：ＪＳＯＮ）、コンマ区切り形式（comma-separated values：ＣＳＶ）、およびリアリー・シンプル・シンジケーション（really simple syndication：ＲＳＳ）などのデータフォーマットに容易に変換されてもよい。エンタープライズコンピュータシステム１２６とクラウドインフラストラクチャシステム１０２とは、リモート・プロシージャ・コール（remote procedure call：ＲＰＣ）（たとえば、拡張マークアップ言語（extended markup language：ＸＭＬ）ＲＰＣ）などの他のプロトコルを使用して通信してもよい
。
【００６６】
いくつかの実施形態では、ＭＣＳ１２２は、クラウドインフラストラクチャサービス１０２によって提供される１つ以上のサービスとの通信をサポートするように構成されたアダプタインターフェイスを含んでいてもよく、それらのサービスのうちのいくつかは、通信用の異なるプロトコルまたは手法をサポートしてもよい。いくつかの実施形態では、ＭＣＳ１２２は、エンタープライズコンピュータシステム１２６との通信をサポートするように構成されたアダプタインターフェイスを含んでいてもよく、エンタープライズコンピュータシステム１２６のうちのいくつかは、通信用の異なるプロトコルまたは手法をサポートしてもよい。ＭＣＳ１２２は、通信プロトコル、エンタープライズコンピュータシステムのタイプ、アプリケーションのタイプ、サービスのタイプ、またはそれらの組合せに従って通信するように各々構成され得る１つ以上のアダプタを含んでいてもよい。アダプタによってサポートされる通信プロトコルは、サービスに、またはエンタープライズコンピュータシステム１２６のうちの１つ以上に特有のものであってもよい。
【００６７】
ある実施形態では、クライアントコンピューティングデバイス１０４、１０６、および１０８は各々、ＭＣＳ１２２と通信するための特定のＵＩを提供できるアプリケーションを実装してもよい。特定のＵＩは、特定の通信プロトコルを使用して通信するように構成されてもよい。いくつかの実施形態では、特定のＵＩは、ＭＣＳ１２２と通信するために呼出され得る、呼出し可能インターフェイス、機能、ルーチン、方法、および／または動作を含んでいてもよい。特定のＵＩは、エンタープライズデータのために、および／またはサービスを要求するために、クラウドインフラストラクチャサービス１０２によって提供されるサービスと通信するためのパラメータ、またはエンタープライズコンピュータシステム１２６と通信するためのパラメータを、入力として受け入れてもよい。いくつかの実施形態では、ＭＣＳ１２２を通した通信は、カスタム通信プロトコルを使用する通信のために変換されてもよい。いくつかの実施形態では、特定のＵＩは、アプリケーションにおいてカスタムクライアントに対応していてもよい。
【００６８】
ＭＣＳ１２２は、１つ以上の呼出し可能インターフェイス、たとえばＡＰＩを含んでいてもよい。ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスは、モバイルコンピューティングデバイス上のアプリケーションがＭＣＳ１２２に要求を通信することを可能にしてもよい。ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスは共通または標準インターフェイスをサポートしてもよく、それは、パラメータを含む要求が、標準化プロトコル、アーキテクチャスタイル、および／またはフォーマット（たとえばＲＥＳＴプロトコル）に従って、アプリから受信されることを可能にしてもよい。ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスは、コンピューティングデバイス１０４、１０６、または１０８のうちのいずれか１つのユーザによって構成可能であってもよい。ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスは、通信プロトコルに従って、サービスについての要求を受信してもよい。デバイスアプリケーション開発者は、自分のカスタムアプリケーションのためにＭＣＳ１２２に接続することができる。いくつかの実施形態では、ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスは、アプリを開発したのと同じ人によって構成され、その人が、ＭＣＳ１２２と通信するためのカスタムアプリケーションを実現できるようになっていてもよい。
【００６９】
ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスはさらに、エンタープライズコンピュータシステム１２６が、標準化プロトコルまたはフォーマットに従ってＭＣＳ１２２と通信することを可能にしてもよい。アプリケーション開発者と同様に、エンタープライズコンピュータシステムを管理する人は、１つ以上の呼出し可能インターフェイスを介してＭＣＳ１２２と通信するように構成されたコード（たとえばエージェントシステム）を実現することができる。ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスは、コンピューティングデバイスのタイプ、エンタープライズコンピュータシステムのタイプ、アプリ、エージェントシステム、サービス、プロトコル、または他の基準に基づいて実現されてもよい。いくつかの実施形態では、ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスは、認証、圧縮、暗号化、カーソルを用いたページネーション、クライアントベースのスロットリング、否認不可、ロギング、およびメトリック収集を含むサービスについての要求をサポートしてもよい。いくつかの実施形態では、ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスは、認証、ポリシー実施、応答のキャッシング、ＭＣＳ１２２への呼出しのスロットリング、非同期パターンと同期パターンとの間の翻訳、根底的なサービスへの呼出しのロギング、またはそれらの組合せ、といったカスタムビジネス関連サービスのために実現されてもよい。いくつかの実施形態では、ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスは、ユーザが、クラウドインフラストラクチャシステム１０２による実現のためにカスタムコードをロードすることを可能にしてもよい。カスタムコードは、クラウドインフラストラクチャシステム１０２のために、ＭＣＳ１２２に関連付けられた１つ以上の呼出し可能インターフェイスを実現してもよく、それは、ユーザがカスタムサービスまたは他のエンタープライズコンピュータシステムにアクセスすることを可能にできる。
【００７０】
ＭＣＳ１２２に関連付けられたプロトコルトランスレータは、メッセージを処理して、メッセージ用の通信プロトコルを判断し、および／またはメッセージを宛先用の通信プロトコルに変換してもよい。ＭＣＳ１２２に関連付けられたプロトコルトランスレータは、クライアントコンピューティングデバイス１０４、１０６、または１０８から受信された要求を変換してもよい。要求は、クライアントコンピューティングデバイス１０４、１０６、または１０８によってサポートされる通信プロトコルのフォーマットから、クラウドインフラストラクチャサービス１０２またはエンタープライズコンピュータシステム１２６によって提供されるサービスによってサポートされる通信プロトコルのフォーマットに変換されてもよい。ＭＣＳ１２２に関連付けられたプロトコルトランスレータは、クラウドインフラストラクチャサービス１０２またはエンタープライズコンピュータシステム１２６によって提供されるサービスから受信された応答を変換してもよい。応答は、クラウドインフラストラクチャサービス１０２またはエンタープライズコンピュータシステム１２６によって提供されるサービスによってサポートされる通信プロトコルのフォーマットから、クライアントコンピューティングデバイス１０４、１０６、または１０８によってサポートされる通信プロトコルのフォーマットに変換されてもよい。
【００７１】
ＭＣＳ１２２に関連付けられたセキュリティサービスは、クライアントコンピューティングデバイス１０４、１０６、または１０８のうちのいずれかから受信された要求についてのセキュリティ認証を管理してもよい。ＭＣＳ１２２に関連付けられたセキュリティサービスは、顧客プロセスおよびエンタープライズデータの完全性を保護してもよい。システムまたはデータが損なわれないようにするために、クライアントコンピューティングデバイス１０４、１０６、または１０８から要求が受信されると、セキュリティ認証が起こってもよい。セキュリティ認証は、クラウドインフラストラクチャシステム１０２による処理のために要求が発送される前に行なわれてもよい。あるユーザについて判断されたセキュリティ認証は、モバイルコンピューティングデバイスに関連付けられたユーザが、ＭＣＳ１２２を介してサービスを要求するための認証を有することを可能にしてもよい。セキュリティ認証は、ユーザが、ＭＣＳ１２２を介して要求された異なる要求および／またはサービスについて認証するための労力を減少させてもよい。ＭＣＳ１２２に関連付けられたセキュリティサービスは、要求のセキュリティを認証するさまざまな動作を行なうように構成された１つ以上の機能ブロックまたはモジュールとして実現されてもよい。
【００７２】
ＭＣＳ１２２に関連付けられた認証サービスは、クライアントコンピューティングデバイス１０４、１０６、または１０８から受信された要求についてのセキュリティ認証を管理してもよい。ＭＣＳ１２２に関連付けられた認証サービスは、ＭＣＳ１２２に要求を送信するコンピューティングデバイスに関連付けられたユーザについてセキュリティ認証を判断してもよい。セキュリティ認証は期間に基づいて判断されてもよく、期間は、アプリケーションの動作（たとえば、アプリケーションの起動）、要求、コンピューティングデバイス、エンタープライズコンピュータシステム、要求に関連する他の基準、またはそれらの組合せに結び付けられてもよい。セキュリティ認証は、個々の要求、１つ以上のエンタープライズコンピュータシステム、特定のサービス、サービスのタイプ、ユーザ、コンピューティングデバイス、セキュリティ認証を判断するための他の基準、またはそれらの組合せ、などのうちのいずれか１つについて、検証され付与されてもよい。いくつかの実施形態では、クラウドインフラストラクチャシステム１０２は、エンタープライズコンピュータシステム、またはエンタープライズコンピュータシステムをサポートする認証システムから受信されたユーザの認証情報を格納してもよい。クラウドインフラストラクチャシステム１０２は、要求に関連付けられたユーザのアイデンティティがそのような要求を行なう認可を有するかどうかを判断するためにルックアップ機能を行なうことによって、認証を判断してもよい。格納された認証情報は、ユーザがアクセスすることを認可され得る、要求、機能、エンタープライズコンピュータシステム、エンタープライズデータなどのタイプといった情報を含んでいてもよい。いくつかの実施形態では、インフラストラクチャシステム１０２は、認証を判断するために、要求元コンピューティングデバイスとの通信を起動してもよい。
【００７３】
いくつかの実施形態では、セキュリティ認証は、サービスを要求するユーザに関連付けられた役割に基づいて判断されてもよい。役割は、ＭＣＳ１２２へのアクセスを要求するユーザに関連付けられてもよい。いくつかの実施形態では、ユーザは、ＭＣＳ１２２によって提供されるリソースおよび／またはサービスへのアクセスを付与され得るＭＣＳ１２２のサブスクライバまたはテナントとして、サービスを要求してもよい。認証は、ユーザがサブスクライバとしてＭＣＳ１２２を介してサービスを要求することが認可され得るように、ＭＣＳ１２２へのユーザのサブスクリプションに対応していてもよい。いくつかの実施形態では、サブスクリプションは、ＭＣＳ１２２によって提供される特定の一組のリソースに限定されてもよい。セキュリティ認証は、ＭＣＳ１２２のユーザがアクセス可能なリソースおよび／またはサービスに基づいていてもよい。いくつかの実施形態では、「実行時環境」と呼ばれる実行中に、要求にテンプレートがプロビジョニングされてもよい。実行時環境は、要求、ユーザ、またはデバイスに割当てられるリソースに関連付けられてもよい。
【００７４】
いくつかの実施形態では、ＭＣＳ１２２に関連付けられた認証サービスは、アイデンティティ管理システムに、ユーザについてセキュリティ認証を判断するよう要求してもよい。アイデンティティ管理システムは、クラウドインフラストラクチャシステム１０２によって（たとえばアイデンティティ管理１１４として）実現されてもよく、または、クラウドインフラストラクチャシステム１０２の外部の別のコンピュータシステムによって実現されてもよい。アイデンティティ管理１１６は、ＭＣＳ１２２にアクセスするためのユーザの役割またはサブスクリプションに基づいて、ユーザのセキュリティ認証を判断してもよい。役割またはサブスクリプションには、エンタープライズコンピュータシステム、エンタープライズコンピュータシステムによって提供されるサービス、エンタープライズコンピュータシステムの機能または特徴、エンタープライズコンピュータシステムへのアクセスを制御するための他の基準、またはそれらの組合せに対する特権および／または権利が割当てられてもよい。
【００７５】
クラウドインフラストラクチャシステム１０２では、さまざまな異なるＡＤＦ１２４が提供されてもよい。ＡＤＦ１２４は、アジャイルなＳＯＡベースのアプリケーションを実装するためにインフラストラクチャコードを提供する。ＡＤＦ１２４はさらに、１つ以上の開発ツール（たとえば、「オラクルJDeveloper 11g」開発ツール）を通して、開発への視覚的および宣言的アプローチを提供する。ＡＤＦ１２４によって提供される１つ以上のフレームワークは、ＭＶＣ設計パターンを実装してもよい。そのようなフレームワークは、ＭＶＣアーキテクチャのすべての層を、オブジェクト／リレーショナルマッピング、データ持続、再使用可能なコントローラ層、リッチなウェブＵＩフレームワーク、ＵＩへのデータバインディング、セキュリティおよびカスタム化などのエリアに対するソリューションでカバーする、統合的ソリューションを提供する。コアウェブベースのＭＶＣアプローチを超えて、そのようなフレームワークはまた、オラクルＳＯＡおよびウェブセンターポータル（WebCenter Portal）フレームワークと統合して、完全な複合アプリケーションの作成を単純化する。
【００７６】
ある実施形態では、ＡＤＦ１２４は、クラウドインフラストラクチャシステム１０２によって提供されるビルトインビジネスサービスにサービスインターフェイスを結合することによって、サービスとしてデータを公開するアジャイルなアプリケーションを開発することを容易にする。ビジネスサービス実装詳細のこの分離は、ＡＤＦ１２４においてメタデータを介して行なわれる。このメタデータ駆動型アーキテクチャの使用により、アプリケーション開発者は、サービスがどのようにアクセスされるかの詳細にではなく、ビジネスロジックおよびユーザ体験に集中できるようになる。ある実施形態では、ＡＤＦ１２４は、サービスの実装詳細を、モデル層におけるメタデータに格納する。これにより、開発者は、ＵＩを修正することなくサービスを交換できるようになり、アプリケーションが非常にアジャイルになる。加えて、ＵＩを作成する開発者は、ビジネスサービスアクセス詳細に悩まされる必要がない。代わりに、開発者は、アプリケーションインターフェイスおよび対話ロジックの開発に集中することができる。ユーザ体験を作り出すことは、ビジュアルページデザイナ上に所望のビジネスサービスをドラッグ・アンド・ドロップし、どのタイプのコンポーネントがそのデータを表わすべきかを示すのと同じくらい単純であり得る。
【００７７】
さまざまな実施形態では、開発者はＡＤＦ１２４と対話して、エンタープライズアプリケーションを形成するモジュールを作成する。エンタープライズアプリケーションは、クラウドインフラストラクチャシステム１０２のコンテキスト内で実行され得る。さまざまな実施形態では、開発者はＡＤＦ１２４と対話して、モバイルアプリケーションを形成するモジュールを作成する。モバイルアプリケーションは、クラウドインフラストラクチャシステム１０２のコンテキスト内で実行され得る。以下に説明されるこの発明の特徴は、ここに提供される開示を読むことによって当業者には明らかであるように、プログラミング言語とアプリケーション開発フレームワークとの任意の所望の組合せを使用して実現されてもよい。
【００７８】
ＡＤＦ１２４によって提供される１つ以上のフレームワークは、一例ではオラクルＡＤＦとして具現化され得る。したがって、ＡＤＦ１２４におけるフレームワークは、ＭＶＣ設計パターンに基づき得る。ＭＶＣアプリケーションは、１）データソースとの対話を取扱い、ビジネスロジックを実行するモデル層と、２）アプリケーションＵＩを取扱うビュー層と、３）アプリケーションフローを管理し、モデル層とビュー層との間のインターフェイスとして作用するコントローラとに分離される。これら３つの層にアプリケーションを分離することは、アプリケーション間にわたるコンポーネントの保守および再使用を単純化する。各層の他の層からの独立は、緩く結合されたＳＯＡをもたらす。
【００７９】
さまざまな実施形態では、ＡＤＦ１２４は、開発者がアプリケーションを多層の形で作成することを可能にするツールおよびリソースを提供し、各層は、予め定義された仕様に従って所望のロジックを実現するコードモジュール／ファイルを含む。このため、一実施形態では、ＡＤＦ１２４は、アプリケーションが、アプリケーションのＵＩを提供するコードモジュール／ファイルを含むビュー層と、アプリケーションのフローを制御するコードモジュールを含むコントローラ層と、根底的なデータのための抽象化層を提供するデータ／コードモジュールを含むモデル層と、さまざまなソースからのデータへのアクセスを提供し、ビジネスロジックを取扱うコードモジュールを含むビジネスサービス層という４つの層として開発されることを可能にする。
【００８０】
ある実施形態では、ＡＤＦ１２４は、開発者に、層の各々を実装する際に自分が使用したい技術を選択させる。エンタープライズＪａｖａＢｅａｎ（Enterprise JavaBean：ＥＪＢ）（登録商標）、ウェブサービス（Web Services）、ＪａｖａＢｅａｎｓ、ＪＰＡ／エクリプスリンク（EclipseLink）／トップリンク（TopLink）オブジェクト、および他の多くがすべて、ＡＤＦ１２４のためのビジネスサービスとして使用可能である。ビュー層は、Ｊａｖａサーバ・フェイス（Java Server Faces：ＪＳＦ）、デスクトップ・スイング（Desktop Swing）アプリケーション、およびマイクロソフト・オフィス・フロントエンドを用いて実現されるウェブベースのインターフェイスと、モバイル装置用のインターフェイスとを含み得る。
【００８１】
一局面では、ビュー層は、開発中のアプリケーションのＵＩを表わす。ビュー層は、デスクトップビュー、モバイルビュー、およびブラウザベースのビューを含んでいてもよく、それらの各々はＵＩのすべてまたは一部を提供するとともに、ビュータイプに対応するさまざまな態様でアクセス可能である。たとえば、ウェブページが、対応するＵＲＬを含むクライアント要求を受信することに応答して、アプリケーションによって送信されてもよい。ウェブページは次に、要求元クライアントシステムに関連付けられた表示部（図示せず）上にブラウザによって表示されてもよく、それにより、要求元クライアントシステムのユーザがエンタープライズアプリケーションと対話することを可能にする。ＡＤＦ１２４は、ビジネスサービスの再使用を可能にするビジネスサービスへのマルチチャネルアクセスと、ウェブクライアント、クライアント・サーバ・スイング・デスクトップベース・アプリケーション（client-server swing desktop-based application）、マイクロソフト・エクセル・スプレッドシート、スマートフォンなどのモバイルデバイス、などからのアクセスとをサポートする。
【００８２】
（ウェブページなどの）ビュー層を形成するコードファイル／モジュールは、ハイパーテキストマークアップ言語（hypertext markup language：ＨＴＭＬ）、Ｊａｖａサーバ・ページ（Java server page：ＪＳＰ）、およびＪＳＦのうちの１つ以上を使用して実現されてもよい。それに代えて、ＵＩは、スイング（Swing）などのＪａｖａコンポーネント、および／またはＸＭＬを使用して実現されてもよい。さらに述べられるように、ＵＩは、マイクロソフトによるワードおよびエクセルなどのデスクトップアプリケーションについてのユーザの体験および習熟を活用してもよい。
【００８３】
上述のように、ユーザが開発した関連するコード／データモジュールが、層の各々において提供される。しかしながら、各層は典型的には、ＡＤＦ１２４によって提供される他の予め定義されたコード／データモジュールを含む。予め定義されたモジュールのうちのいくつかは、たとえば、ウェブページを開発するためのテンプレート、開発されたコードに所望の機能性を含めるためのテンプレートなどとして、開発中に使用されてもよい。（ＵＲＬ書換モジュールなどの）他の予め定義されたモジュールが、開発されたアプリケーションとともにデプロイメントされてもよく、エンタープライズアプリケーションの実行中に追加の機能性（要求されたＵＲＬの、内部名へのマッピング）をユーザに提供してもよい。
【００８４】
コントローラ層は、アプリケーションのフローを制御するコードモジュール／ファイルを含む。各コントローラオブジェクトは、ビュー層において情報を提示する所望の態様に従って実現されたソフトウェア命令および／またはデータを含む。所望の態様は、別のウェブページにおけるリンクがユーザによってクリック／選択されると表示される特定のウェブページ、実行中にエラーが起こると表示される、格納／検索すべき特定のデータを示すページなどを含んでいてもよい。
【００８５】
一局面では、コントローラ層はアプリケーションのフローを管理し、ユーザ入力を取扱う。たとえば、ページ上でサーチボタンがクリックされると、コントローラは、どのアクションを行なうべきか（サーチを行なう）と、どこにナビゲートすべきか（結果ページ）とを判断する。JDeveloperでは、ウェブベースのアプリケーションについて、標準のＪＳＦコントローラ、またはＪＳＦコントローラ機能性を拡張するＡＤＦコントローラという２つのコントローラオプションがある。どちらのコントローラが使用されても、アプリケーションフローは典型的には、ページおよびナビゲーションルールをダイアグラム上にレイアウトすることによって設計される。アプリケーションのフローは、より小さい再使用可能タスクフローに分割可能であり、方法呼出しおよび判定ポイントなどの非視覚的コンポーネントをフローに含めることでき、単一の含有ページの領域内で実行される「ページフラグメント」フローを作成することができる。
【００８６】
コントローラ層を形成するコードモジュール／ファイルはしばしば、クライアント要求を受信するととともに対応する応答として所望のウェブページを送信するＪａｖａサーブレットとして実現される。コントローラオブジェクトはまた、たとえば、アパッチ・ジャカルタ・ストラット（Apache Jakarta Struts）コントローラとして、またはＪＳＦ規格に従って実現されてもよい。
【００８７】
モデル層は、さまざまなビジネスサービスを、それらを他の層で使用するオブジェクトに、たとえば上述のコントローラオブジェクトに、または直接デスクトップアプリケーションに接続する、データ／コードモジュールを含む。モデル層の各抽象データオブジェクトは、任意のタイプのビジネスサービスにアクセスするために使用され得る対応するインターフェイスを提供し、根底的なビジネスサービス層で実行される。データオブジェクトは、クライアントからのサービスのビジネスサービス実装詳細を抽象化し、および／または、データ制御方法／属性をビューコンポーネントに公開してもよく、このため、ビュー層とデータ層との分離を提供する。
【００８８】
一局面では、モデル層は、データ制御およびデータバインディングという２つのコンポーネントからなり、それらは、インターフェイスを定義するためにメタデータファイルを利用する。データ制御は、クライアントからのビジネスサービス実装詳細を抽象化する。データバインディングは、データ制御方法および属性をＵＩコンポーネントに公開し、ビューとモデルとのクリーンな分離を提供する。モデル層のメタデータアーキテクチャにより、開発者は、任意のタイプのビジネスサービス層実装をビュー層およびコントローラ層にバインドする際に、同じ開発体験を得る。
【００８９】
ある実施形態では、ＡＤＦ１２４は、開発プロセス全体にわたって宣言的プログラミングパラダイムの使用を強調して、ユーザが、実現詳細に手をつける必要なく、アプリケーション作成のロジックに集中できるようにする。高レベルでは、フュージョン・ウェブ（Fusion Web）アプリケーションのための開発プロセスは通常、アプリケーションワークスペースを作成することを伴う。ウィザードを使用して、開発者が選択した技術にとって必要なライブラリおよび構成が自動的に追加され、アプリケーションが、パッケージおよびディレクトリを有するプロジェクトへと構造化される。
【００９０】
データベースオブジェクトをモデル化することにより、オンラインデータベースまたは任意のデータベースのオフラインレプリカが作成可能であり、定義が編集可能であり、スキーマが更新可能である。統一モデリング言語（unified modeling language：ＵＭＬ）モデラーを使用して、使用事例が次に、アプリケーションのために作成可能である。アプリケーション制御およびナビゲーションも設計可能である。アプリケーション制御およびナビゲーションのフローを視覚的に判断するために、ダイアグラマ（diagrammer）が使用可能である。次に、フローを記述する根底的なＸＭＬファイルが自動的に作成可能である。開発者が、インポートされたライブラリを、アプリケーションに単純にドラッグ・アンド・ドロップすることによって閲覧および使用することを可能にするために、リソースライブラリが使用可能である。データベーステーブルから、エンティティオブジェクトが、ウィザードまたはダイアログを使用して作成可能である。それらのエンティティオブジェクトから、ビューオブジェクトが、アプリケーションにおけるページによって使用されるように作成される。検証ルールおよび他のタイプのビジネスロジックが実現可能である。
【００９１】
この例では、ビジネスサービス層は、データ持続層との対話を管理する。それは、データ持続、オブジェクト／リレーショナルマッピング、トランザクション管理、およびビジネスロジック実行などのサービスを提供する。ビジネスサービス層は、シンプルＪａｖａクラス、ＥＪＢ、ウェブサービス、ＪＰＡオブジェクト、およびオラクルＡＤＦビジネスコンポーネント（Oracle ADF Business Components）といったオプションのうちのいずれかで実装可能である。加えて、データは、ファイル（ＸＭＬまたはＣＳＶ）およびＲＥＳＴから直接消費され得る。このため、各ビジネスサービスは、対応するデータ持続層との対話を管理し、また、オブジェクト／リレーショナルマッピング、トランザクション管理、ビジネスロジック実行などのサービスを提供する。ビジネスサービス層は、シンプルＪａｖａクラス、エンタープライズＪａｖａＢｅａｎｓ、ウェブサービスなどのうちの１つ以上を使用して実装されてもよい。
【００９２】
ビジネスコンポーネントは、データベース、ウェブサービス、レガシーシステム、アプリケーションサーバなどとの対話を提供するために、たとえばオラクル社からの「オラクルＡＤＦビジネスコンポーネント」を使用して実装されるビジネスサービスを表わす。一実施形態では、ビジネスサービス層のビジネスコンポーネントは、ビジネスサービス実装を提供するために協働するアプリケーションモジュール、ビュー／クエリオブジェクト、およびエンティティオブジェクトの混合を含む。アプリケーションモジュールは、アプリケーション／トランザクションデータと連携するためにＵＩクライアントが通信するトランザクションコンポーネント／コードモジュールであり得る。アプリケーションモジュールは、更新可能なデータモデルを提供してもよく、また、ユーザトランザクションに関する手順／機能（一般にサービス方法と呼ばれる）を提供してもよい。
【００９３】
エンティティオブジェクトは、データベーステーブルにおける対応する行を表わしてもよく、対応する行に格納されたデータの操作（更新、削除など）を単純化してもよい。エンティティオブジェクトはしばしば、所望のビジネスルールが一貫して実施されることを保証するために、対応する行のためのビジネスロジックをカプセル化する。エンティティオブジェクトはまた、根底的なデータベースに格納された行間に存在する関係を反映するように、他のエンティティオブジェクトに関連付けられてもよい。
【００９４】
ＩＩＩ．プライバシー、レジデンシーおよびセキュリティ
プライバシー、レジデンシーおよびセキュリティ（ＰＲＳ）は、クラウドに入るデータを難読化する問題に対処することに関連している。難読化の２つの一般的な方法は、暗号化およびトークン化である。これらのアプローチのいずれかを使用することにより、組織がクラウドインフラストラクチャシステム１０２によって提供されるクラウドベースのアプリケーションの利点を享受する一方で、データが覗き見に対して解読不可なままであることを確実にする。
【００９５】
図２は、本開示のいくつかの実施形態による、クラウドベースのアプリケーションをプライバシー、レジデンシー、およびセキュリティを提供するシステム２００のブロック図である。図２における例示された実施形態では、システム２００は、難読化されていてもされていなくてもよいデータへのアクセスを提供するサービスを含むクラウドサービスを提供するクラウドインフラストラクチャシステム２２０（たとえば、図１に関して説明したクラウドインフラストラクチャシステム１０２）と対話するためにユーザによって使用され得る１つ以上のクライアントコンピューティングデバイス２０５，２１０、および２１５を含む。システム２００は、図示のもの以外のコンポーネントを有してもよいことを理解されたい。さらに、図２に示す実施形態は、いくつかの実施形態を組み込むことができるクラウドベースのアプリケーションをプライバシー、レジデンシー、およびセキュリティに提供するためのシステムの一例に過ぎない。他のいくつかの実施の形態では、システム２００は、図において示されるよりも多数もしくは少数のコンポーネントを有してもよく、または２つ以上のコンポーネントを組合せてもよく、またはコンポーネントの異なる構成もしくは配置を有してもよい。
【００９６】
この例では、システム２００は、エンタープライズインフラストラクチャシステム２２５、ＰＲＳシステム２３０、およびクラウドインフラストラクチャシステム２２０を含む。エンタープライズインフラストラクチャシステム２２５は、１つ以上のクライアントデバイス、サーバ、ネットワーク接続デバイス、ルータ、プロキシ、ゲートウェイなどを含むことができる。図示のように、エンタープライズインフラストラクチャシステム２２５は、ＰＲＳシステム２３０およびクラウドインフラストラクチャシステム２２０と通信する１つ以上のクライアントコンピューティングデバイス２０５，２１０、および２１５を含む。図示されるように、ＰＲＳシステム２３０は、ＰＲＳサーバ２３５およびプライベートデータベース２４０を含み、クラウドインフラストラクチャシステム２２０は、クラウドベースのアプリケーション２４５およびクラウドデータベース２５０を含む。
【００９７】
クライアントコンピューティングデバイス２０５，２１０、および２１５は、図１に示された１０４，１０６、および１０８について上述したものと同様のデバイスであってもよい。クライアントコンピューティングデバイス２０５，２１０および２１５は、ウェブブラウザ、知的所有権下にあるクライアントアプリケーション（たとえば、Oracle Forms）、またはクライアントコンピューティングデバイスのユーザによって使用されてクラウドインフラストラクチャシステム２２０と対話して、クラウドインフラストラクチャシステム２２０によって提供されるサービスを使用し得る他の何らかのアプリケーションなどのクライアントアプリケーションを動作させるように構成され得る。例示的なシステム環境２００は３つのクライアントコンピューティングデバイスとともに示されるが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサなどとのデバイスなどのような他のデバイスがクラウドインフラストラクチャシステム２２０と対話してもよい。
【００９８】
クライアントコンピューティングデバイス２０５，２１０，２１５は、携帯可能な手持ち式のデバイス（たとえば、ｉＰｈｏｎｅ（登録商標）、セルラー電話、ｉＰａｄ（登録商標）、コンピューティングタブレット、携帯情報端末（ＰＤＡ））またはウェアラブルデバイス（たとえばＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）頭部装着型ディスプレイ）であってもよく、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  Ｍｏｂｉｌｅ（登録商標）などのソフトウェア、および／もしくは、ｉＯＳ、Ｗｉｎｄｏｗｓ  Ｐｈｏｎｅ、Ａｎｄｒｏｉｄ、ＢｌａｃｋＢｅｒｒｙ１０、Ｐａｌｍ  ＯＳなどのさまざまなモバイルＯＳを実行し、インターネット、電子メール、ショートメッセージサービス（ＳＭＳ）、ＢｌａｃｋＢｅｒｒｙ（登録商標）、または他のイネーブルにされた通信プロトコルであってもよい。クライアントコンピューティングデバイス２０５，２１０，２１５は、汎用パーソナルコンピュータであってもよく、一例として、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）および／またはＬｉｎｕｘ（登録商標）ＯＳのさまざまなバージョンを実行するパーソナルコンピュータおよび／またはラップトップコンピュータも含んでもよい。クライアントコンピューティングデバイス２０５，２１０，２１５は、たとえばＧｏｏｇｌｅ  Ｃｈｒｏｍｅ  ＯＳなどのさまざまなＧＮＵ／ＬｉｎｕｘＯＳを限定を伴うことなく含む、さまざまな市場で入手可能なＵＮＩＸ（登録商標）またはＵＮＩＸのようなＯＳのいずれかを実行するワークステーションコンピュータであり得る。代替的に、または加えて、クライアントコンピューティングデバイス２０５，２１０，２１５は、１つ以上のネットワークを介して通信することができる、シンクライアントコンピュータ、インターネットにより可能化されるゲームシステム（たとえば、Ｋｉｎｅｃｔ（登録商標）ジェスチャ入力デバイスを伴うかまたは伴わないＭｉｃｒｏｓｏｆｔ  Ｘｂｏｘゲームコンソール）および／または個人メッセージ伝達デバイスなどの任意の他の電子デバイスであってもよい。
【００９９】
ＰＲＳサーバ２３５は、１つ以上のコンピュータおよび／またはサーバを含んでもよい。これらのコンピュータシステムまたはサーバは、１つ以上の汎用コンピュータ、専用のサーバコンピュータ（一例としてパーソナルコンピュータ（ＰＣ）サーバ、ＵＮＩＸ（登録商標）サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む）、サーバファーム、サーバクラスタ、またはその他の適切な構成および／もしくは組み合わせで構成されてもよい。ＰＲＳサーバ２３５に関連付けられた１つ以上のコンピュータシステムまたはサーバは、上述のいずれかを含むＯＳ、および市販されている任意の利用可能なサーバＯＳを実行することができる。ＰＲＳサーバ２３５に関連付けられた１つ以上のコンピュータシステムまたはサーバは、ハイパーテキストトランスポートプロトコル（「ＨＴＴＰ」）サーバ、ファイル転送プロトコル（「ＦＴＰ」）サーバ、共通ゲートウェイインターフェイス（「ＣＧＩ」）サーバ、ＪＡＶＡ（登録商標）サーバ、データベースサーバ、電子メールサーバ、逆プロキシなどを含む、さまざまな追加のサーバアプリケーションおよび／または中間層アプリケーションのうちの任意のものも実行することができる。
【０１００】
特定の実施形態では、ＰＲＳサーバ２３５によって提供されるサービスは、データプライバシー、レジデンシー、およびセキュリティなどの、サービスのホストを含むことができる。ＰＲＳサーバ２３５は、アプリケーション特有のアダプタを使用してクラウドアプリケーション特有の要件をサポートするようにグラフィカルにインストールおよび構成することができる。いくつかの例では、ＰＲＳサーバ２３５は、たとえば、暗号化またはトークン化を使用して、エンタープライズインフラストラクチャシステム２２５を離れるデータを保護することによって、データプライバシーを提供することができる。ＰＲＳサーバ２３５は、クライアントコンピューティングデバイス２０５，２１０，２１５とクラウドベースのアプリケーション２４５との間のデータ伝送をシームレスに傍受して、機密データを置換データ、たとえばトークンまたは暗号化されたデータで置き換えることができる。組織によって定義されるように、エンタープライズインフラストラクチャシステム２２５を離れることができない、または離れるべきではない機密データは、プライベートデータベース２４０、たとえばＰＲＳシステム２３０のファイアウォールの後ろに残り、クライアントコンピューティングデバイス２０５，２１０、および２１５のユーザは、機密データがどこにあるかに関係なく、クラウドベースのアプリケーション２４５の実質的にすべての機能を経験する。ＰＲＳサーバ２３５は、「オンザフライ暗号化」を実行することができ、機密データをローカルに保存および管理するかわりに、暗号化またはトークン化してクラウドベースのアプリケーション２４５に送信し、帰路で復号するかまたは機密データと置換する。クラウドベースのアプリケーション２４５によって受信され、場合によってはクラウドデータベース２５０自体に格納された機密データは、ＰＲＳシステム２３０なしで直接アクセスされる場合、値またはトークンの暗号化されたリストとしてしか現れない。
【０１０１】
ＰＲＳサーバ２３５は、特定の条件を満たすデータ、たとえば機密データがエンタープライズインフラストラクチャシステム２２５を離れるのを防止することによって、データレジデンシーを提供することができる。ＰＲＳサーバ２３５は、データ伝送から、条件を満たす特定のデータ片を識別し、その特定のデータ片をプライベートデータベース２４０に保存し、識別された特定のデータ片の実際の値に対する置換値（たとえば、暗号化値またはトークン）を生成し、生成された置換値をクラウドベースのアプリケーション２４５に送ることができる。識別された特定のデータ片に対する実際の値は、常に、地方の法令によって管理され企業ポリシーの下で動作し得るプライベートデータベース２４０において、ローカルにあるままである。したがって、クラウドベースのアプリケーション２４５は置換データで動作し、それはクラウドデータベース２５０に格納することができる。ＰＲＳサーバ２３５は、カテゴリを、トークン、ソート可能なトークン、暗号化された値、およびクリアテキストとして用いるなど、クラウドアプリケーションデータを分類することができる。いくつかの実施形態では、本明細書で詳細に説明する難読化戦略を使用して、フィールドごとにデータを保護することができる。
【０１０２】
ＰＲＳサーバ２３５は、プライベートデータベース２４０に格納されたデータへのアクセスを管理することによって、データプライバシー、レジデンシー、およびセキュリティを提供することができる。ＰＲＳサーバ２３５は、クラウドベースのアプリケーション２４５への許可されたアクセスのみが組織から生じることを保証することができる。ＰＲＳサーバ２３５は、エンタープライズインフラストラクチャシステム２２５とクラウドインフラストラクチャシステム２２０との間の安全な認証リンクを作成することができる。一実施形態では、ＰＲＳサーバ２３５は、暗号化のアルゴリズムスキームを利用して、ネットワーク伝送で検出された平文情報を非読取可能暗号文に変換するように構成される。ＰＲＳサーバ２３５は、ＰＲＳサーバ２３５がネットワーク伝送内でデータを暗号化および復号することを可能にするキー管理を提供することができる。キー管理には、暗号キーが関連付けられる機密データを保護するために必要に応じて暗号キーを生成、配布、保存、回転、無効／破棄する能力が含まれ得る。他の実施形態では、ＰＲＳサーバ２３５は、機密データの保護のためにトークン化を利用するように構成される。ＰＲＳサーバ２３５は、実際の値の代わりとしてトークン（またはエイリアス）によるデータ置換を使用することができる。トークン化のプロセスにおいて、ＰＲＳサーバ２３５は、機密データを傍受し、そのデータをプライベートデータベース２３５に送信し、そこでそのデータは安全に格納される。同時に、ＰＲＳサーバ２３５は、ランダムな一意の文字セット（トークン）を生成し、そのトークンを実際のデータの代わりに使用するために返すことができる。ＰＲＳサーバ２３５（またはプライベートデータベース２４０）は、再び必要になったときにトークン値を実際のデータと交換できるようにする参照データベースを維持することができる。
【０１０３】
したがって、ＰＲＳサーバ２３５は、覗き見に対して何の意味をもたない暗号化された値またはトークン値が、クラウドベースのアプリケーション２４５となど、さまざまなクラウドベースのアプリケーションで、実際のデータに対する信頼できる置換物として使用されることを可能にする。クラウドベースのアプリケーション２４５は、図１に関して説明したように、ＡＤＦ１２４を使用して開発された１つ以上のエンタープライズアプリケーションを表すことができる。エンタープライズアプリケーションはクラウドインフラストラクチャシステム２２０のコンテキスト内で実行することができる。クラウドベースのアプリケーション２４５は、１）クラウドデータベース２５０との対話を処理し、ビジネスロジックを実行するモデル層と、２）クライアントデバイス２０５、２１０、および２１５の１つ以上に配信されるアプリケーションＵＩを処理するビュー層と、３）アプリケーションフローを管理し、モデル層とビュー層との間のインターフェイスとして機能するコントローラとに分離されるＭＶＣアプリケーションを含むことができる。
【０１０４】
１つの態様では、ビュー層は、展開中のアプリケーションのＵＩを表す。ビュー層には、デスククトップ、モバイル、およびブラウザベースのビューが含まれ得、それらの各々はＵＩのすべてまたは一部を提供し、ビューの種類に応じてさまざまな態様でアクセス可能である。たとえば、クライアントデバイス２０５，２１０、および２１５のうちの１つ以上から対応するＵＲＬを含むクライアント要求を受信することに応答して、ウェブページがクラウドベースのアプリケーション２４５によって送信されてもよい。次いで、ウェブページは、クライアントデバイス２０５，２１０、および２１５のうちの１つ以上に関連付けられるディスプレイユニット（図示せず）上でブラウザによって表示され得、それにより、１つ以上のクライアントデバイス２０５，２１０、および２１５のユーザはクラウドベースのアプリケーション２４５と対話することができる。ビュー層を形成するコードファイル／モジュール（ウェブページなど）は、ハイパーテキストマークアップ言語（「ＨＴＭＬ」）、Ｊａｖａサーバページ（「ＪＳＰ」）、およびＪＳＦのうちの１つ以上を用いて実現されてもよい。代替的に、ＵＩは、Ｓｗｉｎｇおよび／またはＸＭＬのようなＪａｖａコンポーネントを使用して実現されてもよい。さらに、ＵＩは、MicrosoftによるＷｏｒｄおよびＥｘｃｅｌなどのデスクトップアプリケーションに対するユーザの経験および精通を利用することができる。
【０１０５】
上記のように、ＰＲＳサーバ２３５は、ネットワークトラフィックを監視（たとえば傍受）し、プライバシー、レジデンシー、およびセキュリティポリシーを実施することができる。１つ以上のクライアントデバイス２０５，２１０、および２１５とクラウドベースのアプリケーション２４５との間の通信に関して、ＰＲＳサーバ２３５は、１つ以上のクライアントデバイス２０５，２１０、および２１５から発信された送信を傍受して、プライバシー、レジデンシー、およびセキュリティポリシーを実施できる。図示の例では、１つ以上のクライアントデバイス２０５，２１０、および２１５は、以下の情報片：ADDRESS = "123 MAIN"およびCONTACT = JOHN" を含むネットワーク伝送をクラウドインフラストラクチャシステム２２０に送信することができる。ＰＲＳサーバ２３５は、ネットワーク伝送を傍受し、その内容を検査して、情報片のいずれかがプライバシー、レジデンシー、およびセキュリティポリシーの対象であるかどうかを判断することができる。たとえば、ＰＲＳサーバ２３５は、「CONTACT（連絡先）」情報片はプライバシー、レジデンシー、およびセキュリティポリシーの対象である機密データであり、クラウドインフラストラクチャシステム２２０に送信すべきではないと判断することができる。ＰＲＳサーバ２３５は、「CONTACT」情報片が機密データまたはプライベートデータとして指定される状態で、情報を以下のように暗号化またはトークン化するよう、ネットワーク伝送を修正し得る：ADDRESS = "123 MAIN" [Public Data]およびCONTACT = "JIDL45" [Private Data]。ＰＲＳサーバ２３５は暗号キーおよび/または元のデータをトークンマップとともにプライベートデータベース２４０に保存できる。 ＰＲＳサーバ２３５は、次いで、修正されたネットワーク伝送を置換値（たとえば暗号化値またはトークン）とともにクラウドベースのアプリケーション２４５に転送することができる。
【０１０６】
１つ以上のクライアントデバイス２０５，２１０、および２１５とクラウドベースのアプリケーション２４５との間の通信に関して、ＰＲＳサーバ２３５は、逆のプロセスで１つ以上のクライアントデバイス２０５，２１０、および２１５に向けられた送信を傍受して、プライバシー、レジデンシー、およびセキュリティポリシーを実施することができる。図示された例では、ＰＲＳサーバ２３５は、「CONTACT」情報片が暗号化またはトークン化されていると判断でき、ＰＲＳサーバ２２０は、暗号キーおよび／または元のデータを、プライベートデータベース２４０から取得されたトークンマップと共に使用して、情報を復号または非トークン化するよう、ネットワーク伝送を修正できる。次いで、ＰＲＳサーバ２３５は、修正されたネットワーク伝送を１つ以上のクライアントデバイス２０５，２１０、および２１５に転送することができる。
【０１０７】
図３Ａは、エンタープライズインフラストラクチャシステム２２５内から１つ以上のクライアントデバイス２０５，２１０，２１５を使用して見た場合のクラウドベースのアプリケーション２４５に関連付けられたＵＩ３００の図である。図示されているように、「連絡先」ページ３０５は、１つ以上の連絡先カード３１０と共に表示される。各連絡先３１５の名称は、写真およびアドレスを含む他のデータフィールドなどの他のＵＩ要素と共に見ることができる。ＰＲＳサーバ２３５の管理者は、本明細書で詳細に説明するように、ＵＩページ３００の名称フィールドを、保護されたデータとして指定することができる。図３Ｂは、クラウドインフラストラクチャシステム２２０の内部から見たときのクラウドベースのアプリケーション２４５またはエンタープライズインフラストラクチャシステム２２５の外の場所からクラウドベースのアプリケーション２４５にアクセスするためにコンピューティングデバイスを使用した場合の、クラウドベースのアプリケーション２４５に関連付けられるＵＩ３００’の図である。図示のように、「連絡先」ページ３０５’は同じ連絡先カード３１０’とともに表示されるが、各連絡先３１５’の名称はトークン化されたデータで暗号化または置換され、一方、写真およびアドレスを含むその他のデータフィールドのような他のＵＩ要素は実際の値のままである。
【０１０８】
ＩＶ．自己記述設定
いくつかの実施形態では、クラウドベースのアプリケーション２４５に関連付けられたモデル層は、さまざまなビジネスサービスを、上述のコントローラオブジェクトなど、他の層でそれらを使用するオブジェクトに接続するか、またはデスクトップアプリケーションに直接接続するデータ／コードモジュールを含む。モデル層の各抽象データオブジェクトは、基底のビジネスサービス層で実行されるあらゆるタイプのビジネスサービスにアクセスするために使用できる対応するインターフェイスを提供する。データオブジェクトは、クライアントからのサービスのビジネスサービス実施詳細を抽象化し、および／またはデータ制御メソッド／属性をビューコンポーネントに公開して、ビュー層およびデータ層の分離を与える。
【０１０９】
１つの態様では、モデル層は、２つのコンポーネント、つまりデータコントロールおよびデータバインディングからなり、ＵＩを定義するためにメタデータファイルを利用する。データコントロールは、クライアントからのビジネスサービス実施詳細を抽象化する。データバインディングは、データコントロールメソッドおよび属性をＵＩコンポーネントに公開し、ビューおよびモデルを明確に分離する。データベースオブジェクトをモデル化することによって、クラウドデータベース２５０をクラウドアプリケーション２５０との使用のために作成することができる。データベーステーブルから、エンティティオブジェクトを、ウィザードまたはダイアログを使用して作成することができる。これらのエンティティオブジェクトから、ビューオブジェクトが作成され、アプリケーションにおいてページにより使用される。検証ルールおよび他のタイプのビジネスロジックを実装することができる。
【０１１０】
エンティティオブジェクトは、データベーステーブル内の対応する行を表し、対応する行に格納されたデータの操作（更新、削除など）を簡略化する。エンティティオブジェクトは、しばしば、対応する行に対するビジネスロジックをカプセル化して、所望のビジネスルールが一貫して実施されることを保証する。エンティティオブジェクトは、基底のデータベースに格納されている行間に存在する関係を反映するために、他のエンティティオブジェクトと関連付けることもできる。
【０１１１】
したがって、エンティティオブジェクトは、クラウドデータベース２５０内の行を表し、その関連付けられる属性の修正を簡略化するＡＤＦビジネスコンポーネントとすることができる。エンティティオブジェクトは、クラウドデータベース２５０においてクラウドデータベース２５０の行を表すデータベーステーブルを指定することによって定義することができる。次に、エンティティオブジェクト間の関係を反映するように関連付けを作成することができる。実行時に、エンティティ行は関連するエンティティ定義オブジェクトによって管理され、各エンティティ行は関連する行キーによって識別される。エンティティ行は、データベーストランザクションをクラウドデータベース２５０に提供するクラウドベースのアプリケーション２４５に関連付けられるアプリケーションモジュールのコンテキストで取得および修正される。
【０１１２】
図４は、本発明による一実施形態におけるエンティティ間で共有される属性を示すブロック図である。図４は、アカウントオブジェクト４０５、連絡先オブジェクト４１０、連絡先オブジェクト４１５、および従業員オブジェクト４２０などのエンティティオブジェクトを示す。図４はさらに、エンティティ間で共有されるさまざまな属性４４０，４４５、および４５０を各々が含むデータベーステーブル、たとえばアドレステーブル４２５、電話／電子メールテーブル４３０、および人物テーブル４３５を示す。図示されているように、アカウントオブジェクト４０５および連絡先オブジェクト４１０のアドレス属性４４０は、同じデータベーステーブル、たとえばアドレステーブル４２５に格納することができる。各行は関連する行キーによって識別され、その行がアカウントオブジェクト４０５および／または連絡先オブジェクト４１０のアドレス属性４４０に対する値を保持するかどうかを特定することができる。同様に、アカウントオブジェクト４０５および連絡先オブジェクト４１０の電話／電子メール属性４４５は、同じデータベーステーブル、たとえば電話／電子メールテーブル４３０に格納することができる。さらに図示するように、連絡先オブジェクト４１５および従業員オブジェクト４２０は、人物テーブル４３５に格納された属性４５０を有する人物オブジェクトのサブタイプであり得る。各行は行キーによって識別され、その行が保持する人物の種類、たとえば連絡先人物か従業員かどうかを特定することができる。
【０１１３】
ＰＲＳサーバの一般的なアプローチは、ワイヤトラフィックを盗聴または監視し、保護されたフィールド上でデータの暗号化またはトークン化を行うことであるため、この機能を、図４に示すようなさまざまなエンティティオブジェクトを共有するコンポーネントを利用するクラウドベースのアプリケーションと統合することは難しい。従来は、ユーザは、ユーザが保護したいと望む機密フィールドをマーキングするよう、各クラウドベースのアプリケーションの各ＵＩページを設定しなければならなかったかもしれない。たとえば、ユーザは、連絡先オブジェクト４１５のためのＵＩページと、従業員オブジェクト４２０のためのＵＩページとを、それらが同じ基底のデータベーステーブルまたは属性を共有していても、設定する必要があり得る。これは、大規模で複雑なアプリケーションでは非常に困難になる。正規表現を使用して管理者の作業量を削減しても、ユーザは考えられ得るすべてのＵＩページを通過して、各ＵＩページを１つずつ設定しなければならないかもしれない。さらに、クラウドベースのアプリケーションでは、コンポーネントが共有され再利用され得るため、フィールドの同じ識別子が、複数のＵＩ上で、たとえそれらがフィールドの実際の「意味」を必ずしも反映していなくても、使用され得る。正規表現の使用は非常に苦痛であるだけでなく、機密性の高いデータのリークまたは非機密データを保護することにおける不必要なパフォーマンスオーバーヘッドの可能性につながる。
【０１１４】
これらの問題を克服するために、いくつかの実施形態では、クラウドインフラストラクチャシステム２２０は、ＰＲＳサーバ２３５に関してクラウドベースのアプリケーション２４５のエンティティオブジェクト、ＵＩページなどの設定を自己記述するための１つ以上のサービスを提供することができる。クラウドインフラストラクチャシステム２２０は、（たとえば、エンタープライズインフラストラクチャシステム２２５に関連付けられる組織の要求に応じて）ＰＲＳサーバ２３５の管理者がクラウドベースのアプリケーション２４５のデータまたはコンポーネントレベルで機密データを識別できるようにするＡＰＩを提供することができる。たとえば、管理者は、社会保障番号属性４５０を含む連絡先オブジェクトおよび従業員オブジェクト４１５，４２０のいずれかおよびすべての、それらのデータの保護が、機密データがエンタープライズインフラストラクチャシステム２２５の外部においてどこで使用されるかに関係なく、行なわれるように、データレベルでエンティティオブジェクトの社会保障番号属性４５０をマーキングすることができる。別の例では、管理者は、特定のタイプのエンティティオブジェクト（たとえば従業員オブジェクト４２０）のみの名称属性４５０をコンポーネントレベルでマーキングして、所与のコンポーネントによって使用される、名称属性４５０を含むエンティティオブジェクトのみが、エンタープライズインフラストラクチャシステム２２５の外部でその所与のコンポーネントによって使用されるときに保護されるようにすることができる。クラウドインフラストラクチャシステム２２０は、次いで、ＰＲＳサーバ２３５によって認識されたＵＩ要素とマーキングされたフィールドとの間でマップを動的に生成することができる。このようにして、クラウドインフラストラクチャシステム２２０は、共有コンポーネントを、それがどこで使用され、どの値が識別子に関連付けられても、保護されることができる。これにより、複数のエントリがＰＲＳサーバ２３５によって維持される必要性が低減される。
【０１１５】
ＰＲＳサーバ２３５を使用して機密データオブジェクトが識別されると、一実施形態では、管理者は（１）ヒントをコンポーネントの基底のデータ層に追加し、（２）protectionKey（保護キー）属性をそのコンポーネントに追加することができる。クラウドベースのアプリケーション２４５が、保護されたエンティティオブジェクトを使用してＵＩページを生成するとき、保護されたコンポーネントを含む任意のデータが、ネットワーク伝送のペイロードにおいて、識別子とＰＲＳサーバ２３５によって認識可能なフィールドとの間のマップと共に送信されて、必要なデータ暗号化／トークン化を行なう。したがって、コンポーネントを構成するとき、protectionKeyという名称の新しい属性を、コンポーネントの値を保護する必要があるかどうかを制御するEditableValue（編集可能値）コンポーネントに、追加できる。属性の値は、ＰＲＳサーバ２３５が認識するコンポーネントの名称であってもよい。クラウドベースのアプリケーション２４５のデータバインディング層にロジックを追加して、ＰＲＳサーバ２３５によって認識される値を含む保護ヒントを抽出することができる。protectionKeyがコンポーネントレベルに存在しない場合、クラウドベースのアプリケーション２４５は、protectionKey属性をデータバインディング層から取り出すことができる。クラウドベースのアプリケーション２４５に送信される要求の場合、保護されたデータが含まれる場合、protectionKeyマップに対するビルドＩＤをネットワーク伝送のペイロードに入れることができる。したがって、コンポーネントクライアント識別子を、ＰＲＳサーバ２３５によって認識可能なオブジェクト／フィールドに直接マッピングする代わりに、静的設定に基づいてオンザフライでマップを生成することができる。
【０１１６】
図５は、いくつかの実施形態におけるＰＲＳサーバ２３５の自己記述設定を提供するメッセージシーケンスチャートを示す。ブロック５０２において、クラウドインフラストラクチャシステム２２０は、ＰＲＳサーバ２３５が設定にアクセスすることができるクラウドベースのアプリケーション２４５によって使用されるデータモデルにＡＰＩを提供する。ＡＰＩを提供することは、アプリケーションまたはデザイナーが要求（通常、ＨＴＴＰ要求、ＳＯＡＰ要求、ＸＭＬメッセージなど）でヒットすることができるサーバ側エンドポイントを提供することを含むことができる。サーバ側エンドポイントは、充分に定義されたＵＲＬスキーム（たとえば、www.enterpirse.com/contacts）を有するＨＴＴＰエンドポイントを使用して実現することができる。ブロック５０４において、ＰＲＳサーバ２３５は、提供されたＡＰＩを使用して、クラウドインフラストラクチャシステム２２０にデータモデルの設定データを要求する。設定データは、データモデルを使用してモデル化されたエンティティの保護可能な属性／コンポーネントのセット（たとえば、プライバシー、レジデンシー、およびセキュリティポリシーの対象となるように設定できる属性／コンポーネントに関する情報）を含むことができる。要求５０６は、ＨＴＴＰ要求、ＳＯＡＰ要求、ＸＭＬメッセージなどを含むことができる。ブロック５０８において、クラウドインフラストラクチャシステム２２０は、データモデルを使用してモデル化されたエンティティの保護可能な属性／コンポーネントのセットを含む設定データを提供する。いくつかの実施形態では、設定データは、保護可能な属性のセット内の各属性に適用され得る保護のタイプ（たとえば、トークン化可能または暗号化可能）をさらに含む。
【０１１７】
一実施形態では、クラウドインフラストラクチャシステム２２０は、クラウドベースのアプリケーション２４５によって使用される保護可能な属性／コンポーネントのリストを維持する。クラウドインフラストラクチャシステム２２０は、さらに、保護可能な属性／コンポーネントのリストと共に、保護されたフィールドについてのタイプ情報などのヒントを、ＰＲＳサーバ２２０に送ることができる。ヒントは、保護可能なデータのパラメータに関する情報を提供することができる。クラウドインフラストラクチャシステム２２０は、以下のフォーマットを有する応答５１０を返す。
【０１１８】
【数１】
2019501437.tif 000003
【０１１９】
ブロック５１２において、ＰＲＳサーバ２３５は、クラウドインフラストラクチャシステム２２０から受信した保護可能な属性／コンポーネントに関する情報を使用してユーザインターフェイスを生成する。ユーザインターフェイスは、ＰＲＳサーバ２３５の管理者が、モデル化されるエンティティの１つ以上の保護可能な属性／コンポーネントを、保護された属性／コンポーネントとして設定することを可能にする。ブロック５１４において、ＰＲＳサーバ２３５の管理者は、（たとえば、エンタープライズインフラストラクチャシステム２２５に関連付けられる組織の要求で、）モデル化されるエンティティの１つ以上の保護可能な属性／コンポーネント、たとえばオブジェクト「emp」におけるフィールド「fname」を、ユーザインターフェイスにおいて、保護された属性／コンポーネントとしてマーキングされるように設定する。いくつかの実施形態では、属性／コンポーネントの保護されるとしてのマーキングは、属性／コンポーネントに適用される保護のタイプに関する指示（たとえばトークン化または暗号化）をさらに含むことができる。ブロック５１６において、ＰＲＳサーバ２３５は、ユーザインターフェイスで生成された保護される属性／コンポーネント情報をクラウドインフラストラクチャシステム２２０に送信することによって、クラウドインフラストラクチャシステム２２０に、保護された属性／コンポーネントを通知する。一実施形態では、ＰＲＳサーバ２２０は、以下のフォーマットを有するメッセージ５１８を送信する。
【０１２０】
【数２】
2019501437.tif 000004
【０１２１】
ブロック５２０において、クラウドインフラストラクチャシステム２２０は、指定されたコンポーネントまたはエンティティオブジェクト属性を保護されたものとしてマーキングする。ブロック５２２において、クラウドインフラストラクチャシステム２２０は、保護されたフィールドについての確認情報をＰＲＳサーバ２２０に送信することができる。インフラストラクチャシステム２１０は、以下のフォーマットを有する応答５２４を返すことができる。
【０１２２】
【数３】
2019501437.tif 000005
【０１２３】
図６は、本発明による一実施形態における自己記述設定を利用するためのメッセージシーケンスチャートを示す。ブロック６０２において、クライアントデバイス２０５，２１０、および２１５のうちの１つ以上は、クラウドインフラストラクチャシステム２２０にＵＩページまたはクライアントコンポーネントを要求する。要求６０４は、ＨＴＴＰ要求、ＳＯＡＰ要求、ＸＭＬメッセージなどを含むことができる。ブロック６０８において、クラウドインフラストラクチャシステム２２０は、各保護された属性について識別子を判断する。一実施形態では、クラウドベースのアプリケーション２４５に関連付けられたＵＩまたはコンポーネントランタイム（たとえば、Oracle ADF Faces rendering）は、各保護されたフィールドのトークン化識別子をデータモデルレベルに問い合わせる。ブロック６１０において、クラウドインフラストラクチャシステム２２０は、ＵＩまたはクライアントコンポーネントを生成し、保護されたフィールドにマーキングする。クラウドインフラストラクチャシステム２１０は、応答６１２において、生成されたＵＩまたはクライアントコンポーネントをマーキングされた保護されたフィールドとともに返すことができる。ブロック６１０で生成されたマーキングされた保護されたフィールドは、応答６１２のペイロードに含まれる。たとえば、保護されたフィールドにマーキングすることは以下のフォーマットを有してもよく：
【０１２４】
【数４】
2019501437.tif 000006
【０１２５】
生成されたＵＩまたはクライアントコンポーネントは、以下のフォーマットを有してもよく：
【０１２６】
【数５】
2019501437.tif 000007
【０１２７】
応答６１２の次のペイロードは、以下のフォーマットを有するマップ情報を含んでもよい：
【０１２８】
【数６】
2019501437.tif 000008
【０１２９】
ブロック６１４において、ＰＲＳサーバ２３５は、応答６１２を傍受し、応答６１２のペイロードに含まれるマップを使用して、プライベートデータベース２４０からの保護されたデータでＵＩまたはクライアントコンポーネントをポピュレートする。たとえば、ＰＲＳサーバ２３５は、マップを使用して、<field name=“fname” protect=“protect” tokenize=“tokenize"/> に使用されるランダムなトークン化された値を、同じ保護されたフィールド<field name=“fname” protect=“protect” tokenize=“tokenize"/>に対してプライベートデータベース２４０に格納された機密データ値で置換する。次いで、ＰＲＳサーバ２３５は、修正された応答６１６を１つ以上のクライアントデバイス２０５，２１０、および２１５に転送する。ブロック６１８において、１つ以上のクライアントデバイス２０５，２１０、および２１５は、プライベートデータベース２４０からの保護されたデータを保護されたフィールドに含む生成されたＵＩまたはクライアントコンポーネントを表示する。
【０１３０】
ブロック６２０において、１つ以上のクライアントデバイス２０，２１０、および２１５は、クラウドインフラストラクチャシステム２２０にデータをポストすることができる。ポストされたデータには、ＵＩまたはクライアントコンポーネント内の保護されたフィールドの機密データに対する変更または更新が含まれ得る。一実施形態では、クライアントランタイム（たとえば、ADF Facesクライアント）は、ＵＩまたはクライアントコンポーネントのトークン化情報を使用して、周知のフィールド（たとえばProtectionKey）を使用してマッピングをＰＲＳサーバ２３５にスプーンフィーディングする。たとえば、ＰＲＳサーバ２３５は、周知のフィールドを使用して、その設定をルックアップし、対応するアクション（たとえば、暗号化またはトークン化）を見つけることができる。ブロック６２２において、１つ以上のクライアントデバイス２０５，２１０、および２１５は、マッピングを要求６２４に挿入する（たとえば、oracle.adf.view.rich.TOKENIZED={'r1:0:foo:it1’:{‘object’:’emp', ‘field’:’fname'}}のようなID->protectionKey Mapを生成する）。１つ以上のクライアントデバイス２０５，２１０、および２１５は、ブロック６２２からのマッピングを含むように、以下のように要求６２４を生成することができる。
【０１３１】
【数７】
2019501437.tif 000009
【０１３２】
ブロック６２６において、ＰＲＳサーバ２３５は要求６２４を傍受し、マップ（たとえば、ID->protectionKey Map）を使用して、任意の保護されたデータを暗号化またはトークン化された値と置換し、保護されたデータをプライベートデータベース２２５に格納する。次いで、ＰＲＳ２３５は、修正された要求６２８をクラウドインフラストラクチャシステム２２０に転送する。
【０１３３】
したがって、ＰＲＳサーバ２３５の管理者は、機密データをデータモデル／コンポーネントレベルで識別し、それらを自己記述的な方法でマーキングすることができる。クラウドベースのアプリケーションに関連付けられる任意の生成されたＵＩ要素は、ＰＲＳサーバ２３５によって認識されるオブジェクト／フィールドトークンに動的にマッピングすることができる。このように、共有されるコンポーネントは、どこで使用され、どのｉｄ値を有していても、常に保護される。さらに、複数のエントリをＰＲＳサーバ２３５に追加する必要はない。
【０１３４】
Ｖ．保護されるデータ列および保護されないデータ列について同じテーブルを共有することをサポート
クラウドデータベース２５０は、機密データの暗号化バージョンまたはトークン化バージョンを含むことができる。上に示唆したように、エンティティオブジェクトは、同じ構造を共有し、同じデータベーステーブルを共有することができる。一部のエンティティオブジェクトを保護することができる一方で、他のエンティティオブジェクトは保護されない。従来は、異なる保護設定を提供するために異なるデータベーステーブルが必要であり、その結果、データベーステーブルが複製される。
【０１３５】
これらの問題を解決するために、いくつかの実施形態では、ＰＲＳサーバ２３５の管理者は、コンポーネントまたはデータオブジェクトの保護ルールをデータオブジェクト層において設定するとき、識別フラグを定義して、特定の行がどのコンポーネントまたはデータオブジェクトに属するかを識別することができる。したがって、同一の構造を共有するすべてのコンポーネントまたはデータオブジェクトは、異なる保護ルールを有しながらも、同じデータベーステーブルを共有できる。これにより、複数の同様のデータベーステーブルを維持する管理業務が簡素化されるが、セキュリティ上の懸念を生じることなく、構造的に類似したコンポーネントまたはデータオブジェクトで動作する共通ロジックを再利用することもできる。
【０１３６】
図７は、本発明の一実施形態による、クラウドベースのアプリケーション２４５に関して使用されるさまざまな層を示す図である。層７１０は、クラウドデータベース２５０に格納された、クラウドベースのアプリケーション２４５によって使用されるデータテーブルを表す。図示されたデータベーステーブルは、コンポーネントまたはデータオブジェクトのための識別フラグとして指定された少なくとも１つの列、たとえばエンティティ識別子属性「ＴＹＰＥ」を含む。図示されたデータベーステーブルは、クラウドベースのアプリケーション２４５によって使用される複数のコンポーネントまたはデータオブジェクト間で共有される属性のスーパーセットをサポートするように設定することができる。識別フラグを使用して、従業員オブジェクトおよび連絡先オブジェクトなど、特定の行が属するコンポーネントまたはデータオブジェクトを識別することができる。理解されるように、複数のコンポーネントまたはデータオブジェクトは、トークン化、暗号化、または保護されていないなど、異なる保護ルールを有する一方、同じデータベーステーブルを共有することができる。
【０１３７】
セキュリティ設定（すなわち、コンポーネントまたはデータオブジェクトの保護ルール）は、データベーステーブルより上の層、たとえば、データモデル層７２０に配置することができる。ＴＹＰＥなどの各データモデルの属性は明示的に定義または暗示することができる。識別フラグがデータオブジェクトに組み込まれているので、データオブジェクトに属する行のみが、たとえば、さまざまなＵＩコンポーネントにバインドされているなど、データオブジェクトがクラウドベースのアプリケーション２４５で使用されるときにピックアップされるはずである。たとえば、「Ｅｍｐ」オブジェクトでは、「Ａ」属性は保護されているため、それは、データモデル層に、protectionState（保護状態）とprotecionKey（保護キー）という２つのヒントを有する。これらは「連絡先」オブジェクトにおける「Ａ」属性には存在しない。さらに、「連絡先」オブジェクトでは、「Ｂ」属性が保護されているため、それは、データモデル層に、protectionStateおよびprotecionKeyという２つのヒントを有する。これらは「Ｅｍｐ」オブジェクトの「Ｂ」属性には存在しない。したがって、データ保護はデータオブジェクトレベルで設定されるため、データオブジェクトに属する行のみが暗号化／トークン化の対象となる。
【０１３８】
データオブジェクトは、ＵＩ層７３０内の１つ以上のＵＩコンポーネントにバインドすることができる。通常、データオブジェクトは、データオブジェクトの１つ以上の属性をレンダリングするためにＵＩコンポーネントにバインドされる。たとえば、データモデル層７２０からのデータオブジェクトは、<af:inputText id="FIELD1" value="# {EMPbinding.A.inputValue}"/>などの標準表現言語を介してＵＩ層７３０に公開されてもよい。ドキュメントオブジェクトモデル層７４０において、レンダリングされたＵＩコンポーネントは、特定のドキュメントオブジェクトモデル（ＤＯＭ）要素が保護されたフィールドであることを示す識別子を含むことができる。上述のように、識別子は、ＰＲＳサーバ２３５によって生成されたトークン識別子を含むことができる。
【０１３９】
図８は、本発明による一実施形態における、保護されたデータ列および保護されていないデータ列に対する同一のテーブルの共有をサポートするための方法８００のフローチャートである。図８に示す方法８００の実現または方法８００における処理は、たとえば、コンピュータシステムもしくは情報処理装置などの論理機械の中央処理装置（ＣＰＵもしくはプロセッサ）によって実行される際にソフトウェア（たとえば、命令もしくはコードモジュール）によって、電子装置もしくはアプリケーション特化集積回路のハードウェアコンポーネントによって、またはソフトウェア要素とハードウェア要素との組み合わせによって、実行されてもよい。図８に示す方法８００は、ステップ８１０から始まる。
【０１４０】
ステップ８１０において、複数のデータオブジェクトをサポートするデータベーステーブル定義が受信される。データベーステーブルは、複数のデータオブジェクトをサポートするように定義することができる。たとえば、人物テーブルは、複数のデータオブジェクトの間で共有される属性のスーパーセットに対応する列を含むことができる。ステップ８２０では、少なくとも１つの列がデータオブジェクトについての識別フラグとして指定される。いくつかの実施形態では、データベーステーブルの所定の列を使用することができ、または識別フラグのために新しい列を作成することができる。
【０１４１】
ステップ８３０では、データベーステーブルによってサポートされるデータオブジェクトの少なくとも属性が、保護されたフィールドとして指定される。自己記述設定を提供することに関して上述したように、ＰＲＳサーバ２３５の管理者は、クラウドベースのアプリケーション２４５によって使用されるデータオブジェクトのリストを要求することができる。管理者は、セキュリティポリシーの対象となるデータオブジェクト（および／またはそれらの個々の属性）を選択し、その情報をクラウドベースのアプリケーション２４５に送信することができる。クラウドベースのアプリケーション２４５は、次いで、保護される必要がある任意のデータベーステーブル、データモデル、およびコンポーネントを設定できる。
【０１４２】
ステップ８４０では、データが、データベーステーブルに、保護されたデータと保護されていないデータとを混合して格納される。したがって、ＰＲＳサーバ２３５の管理者が、データオブジェクト層においてコンポーネントまたはデータオブジェクトの保護ルールを設定するとき、特定の行がどのコンポーネントまたはデータオブジェクトに属するかを識別するために識別フラグを定義することができる。したがって、同じ構造を共有しているすべてのコンポーネントまたはデータオブジェクトが、異なる保護ルールを有しながらも、同じデータベーステーブルを共有できる。これにより、複数の同様のデータベーステーブルを維持する管理作業が簡素化されるが、また、構造的に類似したコンポーネントまたはデータオブジェクトで動作する共通ロジックの再利用がセキュリティ上の懸念なしに可能になる。
【０１４３】
ＶＩ．保護されたフィールドにおける自動動作検出
異なるデータオブジェクトは異なる保護フィールドを有することができるので、クラウドベースのアプリケーション２４５によって実行される特定の動作は、それが保護されたフィールドに対して実行される場合、無効になり得る。いくつかの実施形態では、クラウドベースのアプリケーション２４５は、ユーザの混乱を避けるためにサポートされない可能性のある動作を自動的に判断することができる。たとえば、クラウドベースのアプリケーション２４５は、保護されたデータ上のすべての可能な演算子を検査し、それらの有効化／無効化に関するインテリジェントな決定を行うことができる。これにより、保護されたデータに対して実行される特定の操作で誤った結果を生成するのを避けるために必要な作業量を大幅に削減できる。自己記述設定はこの場合有用であり、なぜならば、特定のフィールドの保護状態が変更された場合、クラウドベースのアプリケーション２４５は変更を認識し、任意の関連する演算子を自動的に有効／無効にできるからである。有効／無効にできる操作の例としては、保護されたデータに対するサーバ側の検証、保護されたデータに対する自動提案の挙動、保護されたデータに対する検索に対する完全一致の許可、保護されたデータに対する並べ替えなどがある。
【０１４４】
図９は、本発明による一実施形態における保護されたフィールドについての自動動作検出のための方法９００のフローチャートである。図９に示す方法９００の実現または方法９００における処理は、たとえば、コンピュータシステムもしくは情報処理装置などの論理機械の中央処理装置（ＣＰＵもしくはプロセッサ）によって実行される際にソフトウェア（たとえば、命令もしくはコードモジュール）によって、電子装置もしくはアプリケーション特化集積回路のハードウェアコンポーネントによって、またはソフトウェア要素とハードウェア要素との組み合わせによって、実行されてもよい。図９に示す方法９００は、ステップ９１０から始まる。
【０１４５】
ステップ９１０で、データモデル層設定がデータモデル層で生成され、ＰＲＳサーバ２３５で受信される。たとえば、ＰＲＳサーバ２３５は、クラウドインフラストラクチャシステム２２０のＡＰＩを利用して、セキュリティポリシーの対象となるデータモデル属性を取得することができる。データモデル層設定は、次のフォーマットを有してもよい：
【０１４６】
【数８】
2019501437.tif 000010
【０１４７】
ステップ９２０において、１つ以上の保護されたフィールドが判断される。自己記述設定を提供することに関して上述したように、ＰＲＳサーバ２３５の管理者は、クラウドベースのアプリケーション２４５によって使用されるデータオブジェクトのリストを要求することができる。管理者は、セキュリティポリシーの対象となるデータオブジェクト（および／またはそれらの個々の属性）を選択し、その情報をクラウドベースのアプリケーション２４５に送信することができる。クラウドベースのアプリケーション２４５は、どのフィールドが保護されているかを判断することができる。
【０１４８】
ステップ９３０では、保護されたフィールドを使用して実行可能な動作が判断される。これには、保護されたフィールドが検索可能であるか、オートコンプリートで使用されるかどうかを判断することなどを含むことができる。ステップ９４０において、クラウドベースのアプリケーション２４５は、保護されたフィールドで実行できる、判断された動作に基づいて、設定される。一実施形態では、クラウドベースのアプリケーション２４５は、保護されたデータ上でバリデータを処理する際に、必要なチェックを処理するだけであり、他のバリデータをスキップするよう、設定することができる。クラウドベースのアプリケーション２４５は、保護されたデータに対する自動提案動作を制御するロジックを追加するように構成することができる。クラウドベースのアプリケーション２４５は、クエリページをレンダリングするときに、完全一致検索演算子のみを許可するように、設定することができる。クラウドベースのアプリケーション２４５は、テーブルをレンダリングするときに、保護されたデータオブジェクトから列上でソートすることを無効にするように、設定できる。
【０１４９】
ＶＩＩ．統合検索
クラウドベースのアプリケーション２４５によって実行可能であり、保護されたフィールドに対して行なわれた場合に無効になり得る１つの動作は、検索である。特定のフィールドが保護されている場合、検索は困難になる。従来的には、検索機能が完全一致のみをサポートするよう妥協されるか、またはＰＲＳサーバ２３５が、データ複製設定がクラウドデータベース２５０とプライベートデータベース２４０との間にある状態で、検索可能なすべての行の完全なコピーを有さなければならないかのいずれかである。次いで、ＰＲＳサーバ２３５は、機密データ上で検索することと、ロジックをレンダリングして最終結果をレンダリングすることとの両方を実行する必要がある。
【０１５０】
いくつかの実施形態では、１つ以上のクライアントデバイス２０５，２１０、および２１５は、プライベートデータベース２４０およびクラウドデータベース２５０の検索から生成された検索結果を統合または集中させることができる。クラウドベースのアプリケーション２４５に関連付けられるページのレンダリングは、非常に複雑になり得る。たとえば、ＰＲＳサーバ２３５がクラウドベースのアプリケーション２４５をレンダリングしなければならない場合、ユーザがクラウドベースのアプリケーション２４５をＰＲＳサーバ２３５と統合することは、莫大な作業であり得る。クライアント側統合検索を使用することにより、統合作業の量が低減され得、クラウドベースのアプリケーション２４５は最終結果ページを完全にレンダリングすることができるので、すべてのページが同じルックアンドフィールを有し、一貫性がある。したがって、統合検索では、保護されたフィールドおよび保護されていないフィールド上での検索がエンドユーザに対して透過的に行われる。さらに、機密データに対する検索可能性の妥協がない。
【０１５１】
さまざまな実施形態において、１つ以上のクライアントデバイス２０５，２１０、および２１５は、元の検索を２つの検索に分割する。１つ以上のクライアントデバイス２０５，２１０、および２１５は、図６のブロック６１０のように、マーキングされた保護されたフィールドマップに基づいて元の検索を分割し、なぜならば、１つ以上のクライアントデバイス２０５，２１０、および２１５の各々は、どのフィールドが保護されており、どのフィールドが保護されていないかを知っているからである。保護されたフィールドに対して、プライベートデータベース２４０を使用して第１の検索が実行され（たとえば、検索要求ペイロードは、ＰＲＳサーバ２３５が保護されたフィールドについてのみクライアント側検索を実行するための情報を有する）、保護されないフィールドを含む他のすべてのフィールドに対して、クラウドデータベース２５０を使用して第２の検索がおこなわれる（たとえば、ＰＲＳサーバ２３５は、次いで、クラウドベースのアプリケーション２４５が保護トークンを伴う新しい検索語を知るように、ペイロード情報を変更することができる）。保護されたフィールドに対する第１の検索は、ＰＲＳサーバ２３５を使用して実行され、結果セットは（元の検索に加えて）クラウドベースのアプリケーション２４５に渡される。クラウドベースのアプリケーション２４５は、第１および第２の検索から最終結果セットを組み立て、統合検索結果ページをレンダリングすることができる。
【０１５２】
たとえば、"Emp"オブジェクトの"firstName"属性が、protectKey EMP_OBJ/Ename_FLDで保護されてもよく、ユーザが検索"FirstName startwith 'B' （Ｂで始まる名）"を行なうとき、元の検索要求にはすべての必要な情報が含まれる。ＰＲＳサーバ２３５は、要求を傍受し、プライベートデータベース２４０でFirstNameを検索し、一致したすべてのFirstNamesのトークン化された値で要求のペイロードを更新し、その要求をクラウドベースのアプリケーション２４５に渡す。クラウドベースのアプリケーション２４５は、次いで、ＰＲＳサーバ２３５からのトークン化された値でクラウドデータベース２５０を検索し、最終結果データセットを生成し、それが最終ページレンダリングで使用される。レンダリングされたページは、１つ以上のクライアントデバイス２０５，２１０、および２１５に返送される。ＰＲＳサーバ２３５は、応答を傍受し、１つ以上のクライアントデバイス２０５，２１０、および２１５に送信する前に、トークン化された値を実際のテキストに変換する。ＰＲＳサーバ２３５からの保護されたフィールドの検索結果と、クラウドベースのアプリケーション２４５で直接行われた保護されていないフィールドの検索結果とは、最終的なデータセットで結合される。
【０１５３】
さまざまな実施形態では、ユーザが検索を開始するとき、検索基準のいずれかが、保護されたフィールド上にある場合、ＰＲＳサーバ２３５は、その検索をプライベートデータベース２４０に対して適用することができる。ＰＲＳサーバ２３５は、結果セットを、行キーによって識別された適格である行のセットとして生成することができる。次いで、行キーのセットは、クラウドベースのアプリケーション２４５に対する検索要求に送信される。クラウドベースのアプリケーション２４５が検索要求を処理するとき、適格である行キーのセットは、最終的な検索結果をフィルタリングするために使用される。たとえば、行キーは、検索基準に一致するトークン化または暗号化されたデータを識別するために使用され、トークン化または暗号化されたデータは、クラウドデータベース２５０内の保護されていないデータに対して検索基準を実行することによって得られる検索結果に追加される。最終検索結果がレンダリングされ、１つ以上のクライアントデバイス２０５，２１０、および２１５に返送されて、元の検索要求に対する応答として表示される。
【０１５４】
図１０は、本発明による一実施形態における統合検索のための方法１０００のフローチャートである。図１０に示す方法１０００の実現または方法１０００における処理は、たとえば、コンピュータシステムもしくは情報処理装置などの論理機械の中央処理装置（ＣＰＵもしくはプロセッサ）によって実行される際にソフトウェア（たとえば、命令もしくはコードモジュール）によって、電子装置もしくはアプリケーション特化集積回路のハードウェアコンポーネントによって、またはソフトウェア要素とハードウェア要素との組み合わせによって、実行されてもよい。図１０に示す方法１０００は、ステップ１０１０から始まる。
【０１５５】
ステップ１０１０で、クエリが受信される。たとえば、１つ以上のクライアントデバイス２０５，２１０、および２１５は、ユーザによって提供される情報からクエリを構築することができ、クラウドベースのアプリケーション２４５は、１つ以上のクライアントデバイス２０５，２１０、および２１５からクエリを受信することができる。このクエリは、保護されたフィールドおよび保護されていないフィールドに適用可能な検索基準、たとえば、名は保護されていないデータであるが姓は保護されたデータである、人物の姓および名の検索を含むことができる。ステップ１０２０において、保護されたフィールドに関連する検索基準が、ＰＲＳサーバ２３５のようなデータセキュリティプロバイダに送信される。一実施形態では、１つ以上のクライアントデバイス２０５，２１０、および２１５は、保護されたフィールドでの処理のために、クエリ全体をＰＲＳサーバ２２０に送信する。次いで、ＰＲＳサーバ２３５は、検索結果を元のクエリと共にクラウドベースのアプリケーション２３０に送信することができる。たとえば、ステップ１０３０において、パブリックフィールドに関連する検索基準が、保護されたフィールド検索の結果とともにクラウドベースのアプリケーションに送信される。いくつかの実施形態では、各プライベートデータベース２２５およびクラウドデータベース２３５に対する検索基準を独立して送信することができる。
【０１５６】
ステップ１０４０では、保護されたフィールド結果およびクラウド検索結果を使用して、検索の最終結果がレンダリングされる。一実施形態では、ユーザが検索を開始するとき、検索基準のいずれかが保護されたフィールド上にある場合、ＰＲＳサーバ２２０は、その検索をプライベートデータベース２２５に対して適用することができる。ＰＲＳサーバは、結果セットを、行キーによって識別される適格である行のセットとして生成することができる。次に、行キーのセットは、クラウドベースのアプリケーション２３０のための検索要求に送られる。クラウドベースのアプリケーション２３０が要求を処理するとき、適格である行キーのセットは、最終的な検索結果をフィルタリングするために使用される。最終的な検索結果のみがレンダリングされ、クライアントデバイス２１５に送り返されて表示される。
【０１５７】
最終的な検索結果は、クラウドデータと、プライベートデータベース２４０に対する検索基準を満たしたトークン化／暗号化されたデータとの組み合わせを含む。トークン化／暗号化データは、１つ以上のクライアントデバイス２０５，２１０、および２１５によって表示される前に、プライベートデータベース２４０からのデータと置換することができる。したがって、プライベートデータベース２４０およびクラウドデータベース２５０の両方からの検索結果を統合して、よりシームレスな検索体験をユーザに提供することができる。
【０１５８】
ＶＩＩＩ．ハードウェア環境
以下の記載では、説明のために、特定の詳細はこの発明の実施の形態の十分な理解を提供するために述べられる。しかしながら、さまざまな実施の形態がこれらの特定の詳細なしに実施されてもよいことは明らかである。図および記載は、制限的になるようには意図されない。
【０１５９】
いくつかの図面に示されたシステムは、さまざまな構成で提供されてもよい。いくつかの実施形態では、システムは、システムの１つ以上のコンポーネントがクラウドコンピューティングシステムの１つ以上のネットワークに分散された分散型システムとして構成することができる。
【０１６０】
図１１は、実施形態のうちの１つを実現するための分散型システム１１００の簡略図を示す。示されている実施形態では、分散型システム１１００は、１つ以上のクライアントコンピューティングデバイス１１０２，１１０４，１１０６および１１０８を含み、それらは、１つ以上のネットワーク１１１０を介してウェブブラウザ、所有権付きクライアント（たとえばオラクルフォームズ（Ｏｒａｃｌｅ  Ｆｏｒｍｓ））などのクライアントアプリケーションを実行および動作させるように構成される。サーバ１１１２は、リモートクライアントコンピューティングデバイス１１０２，１１０４，１１０６および１１０８とネットワーク１１１０を介して通信可能に結合されてもよい。
【０１６１】
さまざまな実施形態では、サーバ１１１２は、システムのコンポーネントのうちの１つ以上によって提供される１つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。いくつかの実施形態では、これらのサービスは、ウェブベースのサービスもしくはクラウドサービスとして、またはソフトウェア・アズ・ア・サービス（ＳａａＳ）モデルの下で、クライアントコンピューティングデバイス１１０２，１１０４，１１０６および／または１１０８のユーザに対して提供されてもよい。クライアントコンピューティングデバイス１１０２，１１０４，１１０６および／または１１０８を動作させるユーザは、次いで、１つ以上のクライアントアプリケーションを利用してサーバ１１１２と対話して、これらのコンポーネントによって提供されるサービスを利用してもよい。
【０１６２】
図に示される構成では、システム１１００のソフトウェアコンポーネント１１１８，１１２０および１１２２は、サーバ１１１２上で実現されるものとして示されている。他の実施形態では、システム１１００のコンポーネントのうちの１つ以上および／またはこれらのコンポーネントによって提供されるサービスは、クライアントコンピューティングデバイス１１０２，１１０４，１１０６および／または１１０８のうちの１つ以上によって実現されてもよい。クライアントコンピューティングデバイスを動作させるユーザは、次いで、１つ以上のクライアントアプリケーションを利用して、これらのコンポーネントによって提供されるサービスを用いてもよい。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実現されてもよい。分散型システム１１００とは異なってもよいさまざまな異なるシステム構成が可能であることが理解されるべきである。図に示される実施形態は、したがって、実施形態のシステムを実現するための分散型システムの一例であり、限定的であるよう意図されるものではない。
【０１６３】
クライアントコンピューティングデバイス１１０２，１１０４，１１０６および／または１１０８は、携帯可能な手持ち式のデバイス（たとえば、ｉＰｈｏｎｅ（登録商標）、セルラー電話、ｉＰａｄ（登録商標）、コンピューティングタブレット、携帯情報端末（ＰＤＡ））またはウェアラブルデバイス（たとえばＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）頭部装着型ディスプレイ）であってもよく、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  Ｍｏｂｉｌｅ（登録商標）などのソフトウェア、および／もしくは、ｉＯＳ、Ｗｉｎｄｏｗｓ  Ｐｈｏｎｅ、Ａｎｄｒｏｉｄ、ＢｌａｃｋＢｅｒｒｙ１０、Ｐａｌｍ  ＯＳなどのさまざまなモバイルオペレーティングシステムを実行し、インターネット、電子メール、ショートメッセージサービス（ＳＭＳ）、ＢｌａｃｋＢｅｒｒｙ（登録商標）、または他のイネーブルにされた通信プロトコルであってもよい。クライアントコンピューティングデバイスは、汎用パーソナルコンピュータであってもよく、一例として、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）および／またはＬｉｎｕｘ（登録商標）オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび／またはラップトップコンピュータを含むことができる。クライアントコンピューティングデバイスは、たとえばＧｏｏｇｌｅ  Ｃｈｒｏｍｅ  ＯＳなどのさまざまなＧＮＵ／Ｌｉｎｕｘオペレーティングシステムを限定を伴うことなく含む、さまざまな市場で入手可能なＵＮＩＸ（登録商標）またはＵＮＩＸのようなオペレーティングシステムのいずれかを実行するワークステーションコンピュータであり得る。代替的に、または加えて、クライアントコンピューティングデバイス１１０２，１１０４，１１０６および１１０８は、ネットワーク１１１０を介して通信することができる、シンクライアントコンピュータ、インターネットにより可能化されるゲームシステム（たとえば、Ｋｉｎｅｃｔ（登録商標）ジェスチャ入力デバイスを伴うかまたは伴わないＭｉｃｒｏｓｏｆｔ  Ｘｂｏｘゲームコンソール）および／または個人メッセージ伝達デバイスなどの任意の他の電子デバイスをであってもよい。
【０１６４】
例示の分散型システム１１００は、４つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサを伴うデバイスなど、他のデバイスがサーバ１１１２と対話してもよい。
【０１６５】
分散型システム１１００におけるネットワーク１１１０は、ＴＣＰ／ＩＰ（伝送制御プロトコル／インターネットプロトコル）、ＳＮＡ（システムネットワークアーキテクチャ）、ＩＰＸ（インターネットパケット交換）、ＡｐｐｌｅＴａｌｋなどを限定を伴うことなく含む、さまざまな市場で入手可能なプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者が精通している任意のタイプのネットワークであってもよい。単に一例として、ネットワーク１１１０は、イーサネット（登録商標）、トークンリングなどに基づくものなどのローカルエリアネットワーク（ＬＡＮ）であってもよい。ネットワーク１１１０は、ワイドエリアネットワークおよびインターネットであってもよい。ネットワーク１１１０は、仮想ネットワークを含み得て、当該仮想ネットワークは、仮想プライベートネットワーク（ｖｉｒｔｕａｌ  ｐｒｉｖａｔｅ  ｎｅｔｗｏｒｋ：ＶＰＮ）、イントラネット、エクストラネット、公衆交換電話網（ｐｕｂｌｉｃ  ｓｗｉｔｃｈｅｄ  ｔｅｌｅｐｈｏｎｅ  ｎｅｔｗｏｒｋ：ＰＳＴＮ）、赤外線ネットワーク、無線ネットワーク（たとえば、米国電気電子学会（ＩＥＥＥ）８０２．１１のプロトコル一式、ブルートゥース（登録商標）、および／もしくはその他の無線プロトコルのうちのいずれかの下で動作するネットワーク）、ならびに／またはこれらのいずれかの組み合わせおよび／もしくは他のネットワークを含むが、それらに限定されるものではない。
【０１６６】
サーバ１１１２は、１つ以上の汎用コンピュータ、専用のサーバコンピュータ（一例としてＰＣ（パーソナルコンピュータ）サーバ、ＵＮＩＸ（登録商標）サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む）、サーバファーム、サーバクラスタ、またはその他の適切な構成および／もしくは組み合わせで構成されてもよい。さまざまな実施形態において、サーバ１１１２は、前述の開示に記載される１つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、サーバ１１１２は、本開示の実施形態に従って上記の処理を実行するためのサーバに対応してもよい。
【０１６７】
サーバ１１１２は、上記のもののうちのいずれかを含むオペレーティングシステム、および任意の市場で入手可能なサーバオペレーティングシステムを実行してもよい。サーバ１１１２は、ＨＴＴＰ（ハイパーテキスト転送プロトコル）サーバ、ＦＴＰ（ファイル転送プロトコル）サーバ、ＣＧＩ（コモンゲートウェイインターフェイス）サーバ、ＪＡＶＡ（登録商標）サーバ、データベースサーバなどを含むさまざまなさらに他のサーバアプリケーションおよび／または中間層アプリケーションのうちのいずれかも実行してもよい。例示的なデータベースサーバは、オラクル、マイクロソフト、サイベース、ＩＢＭ（インターナショナルビジネスマシンズ）などから市場で入手可能なものを含むが、それらに限定されるものではない。
【０１６８】
いくつかの実現例では、サーバ１１１２は、クライアントコンピューティングデバイス１１０２，１１０４，１１０６および１１０８のユーザから受信されるデータフィードおよび／またはイベント更新情報を解析および整理統合するための１つ以上のアプリケーションを含んでもよい。一例として、データフィードおよび／またはイベント更新情報は、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール（たとえば、ネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム解析ツール、自動車交通監視などに関連するリアルタイムのイベントを含んでもよい、１つ以上の第三者情報源および連続データストリームから受信される、Ｔｗｉｔｔｅｒ（登録商標）フィード、Ｆａｃｅｂｏｏｋ（登録商標）更新情報またはリアルタイムの更新情報を含んでもよいが、それらに限定されるものではない。サーバ１１１２は、データフィードおよび／またはリアルタイムのイベントをクライアントコンピューティングデバイス１１０２，１１０４，１１０６および１１０８の１つ以上の表示デバイスを介して表示するための１つ以上のアプリケーションも含んでもよい。
【０１６９】
分散型システム１１００は、１つ以上のデータベース１１１４および１１１６も含んでもよい。データベース１１１４および１１１６は、さまざまな位置にあってもよい。一例として、データベース１１１４および１１１６のうちの１つ以上は、サーバ１１１２に局在する（および／またはサーバ１１１２に常駐する）非一時的な記憶媒体にあってもよい。代替的に、データベース１１１４および１１１６は、サーバ１１１２から遠隔にあり、ネットワークベースまたは専用の接続を介してサーバ１１１２と通信してもよい。一組の実施形態では、データベース１１１４および１１１６は、記憶域ネットワーク（ｓｔｏｒａｇｅ−ａｒｅａ  ｎｅｔｗｏｒｋ：ＳＡＮ）にあってもよい。同様に、サーバ１１１２に帰する機能を実行するための任意の必要なファイルが、適宜、サーバ１１１２上においてローカルに、および／または遠隔で格納されてもよい。一組の実施形態では、データベース１１１４および１１１６は、ＳＱＬフォーマットされたコマンドに応答してデータを格納、更新および検索取得するように適合される、オラクルによって提供されるデータベースなどのリレーショナルデータベースを含んでもよい。
【０１７０】
図１２は、本発明のさまざまな実施形態を実現することができる例示的なコンピュータシステム１２００を示す。システム１２００は、上記のコンピュータシステムのうちのいずれかを実現するよう用いられてもよい。図に示されるように、コンピュータシステム１２００は、多数の周辺サブシステムとバスサブシステム１２０２を介して通信する処理ユニット１２０４を含む。これらの周辺サブシステムは、処理加速ユニット１２０６、Ｉ／Ｏサブシステム１２０８、ストレージサブシステム１２１８および通信サブシステム１２２４を含んでもよい。ストレージサブシステム１２１８は、有形のコンピュータ読取可能な記憶媒体１２２２およびシステムメモリ１２１０を含む。
【０１７１】
バスサブシステム１２０２は、コンピュータシステム１２００のさまざまなコンポーネントおよびサブシステムに意図されるように互いに通信させるための機構を提供する。バスサブシステム１２０２は単一のバスとして概略的に示されているが、バスサブシステムの代替的実施例は、複数のバスを利用してもよい。バスサブシステム１２０２は、さまざまなバスアーキテクチャのうちのいずれかを用いるメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、そのようなアーキテクチャは、業界標準アーキテクチャ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ：ＩＳＡ）バス、マイクロチャネルアーキテクチャ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ：ＭＣＡ）バス、エンハンストＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ：ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ：ＶＥＳＡ）ローカルバス、およびＩＥＥＥ  Ｐ１３８６．１規格に従って製造される中二階バスとして実現され得る周辺コンポーネントインターコネクト（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ：ＰＣＩ）バスを含んでもよい。
【０１７２】
１つ以上の集積回路（たとえば、従来のマイクロプロセッサまたはマイクロコントローラ）として実現可能な処理ユニット１２０４は、コンピュータシステム１２００の動作を制御する。１つ以上のプロセッサが処理ユニット１２０４に含まれてもよい。これらのプロセッサは、シングルコアプロセッサを含んでもよく、またはマルチコアプロセッサを含んでもよい。特定の実施形態では、処理ユニット１２０４は、シングルコアまたはマルチコアプロセッサが各処理ユニットに含まれる１つ以上の独立した処理ユニット１２３２および／または１２３４として実現されてもよい。他の実施形態では、処理ユニット１２０４は、２つのデュアルコアプロセッサを単一のチップに統合することによって形成されるクアッドコア処理ユニットとして実現されてもよい。
【０１７３】
さまざまな実施形態では、処理ユニット１２０４は、プログラムコードに応答してさまざまなプログラムを実行することができ、複数の同時に実行されるプログラムまたはプロセスを維持することができる。任意の所与の時点で、実行されるべきプログラムコードの一部または全ては、プロセッサ１２０４、および／または、ストレージサブシステム１２１８に常駐することができる。好適なプログラミングを介して、プロセッサ１２０４は、上記のさまざまな機能を提供することができる。コンピュータシステム１２００は、デジタル信号プロセッサ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ：ＤＳＰ）、特殊目的プロセッサなどを含み得る処理加速ユニット１２０６をさらに含んでもよい。
【０１７４】
Ｉ／Ｏサブシステム１２０８は、ユーザインターフェイス入力デバイスおよびユーザインターフェイス出力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、ジェスチャおよび話し言葉コマンドを用いて、ナチュラルユーザインターフェイスを介して、Ｍｉｃｒｏｓｏｆｔ  Ｘｂｏｘ（登録商標）３６０ゲームコントローラなどの入力デバイスをユーザが制御して対話することを可能にするＭｉｃｒｏｓｏｆｔ  Ｋｉｎｅｃｔ（登録商標）モーションセンサなどのモーション感知および／またはジェスチャ認識デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の動き（たとえば、写真を撮っている間および／またはメニュー選択を行なっている間の「まばたき」）を検出し、アイジェスチャを入力デバイス（たとえばＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標））への入力として変換するＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。また、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム（たとえばＳｉｒｉ（登録商標）ナビゲータ）と対話することを可能にする音声認識感知デバイスを含んでもよい。
【０１７５】
ユーザインターフェイス入力デバイスは、三次元（３Ｄ）マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ３Ｄスキャナ、３Ｄプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚／視覚デバイスも含んでもよいが、それらに限定されるものではない。また、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、医療用超音波検査デバイスなどの医療用画像化入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、ＭＩＤＩキーボード、デジタル楽器などの音声入力デバイスも含んでもよい。
【０１７６】
ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどの非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）またはプラズマディスプレイを使うものなどのフラットパネルデバイス、投影デバイス、タッチスクリーンなどであってもよい。一般に、「出力デバイス」という語の使用は、コンピュータシステム１２００からユーザまたは他のコンピュータに情報を出力するための全ての考えられ得るタイプのデバイスおよび機構を含むよう意図される。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスおよび音声／映像情報を視覚的に伝えるさまざまな表示デバイスを含んでもよいが、それらに限定されるものではない。
【０１７７】
コンピュータシステム１２００は、現在のところシステムメモリ１２１０内に位置しているものとして示されているソフトウェア要素を備えるストレージサブシステム１２１８を備えてもよい。システムメモリ１２１０は、処理ユニット１２０４上でロード可能および実行可能なプログラム命令と、これらのプログラムの実行中に生成されるデータとを格納してもよい。
【０１７８】
コンピュータシステム１２００の構成およびタイプによって、システムメモリ１２１０は、揮発性であってもよく（ランダムアクセスメモリ（ＲＡＭ）など）、および／または、不揮発性であってもよい（リードオンリメモリ（ＲＯＭ）、フラッシュメモリなど）。ＲＡＭは、一般に、処理ユニット１２０４にすぐにアクセス可能であり、および／または、処理ユニット１２０４によって現在動作および実行されているデータおよび／またはプログラムモジュールを含む。いくつかの実現例では、システムメモリ１２１０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）またはダイナミックランダムアクセスメモリ（ＤＲＡＭ）などの複数の異なるタイプのメモリを含んでもよい。いくつかの実現例では、起動中などにコンピュータシステム１２００内の要素間における情報の転送を助ける基本的なルーティンを含むベーシックインプット／アウトプットシステム（ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ：ＢＩＯＳ）は、一般に、ＲＯＭに格納されてもよい。一例として、限定を伴うことなく、システムメモリ１２１０は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム（ｒｅｌａｔｉｏｎａｌ  ｄａｔａｂａｓｅ  ｍａｎａｇｅｍｅｎｔ  ｓｙｓｔｅｍ：ＲＤＢＭＳ）などを含んでもよいアプリケーションプログラム１２１２、プログラムデータ１２１４およびオペレーティングシステム１２１６も示す。一例として、オペレーティングシステム１２１６は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）および／もしくはＬｉｎｕｘオペレーティングシステム、さまざまな市場で入手可能なＵＮＩＸ（登録商標）またはＵＮＩＸのようなオペレーティングシステム（さまざまなＧＮＵ／Ｌｉｎｕｘオペレーティングシステム、Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ（登録商標）ＯＳなどを含むがそれらに限定されない）、ならびに／または、ｉＯＳ、Ｗｉｎｄｏｗｓ（登録商標）  Ｐｈｏｎｅ、Ａｎｄｒｏｉｄ（登録商標）  ＯＳ、ＢｌａｃｋＢｅｒｒｙ（登録商標）１２  ＯＳ、およびＰａｌｍ（登録商標）  ＯＳオペレーティングシステムなどのモバイルオペレーティングシステムのさまざまなバージョンを含んでもよい。
【０１７９】
ストレージサブシステム１２１８は、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を格納するための有形のコンピュータ読取可能な記憶媒体も提供してもよい。プロセッサによって実行されたときに上記の機能を提供するソフトウェア（プログラム、コードモジュール、命令）は、ストレージサブシステム１２１８に格納されてもよい。これらのソフトウェアモジュールまたは命令は、処理ユニット１２０４によって実行されてもよい。ストレージサブシステム１２１８はまた、本発明に従って使用されるデータを格納するためのリポジトリを提供してもよい。
【０１８０】
ストレージサブシステム１２００は、コンピュータ読取可能な記憶媒体１２２２にさらに接続可能なコンピュータ読取可能記憶媒体リーダ１２２０も含んでもよい。システムメモリ１２１０とともに、およびオプションとしてシステムメモリ１２１０との組み合わせで、コンピュータ読取可能な記憶媒体１２２２は、コンピュータ読取可能な情報を一時的および／またはより永久的に収容、格納、伝送および検索取得するための、遠隔の、ローカルな、固定された、および／またはリムーバブルなストレージデバイスに記憶媒体を加えたものを包括的に表わしてもよい。
【０１８１】
コードまたはコードの一部を含むコンピュータ読取可能な記憶媒体１２２２は、記憶媒体および通信媒体を含む、当該技術分野において公知であるまたは使用されるいずれかの適切な媒体も含んでもよく、当該媒体は、情報の格納および／または伝送のための任意の方法または技術において実現される揮発性および不揮発性の、リムーバブルおよび非リムーバブルな媒体などであるが、それらに限定されるものではない。これは、ＲＡＭ、ＲＯＭ、電気的に消去可能なプログラム可能ＲＯＭ（ｅｌｅｃｔｒｏｎｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ：ＥＥＰＲＯＭ）、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、または他の光学式ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または他の有形のコンピュータ読取可能な媒体などの有形のコンピュータ読取可能な記憶媒体を含んでもよい。指定される場合には、これは、データ信号、データ伝送、または所望の情報を伝送するために使用可能でありコンピューティングシステム１２００によってアクセス可能であるその他の媒体などの無形のコンピュータ読取可能媒体も含んでもよい。
【０１８２】
一例として、コンピュータ読取可能な記憶媒体１２２２は、非リムーバブル不揮発性磁気媒体に対して読み書きするハードディスクドライブ、リムーバブル不揮発性磁気ディスクに対して読み書きする磁気ディスクドライブ、ＣＤ  ＲＯＭ、ＤＶＤおよびブルーレイ（登録商標）ディスクなどの、リムーバブル不揮発性光ディスクに対して読み書きする光ディスクドライブ、または他の光学式媒体を含んでもよい。コンピュータ読取可能記憶媒体１２２２は、Ｚｉｐ（登録商標）ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブ、セキュアデジタル（ＳＤ）カード、ＤＶＤディスク、デジタルビデオテープなどを含んでもよいが、それらに限定されるものではない。コンピュータ読取可能な記憶媒体１２２２は、フラッシュメモリベースのＳＳＤ、エンタープライズフラッシュドライブ、ソリッドステートＲＯＭなどの不揮発性メモリに基づくソリッドステートドライブ（ｓｏｌｉｄ−ｓｔａｔｅ  ｄｒｉｖｅ：ＳＳＤ）、ソリッドステートＲＡＭ、ダイナミックＲＡＭ、スタティックＲＡＭなどの揮発性メモリに基づくＳＳＤ、ＤＲＡＭベースのＳＳＤ、磁気抵抗ＲＡＭ（ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  ＲＡＭ：ＭＲＡＭ）ＳＳＤ、およびＤＲＡＭとフラッシュメモリベースのＳＳＤとの組み合わせを使用するハイブリッドＳＳＤも含んでもよい。ディスクドライブおよびそれらの関連付けられたコンピュータ読取可能な媒体は、コンピュータ読取可能な命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージをコンピュータシステム１２００に提供してもよい。
【０１８３】
通信サブシステム１２２４は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム１２２４は、他のシステムとコンピュータシステム１２００との間のデータの送受のためのインターフェイスとして働く。たとえば、通信サブシステム１２２４は、コンピュータシステム１２００がインターネットを介して１つ以上のデバイスに接続することを可能にしてもよい。いくつかの実施形態では、通信サブシステム１２２４は、（たとえば、セルラー電話技術、３Ｇ、４ＧもしくはＥＤＧＥ（グローバル進化のための高速データレート）などの先進データネットワーク技術、ＷｉＦｉ（ＩＥＥＥ８０２．１１ファミリー規格、もしくは他のモバイル通信技術、またはそれらのいずれかの組み合わせを用いて）無線音声および／またはデータネットワークにアクセスするための無線周波数（ＲＦ）送受信機コンポーネント、グローバルポジショニングシステム（ＧＰＳ）受信機コンポーネント、ならびに／または他のコンポーネントを含んでもよい。いくつかの実施形態では、通信サブシステム１２２４は、無線インターフェイスに加えて、またはその代わりに、有線ネットワーク接続（たとえば、イーサネット）を提供することができる。
【０１８４】
また、いくつかの実施形態では、通信サブシステム１２２４は、コンピュータシステム１２００を使用し得る１人以上のユーザの代わりに、構造化されたおよび／または構造化されていないデータフィード１２２６、イベントストリーム１２２８、イベント更新情報１２３０などの形式で入力通信を受信してもよい。
【０１８５】
たとえば、通信サブシステム１２２４は、ソーシャルネットワークおよび／またはＴｗｉｔｔｅｒ（登録商標）フィード、Ｆａｃｅｂｏｏｋ（登録商標）更新情報、Ｒｉｃｈ  Ｓｉｔｅ  Ｓｕｍｍａｒｙ（ＲＳＳ）フィードなどのウェブフィード、および／もしくは１つ以上の第三者情報源からのリアルタイム更新情報などの他の通信サービスのユーザからリアルタイムでデータフィード１２２６を受信（または送信）するように構成されてもよい。
【０１８６】
さらに、また、通信サブシステム１２２４は、連続データストリームの形式でデータを受信するように構成されてもよく、当該連続データストリームは、明確な終端を持たない、本来は連続的または無限であり得るリアルタイムイベントのイベントストリーム１２２８および／またはイベント更新情報１２３０を含んでもよい。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール（たとえば、ネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム解析ツール、自動車交通監視などを挙げることができる。
【０１８７】
また、通信サブシステム１２２４は、構造化されたおよび／または構造化されていないデータフィード１２２６、イベントストリーム１２２８、イベント更新情報１２３０などを、コンピュータシステム１２００に結合される１つ以上のストリーミングデータソースコンピュータと通信し得る１つ以上のデータベースに出力するよう構成されてもよい。
【０１８８】
コンピュータシステム１２００は、手持ち式の携帯デバイス（たとえば、ｉＰｈｏｎｅ（登録商標）携帯電話、ｉＰａｄ（登録商標）コンピューティングタブレット、ＰＤＡ）、ウェアラブルデバイス（たとえば、Ｇｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）頭部装着型ディスプレイ）、ＰＣ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまなタイプのもののうちの１つであり得る。
【０１８９】
常に変化するコンピュータおよびネットワークの性質のため、図に示されるコンピュータシステム１２００の記載は、単に具体的な例として意図される。図に示されるシステムよりも多くのコンポーネントまたは少ないコンポーネントを有する多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアも使用されてもよく、および／または、特定の要素が、ハードウェア、ファームウェア、ソフトウェア（アプレットを含む）、または組み合わせで実現されてもよい。さらに、ネットワーク入力／出力デバイスなどの他のコンピューティングデバイスへの接続が利用されてもよい。本明細書における開示および教示に基づいて、当業者は、さまざまな実施形態を実現するための他の態様および／または方法を理解するであろう。
【０１９０】
上記の明細書では、本発明の局面についてその具体的な実施形態を参照して説明しているが、本発明はそれに限定されるものではないということを当業者は認識するであろう。上記の発明のさまざまな特徴および局面は、個々にまたは一緒に用いられてもよい。さらに、実施形態は、明細書のさらに広い精神および範囲から逸脱することなく、本明細書に記載されているものを超えて、さまざまな環境および用途で利用することができる。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。
【図１】
2019501437.tif 000011
【図２】
2019501437.tif 000012
【図３Ａ】
2019501437.tif 000013
【図３Ｂ】
2019501437.tif 000014
【図４】
2019501437.tif 000015
【図５】
2019501437.tif 000016
【図６】
2019501437.tif 000017
【図７】
2019501437.tif 000018
【図８】
2019501437.tif 000019
【図９】
2019501437.tif 000020
【図１０】
2019501437.tif 000021
【図１１】
2019501437.tif 000022
【図１２】
2019501437.tif 000023
【国際調査報告】
2019501437.tif 000024
2019501437.tif 000025
2019501437.tif 000026
2019501437.tif 000027