(57)【特許請求の範囲】
【請求項１】
ＪＳＯＮデータを変換するための方法であって、前記方法は、
JavaScriptオブジェクト表記法を使用して特定された第１のオブジェクトをコンピュータで受信するステップを含み、前記第１のオブジェクトは一組の１つ以上の属性を有し、各属性は予め定められたＪＳＯＮデータタイプのもので、少なくとも１つの値を有し、前記方法はさらに、
JavaScriptオブジェクト表記法を使用して特定された第２のオブジェクトを前記コンピュータで受信するステップを含み、前記第２のオブジェクトは一組の１つ以上の属性を有し、各属性は前記第１のオブジェクトの前記一組の属性のうちの少なくとも１つの属性に対応しており、１つ以上の変換を定義する少なくとも１つの値を有し、前記方法はさらに、
前記第１のオブジェクトを、前記第２のオブジェクトに基づいて、JavaScriptオブジェクト表記法を使用して特定された第３のオブジェクトに、前記コンピュータによって変換するステップと、
前記コンピュータに関連付けられた記憶装置に前記第３のオブジェクトを格納するステップと、
前記第２のオブジェクトが、前記第１のオブジェクトの各属性について、当該属性の対応する変換を定義する前記少なくとも１つの値を有するか否かを判断するステップと、
前記判断に応じて、前記第３のオブジェクトにおいて前記第１のオブジェクトの各属性を含めるか除外するかを判断するステップを、含む、方法。
【請求項２】
前記第２のオブジェクトを前記コンピュータで受信するステップは、名前が前記第１のオブジェクトの属性の名前に対応している属性を有する、JavaScriptオブジェクト表記法を使用して特定されたオブジェクトを受信するステップを含む、請求項１に記載の方法。
【請求項３】
名前が前記第１のオブジェクトの属性の名前に対応している属性を有する前記オブジェクトを受信するステップは、前記第１のオブジェクトの属性と同じ名前を有するとして属性を受信するステップを含む、請求項２に記載の方法。
【請求項４】
名前が前記第１のオブジェクトの属性の名前に対応している属性を有する前記オブジェクトを受信するステップは、前記第１のオブジェクトの属性の名前を参照する値を有するとして属性を受信するステップを含む、請求項２に記載の方法。
【請求項５】
前記第２のオブジェクトを前記コンピュータで受信するステップは、前記第１のオブジェクトの属性の名前または前記第１のオブジェクトの属性の値のいずれかに適用されるべき演算を特定する値を有する、JavaScriptオブジェクト表記法を使用して特定されたオブジェクトの属性を受信するステップを含む、請求項１〜４のいずれかに記載の方法。
【請求項６】
前記第２のオブジェクトを前記コンピュータで受信するステップは、前記第１のオブジェクトの属性の変換に対応する前記第３のオブジェクトの属性のデータタイプを特定する値を有する、JavaScriptオブジェクト表記法を使用して特定されたオブジェクトの属性を受信するステップを含む、請求項１〜５のいずれかに記載の方法。
【請求項７】
前記第２のオブジェクトを前記コンピュータで受信するステップは、前記第１のオブジェクトの１つ以上の属性の修正を特定する値を有する、JavaScriptオブジェクト表記法を使用して特定されたオブジェクトの属性を受信するステップを含む、請求項１〜６のいずれかに記載の方法。
【請求項８】
前記第２のオブジェクトを前記コンピュータで受信するステップは、前記１つ以上の変換が前記第１のオブジェクトに適用可能かどうかを定義する１つ以上のテストを定義する値を有する、JavaScriptオブジェクト表記法を使用して特定されたオブジェクトの属性を受信するステップを含む、請求項１〜７のいずれかに記載の方法。
【請求項９】
前記１つ以上のテストは、前記第１のオブジェクトの１つ以上の属性に対して定義される、請求項１〜８のいずれか１項に記載の方法。
【請求項１０】
前記１つ以上のテストの肯定的評価を前記コンピュータによって判断するステップと、
前記１つ以上のテストの肯定的評価に基づいて、前記１つ以上の変換を、前記コンピュータによって行なうステップとをさらに含む、請求項１〜８のいずれか１項に記載の方法。
【請求項１１】
前記１つ以上の変換を前記コンピュータによって行なうステップは、前記第１のオブジェクトの属性の名前を変更するステップ、前記第１のオブジェクトの属性の値に対して１つ以上の数値演算を行なうステップ、前記第１のオブジェクトの属性の値に対して１つ以上の文字列演算を行なうステップ、オブジェクトでもある前記第１のオブジェクトの属性に１つ以上の属性を追加するステップ、または、オブジェクトでもある前記第１のオブジェクトの属性から１つ以上の属性を除去するステップを含む、請求項１０に記載の方法。
【請求項１２】
請求項１〜１１のいずれかに記載の方法をコンピュータに実行させる、プログラム。
【請求項１３】
請求項１２に記載のプログラムを格納したメモリと、
前記メモリに接続され、前記プログラムを実行するためのプロセッサとを備える、システム。
【発明の詳細な説明】
【背景技術】
【０００１】
発明の背景
ＪＳＯＮとは、属性と値とのペアからなるデータオブジェクトを送信するために人間が読み取れるテキストを使用するオープン標準フォーマットである。それは主として、サーバとウェブアプリケーションとの間でデータを送信するために、ＸＭＬの代わりとして使用される。ＪＳＯＮは元々、JavaScript（登録商標）スクリプト言語から派生したものであるが、言語非依存のデータフォーマットである。ＪＳＯＮデータを構文解析し、生成するためのコードが、幅広い種類のプログラミング言語で容易に利用可能である。
【０００２】
現在、企業レベルでは、ＪＳＯＮデータフォーマットは、他のウェブベースのデータフォーマットに比べてより柔軟で使いやすいため、多くの注目を獲得してきている。それは、モバイル世界において非常に好ましいデータフォーマットである。ＪＳＯＮは、データフォーマットが一般に使用される現実世界の状況において作成、読取りおよび復号のための広範なサポートを有する他のデータフォーマットの低オーバヘッド代替物として奨励される。ＸＭＬの他に、他の例は、ＯＧＤＬ、ＹＡＭＬおよびＣＳＶを含んでいてもよい。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ＪＳＯＮデータを変換するために、多くの変換ＡＰＩが市場で入手可能である。しかしながら、これらのＡＰＩは、ユーザが変換を定義するために別の言語を学ぶことを要求する場合があるため、ユーザフレンドリーではない。ユーザは結局、そうするために自分自身の文法を書くことになることが多い。いくつかのＡＰＩは、ＪＳＯＮをＸＭＬに変換し、変換を適用し、次にＪＳＯＮに逆変換する。これは、大量のオーバーヘッド処理をもたらす。
【０００４】
したがって、望まれるのは、ＪＳＯＮ変換に関する問題を解決することであり、それらのうちのいくつかをここに説明する。加えて、望まれるのは、ＪＳＯＮ変換言語に関する欠点を減らすことであり、それらのうちのいくつかをここに説明する。
【課題を解決するための手段】
【０００５】
発明の簡単な概要
この開示の以下の部分は、この開示において見出された１つ以上の革新、実施形態、および／または例の簡略化された概要を、少なくとも主題の基本的理解を提供するという目的のために提示する。この概要は、任意の特定の実施形態または例の広範な概略を提供することを試みていない。加えて、この概要は、実施形態または例の主要／重要要素を識別するよう、またはこの開示の主題の範囲を定めるよう意図されてはいない。したがって、この概要の１つの目的は、この開示において見出されたいくつかの革新、実施形態、および／または例を、後に提示されるより詳細な説明の序章として、簡略化された形で提示することであり得る。
【０００６】
ＪＳＯＮオブジェクトの、他のＪＳＯＮオブジェクトを使用した変換を特定するためのシステムおよび方法が、提供される。JavaScriptオブジェクト表記法（JavaScript Object Notation：ＪＳＯＮ）を使用して特定された第１のオブジェクトが受信される。第１のオブジェクトは一組の１つ以上の属性を含み、各属性は予め定められたＪＳＯＮデータタイプのもので、少なくとも１つの値を有する。JavaScriptオブジェクト表記法を使用して特定された第２のオブジェクトも受信される。第２のオブジェクトは一組の１つ以上の属性を含み、各属性は第１のオブジェクトの一組の属性のうちの少なくとも１つの属性に対応しており、１つ以上の変換を定義する少なくとも１つの値を有する。第２のオブジェクトを使用して第１のオブジェクトを変換することに基づいて、JavaScriptオブジェクト表記法を使用して特定された第３のオブジェクトが生成される。
【０００７】
一実施形態では、ＪＳＯＮデータを変換するための方法は、JavaScriptオブジェクト表記法を使用して特定された第１のオブジェクトをコンピュータで受信するステップを含む。第１のオブジェクトは一組の１つ以上の属性を有し、各属性は予め定められたＪＳＯＮデータタイプのもので、少なくとも１つの値を有していてもよい。JavaScriptオブジェクト表記法を使用して特定された第２のオブジェクトが受信され、それは一組の１つ以上の属性を有し、各属性は第１のオブジェクトの一組の属性のうちの少なくとも１つの属性に対応しており、１つ以上の変換を定義する少なくとも１つの値を有する。第１のオブジェクトは、第２のオブジェクトに基づいて、JavaScriptオブジェクト表記法を使用して特定された第３のオブジェクトに変換される。
【０００８】
ある実施形態では、第２のオブジェクトをコンピュータで受信するステップは、名前が第１のオブジェクトの属性の名前に対応している属性を有する、JavaScriptオブジェクト表記法を使用して特定されたオブジェクトを受信するステップを含む。名前が第１のオブジェクトの属性の名前に対応している属性を有するオブジェクトを受信するステップは、第１のオブジェクトの属性と同じ名前を有するとして属性を受信するステップを含み得る。名前が第１のオブジェクトの属性の名前に対応している属性を有するオブジェクトを受信するステップは、第１のオブジェクトの属性の名前を参照する値を有するとして属性を受信するステップを含み得る。
【０００９】
さらに他の実施形態では、第２のオブジェクトをコンピュータで受信するステップは、第１のオブジェクトの属性の名前または第１のオブジェクトの属性の値のいずれかに適用されるべき演算を特定する値を有する、JavaScriptオブジェクト表記法を使用して特定されたオブジェクトの属性を受信するステップを含み得る。第２のオブジェクトをコンピュータで受信するステップは、第１のオブジェクトの属性の変換に対応する第３のオブジェクトの属性のデータタイプを特定する値を有する、JavaScriptオブジェクト表記法を使用して特定されたオブジェクトの属性を受信するステップを含み得る。第２のオブジェクトをコンピュータで受信するステップは、第１のオブジェクトの１つ以上の属性の修正を特定する値を有する、JavaScriptオブジェクト表記法を使用して特定されたオブジェクトの属性を受信するステップを含み得る。
【００１０】
さまざまな実施形態では、第２のオブジェクトをコンピュータで受信するステップは、１つ以上の変換が第１のオブジェクトに適用可能かどうかを定義する１つ以上のテストを定義する値を有する、JavaScriptオブジェクト表記法を使用して特定されたオブジェクトの属性を受信するステップを含み得る。１つ以上のテストは、第１のオブジェクトの１つ以上の属性に対して定義され得る。１つ以上の変換を行なうために、１つ以上のテストの肯定的評価が判断され、使用されてもよい。１つ以上の変換をコンピュータによって行なうステップは、第１のオブジェクトの属性の名前を変更するステップ、第１のオブジェクトの属性の値に対して１つ以上の数値演算を行なうステップ、第１のオブジェクトの属性の値に対して１つ以上の文字列演算を行なうステップ、オブジェクトでもある第１のオブジェクトの属性に１つ以上の属性を追加するステップ、または、オブジェクトでもある第１のオブジェクトの属性から１つ以上の属性を除去するステップを含み得る。
【００１１】
一実施形態では、非一時的なコンピュータ読取可能媒体は、ＪＳＯＮデータを変換するためにコンピュータシステムのプロセッサによって実行可能なコンピュータプログラム製品を格納し、または、当該コンピュータプログラム製品が組込まれている。非一時的なコンピュータ読取可能媒体は、JavaScriptオブジェクト表記法を使用して特定された第１のオブジェクトを受信するためのコードを含み得る。第１のオブジェクトは一組の１つ以上の属性を有し、各属性は予め定められたＪＳＯＮデータタイプのもので、少なくとも１つの値を有する。非一時的なコンピュータ読取可能媒体はさらに、JavaScriptオブジェクト表記法を使用して特定された第２のオブジェクトを受信するためのコードを含み得る。第２のオブジェクトは一組の１つ以上の属性を有し、各属性は第１のオブジェクトの一組の属性のうちの少なくとも１つの属性に対応しており、１つ以上の変換を定義する少なくとも１つの値を有する。非一時的なコンピュータ読取可能媒体はさらに、第１のオブジェクトを、第２のオブジェクトに基づいて、JavaScriptオブジェクト表記法を使用して特定された第３のオブジェクトに変換するためのコードを含み得る。
【００１２】
一実施形態では、ＪＳＯＮデータを変換するためのシステムは、ハードウェアプロセッサと、一組の命令を格納するメモリとを含み得る。一組の命令は、プロセッサによって実行されると、プロセッサに以下のステップを行なわせ、前記以下のステップは、JavaScriptオブジェクト表記法を使用して特定された第１のオブジェクトを受信するステップを含み、第１のオブジェクトは一組の１つ以上の属性を有し、各属性は予め定められたＪＳＯＮデータタイプのもので、少なくとも１つの値を有し、前記以下のステップはさらに、JavaScriptオブジェクト表記法を使用して特定された第２のオブジェクトを受信するステップを含み、第２のオブジェクトは一組の１つ以上の属性を有し、各属性は第１のオブジェクトの一組の属性のうちの少なくとも１つの属性に対応しており、１つ以上の変換を定義する少なくとも１つの値を有し、前記以下のステップはさらに、第１のオブジェクトを、第２のオブジェクトに基づいて、JavaScriptオブジェクト表記法を使用して特定された第３のオブジェクトに変換するステップを含む。
【００１３】
この開示の主題の性質および均等物（ならびに、提供されたあらゆる固有のまたは明白な利点および改良）についての一層の理解が、この開示の残りの部分、あらゆる添付図面、および請求項を参照することにより、上述の項に加えて実現されるはずである。
【００１４】
図面の簡単な説明
この開示において見出されたそれらの革新、実施形態、および／または例を適正に説明し図示するために、１つ以上の添付図面を参照してもよい。１つ以上の添付図面を説明するために使用される追加の詳細または例は、請求される発明のうちのいずれか、現在説明されている実施形態および／または例のうちのいずれか、もしくは、この開示において提示されたいずれかの革新の現在理解されている最良の形態の範囲への限定として考えられるべきでない。
【図面の簡単な説明】
【００１５】
【図１】この開示の一実施形態に従った、実施形態システムのコンポーネントによって提供されるサービスをモバイルクラウドサービスとして提供し得るシステム環境のコンポーネントの簡略ブロック図である。
【図２】一実施形態において、ＪＳＯＮデータを変換するためのワークフローの簡略ブロック図である。
【図３】一実施形態において、１つ以上の変換を定義するＪＳＯＮオブジェクトを使用してＪＳＯＮデータ変換を行なうための方法のフローチャートである。
【図４】一実施形態において、あるオブジェクトのＪＳＯＮデータを、別のオブジェクトのＪＳＯＮデータ属性言語を使用してどのように変換するかを判断するための方法のフローチャートである。
【図５】一実施形態において、ＪＳＯＮスタイルシート言語を使用してＪＳＯＮデータをどのように変換するかを判断するための方法のフローチャートである。
【図６】一実施形態において、ＪＳＯＮスタイルシート言語オブジェクトの属性と同じ名前を有するＪＳＯＮデータ属性を変換するための方法のフローチャートである。
【図７】一実施形態において、入力ＪＳＯＮ文字列と、ＪＳＬ文字列と、ＪＳＬ文字列を使用した入力ＪＳＯＮ文字列の属性の変換から生じる出力文字列との図である。
【図８】一実施形態において、ＪＳＯＮスタイルシート言語オブジェクトの属性によって参照されるＪＳＯＮデータ属性を変換するための方法のフローチャートである。
【図９】一実施形態において、入力ＪＳＯＮ文字列と、ＪＳＬ文字列と、ＪＳＬ文字列を使用した入力ＪＳＯＮ文字列の属性値の変換から生じる出力文字列との図である。
【図１０】一実施形態において、ＪＳＯＮスタイルシート言語オブジェクトの属性の式を満たすＪＳＯＮデータ属性を変換するための方法のフローチャートである。
【図１１】一実施形態において、式が満たされた場合の、入力ＪＳＯＮ文字列と、ＪＳＬ文字列と、ＪＳＬ文字列を使用した入力ＪＳＯＮ文字列の変換から生じる出力文字列との図である。
【図１２】一実施形態において、式が満たされた場合の、入力ＪＳＯＮ文字列と、ＪＳＬ文字列と、ＪＳＬ文字列を使用した入力ＪＳＯＮ文字列の変換から生じる出力文字列との図である。
【図１３】一実施形態において、ＪＳＯＮスタイルシート言語オブジェクトを使用してＪＳＯＮオブジェクト変換を行なうように構成されたハードウェアユニットのブロック図である。
【図１４】実施形態のうちの１つを実現するための分散型システムの簡略図である。
【図１５】この発明のさまざまな実施形態が実現され得る例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【００１６】
発明の詳細な説明
はじめに
以下の記載では、説明の目的のため、この発明の実施形態の完全な理解を提供するために特定の詳細が述べられる。しかしながら、これらの特定の詳細がなくてもさまざまな実施形態は実践され得る、ということは明らかであろう。たとえば、実施形態を必要以上に詳細に記載して不明瞭にすることがないように、回路、システム、ネットワーク、プロセス、および他のコンポーネントは、ブロック図の形のコンポーネントとして示されてもよい。他の例では、実施形態を不明瞭にしないように、周知の回路、プロセス、アルゴリズム、構造、および手法は、不要な詳細なしで示されてもよい。図および説明は、限定的であるよう意図されてはいない。むしろ、例示的な実施形態の以下の記載は、例示的な実施形態を実現するための実施可能な記載を当業者に提供するであろう。添付された請求項で述べられるようなこの発明の精神および範囲から逸脱することなく、要素の機能および構成においてさまざまな変更が行なわれてもよい、ということが理解されるべきである。
【００１７】
また、個々の実施形態は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスとして説明され得ることに留意されたい。フローチャートは動作を順次プロセスとして説明し得るものの、動作の多くは並行してまたは同時に行なうことが可能である。加えて、動作の順序は並べ替えられてもよい。プロセスは、その動作が完了すると終了するが、図に含まれない追加のステップを有していてもよい。プロセスは、方法、機能、手順、サブルーチン、サブプログラムなどに対応していてもよい。プロセスがある機能に対応している場合、その終了は、その機能が呼出し元の機能または主機能に戻ることに対応可能である。
【００１８】
「マシン読取可能媒体」または「コンピュータ読取可能媒体」という用語は、命令および／またはデータを格納し、含み、または担持することができる、携帯型または非携帯型記憶装置、光学記憶装置、無線チャネル、ならびにさまざまな他の媒体を含むものの、それらに限定されない。コードセグメントまたはマシン実行可能命令が、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、もしくは、命令、データ構造またはプログラム文の任意の組合せを表わしてもよい。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容を渡し、および／または受信することによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む任意の好適な手段を介して渡され、発送され、または送信されてもよい。
【００１９】
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実現される場合、必要なタスクを行なうためのプログラムコードまたはコードセグメントが、マシン読取可能またはコンピュータ読取可能媒体に格納されてもよい。１つ以上のプロセッサが、必要なタスクを行なってもよい。
【００２０】
図のうちのいくつかに示されたシステムは、さまざまな構成で提供されてもよい。いくつかの実施形態では、システムは、システムの１つ以上のコンポーネントが１つ以上のネットワークを通してクラウドコンピューティングシステムに分散された分散型システムとして構成されてもよい。さらに他の実施形態では、システムは、システムの１つ以上のコンポーネントが単一の構造またはパッケージに組込まれた単一システムとして構成されてもよい。
【００２１】
図１は、この開示の一実施形態に従った、実施形態システムの１つ以上のコンポーネントによって提供されるサービスをクラウドサービスとして提供し得るシステム環境１００の１つ以上のコンポーネントの簡略ブロック図である。図示された実施形態では、システム環境１００は、１つ以上のクライアントコンピューティング装置１０４、１０６、および１０８にクラウドサービスを提供するクラウドインフラストラクチャシステム１０２を含む。クライアントコンピューティング装置１０４、１０６、および１０８は、クラウドインフラストラクチャシステム１０２とやりとりするためにユーザによって使用されてもよい。クライアントコンピューティング装置１０４、１０６、および１０８は、クラウドインフラストラクチャシステム１０２によって提供されるサービスを使用するためにクラウドインフラストラクチャシステム１０２とやりとりするためにクライアントコンピューティング装置のユーザによって使用され得る、ウェブブラウザ、専用クライアントアプリケーション（たとえば、オラクル・フォームズ（Oracle Forms））、または何らかの他のアプリケーションといったクライアントアプリケーションを動作させるように構成されてもよい。
【００２２】
図１に示すクラウドインフラストラクチャシステム１０２は、図示されたもの以外のコンポーネントを有していてもよい、ということが理解されるべきである。また、図１に示す実施形態は、この発明の一実施形態を取入れ得るクラウドインフラストラクチャシステムの単なる一例である。いくつかの他の実施形態では、クラウドインフラストラクチャシステム１０２は、図１に示すものよりも多い、または少ないコンポーネントを有していてもよく、２つ以上のコンポーネントを組合せてもよく、もしくは、異なる構成または配置のコンポーネントを有していてもよい。
【００２３】
クライアントコンピューティング装置１０４、１０６、および１０８は、携帯型ハンドヘルド装置（たとえば、ｉＰｈｏｎｅ（登録商標）、携帯電話、ｉＰａｄ（登録商標）、コンピューティングタブレット、携帯情報端末（ＰＤＡ））、またはウェアラブル装置（たとえば、グーグル・グラス（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：コモンゲートウェイインターフェイス）サーバ、ＪＡＶＡ（登録商標）サーバ、データベースサーバなどを含む。例示的なデータベースサーバは、オラクル、マイクロソフト、サイベース（Sybase）、ＩＢＭ（International Business Machines：インターナショナル・ビジネス・マシーンズ）などから商業的に入手可能なものを何ら限定されることなく含む。
【００２８】
ある実施形態では、クラウドインフラストラクチャシステム１０２によって提供されるサービスは、オンラインデータストレージおよびバックアップソリューション、ウェブベースの電子メールサービス、ホスト型オフィススイートおよび文書コラボレーションサービス、データベース処理、管理された技術サポートサービスなどといった、クラウドインフラストラクチャシステム１０２のユーザにとってオンデマンドで利用可能にされる多数のサービスを含んでいてもよい。クラウドインフラストラクチャシステム１０２によって提供されるサービスは、そのユーザの必要性を満たすために動的にスケール変更され得る。クラウドインフラストラクチャシステム１０２によって提供されるサービスの特定のインスタンス化は、ここに「サービスインスタンス」と呼ばれる。一般に、クラウドサービスプロバイダのシステムから、インターネットなどの通信ネットワークを介してユーザに利用可能とされる任意のサービスは、「クラウドサービス」と呼ばれる。典型的には、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを作り上げるサーバおよびシステムは、顧客自身の業務用サーバおよびシステムとは異なっている。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションをホストしてもよく、ユーザは、インターネットなどの通信ネットワークを介してオンデマンドでアプリケーションをオーダーし、使用してもよい。
【００２９】
いくつかの例では、クラウドインフラストラクチャ１０２によってインスタンス化されたサービスインスタンスは、クラウドベンダーによってユーザに提供されるかまたは当該技術分野において他の態様で公知であるようなストレージ、ホスト型データベース、ホスト型ウェブサーバ、ソフトウェアアプリケーション、もしくは他のサービスへの、保護されたコンピュータネットワークアクセスを含んでいてもよい。たとえば、クラウドインフラストラクチャ１０２によってインスタンス化されたサービスインスタンスは、インターネットを通した、クラウド上のリモートストレージへの、パスワードで保護されたアクセスを含み得る。別の例として、クラウドインフラストラクチャ１０２によってインスタンス化されたサービスインスタンスは、ネットワーク化された開発者による私的使用のための、ウェブサービスベースのホスト型リレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、クラウドインフラストラクチャ１０２によってインスタンス化されたサービスインスタンスは、クラウドベンダーのウェブサイト上でホストされる電子メールソフトウェアアプリケーションへのアクセスを含み得る。
【００３０】
ある実施形態では、クラウドインフラストラクチャシステム１０２は、セルフサービスで、サブスクリプションベースで、弾力的にスケーラブルで、信頼でき、高可用性で、かつ安全な態様で顧客に配信される、アプリケーション、ミドルウェア、開発サービス、およびデータベースサービス提供物一式を含んでいてもよい。クラウドインフラストラクチャサービス１０２において具現化されたような、そのようなクラウドインフラストラクチャシステムの一例は、本譲受人によって提供されるオラクル・パブリック・クラウド（Oracle Public Cloud）である。
【００３１】
クラウドインフラストラクチャシステム１０２は、異なるデプロイメントモデルを介してクラウドサービスを提供してもよい。たとえば、サービスは、クラウドインフラストラクチャシステム１０２がクラウドサービスを販売する組織によって所有され（たとえば、オラクルによって所有され）、サービスが一般大衆または異なる産業企業にとって利用可能とされる、パブリッククラウドモデルの下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム１０２が単一の組織のためにのみ動作され、その組織内の１つ以上のエンティティのためのサービスを提供し得る、プライベートクラウドモデルの下で提供されてもよい。クラウドサービスはまた、クラウドインフラストラクチャシステム１０２、およびクラウドインフラストラクチャシステム１０２によって提供されるサービスが、関連するコミュニティにおけるいくつかの組織によって共有される、コミュニティクラウドモデルの下で提供されてもよい。クラウドサービスはまた、２つ以上の異なるモデルの組合せであるハイブリッドクラウドモデルの下で提供されてもよい。
【００３２】
いくつかの実施形態では、クラウドインフラストラクチャシステム１０２によって提供されるサービスは、ソフトウェア・アズ・ア・サービス（Software as a Service：ＳａａＳ）カテゴリー、プラットフォーム・アズ・ア・サービス（Platform as a Service：ＰａａＳ）カテゴリー、インフラストラクチャ・アズ・ア・サービス（Infrastructure as a Service：ＩａａＳ）カテゴリー、または、ハイブリッドサービスを含むサービスの他のカテゴリーの下で提供される、１つ以上のサービスを含んでいてもよい。いくつかの実施形態では、クラウドインフラストラクチャシステム１０２によって提供されるサービスは、アプリケーションサービス、プラットフォームサービス、およびインフラストラクチャサービスを、何ら限定されることなく含んでいてもよい。いくつかの例では、アプリケーションサービスは、ＳａａＳプラットフォームを介して、クラウドインフラストラクチャシステム１０２によって提供されてもよい。ＳａａＳプラットフォームは、ＳａａＳカテゴリーに該当するクラウドサービスを提供するように構成されてもよい。たとえば、ＳａａＳプラットフォームは、統合された開発およびデプロイメントプラットフォーム上にオンデマンドアプリケーション一式を構築し、配信するための能力を提供してもよい。ＳａａＳプラットフォームは、ＳａａＳサービスを提供するための根底的なソフトウェアおよびインフラストラクチャを管理し、制御してもよい。ＳａａＳプラットフォームによって提供されるサービスを利用することにより、顧客は、クラウドインフラストラクチャシステム上で実行されるアプリケーションを利用できる。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、アプリケーションサービスを取得できる。さまざまな異なるＳａａＳサービスが提供されてもよい。例は、大型組織のための販売実績管理、企業統合、およびビジネス柔軟性についてのソリューションを提供するサービスを、何ら限定されることなく含む。
【００３３】
いくつかの実施形態では、プラットフォームサービスは、ＰａａＳプラットフォームを介して、クラウドインフラストラクチャシステム１０２によって提供されてもよい。ＰａａＳプラットフォームは、ＰａａＳカテゴリーに該当するクラウドサービスを提供するように構成されてもよい。プラットフォームサービスの例は、（オラクルなどの）組織が共有の共通アーキテクチャ上で既存のアプリケーションを統合できるようにするサービスと、プラットフォームによって提供される共有のサービスを活用する新しいアプリケーションを構築するための能力とを、何ら限定されることなく含んでいてもよい。ＰａａＳプラットフォームは、ＰａａＳサービスを提供するための根底的なソフトウェアおよびインフラストラクチャを管理し、制御してもよい。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、クラウドインフラストラクチャシステム１０２によって提供されるＰａａＳサービスを取得できる。プラットフォームサービスの例は、オラクルＪａｖａ（登録商標）クラウド・サービス（Java Cloud Service：ＪＣＳ）、オラクル・データベース・クラウド・サービス（Database Cloud Service：ＤＢＣＳ）などを、何ら限定されることなく含む。
【００３４】
ＰａａＳプラットフォームによって提供されるサービスを利用することにより、顧客は、クラウドインフラストラクチャシステム１０２によってサポートされるプログラミング言語およびツールを採用するとともに、デプロイメントされたサービスを制御することができる。いくつかの実施形態では、クラウドインフラストラクチャシステム１０２によって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス（たとえば、オラクル・フュージョン・ミドルウェア（Oracle Fusion Middleware）サービス）、およびＪａｖａクラウドサービスを含んでいてもよい。一実施形態では、データベースクラウドサービスは、組織がデータベースリソースをプールし、データベースクラウドの形をしたデータベース・アズ・ア・サービスを顧客に提供することを可能にする共有のサービスデプロイメントモデルをサポートしてもよい。ミドルウェアクラウドサービスは、顧客がさまざまなビジネスアプリケーションを開発してデプロイメントするためのプラットフォームを提供してもよく、Ｊａｖａクラウドサービスは、顧客がクラウドインフラストラクチャシステムにおいてＪａｖａアプリケーションをデプロイメントするためのプラットフォームを提供してもよい。
【００３５】
クラウドインフラストラクチャシステム１０２において、さまざまな異なるインフラストラクチャサービスが、ＩａａＳプラットフォームによって提供されてもよい。これらのインフラストラクチャサービスは、ＳａａＳプラットフォームおよびＰａａＳプラットフォームによって提供されるサービスを利用する顧客のための、ストレージ、ネットワーク、ならびに他の基礎的コンピューティングリソースなどの根底的なコンピューティングリソースの管理および制御を容易にする。
【００３６】
ある実施形態では、クラウドインフラストラクチャシステム１０２は、クラウドインフラストラクチャシステムにおけるクラウドサービス（たとえば、ＳａａＳ、ＰａａＳ、およびＩａａＳサービス）の包括的管理を提供してもよい。一実施形態では、クラウド管理機能性は、クラウドインフラストラクチャシステム１０２によって受信された顧客のサブスクリプションをプロビジョニングし、管理し、追跡するための能力などを含んでいてもよい。さまざまな実施形態では、クラウドインフラストラクチャシステム１０２は、クラウドインフラストラクチャシステム１０２によって提供されるサービスに顧客のサブスクリプションを自動的にプロビジョニングし、管理し、追跡するように適合されてもよい。顧客は、クラウドインフラストラクチャシステム１０２によって提供される１つ以上のサービスを、サブスクリプションオーダーを介してオーダーしてもよい。クラウドインフラストラクチャシステム１０２は次に、顧客のサブスクリプションオーダーにおけるサービスを提供するために処理を行なう。
【００３７】
一実施形態では、図１に示すように、クラウド管理機能性は、オーダー管理および監視モジュール１１４などの１つ以上のモジュールによって提供されてもよい。これらのモジュールは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、もしくは任意の他の適切な構成および／または組合せであり得る、１つ以上のコンピュータおよび／またはサーバを含んでいてもよく、もしくはそれらを使用して提供されてもよい。
【００３８】
例示的な動作では、クライアントコンピューティング装置１０４、１０６または１０８のうちの１つ以上といったクライアント装置を使用する顧客は、クラウドインフラストラクチャシステム１０２によって提供される１つ以上のサービスを要求することにより、クラウドインフラストラクチャシステム１０２とやりとりしてもよい。顧客は、さまざまな手段を使用して、サービス要求１３４をクラウドインフラストラクチャシステム１０２に発行してもよい。サービス要求１３４は、クラウドインフラストラクチャシステム１０２によって提供される１つ以上のサービスについてサブスクリプションオーダーを出すこと、クラウドインフラストラクチャシステム１０２によって提供される１つ以上のサービスにアクセスすること、などを含んでいてもよい。ある実施形態では、顧客は、クラウドユーザインターフェイス（User Interface：ＵＩ）であるクラウドＵＩ１３２、クラウドＵＩ１３４および／またはクラウドＵＩ１３８にアクセスし、これらのＵＩを介してサブスクリプションオーダーを出してもよい。顧客がオーダーを出したことに応答してクラウドインフラストラクチャシステム１０２が受信したオーダー情報は、顧客を識別する情報と、顧客が申し込むつもりである、クラウドインフラストラクチャシステム１０２によって提供される１つ以上のサービスを識別する情報とを含んでいてもよい。顧客によってオーダーが出された後で、オーダー情報がクラウドＵＩ１３２、１３４および／または１３８を介して受信される。
【００３９】
この例では、オーダー管理および監視モジュール１１４は、顧客から受信した情報をオーダーデータベースに送信して、顧客によって出されたオーダーを記録されるよう格納させる。オーダーデータベースは、クラウドインフラストラクチャシステム１０２によって動作され、他のシステム要素とともに動作される、いくつかのデータベースのうちの１つであり得る。オーダー管理および監視モジュール１１４は、オーダーデータベースに格納されたオーダー情報のすべてまたは一部を含む情報をオーダー管理モジュールに発送してもよい。場合によっては、オーダー管理モジュールは、オーダーを検証し、検証後にオーダーを予約するといった、オーダーに関連する請求および課金機能を行なうように構成されてもよい。
【００４０】
オーダー管理および監視モジュール１１４は、顧客によって出されたオーダーのためのサービスおよびリソースのプロビジョニングをオーケストレーションするためにオーダー情報を利用するオーダーオーケストレーションモジュールに、オーダー情報のすべてまたは一部を通信してもよい。場合によっては、オーダーオーケストレーションモジュールは、オーダープロビジョニングモジュールのサービスを使用して、申し込まれたサービスをサポートするようにリソースのプロビジョニングをオーケストレーションしてもよい。
【００４１】
ある実施形態では、オーダーオーケストレーションモジュールは、各オーダーに関連付けられたビジネスプロセスの管理を可能にし、オーダーがプロビジョニングに進むべきか否かを判断するためにビジネスロジックを適用する。新規サブスクリプションのオーダーを受信すると、オーダーオーケストレーションモジュールは、リソースを割当ててサブスクリプションオーダーを遂行するために必要とされるリソースを構成するようにという要求を、オーダープロビジョニングモジュールに送信する。オーダープロビジョニングモジュールは、顧客によってオーダーされたサービスのためのリソースの割当てを可能にする。オーダープロビジョニングモジュールは、クラウドインフラストラクチャシステム１０２によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするために使用される物理的実装層との間の抽象化のレベルを提供する。オーダーオーケストレーションモジュールはこのため、サービスおよびリソースが実際にオンザフライでプロビジョニングされるか否か、または予めプロビジョニングされて要求時にのみ割当てられるか否かといった実装詳細から切り離されてもよい。
【００４２】
ある実施形態では、オーダー管理および監視モジュール１１４は、顧客のサブスクリプションオーダーを管理し、追跡する。場合によっては、オーダー管理および監視モジュール１１４は、顧客に関連付けられた、プロビジョニングされた任意のサービスおよび／またはリソースを示す情報を受信してもよい。オーダー管理および監視モジュール１１４は、使用されるストレージの量、転送されるデータの量、ユーザの数、システムアップタイムおよびシステムダウンタイムの量といった、サブスクリプションオーダーにおけるサービスについての使用統計を収集するように構成されてもよい。
【００４３】
上述の例でサービスおよびリソースがいったんプロビジョニングされると、提供されるサービスおよび／またはリソースについて顧客に通知するサービス結果１３８が、クライアントコンピューティング装置１０４、１０６、および／または１０８上の顧客に送信されてもよい。サービス要求１３０が、サービスにアクセスするようにという要求、またはサービスに１つ以上の動作を行なわせるようにという要求を含む場合、要求されたアクセスまたは任意の動作の結果、行なわれたサービス、または要求されたデータを提供するサービス結果１３８が、クライアントコンピューティング装置１０４、１０６、および／または１０８上の顧客に送信されてもよい。
【００４４】
ある実施形態では、クラウドインフラストラクチャシステム１００は、アイデンティティ管理モジュール１１４を含んでいてもよい。アイデンティティ管理モジュール１１４は、クラウドインフラストラクチャシステム１０２においてアクセス管理および認証サービスなどのアイデンティティサービスを提供するように構成されてもよい。いくつかの実施形態では、アイデンティティ管理モジュール１１４は、クラウドインフラストラクチャシステム１０２によって提供されるサービスを利用したい顧客についての情報を制御してもよい。そのような情報は、そのような顧客のアイデンティティを認証する情報と、さまざまなシステムリソース（たとえば、ファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど）に対してそれらの顧客がどのアクションを行なうことが認可されているかを記述する情報とを含み得る。アイデンティティ管理モジュール１１４はまた、各顧客についての記述的情報と、その記述的情報が誰によってどのようにアクセスされ、修正され得るかについての記述的情報との管理を含んでいてもよい。
【００４５】
ある実施形態では、クラウドインフラストラクチャシステム１０２はまた、クラウドインフラストラクチャシステム１０２の顧客にさまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース１１６を含んでいてもよい。一実施形態では、インフラストラクチャリソース１１６は、ＰａａＳプラットフォームおよびＳａａＳプラットフォームによって提供されるサービスを実行するために、サーバ、ストレージ、およびネットワーキングリソースといったハードウェアの予め統合され最適化された組合せを含んでいてもよい。
【００４６】
いくつかの実施形態では、クラウドインフラストラクチャシステム１０２におけるリソースは、複数のユーザによって共有され、要望ごとに動的に再割当てされてもよい。加えて、リソースは、異なる時間帯におけるユーザに割当てられてもよい。たとえば、クラウドインフラストラクチャシステム１０２は、第１の時間帯における第１の一組のユーザが、特定数の時間、クラウドインフラストラクチャシステムのリソースを利用することを可能にし、次に、異なる時間帯に位置する別の一組のユーザへの同じリソースの再割当てを可能にして、それによりリソースの利用を最大化してもよい。
【００４７】
ある実施形態では、クラウドインフラストラクチャシステム１０２の異なるコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム１０２が提供するサービスによって共有される、多くの内部共有サービス１１８が提供されてもよい。これらの内部共有サービス１１８は、セキュリティおよびアイデンティティサービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウィルススキャニングおよびホワイトリストサービス、高可用性、バックアップおよび復元サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを、何ら限定されることなく含んでいてもよい。
【００４８】
ある実施形態では、クラウドインフラストラクチャシステム１０２の異なるコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム１０２が提供するサービスによって共有される、多くの外部共有サービス１２０が提供されてもよい。これらの外部共有サービス１２０は、セキュリティおよびアイデンティティサービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウィルススキャニングおよびホワイトリストサービス、高可用性、バックアップおよび復元サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを、何ら限定されることなく含んでいてもよい。
【００４９】
さまざまな実施形態では、外部共有サービス１２０は、アクセス、データ変換、自動化などを企業コンピュータシステム１２６に提供する１つ以上のコンポーネントを含んでいてもよい。企業コンピュータシステム１２６へのアクセスは、クラウドインフラストラクチャシステム１０２の異なるコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム１０２が提供するサービスによって、共有されてもよい。いくつかの実施形態では、企業コンピュータシステム１２６へのアクセスは、１人以上のサブスクライバに制限される、クラウドインフラストラクチャシステム１０２が提供するサービスインスタンスによって、共有されてもよい。
【００５０】
さらなる実施形態では、外部共有サービス１２０は、クラウドインフラストラクチャシステム１０２の異なるコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム１０２が提供するサービスによって共有される、外部アプリケーションプログラミングインターフェイス（application programming interface：ＡＰＩ）サービス１２８を含んでいてもよい。これらの外部ＡＰＩサービス１２８は、他の第三者サービスまたはエンティティによって提供されるＡＰＩを、何ら限定されることなく含んでいてもよい。
【００５１】
クラウドインフラストラクチャシステム１０２では、モバイルクラウドサービス（mobile cloud service：ＭＣＳ）１２２によって、さまざまな異なるモバイルクラウドサービスが提供されてもよい。この発明のいくつかの実施形態によれば、ＭＣＳ１２２は、モバイルコンピューティング装置と企業コンピュータシステム（たとえば、企業コンピュータシステム１２４および１２６）との間の通信を容易にする。ＭＣＳ１２２は、企業データおよび認証情報を格納するために使用される１つ以上のメモリ記憶装置「（「ローカルストレージ」）を含んでいてもよい。企業データは、企業コンピュータシステム１２６から、あるいはクライアントコンピューティング装置１０４、１０６、または１０８から受信されてもよく、もしくは、クラウドインフラストラクチャシステム１０２によって変換された企業データを含んでいてもよく、もしくはそれらの組合せであってもよい。認証情報は、アイデンティティ管理システム１１６から受信されてもよく、および／または、クラウドインフラストラクチャシステム１０２によって生成されてもよい。いくつかの実施形態では、認証情報は、サービスについての要求に関するユーザのセキュリティ認証を示す情報を含んでいてもよい。
【００５２】
企業コンピュータシステム１２６などの企業コンピュータシステムは、クラウドインフラストラクチャシステム１０２のファイアウォールを越えて、クラウドインフラストラクチャシステム１０２とは異なる地理的場所（たとえば、リモートの地理的場所）に物理的に位置していてもよい。いくつかの実施形態では、企業コンピュータシステム１２６は、１つ以上の異なるコンピュータまたはサーバを含んでいてもよい。いくつかの実施形態では、企業コンピュータシステム１２６は、単一のコンピュータシステムの一部であってもよい。
【００５３】
ある実施形態では、企業コンピュータシステム１２６は、１つ以上の異なるプロトコルを使用して、クラウドインフラストラクチャシステム１０２と通信してもよい。企業コンピュータシステム１２６の各々は、異なる通信プロトコルを使用して、クラウドインフラストラクチャシステム１０２と通信してもよい。企業コンピュータシステム１２６は、同じまたは異なるセキュリティプロトコルをサポートしてもよい。いくつかの実施形態では、ＭＳＣ１１１２は、企業コンピュータシステム１２６との通信を扱うためのエージェントシステムを含んでいてもよい。
【００５４】
プロトコルは、ＳＰＤＹなどの通信プロトコルを含んでいてもよい。プロトコルは、ＨＴＴＰベースのプロトコルなどのアプリケーションプロトコルを含んでいてもよい。いくつかの実施形態では、企業コンピュータシステム１２６は、ＲＥＳＴまたはＳＯＡＰ通信プロトコルを使用して、クラウドインフラストラクチャシステム１０２と通信してもよい。たとえば、ＲＥＳＴプロトコルは、ＵＲＩまたはＵＲＬを含むフォーマットをサポートしてもよい。ＲＥＳＴプロトコルを使用する通信のためにフォーマットされた企業データは、ＪＳＯＮ、コンマ区切り形式（comma-separated values：ＣＳＶ）、およびリアリー・シンプル・シンジケーション（really simple syndication：ＲＳＳ）などのデータフォーマットに容易に変換されてもよい。企業コンピュータシステム１２６とクラウドインフラストラクチャシステム１０２とは、リモート・プロシージャ・コール（remote procedure call：ＲＰＣ）（たとえばＸＭＬ  ＲＰＣ）などの他のプロトコルを使用して通信してもよい。
【００５５】
いくつかの実施形態では、ＭＣＳ１２２は、クラウドインフラストラクチャサービス１０２によって提供される１つ以上のサービスとの通信をサポートするように構成されたアダプタインターフェイスを含んでいてもよく、それらのサービスのうちのいくつかは、通信用の異なるプロトコルまたは手法をサポートしてもよい。いくつかの実施形態では、ＭＣＳ１２２は、企業コンピュータシステム１２６との通信をサポートするように構成されたアダプタインターフェイスを含んでいてもよく、企業コンピュータシステム１２６のうちのいくつかは、通信用の異なるプロトコルまたは手法をサポートしてもよい。ＭＣＳ１２２は、通信プロトコル、企業コンピュータシステムのタイプ、アプリケーションのタイプ、サービスのタイプ、またはそれらの組合せに従って通信するように各々構成され得る１つ以上のアダプタを含んでいてもよい。アダプタによってサポートされる通信プロトコルは、サービスに、または企業コンピュータシステム１２６のうちの１つ以上に特有のものであってもよい。
【００５６】
ある実施形態では、クライアントコンピューティング装置１０４、１０６、および１０８は各々、ＭＣＳ１２２と通信するための特定のユーザインターフェイスを提供できるアプリケーションを実装してもよい。特定のＵＩが、特定の通信プロトコルを使用して通信するように構成されてもよい。いくつかの実施形態では、特定のＵＩが、ＭＣＳ１２２と通信するために呼び出され得る、呼出し可能インターフェイス、機能、ルーチン、方法、および／または動作を含んでいてもよい。特定のＵＩは、企業データのために、および／またはサービスを要求するために、クラウドインフラストラクチャサービス１０２によって提供されるサービスと通信するためのパラメータ、または企業コンピュータシステム１２６と通信するためのパラメータを、入力として受け入れてもよい。いくつかの実施形態では、ＭＣＳ１２２を通した通信は、カスタム通信プロトコルを使用する通信のために変換されてもよい。いくつかの実施形態では、特定のＵＩが、アプリケーションにおけるカスタムクライアントに対応していてもよい。
【００５７】
ＭＣＳ１２２は、１つ以上の呼出し可能インターフェイス、たとえばアプリケーションプログラミングインターフェイス（ＡＰＩ）を含んでいてもよい。ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスは、モバイルコンピューティング装置上のアプリがＭＣＳ１２２に要求を通信することを可能にしてもよい。ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスは共通または標準インターフェイスをサポートしてもよく、それは、パラメータを含む要求が、標準化プロトコル、アーキテクチャスタイル、および／またはフォーマット（たとえばＲＥＳＴプロトコル）に従って、アプリから受信されることを可能にしてもよい。ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスは、コンピューティング装置１０４、１０６、または１０８のうちのいずれか１つのユーザによって構成可能であってもよい。ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスは、通信プロトコルに従って、サービスについての要求を受信してもよい。装置アプリケーション開発者らは、自身のカスタムアプリケーションのためにＭＣＳ１２２に接続することができる。いくつかの実施形態では、ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスは、アプリを開発したのと同じ人によって構成され、その人が、ＭＣＳ１２２と通信するためのカスタムアプリを実現できるようになっていてもよい。
【００５８】
ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスはさらに、企業コンピュータシステム１２６が、標準化プロトコルまたはフォーマットに従ってＭＣＳ１２２と通信することを可能にしてもよい。アプリケーション開発者らと同様に、企業コンピュータシステムを管理する人は、１つ以上の呼出し可能インターフェイスを介してＭＣＳ１２２と通信するように構成されたコード（たとえばエージェントシステム）を実現することができる。ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスは、コンピューティング装置のタイプ、企業コンピュータシステムのタイプ、アプリ、エージェントシステム、サービス、プロトコル、または他の基準に基づいて実現されてもよい。いくつかの実施形態では、ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスは、認証、圧縮、暗号化、カーソルを用いたページネーション、クライアントベースのスロットリング、否認不可、ロギング、およびメトリクス収集を含むサービスについての要求をサポートしてもよい。いくつかの実施形態では、ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスは、認証、ポリシー実施、応答のキャッシング、ＭＣＳ１２２への呼出しのスロットリング、非同期パターンと同期パターンとの間の変換、根底的なサービスへの呼出しのロギング、またはそれらの組合せ、といったカスタムビジネス関連サービスのために実現されてもよい。いくつかの実施形態では、ＭＣＳ１２２に関連付けられた呼出し可能インターフェイスは、ユーザが、クラウドインフラストラクチャシステム１０２による実現のためにカスタムコードをロードすることを可能にしてもよい。カスタムコードは、クラウドインフラストラクチャシステム１０２のために、ＭＣＳ１２２に関連付けられた１つ以上の呼出し可能インターフェイスを実現してもよく、それは、ユーザがカスタムサービスまたは他の企業コンピュータシステムにアクセスすることを可能にできる。
【００５９】
ＭＣＳ１２２に関連付けられたプロトコルトランスレータは、メッセージを処理して、メッセージ用の通信プロトコルを判断し、および／またはメッセージを宛先用の通信プロトコルに変換してもよい。ＭＣＳ１２２に関連付けられたプロトコルトランスレータは、クライアントコンピューティング装置１０４、１０６、または１０８から受信された要求を変換してもよい。要求は、クライアントコンピューティング装置１０４、１０６、または１０８によってサポートされる通信プロトコルのフォーマットから、クラウドインフラストラクチャサービス１０２または企業コンピュータシステム１２６によって提供されるサービスによってサポートされる通信プロトコルのフォーマットに変換されてもよい。ＭＣＳ１２２に関連付けられたプロトコルトランスレータは、クラウドインフラストラクチャサービス１０２または企業コンピュータシステム１２６によって提供されるサービスから受信された応答を変換してもよい。応答は、クラウドインフラストラクチャサービス１０２または企業コンピュータシステム１２６によって提供されるサービスによってサポートされる通信プロトコルのフォーマットから、クライアントコンピューティング装置１０４、１０６、または１０８によってサポートされる通信プロトコルのフォーマットに変換されてもよい。
【００６０】
ＭＣＳ１２２に関連付けられたセキュリティサービスは、クライアントコンピューティング装置１０４、１０６、または１０８のうちのいずれかから受信された要求についてのセキュリティ認証を管理してもよい。ＭＣＳ１２２に関連付けられたセキュリティサービスは、顧客プロセスおよび企業データの保全性を保護してもよい。システムまたはデータが損なわれないようにするために、クライアントコンピューティング装置１０４、１０６、または１０８から要求が受信されると、セキュリティ認証が起こってもよい。セキュリティ認証は、クラウドインフラストラクチャシステム１０２による処理のために要求が発送される前に行なわれてもよい。あるユーザについて判断されたセキュリティ認証は、モバイルコンピューティング装置に関連付けられたユーザが、ＭＣＳ１２２を介してサービスを要求するための認証を有することを可能にしてもよい。セキュリティ認証は、ユーザが、ＭＣＳ１２２を介して要求された異なる要求および／またはサービスについて認証するための労力を減少させてもよい。ＭＣＳ１２２に関連付けられたセキュリティサービスは、要求のセキュリティを認証するさまざまな動作を行なうように構成された１つ以上の機能ブロックまたはモジュールとして実現されてもよい。
【００６１】
ＭＣＳ１２２に関連付けられた認証サービスは、クライアントコンピューティング装置１０４、１０６、または１０８から受信された要求についてのセキュリティ認証を管理してもよい。ＭＣＳ１２２に関連付けられた認証サービスは、ＭＣＳ１２２に要求を送信するコンピューティング装置に関連付けられたユーザについてセキュリティ認証を判断してもよい。セキュリティ認証は期間に基づいて判断されてもよく、期間は、アプリの動作（たとえば、アプリの起動）、要求、コンピューティング装置、企業コンピュータシステム、要求に関連する他の基準、またはそれらの組合せに結び付けられてもよい。セキュリティ認証は、個々の要求、１つ以上の企業コンピュータシステム、特定のサービス、サービスのタイプ、ユーザ、コンピューティング装置、セキュリティ認証を判断するための他の基準、またはそれらの組合せ、などのうちのいずれか１つについて、検証され付与されてもよい。いくつかの実施形態では、クラウドインフラストラクチャシステム１０２は、企業コンピュータシステム、または企業コンピュータシステムをサポートする認証システムから受信されたユーザの認証情報を格納してもよい。クラウドインフラストラクチャシステム１０２は、要求に関連付けられたユーザのアイデンティティがそのような要求を行なう認可を有するかどうかを判断するためにルックアップ機能を行なうことによって、認証を判断してもよい。格納された認証情報は、ユーザがアクセスすることを認可され得る、要求、機能、企業コンピュータシステム、企業データなどのタイプといった情報を含んでいてもよい。いくつかの実施形態では、インフラストラクチャシステム１０２は、認証を判断するために、要求元のコンピューティング装置との通信を起動してもよい。
【００６２】
いくつかの実施形態では、セキュリティ認証は、サービスを要求するユーザに関連付けられた役割に基づいて判断されてもよい。役割は、ＭＣＳ１２２へのアクセスを要求するユーザに関連付けられてもよい。いくつかの実施形態では、ユーザは、ＭＣＳ１２２によって提供されるリソースおよび／またはサービスへのアクセスを付与され得るＭＣＳ１２２のサブスクライバまたはテナントとして、サービスを要求してもよい。認証は、ユーザがサブスクライバとしてＭＣＳ１２２を介してサービスを要求することが認可され得るように、ＭＣＳ１２２へのユーザのサブスクリプションに対応していてもよい。いくつかの実施形態では、サブスクリプションは、ＭＣＳ１２２によって提供される特定の一組のリソースに限定されてもよい。セキュリティ認証は、ＭＣＳ１２２のユーザがアクセス可能なリソースおよび／またはサービスに基づいていてもよい。いくつかの実施形態では、「実行時環境」と呼ばれる実行中に、要求にテンプレートがプロビジョニングされてもよい。実行時環境は、要求、ユーザ、または装置に割当てられるリソースに関連付けられてもよい。
【００６３】
いくつかの実施形態では、ＭＣＳ１２２に関連付けられた認証サービスは、アイデンティティ管理システムに、ユーザについてセキュリティ認証を判断するよう要求してもよい。アイデンティティ管理システムは、クラウドインフラストラクチャシステム１０２によって（たとえばアイデンティティ管理１１４として）実現されてもよく、または、クラウドインフラストラクチャシステム１０２の外部の別のコンピュータシステムによって実現されてもよい。アイデンティティ管理１１６は、ＭＣＳ１２２にアクセスするためのユーザの役割またはサブスクリプションに基づいて、ユーザのセキュリティ認証を判断してもよい。役割またはサブスクリプションには、企業コンピュータシステム、企業コンピュータシステムによって提供されるサービス、企業コンピュータシステムの機能または特徴、企業コンピュータシステムへのアクセスを制御するための他の基準、またはそれらの組合せに対する特権および／または権利が割当てられてもよい。
【００６４】
クラウドインフラストラクチャシステム１０２では、アプリケーション開発フレームワーク（application development framework：ＡＤＦ）１２４によって、さまざまな異なるアプリケーション開発フレームワーク（ＡＤＦ）が提供されてもよい。ＡＤＦ１２４は、アジャイルなＳＯＡベースのアプリケーションを実装するためにインフラストラクチャコードを提供する。ＡＤＦ１２４はさらに、１つ以上の開発ツール（たとえば、オラクルJDeveloper 11g開発ツール）を通して、開発への視覚的および宣言的アプローチを提供する。ＡＤＦ１２４によって提供される１つ以上のフレームワークは、モデル・ビュー・コントローラデザインパターンを実装してもよい。そのようなフレームワークは、ＭＶＣアーキテクチャのすべての層を、オブジェクト／リレーショナルマッピング、データ持続性、再使用可能なコントローラ層、リッチなウェブユーザインターフェイスフレームワーク、ＵＩへのデータ結合、セキュリティおよびカスタム化などのエリアに対する解決策でカバーする統合的解決策を提供する。コアウェブベースのＭＶＣアプローチを超えて、そのようなフレームワークはまた、オラクルＳＯＡおよびウェブセンターポータル（WebCenter Portal）フレームワークと統合されて、完全な複合アプリケーションの作成を簡略化する。
【００６５】
ある実施形態では、ＡＤＦ１２４は、クラウドインフラストラクチャシステム１０２によって提供されるビルトインビジネスサービスにサービスインターフェイスを結合することによって、サービスとしてデータを公開するアジャイルなアプリケーションを開発することを容易にする。ビジネスサービス実装詳細のこの分離は、ＡＤＦ１２４においてメタデータを介して行なわれる。このメタデータ駆動型アーキテクチャの使用により、アプリケーション開発者らは、サービスがどのようにアクセスされるかの詳細にではなく、ビジネスロジックおよびユーザ体験に集中できるようになる。ある実施形態では、ＡＤＦ１２４は、サービスの実装詳細を、モデル層におけるメタデータに格納する。これにより、開発者らは、ユーザインターフェイスを修正することなくサービスを交換できるようになり、アプリケーションが非常にアジャイルになる。加えて、ユーザインターフェイスを作成する開発者は、ビジネスサービスアクセス詳細に悩まされる必要がない。代わりに、開発者らは、アプリケーションインターフェイスおよびやりとりロジックの開発に集中することができる。ユーザ体験を作り出すことは、ビジュアルページデザイナ上に所望のビジネスサービスをドラッグアンドドロップし、どのタイプのコンポーネントがそのデータを表わすべきかを示すのと同じくらい単純であり得る。
【００６６】
さまざまな実施形態では、開発者らはＡＤＦ１２４とやりとりして、企業アプリケーションを形成するモジュールを作成する。企業アプリケーションは、クラウドインフラストラクチャシステム１０２のコンテキスト内で実行され得る。さまざまな実施形態では、開発者らはＡＤＦ１２４とやりとりして、モバイルアプリケーションを形成するモジュールを作成する。モバイルアプリケーションは、クラウドインフラストラクチャシステム１０２のコンテキスト内で実行され得る。以下に説明されるこの発明の特徴は、ここに提供される開示を読むことによって当業者には明らかであるように、プログラミング言語とアプリケーション開発フレームワークとの任意の所望の組合せを使用して実現されてもよい。
【００６７】
ＡＤＦ１２４によって提供される１つ以上のフレームワークは、一例ではオラクルＡＤＦとして具現化され得る。したがって、ＡＤＦ１２４におけるフレームワークは、モデル・ビュー・コントローラ（Model-View-Controller：ＭＶＣ）デザインパターンに基づき得る。ＭＶＣアプリケーションは、１）データソースとのやりとりを扱い、ビジネスロジックを実行するモデル層と、２）アプリケーションユーザインターフェイスを扱うビュー層と、３）アプリケーションフローを管理し、モデル層とビュー層との間のインターフェイスとして作用するコントローラとに分離される。これら３つの層にアプリケーションを分離することは、アプリケーション間にわたるコンポーネントの保守および再使用を簡略化する。各層の他の層からの独立は、緩く結合されたサービス指向アーキテクチャ（Service Oriented Architecture：ＳＯＡ）をもたらす。
【００６８】
さまざまな実施形態では、ＡＤＦ１２４は、開発者らがアプリケーションを多層の形で作成することを可能にするツールおよびリソースを提供し、各層は、予め定義された仕様に従って所望のロジックを実現するコードモジュール／ファイルを含む。このため、一実施形態では、ＡＤＦ１２４は、アプリケーションが、アプリケーションのユーザインターフェイスを提供するコードモジュール／ファイルを含むビュー層と、アプリケーションのフローを制御するコードモジュールを含むコントローラ層と、根底的なデータのための抽象化層を提供するデータ／コードモジュールを含むモデル層と、さまざまなソースからのデータへのアクセスを提供し、ビジネスロジックを扱うコードモジュールを含むビジネスサービス層という４つの層として開発されることを可能にする。
【００６９】
ある実施形態では、ＡＤＦ１２４は、開発者らに、層の各々を実装する際に自分たちが使用したい技術を選択させる。ＥＪＢ、ウェブサービス（Web Services）、ＪａｖａＢｅａｎｓ、ＪＰＡ／エクリプスリンク（EclipseLink）／トップリンク（TopLink）オブジェクト、および他の多くがすべて、ＡＤＦ１２４のためのビジネスサービスとして使用可能である。ビュー層は、ＪＳＦ、デスクトップスイング（Desktop Swing）アプリケーション、およびＭＳオフィスフロントエンドを用いて実現されるウェブベースのインターフェイスと、モバイル装置のためのインターフェイスとを含み得る。
【００７０】
一局面では、ビュー層は、開発中のアプリケーションのユーザインターフェイスを表わす。ビュー層は、デスクトップビュー、モバイルビュー、およびブラウザベースのビューを含んでいてもよく、それらの各々はユーザインターフェイスのすべてまたは一部を提供するとともに、ビュータイプに対応するさまざまな態様でアクセス可能である。たとえば、ウェブページが、対応するＵＲＬを含むクライアント要求を受信することに応答して、アプリケーションによって送信されてもよい。ウェブページは次に、要求元クライアントシステムに関連付けられた表示部（図示せず）上にブラウザによって表示されてもよく、それにより、要求元クライアントシステムのユーザが企業アプリケーションとやりとりすることを可能にする。ＡＤＦ１２４は、ビジネスサービスの再使用を可能にするビジネスサービスへのマルチチャネルアクセスと、ウェブクライアント、クライアント・サーバ・スイングデスクトップベース・アプリケーション（client-server swing desktop-based application）、マイクロソフトエクセルスプレッドシート、スマートフォンなどのモバイル装置、などからのアクセスとをサポートする。
【００７１】
（ウェブページなどの）ビュー層を形成するコードファイル／モジュールは、ハイパーテキストマークアップ言語（hypertext markup language：ＨＴＭＬ）、Ｊａｖａサーバページ（Java server page：ＪＳＰ）、およびＪａｖａサーバフェイス（ＪＳＦ）のうちの１つ以上を使用して実現されてもよい。それに代えて、ユーザインターフェイスは、スイング（Swing）などのＪａｖａコンポーネントおよび／または拡張マークアップ言語（extensible markup language：ＸＭＬ）を使用して実現されてもよい。さらに示されるように、ユーザインターフェイスは、マイクロソフトによるワードおよびエクセルなどのデスクトップアプリケーションについてのユーザの経験および習熟を活用してもよい。
【００７２】
上述のように、ユーザが開発した関連するコード／データモジュールが、層の各々において提供される。しかしながら、各層は典型的には、ＡＤＦ１２４によって提供される他の予め定義されたコード／データモジュールを含む。予め定義されたモジュールのうちのいくつかは、たとえば、ウェブページを開発するためのテンプレート、開発されたコードに所望の機能性を含めるためのテンプレートなどとして、開発中に使用されてもよい。（ＵＲＬ書換モジュールなどの）他の予め定義されたモジュールが、開発されたアプリケーションとともにデプロイメントされてもよく、企業アプリケーションの実行中に追加の機能性（要求されたＵＲＬの、内部名へのマッピング）をユーザに提供してもよい。
【００７３】
コントローラ層は、アプリケーションのフローを制御するコードモジュール／ファイルを含む。各コントローラオブジェクトは、ビュー層において情報を提示する所望の態様に従って実現されたソフトウェア命令および／またはデータを含む。所望の態様は、別のウェブページにおけるリンクがユーザによってクリック／選択されると表示される特定のウェブページ、実行中にエラーが起こると表示される、格納／検索すべき特定のデータを示すページなどを含んでいてもよい。
【００７４】
一局面では、コントローラ層はアプリケーションフローを管理し、ユーザ入力を扱う。たとえば、ページ上でサーチボタンがクリックされると、コントローラは、どのアクションを行なうべきか（サーチを行なう）と、どこにナビゲートすべきか（結果ページ）とを判断する。JDeveloperでは、ウェブベースのアプリケーションについて、標準のＪＳＦコントローラ、またはＪＳＦコントローラ機能性を拡張するＡＤＦコントローラという２つのコントローラオプションがある。どちらのコントローラが使用されても、アプリケーションフローは典型的には、ページおよびナビゲーションルールをダイアグラム上にレイアウトすることによってデザインされる。アプリケーションのフローは、より小さい、再使用可能なタスクフローに分割可能であり、方法コールおよび決定ポイントなどの非視覚的コンポーネントをフローに含めることでき、単一の含有ページの領域内で実行される「ページフラグメント」フローを作成することができる。
【００７５】
コントローラ層を形成するコードモジュール／ファイルはしばしば、クライアント要求を受信するととともに対応する応答として所望のウェブページを送信するＪａｖａサーブレットとして実現される。コントローラオブジェクトはまた、たとえば、アパッチジャカルタストラット（Apache Jakarta Struts）コントローラとして、またはＪＳＦ規格に従って実現されてもよい。
【００７６】
モデル層は、図示されるように、さまざまなビジネスサービスを、それらを他の層で使用するオブジェクトに、たとえば上述のコントローラオブジェクトに、または直接デスクトップアプリケーションに接続する、データ／コードモジュールを含む。モデル層の各抽象データオブジェクトは、任意のタイプのビジネスサービスにアクセスするために使用可能である対応するインターフェイスを提供し、根底的なビジネスサービス層で実行される。データオブジェクトは、クライアントからサービスのビジネスサービス実装詳細を抽象化し、および／または、データ制御方法／属性をビューコンポーネントに公開してもよく、ビュー層とデータ層との分離を提供する。
【００７７】
一局面では、モデル層は、データ制御およびデータ結合という２つのコンポーネントからなり、それらは、インターフェイスを定義するためにメタデータファイルを利用する。データ制御は、クライアントからビジネスサービス実装詳細を抽象化する。データ結合は、データ制御方法および属性をＵＩコンポーネントに公開し、ビューとモデルとのクリーンな分離を提供する。モデル層のメタデータアーキテクチャにより、開発者らは、任意のタイプのビジネスサービス層実装をビュー層およびコントローラ層に結合する際に、同じ開発経験を得る。
【００７８】
ある実施形態では、ＡＤＦ１２４は、開発プロセス全体にわたって宣言的プログラミングパラダイムの使用を強調して、ユーザが、実現詳細に手をつける必要なく、アプリケーション作成のロジックに集中できるようにする。高レベルでは、フュージョン（Fusion）ウェブアプリケーションのための開発プロセスは通常、アプリケーションワークスペースを作成することを伴う。ウィザードを使用して、開発者が選択した技術にとって必要なライブラリおよび構成が自動的に追加され、アプリケーションが、パッケージおよびディレクトリを有するプロジェクトへと構造化される。
【００７９】
データベースオブジェクトをモデル化することにより、オンラインデータベースまたは任意のデータベースのオフラインレプリカが作成可能であり、定義が編集可能であり、スキーマが更新可能である。ＵＭＬモデラーを使用して、使用事例が次に、アプリケーションのために作成可能である。アプリケーション制御およびナビゲーションもデザイン可能である。アプリケーション制御およびナビゲーションのフローを視覚的に判断するために、ダイアグラマ（diagrammer）が使用可能である。次に、フローを記述する根底的なＸＭＬファイルが自動的に作成可能である。開発者が、インポートされたライブラリを、アプリケーションに単純にドラッグアンドドロップすることによって閲覧および使用することを可能にするために、リソースライブラリが使用可能である。データベーステーブルから、エンティティオブジェクトが、ウィザードまたはダイアログを使用して作成可能である。それらのエンティティオブジェクトから、ビューオブジェクトが、アプリケーションにおけるページによって使用されるように作成される。検証ルールおよび他のタイプのビジネスロジックが実現可能である。
【００８０】
この例では、ビジネスサービス層は、データ持続性層とのやりとりを管理する。それは、データ持続性、オブジェクト／リレーショナルマッピング、トランザクション管理、およびビジネスロジック実行などのサービスを提供する。ビジネスサービス層は、シンプルＪａｖａクラス、ＥＪＢ、ウェブサービス、ＪＰＡオブジェクト、およびオラクルＡＤＦビジネスコンポーネントといったオプションのうちのいずれかで実装可能である。加えて、データは、ファイル（ＸＭＬまたはＣＳＶ）およびＲＥＳＴから直接消費され得る。このため、各ビジネスサービスは、対応するデータ持続性層とのやりとりを管理し、また、オブジェクト／リレーショナルマッピング、トランザクション管理、ビジネスロジック実行などのサービスを提供する。ビジネスサービス層は、シンプルＪａｖａクラス、エンタープライズＪａｖａＢｅａｎｓ、ウェブサービスなどのうちの１つ以上を使用して実装されてもよい。
【００８１】
ビジネスコンポーネントは、データベース、ウェブサービス、レガシーシステム、アプリケーションサーバなどとのやりとりを提供するために、たとえばオラクルＡＤＦビジネスコンポーネントを使用して実装されるビジネスサービスを表わす。一実施形態では、ビジネスサービス層のビジネスコンポーネントは、ビジネスサービス実装を提供するために協働するアプリケーションモジュール、ビュー／クエリオブジェクト、およびエンティティオブジェクトの混合を含む。アプリケーションモジュールは、アプリケーション／トランザクションデータと連携するためにＵＩクライアントが通信するトランザクションコンポーネント／コードモジュールであり得る。アプリケーションモジュールは、更新可能なデータモデルを提供してもよく、また、ユーザトランザクションに関する手順／機能（一般にサービス方法と呼ばれる）を提供してもよい。
【００８２】
エンティティオブジェクトは、データベーステーブルにおける対応する行を表わしてもよく、対応する行に格納されたデータの操作（更新、削除など）を簡略化する。エンティティオブジェクトはしばしば、所望のビジネスルールが一貫して実施されることを確実にするために、対応する行のためのビジネスロジックをカプセル化する。エンティティオブジェクトはまた、根底的なデータベースに格納された行間に存在する関係を反映するように、他のエンティティオブジェクトに関連付けられてもよい。
【００８３】
ＪＳＯＮスタイルシート言語変換
図２は、一実施形態において、ＪＳＯＮデータを変換するためのワークフロー２００の簡略ブロック図である。ワークフロー２００では、入力ＪＳＯＮデータ２１０が、ＪＳＬ  ＡＰＩ２２０で受信される。（同様にＪＳＯＮ文書である）ＪＳＬ２３０が、ＪＳＬ  ＡＰＩ２２０で受信される。ＪＳＬ  ＡＰＩ２２０は、入力ＪＳＯＮデータ２１０およびＪＳＬ２３０に基づいて、変換ＪＳＯＮデータ２４０を生成する。
【００８４】
この例示的な実施形態では、一般に、入力ＪＳＯＮデータ２１０は、オブジェクトまたはデータの一部の論理構造を特定するＪＳＯＮ文書である。入力ＪＳＯＮデータ２１０の論理構造は、１つ以上のＪＳＯＮスキーマに従って定義されてもよい。
【００８５】
ＪＳＬ２３０もＪＳＯＮ文書である。プロセッサ（たとえばＪＳＬ  ＡＰＩ２２０）は、ＪＳＬ２３０のＪＳＬ（JSON StyleSheet Language）を理解し、入力ＪＳＯＮデータ２１０に１つ以上の特定された変換を適用することができる。これは、ＸＭＬに変換を適用するために使用されるＸＳＬＴと同様である。ＪＳＬの主な利点のうちの１つは、ユーザが他の言語の仕様に精通する必要がない、ということである。これは、ＸＭＬ変換を定義するＸＳＬと同様に、ＪＳＬ自体がＪＳＯＮデータフォーマットで書かれているためである。
【００８６】
市場には、ＪＳＯＮデータを変換する多くの変換ツールがある。しかしながら、これらのツールの多くは別の言語で書かれており、それはユーザが扱うことを困難にする。たとえば、JsonTは、ＸＭＬ界におけるＸＳＬＴと同様に、ＪＳＯＮ状構造を変換するための言語である。この実装は、ＪＳＬほど単純明快ではない。別の例では、json2jsonは、CoffeeScriptで書かれており、Node.js環境で実行されるように設計されている。この実装の欠点は、変換用のテンプレートファイルを作成するために、ユーザがCoffee言語を学ばなければならない、ということである。しかしながら、ＪＳＬでは、ユーザが変換用に特定するテンプレートはＪＳＯＮで書かれている。
【００８７】
さまざまな実施形態では、ＪＳＬ２３０は、ＪＳＬ仕様に従って定義される。ＪＳＬは、入力ＪＳＯＮデータ２１０の変換を実現するようにプロセッサを構成するキーワードを含み得る。一局面では、入力ＪＳＯＮデータ２１０における特定されたキーについての値をどのように表わすかをプロセッサに命令するために、“value”というキーワードが、ＪＳＬファイルにおいて提供される。“value”というキーワードは値で定義されてもよい。一実施形態では、値は、入力ＪＳＯＮデータ２１０におけるキーの語彙経路を示す語彙文字列であり得る。この経路は“root”というキーワードで始まることができ（たとえば、root.employee.id）、ここでemployeeはオブジェクトであり、idは文字列値属性である。
【００８８】
別の実施形態では、値は、値と考えられる、シングルクォーテションマーク間に定義された任意のテキストを示すテキスト文字列であってもよい。さらに別の実施形態では、値は、語彙／テキスト文字列とそれらに対して定義された算術／文字列／論理演算との組合せを示す演算文字列であってもよい。たとえば、“concat(root.employee.id,‘abc’)”は、idフィールドの値が、変換ＪＳＯＮデータ２４０に挿入されると、文字列‘abc’と連結されることになっていることを示す。
【００８９】
別の局面では、特定のキーについての値のデータタイプをどのように表わすかをプロセッサに命令するために、“type”というキーワードが、ＪＳＬファイルにおいて提供される。さまざまな実施形態では、“type”というキーワードは値で定義されてもよい。ある実施形態では、値は、整数、文字列、２倍、ブール、ヌルなどであり得る。JSONArray要素については、値は、objectarray、＜基本データタイプ＞アレイ、たとえばStringarrayなどとして特定され得る。
【００９０】
さらに別の局面では、エンティティの親の語彙経路をどのように表わすかをプロセッサに命令するために、“source”というキーワードが、ＪＳＬファイルにおいて提供される。さまざまな実施形態では、このキーワードは、アレイ要素のためにのみ定義される。さらなる局面では、１つ以上の特定条件に対して入力ＪＳＯＮデータ２１０をどのように評価するかをプロセッサに命令するために、“testexpression”というキーワードが、ＪＳＬファイルにおいて提供される。このキーワードは、どの特定のＪＳＯＮオブジェクトまたはＪＳＯＮアレイが処理されるかに基づいて式を評価するために使用され得る。その式は、ブール値を返すことができる。オブジェクトレベルでは、“testexpression”結果に基づいて、プロセッサは、変換ＪＳＯＮデータ２４０においてオブジェクトが除外されるべきか含まれるべきかを判断することができる。ノードレベルでは、“testexpression”結果に基づいて、プロセッサは、変換ＪＳＯＮデータ２４０においてノードが除外されるべきか含まれるべきかを判断することができる。
【００９１】
ある実施形態では、さまざまな変換演算がサポートされる。たとえば、文字列演算は、連結、比較、置換、部分文字列などを含み得る。算術演算は、加算、乗算、除算、減算などを含み得る。ブール演算は、true()、false()、not()などを含み得る。
【００９２】
図３は、一実施形態において、１つ以上の変換を定義するＪＳＯＮオブジェクトを使用してＪＳＯＮデータ変換を行なうための方法３００のフローチャートである。図３に示す方法３００の実現化例または方法３００における処理は、コンピュータシステムまたは情報処理装置などのロジックマシンの中央処理装置（ＣＰＵまたはプロセッサ）によって実行される場合にはソフトウェア（たとえば、命令またはコードモジュール）によって、電子装置または特定用途向け集積回路のハードウェアコンポーネントによって、もしくは、ソフトウェア要素とハードウェア要素との組合せによって行なわれてもよい。図３に示す方法３００は、ステップ３１０で始まる。
【００９３】
ステップ３１０で、第１のＪＳＯＮオブジェクトが受信される。第１のＪＳＯＮオブジェクトは、文字列の形をしたシリアル化オブジェクトとして受信され得る。ステップ３２０で、１つ以上の変換を定義する第２のＪＳＯＮオブジェクトが受信される。上述のように、第２のＪＳＯＮオブジェクトは、ソースオブジェクト、ソースノード、またはそれらに適用されるフィルタへの変換を示す１つ以上の定義されたキーワードを使用して、ユーザがよく知っている他のＪＳＯＮデータとして書かれている。
【００９４】
ステップ３３０で、第１のＪＳＯＮオブジェクトおよび第２のＪＳＯＮオブジェクトに基づいて、第３のＪＳＯＮオブジェクトが生成される。したがって、中間形式または中間言語への変換は必要ない。加えて、ユーザは、変換を定義するために新しい言語を学ぶ必要がない。
【００９５】
図４は、一実施形態において、あるオブジェクトのＪＳＯＮデータを、別のオブジェクトのＪＳＯＮデータ属性言語を使用してどのように変換するかを判断するための方法４００のフローチャートである。図４に示す方法４００の実現化例または方法４００における処理は、コンピュータシステムまたは情報処理装置などのロジックマシンの中央処理装置（ＣＰＵまたはプロセッサ）によって実行される場合にはソフトウェア（たとえば、命令またはコードモジュール）によって、電子装置または特定用途向け集積回路のハードウェアコンポーネントによって、もしくは、ソフトウェア要素とハードウェア要素との組合せによって行なわれてもよい。図４に示す方法４００は、ステップ４１０で始まる。
【００９６】
ステップ４１０で、入力オブジェクトが変換オブジェクトの属性によって参照される属性を有するという判断が下される。ある実施形態では、入力オブジェクトと変換オブジェクトとの間で属性名を整合させることによって、参照が行なわれ得る。したがって、入力オブジェクトの属性は、変換オブジェクトの属性と同一の名前を有していてもよい。いくつかの実施形態では、入力オブジェクトの属性は、変換オブジェクトの属性の値によって参照され得る。たとえば、変換オブジェクトの属性の値として提供されるnameというキーワードが、入力オブジェクトの属性の名前を参照するために使用されてもよい。
【００９７】
ステップ４２０で、変換オブジェクトの属性に基づいて入力オブジェクトの属性をどのように変換するかについて判断が下される。ある実施形態では、判断される変換は、入力オブジェクトの属性の名前の変更、入力オブジェクトの属性の値の修正、入力オブジェクトの属性を出力オブジェクトに含めるべきかどうかの判断、などを含んでいてもよい。
【００９８】
ステップ４３０で、変換オブジェクトを使用して入力オブジェクトを変換することに基づいて、出力オブジェクトが生成される。
【００９９】
図５は、一実施形態において、ＪＳＯＮスタイルシート言語を使用してＪＳＯＮデータをどのように変換するかを判断するための方法のフローチャートである。図５に示す方法５００の実現化例または方法５００における処理は、コンピュータシステムまたは情報処理装置などのロジックマシンの中央処理装置（ＣＰＵまたはプロセッサ）によって実行される場合にはソフトウェア（たとえば、命令またはコードモジュール）によって、電子装置または特定用途向け集積回路のハードウェアコンポーネントによって、もしくは、ソフトウェア要素とハードウェア要素との組合せによって行なわれてもよい。図５に示す方法５００は、ステップ５１０で始まる。
【０１００】
ステップ５１０で、入力属性が受信される。入力属性は、キーと値とのペアによって表わされる。キーは属性の名前を提供し、値は１つ以上の基本データタイプまたはオブジェクトであり得る。ステップ５２０で、入力属性の対応する変換があるかどうかについて判断が下される。上述のように、入力属性と同じ名前を有する変換オブジェクトの属性、入力属性への参照を有する変換オブジェクトの属性、などによって、対応する変換が見出されてもよい。
【０１０１】
入力属性の対応する変換がないという判断が下された場合、ステップ５３０で、出力オブジェクトにおいて入力属性を含めるか除外するかについて判断が下される。あるルールは、変換がないことにより、属性はそのまま出力オブジェクトに流されるようになる、ということを示してもよい。別のルールは、変換がないことにより、属性は出力オブジェクトからフィルタリングされるようになる、ということを示してもよい。
【０１０２】
入力属性の対応する変換があるという判断が下された場合、ステップ５４０で、変換オブジェクトに基づいて一組の条件が判断される。さまざまな実施形態では、変換オブジェクトの対応する属性は、１つ以上の条件を定義する式を含んでいてもよい。条件は、その条件を真と評価するために満たされるべき基準を表わし得る。その基準は、属性の名前、属性の値、それらの組合せ、または、予め定められた基準を満たすかどうかを判断するために評価されるべき他の条件、ルール、しきい値、制限などの観点から表わされ得る。
【０１０３】
ステップ５５０で、入力属性が定められた基準を満たすかどうかについて判断が下される。入力属性は、基準の空集合を満たすこと、または満たさないことが見出されてもよい。入力属性は、予め定められたしきい値、評価、計算、一組の演算などを満たすこと、または満たさないことが見出されてもよい。入力属性は定められた基準を満たさないという判断が下された場合、ステップ５３０で、上述のように、出力オブジェクトにおいて入力属性を含めるか除外するかについて判断が下される。
【０１０４】
入力属性は定められた基準を満たすという判断が下された場合、ステップ５６０で、出力オブジェクトにおける対応する属性の値を判断する変換オブジェクトに基づいて、行なうべき一組の演算が判断される。ある実施形態では、判断される一組の演算は、入力オブジェクトの属性の名前の変更、入力オブジェクトの属性の値の修正、入力オブジェクトの属性の値のすべてまたは一部を出力オブジェクトに含めるべきかどうかの判断、などを含んでいてもよい。
【０１０５】
ステップ５７０で、出力オブジェクトにおける対応する属性についての変換オブジェクトに基づいて、データタイプが判断される。データタイプはたとえば、変換オブジェクトによって明示的に定義されてもよく、入力オブジェクトから推論されてもよく、一組の演算を行なった結果に基づいて判断されてもよい。上述のように、判断されるデータタイプは、基本のＪＳＯＮオブジェクトデータタイプを含み得る。
【０１０６】
ステップ５８０で、一組の演算を行なった結果の値と判断されたデータタイプとに基づいて、出力オブジェクトの対応する属性が生成される。ある実施形態では、演算の空集合によって、入力属性の値が、出力オブジェクトの対応する属性へと流されてもよい。他の実施形態では、一組の演算は、値の名前の変更、新しい値の計算、値の修正、などを行なうことができる。
【０１０７】
図６は、一実施形態において、ＪＳＯＮスタイルシート言語オブジェクトの属性と同じ名前を有するＪＳＯＮデータ属性を変換するための方法６００のフローチャートである。図６に示す方法６００の実現化例または方法６００における処理は、コンピュータシステムまたは情報処理装置などのロジックマシンの中央処理装置（ＣＰＵまたはプロセッサ）によって実行される場合にはソフトウェア（たとえば、命令またはコードモジュール）によって、電子装置または特定用途向け集積回路のハードウェアコンポーネントによって、もしくは、ソフトウェア要素とハードウェア要素との組合せによって行なわれてもよい。図６に示す方法６００は、ステップ６１０で始まる。
【０１０８】
ステップ６１０で、入力オブジェクトは、変換オブジェクトの属性の名前と名前が整合している属性を有する、という判断が下される。図７は、一実施形態において、入力ＪＳＯＮ文字列７１０と、ＪＳＬ文字列７２０と、ＪＳＬ文字列７２０を使用した入力ＪＳＯＮ文字列７１０の属性の変換から生じる出力ＪＳＯＮ文字列７３０との図である。図示されているように、入力ＪＳＯＮ文字列７１０およびＪＳＬ文字列７２０は双方とも、名前“id”による属性を有する。
【０１０９】
ステップ６２０で、同じ名前を有する変換オブジェクトの属性から、演算およびデータタイプに関して判断が下される。図７を参照して、ＪＳＬ文字列７２０の属性“id”は、式“root.id * 2”を使用して入力ＪＳＯＮ文字列７１０の属性“id”をどのように変換するかを特定する。言い換えれば、入力ＪＳＯＮ文字列７１０の属性“id”の値に２が乗算されることになっている。ＪＳＬ文字列７２０の属性“id”はさらに、式“root.id * 2”から生じる値は整数であるはずである、ということを特定する。
【０１１０】
ステップ６３０で、変換オブジェクトの整合する属性によって特定された、判断された演算が、入力オブジェクトの属性の値に対して行なわれる。ステップ６４０で、演算の結果と判断されたデータタイプとに基づいて、同じ名前を有する出力オブジェクトについての属性が作成される。図７に示すように、出力ＪＳＯＮ文字列７３０は、式“root.id * 2”を使用して求められた値を有する属性“id”を含む。出力ＪＳＯＮ文字列７３０の属性“id”のデータタイプは、整数である。
【０１１１】
図８は、一実施形態において、ＪＳＯＮスタイルシート言語オブジェクトの属性によって参照されるＪＳＯＮデータ属性を変換するための方法８００のフローチャートである。図８に示す方法８００の実現化例または方法８００における処理は、コンピュータシステムまたは情報処理装置などのロジックマシンの中央処理装置（ＣＰＵまたはプロセッサ）によって実行される場合にはソフトウェア（たとえば、命令またはコードモジュール）によって、電子装置または特定用途向け集積回路のハードウェアコンポーネントによって、もしくは、ソフトウェア要素とハードウェア要素との組合せによって行なわれてもよい。図８に示す方法８００は、ステップ８１０で始まる。
【０１１２】
ステップ８１０で、入力オブジェクトは、変換オブジェクトの属性によって名前が参照される属性を有する、という判断が下される。図７に示すように、入力ＪＳＯＮ文字列７１０は名前“name”による属性を有し、ＪＳＬ文字列７２０は、入力ＪＳＯＮ文字列７１０の名前“name”による属性を値である式（たとえば“value”:“root.name”）によって参照する名前“new_name”による属性を有する。
【０１１３】
ステップ８２０で、変換オブジェクトの属性から、属性名に関して判断が下される。ステップ８３０で、変換オブジェクトの属性から、データタイプに関して判断が下される。ステップ８４０で、判断された名前と判断されたデータタイプとを有する出力オブジェクトについての属性が作成される。図７に示すように、出力ＪＳＯＮ文字列７３０は、入力ＪＳＯＮ文字列７１０の属性“name”と同じ値（たとえば“A green door”）およびデータタイプ（たとえば文字列）を有する属性“new_name”を含む。
【０１１４】
図９は、一実施形態において、入力ＪＳＯＮ文字列９１０と、ＪＳＬ文字列９２０と、ＪＳＬ文字列９２０を使用した入力ＪＳＯＮ文字列９１０の属性値の変換から生じる出力ＪＳＯＮ文字列９３０との図である。この例では、入力ＪＳＯＮ文字列９１０とＪＳＬ文字列９２０とは、整合する属性“tags”を有する。ＪＳＬ文字列９２０は、上に示すような属性名の変換ではなく、対応する属性の値の変換を特定する。文字列演算“concat(root.tags,‘_new’)”は、“tags”アレイにおける各要素に添字“_new”を追加するために特定されたものである。したがって、出力ＪＳＯＮ文字列９３０は、アレイの各要素に添字“_new”が追加された“tags”という名前の属性を含む。
【０１１５】
図１０は、一実施形態において、ＪＳＯＮスタイルシート言語オブジェクトの属性の式を満たすＪＳＯＮデータ属性を変換するための方法１０００のフローチャートである。図１０に示す方法１０００の実現化例または方法１０００における処理は、コンピュータシステムまたは情報処理装置などのロジックマシンの中央処理装置（ＣＰＵまたはプロセッサ）によって実行される場合にはソフトウェア（たとえば、命令またはコードモジュール）によって、電子装置または特定用途向け集積回路のハードウェアコンポーネントによって、もしくは、ソフトウェア要素とハードウェア要素との組合せによって行なわれてもよい。図１０に示す方法１０００は、ステップ１０１０で始まる。
【０１１６】
ステップ１０１０で、入力オブジェクトは、変換オブジェクトの属性の式を満たす属性または属性値を有する、という判断が下される。その式は、入力属性の名前を参照する、または入力属性の値を参照する、同じ名前を有する変換オブジェクトの属性の値において特定され得る。図１１は、一実施形態において、式が満たされた場合の、入力ＪＳＯＮ文字列１１１０と、ＪＳＬ文字列１１２０と、ＪＳＬ文字列１１２０を使用した入力ＪＳＯＮ文字列１１１０の変換から生じる出力ＪＳＯＮ文字列１１３０との図である。図示されるように、入力ＪＳＯＮ文字列１１１０は名前“emp”による属性を有し、ＪＳＬ文字列１１２０は名前“emp”による属性を有する。ＪＳＬ文字列１１２０の名前“emp”による属性は、empnameが“B”で始まるオブジェクトによって満たされる“textexpression”における式を含む。したがって、“emp”アレイにおけるたった１つのオブジェクトが条件を満たす（たとえば“empname”:“Bob”）。
【０１１７】
ステップ１０２０で、変換オブジェクトの属性から、演算に関して判断が下される。図１１を参照して、ＪＳＬ文字列１１２０の属性“emp”は、“textexpression”を満たす入力ＪＳＯＮ文字列１１１０の属性“emp”の各オブジェクトをどのように変換するかを特定する。ステップ１０３０で、変換オブジェクトの属性から、データタイプに関して判断が下される。ステップ１０４０で、演算の結果と判断されたデータタイプとに基づいて、出力オブジェクトについての属性が作成される。図１１に示すように、出力ＪＳＯＮ文字列１１３０は、“empname”:“Bob”を有する単一のオブジェクトを有する“emp”属性を含む。したがって、属性または属性値をフィルタリングにより除去し、出力オブジェクト中に所望のものだけを残す条件が特定され得る。
【０１１８】
図１２は、一実施形態において、式が満たされた場合の、入力ＪＳＯＮ文字列１２１０と、ＪＳＬ文字列１２２０と、ＪＳＬ文字列１２２０を使用した入力ＪＳＯＮ文字列１２１０の変換から生じる出力ＪＳＯＮ文字列１２３０との図である。この例では、所望されない属性または属性値はフィルタリングにより除去される。したがって、CustomerTypeが“Gold”ではなく“Silver”であるため、“textexpression”はオブジェクトから“Discount”：20という属性を除去する。
【０１１９】
図１３は、一実施形態において、ＪＳＯＮスタイルシート言語オブジェクトを使用してＪＳＯＮオブジェクト変換を行なうように構成されたハードウェアユニット１３００のブロック図である。ハードウェアユニット１３００は、ＪＳＯＮデータ受信ユニット１３１０と、プリプロセッサユニット１３２０と、ＪＳＯＮ変換受信ユニット１３３０と、変換ユニット１３４０と、後処理ユニット１３５０と、ＪＳＯＮデータ生成ユニット１３６０とを含む。各ユニットは、コンピュータプロセッサにより、メモリに格納するコンピュータ実行可能コードに従って実現されてもよい。
【０１２０】
ＪＳＯＮデータ受信ユニット１３１０は、ＪＳＯＮデータを受信するハードウェアおよび／またはソフトウェア要素を含む。ＪＳＯＮデータ受信ユニット１３１０は、ユーザ入力または他のコンピュータプロセスからＪＳＯＮデータを受信することができる。プリプロセッサユニット１３２０は、ＪＳＯＮデータを前処理するハードウェアおよび／またはソフトウェア要素を含む。１つ以上の前処理ステップは、データ操作演算、データフィルタリング演算、データ増大演算などを含んでいてもよい。ＪＳＯＮ変換受信ユニット１３３０は、ＪＳＯＮデータを受信するハードウェアおよび／またはソフトウェア要素を含む。ＪＳＯＮ変換受信ユニット１３３０は、ユーザ入力または他のコンピュータプロセスからＪＳＯＮデータを受信することができる。この例では、ＪＳＯＮ変換受信ユニット１３３０で受信されたＪＳＯＮデータは、上述のＪＳＬ仕様に従ってフォーマット化される。
【０１２１】
変換ユニット１３４０は、ＪＳＯＮオブジェクトの形のＪＳＯＮデータと、ＪＳＬ変換と、適用される任意の特定された変換とを受信するハードウェアおよび／またはソフトウェア要素を含む。変換ユニット１３４０は、変換を実現するために、ＸＭＬなどの中間言語を必要としない。
【０１２２】
後処理ユニット１３５０は、ＪＳＯＮデータを処理するハードウェアおよび／またはソフトウェア要素を含む。１つ以上の処理ステップは、データ操作演算、データフィルタリング演算、データ増大演算などを含んでいてもよい。ＪＳＯＮデータ生成ユニット１３６０は、ＪＳＯＮデータを生成するハードウェアおよび／またはソフトウェア要素を含む。複数のユニットが図示されたが、すべてが必要とされるとは限らず、いくつかのユニットによって行なわれるいくつかの機能を他のユニットに組込むことができる、ということが理解されるであろう。
【０１２３】
結論
図１４は、実施形態のうちの１つを実現するための分散型システム１４００の簡略図を示す。図示された実施形態では、分散型システム１４００は１つ以上のクライアントコンピューティング装置１４０２、１４０４、１４０６、および１４０８を含み、それらは、１つ以上のネットワーク１４１０を通して、ウェブブラウザ、専用クライアント（たとえば、オラクル・フォームズ）などのクライアントアプリケーションを実行し、動作させるように構成される。サーバ１４１２は、ネットワーク１４１０を介して、リモートのクライアントコンピューティング装置１４０２、１４０４、１４０６、および１４０８と通信可能に結合されてもよい。
【０１２４】
さまざまな実施形態では、サーバ１４１２は、システムのコンポーネントのうちの１つ以上によって提供される１つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。いくつかの実施形態では、これらのサービスは、ウェブベースのサービスまたはクラウドサービスとして、もしくはソフトウェア・アズ・ア・サービス（ＳａａＳ）モデルまたはプラットフォーム・アズ・ア・サービス（ＰａａＳ）モデルの下で、クライアントコンピューティング装置１４０２、１４０４、１４０６、および／または１４０８のユーザに提供されてもよい。クライアントコンピューティング装置１４０２、１４０４、１４０６、および／または１４０８を動作させるユーザは次に、これらのコンポーネントによって提供されるサービスを利用するためにサーバ１４１２とやりとりするために、１つ以上のクライアントアプリケーションを利用してもよい。
【０１２５】
図１４に示す構成では、システム１４００のソフトウェアコンポーネント１４１８、１４２０、および１４２２は、サーバ１４１２上で実現されるとして図示されている。他の実施形態では、システム１４００のコンポーネントおよび／またはこれらのコンポーネントによって提供されるサービスのうちの１つ以上も、クライアントコンピューティング装置１４０２、１４０４、１４０６、および／または１４０８のうちの１つ以上によって実現されてもよい。クライアントコンピューティング装置を動作させるユーザは次に、これらのコンポーネントによって提供されるサービスを使用するために、１つ以上のクライアントアプリケーションを利用してもよい。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せで実現されてもよい。分散型システム１４００とは異なり得るさまざまな異なるシステム構成が可能であることが理解されるべきである。図に示す実施形態はこのため、実施形態システムを実現するための分散型システムの一例であり、限定的であるよう意図されてはいない。
【０１２６】
クライアントコンピューティング装置１４０２、１４０４、１４０６、および／または１４０８は、携帯型ハンドヘルド装置（たとえば、ｉＰｈｏｎｅ（登録商標）、携帯電話、ｉＰａｄ（登録商標）、コンピューティングタブレット、携帯情報端末（ＰＤＡ））、またはウェアラブル装置（たとえば、グーグル・グラス（登録商標）頭部装着型ディスプレイ）であってもよく、マイクロソフト・ウィンドウズ・モバイル（登録商標）などのソフトウェア、および／または、ｉＯＳ、ウィンドウズ（登録商標）フォン、アンドロイド（登録商標）、ブラックベリー（登録商標）１０、パームＯＳなどのさまざまなモバイルオペレーティングシステムを実行し、インターネット、電子メール、ショートメッセージサービス（ＳＭＳ）、ブラックベリー（登録商標）、または他の通信プロトコルに対応している。クライアントコンピューティング装置１４０２、１４０４、１４０６、および／または１４０８は、マイクロソフト・ウィンドウズ（登録商標）、アップル・マッキントッシュ（登録商標）、および／またはＬｉｎｕｘ（登録商標）オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび／またはラップトップコンピュータを例として含む、汎用パーソナルコンピュータであり得る。クライアントコンピューティング装置１４０２、１４０４、１４０６、および／または１４０８は、たとえばグーグル・クロームＯＳなどのさまざまなＧＮＵ／Ｌｉｎｕｘオペレーティングシステムを何ら限定されることなく含む、商業的に入手可能なさまざまなＵＮＩＸ（登録商標）またはＵＮＩＸ様オペレーティングシステムのうちのいずれかを実行するワークステーションコンピュータであり得る。それに代えて、またはそれに加えて、クライアントコンピューティング装置１４０２、１４０４、１４０６、および１４０８は、ネットワーク１４１０を通して通信可能である、シンクライアントコンピュータ、インターネット対応ゲーミングシステム（たとえば、Ｋｉｎｅｃｔ（登録商標）ジェスチャー入力装置を有する、または有さない、マイクロソフトＸｂｏｘゲーミングコンソール）、および／またはパーソナルメッセージング装置といった、任意の他の電子装置であってもよい。
【０１２７】
例示的な分散型システム１４００は４つのクライアントコンピューティング装置を有して図示されているが、任意の数のクライアントコンピューティング装置がサポートされてもよい。センサを有する装置などの他の装置が、サーバ１４１２とやりとりしてもよい。
【０１２８】
分散型システム１４００におけるネットワーク１４１０は、ＴＣＰ／ＩＰ（伝送制御プロトコル／インターネットプロトコル）、ＳＮＡ（システムネットワークアーキテクチャ）、ＩＰＸ（インターネットパケット交換）、アップル・トークなどを何ら限定されることなく含む、商業的に入手可能なさまざまなプロトコルのうちのいずれかを使用してデータ通信をサポートできる、当業者にはよく知られた任意のタイプのネットワークであってもよい。単なる例として、ネットワーク１４１０は、イーサネット（登録商標）、トークンリングなどに基づくものといった、ローカルエリアネットワーク（ＬＡＮ）であり得る。ネットワーク１４１０は、ワイドエリアネットワークおよびインターネットであり得る。それは、仮想プライベートネットワーク（ＶＰＮ）を何ら限定されることなく含む仮想ネットワーク、イントラネット、エクストラネット、公衆交換電話網（ＰＳＴＮ）、赤外線ネットワーク、無線ネットワーク（たとえば、電気電子技術者協会（ＩＥＥＥ）８０２．１１プロトコルスイート、Bluetooth（登録商標）、および／または任意の他の無線プロトコルのうちのいずれかの下で動作するネットワーク）、ならびに／もしくは、これらのおよび／または他のネットワークの任意の組合せを含み得る。
【０１２９】
サーバ１４１２は、１つ以上の汎用コンピュータ、専用サーバコンピュータ（ＰＣ（パーソナルコンピュータ）サーバ、ＵＮＩＸ（登録商標）サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウントサーバなどを例として含む）、サーバファーム、サーバクラスタ、もしくは任意の他の適切な構成および／または組合せで構成されてもよい。さまざまな実施形態では、サーバ１４１２は、前述の開示で説明された１つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、サーバ１４１２は、この開示の一実施形態に従った上述の処理を行なうためのサーバに対応していてもよい。
【０１３０】
サーバ１４１２は、上述のもののうちのいずれかを含むオペレーティングシステム、および商業的に入手可能な任意のサーバオペレーティングシステムを実行してもよい。サーバ１４１２はまた、さまざまな追加のサーバアプリケーションおよび／または中間層アプリケーションのうちのいずれかを実行してもよく、ＨＴＴＰ（ハイパーテキスト伝送プロトコル）サーバ、ＦＴＰ（ファイル転送プロトコル）サーバ、ＣＧＩ（コモンゲートウェイインターフェイス）サーバ、ＪＡＶＡ（登録商標）サーバ、データベースサーバなどを含む。例示的なデータベースサーバは、オラクル、マイクロソフト、サイベース、ＩＢＭ（インターナショナル・ビジネス・マシーンズ）などから商業的に入手可能なものを何ら限定されることなく含む。
【０１３１】
いくつかの実現化例では、サーバ１４１２は、クライアントコンピューティング装置１４０２、１４０４、１４０６、および１４０８のユーザから受信されたデータフィードおよび／またはイベント更新を分析して統合するための１つ以上のアプリケーションを含んでいてもよい。一例として、データフィードおよび／またはイベント更新は、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール（たとえば、ネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム分析ツール、自動車交通監視などに関連するリアルタイムイベントを含み得る、１つ以上の第三者情報源および連続データストリームから受信されたツイッター（登録商標）フィード、フェースブック（登録商標）更新またはリアルタイム更新を含んでいてもよいが、それらに限定されない。サーバ１４１２はまた、クライアントコンピューティング装置１４０２、１４０４、１４０６、および１４０８の１つ以上の表示装置を介してデータフィードおよび／またはリアルタイムイベントを表示するための１つ以上のアプリケーションを含んでいてもよい。
【０１３２】
分散型システム１４００はまた、１つ以上のデータベース１４１４および１４１６を含んでいてもよい。データベース１４１４および１４１６は、さまざまな位置に存在していてもよい。例として、データベース１４１４および１４１６のうちの１つ以上は、サーバ１４１２に対してローカルな（および／または、サーバ１４１２内にある）非一時的記憶媒体上に存在していてもよい。それに代えて、データベース１４１４および１４１６は、サーバ１４１２からリモートであってもよく、ネットワークベースの接続または専用接続を介してサーバ１４１２と通信してもよい。一組の実施形態では、データベース１４１４および１４１６は、ストレージエリアネットワーク（storage-area network：ＳＡＮ）に存在していてもよい。同様に、サーバ１４１２に帰する機能を行なうための任意の必要なファイルが適宜、サーバ１４１２上にローカルに格納されてもよく、および／またはリモートに格納されてもよい。一組の実施形態では、データベース１４１４および１４１６は、ＳＱＬフォーマットのコマンドに応答してデータを格納し、更新し、検索するように適合された、オラクルによって提供されるデータベースなどのリレーショナルデータベースを含んでいてもよい。
【０１３３】
図１５は、この発明のさまざまな実施形態が実現され得る例示的なコンピュータシステム１５００を示す。システム１５００は、上述のコンピュータシステムのうちのいずれかを実現するために使用されてもよい。図１５に示すように、コンピュータシステム１５００は、バスサブシステム１５０２と、バスサブシステム１５０２を介して多くの周辺サブシステムと通信する処理部１５０４とを含む。これらの周辺サブシステムは、処理加速部１５０６と、Ｉ／Ｏサブシステム１５０８と、記憶サブシステム１５１８と、通信サブシステム１５２４とを含んでいてもよい。記憶サブシステム１５１８は、有形のコンピュータ読取可能記憶媒体１５２２と、システムメモリ１５１０とを含む。
【０１３４】
バスサブシステム１５０２は、コンピュータシステム１５００のさまざまなコンポーネントおよびサブシステムを意図されるように互いに通信させるためのメカニズムを提供する。バスサブシステム１５０２は単一のバスとして概略的に図示されているが、バスサブシステムの代替的な実施形態は複数のバスを利用してもよい。バスサブシステム１５０２は、さまざまなバスアーキテクチャのうちのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む、いくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、そのようなアーキテクチャは、ＩＥＥＥ  Ｐ１３８６．１規格で製造されるメザニンバスとして実現可能な、産業標準アーキテクチャ（Industry Standard Architecture：ＩＳＡ）バス、マイクロチャネルアーキテクチャ（Micro Channel Architecture：ＭＣＡ）バス、強化ＩＳＡ（ＥＩＳＡ）バス、ビデオエレクトロニクス標準組織（Video Electronics Standards Association：ＶＥＳＡ）ローカルバス、および周辺コンポーネント相互接続（Peripheral Component Interconnect：ＰＣＩ）バスを含んでいてもよい。
【０１３５】
１つ以上の集積回路（たとえば、従来のマイクロプロセッサまたはマイクロコントローラ）として実現され得る処理部１５０４は、コンピュータシステム１５００の動作を制御する。処理部１５０４には、１つ以上のプロセッサが含まれていてもよい。これらのプロセッサは、シングルコアまたはマルチコアプロセッサを含んでいてもよい。ある実施形態では、処理部１５０４は、各処理部にシングルまたはマルチコアプロセッサが含まれた、１つ以上の独立した処理部１５３２および／または１５３４として実現されてもよい。他の実施形態では、処理部１５０４はまた、２つのデュアルコアプロセッサをシングルチップへと集積することによって形成されるクアッドコア処理部として実現されてもよい。
【０１３６】
さまざまな実施形態では、処理部１５０４は、プログラムコードに応答してさまざまなプログラムを実行でき、同時に実行される複数のプログラムまたはプロセスを維持できる。任意の所与の時間において、実行されるべきプログラムコードのうちのいくつかまたはすべては、プロセッサ１５０４に、および／または記憶サブシステム１５１８にあり得る。好適なプログラミングを通して、プロセッサ１５０４は、上述のさまざまな機能性を提供できる。コンピュータシステム１５００は加えて処理加速部１５０６を含んでいてもよく、それは、デジタル信号プロセッサ（digital signal processor：ＤＳＰ）、専用プロセッサなどを含み得る。
【０１３７】
Ｉ／Ｏサブシステム１５０８は、ユーザインターフェイス入力装置と、ユーザインターフェイス出力装置とを含んでいてもよい。ユーザインターフェイス入力装置は、キーボード、マウスまたはトラックボールなどのポインティング装置、ディスプレイに組込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システム付き音声入力装置、マイクロホン、および他のタイプの入力装置を含んでいてもよい。ユーザインターフェイス入力装置は、たとえば、ジェスチャーおよび口頭コマンドを使用したナチュラルユーザインターフェイスを通して、マイクロソフトＸｂｏｘ（登録商標）３６０ゲームコントローラなどの入力装置をユーザが制御し、それとやりとりすることを可能にする、マイクロソフトＫｉｎｅｃｔ（登録商標）運動センサなどの運動感知および／またはジェスチャー認識装置を含んでいてもよい。ユーザインターフェイス入力装置はまた、ユーザから目の活動（たとえば、写真撮影中および／またはメニュー選択中の「まばたき」）を検出し、アイジェスチャーを入力装置（たとえば、グーグル・グラス（登録商標））への入力として変換する、グーグル・グラス（登録商標）まばたき検出器などのアイジェスチャー認識装置を含んでいてもよい。加えて、ユーザインターフェイス入力装置は、ユーザが音声コマンドを通して音声認識システム（たとえば、Ｓｉｒｉ（登録商標）ナビゲータ）とやりとりできるようにする音声認識感知装置を含んでいてもよい。
【０１３８】
ユーザインターフェイス入力装置はまた、３次元（３Ｄ）マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびに、スピーカ、デジタルカメラ、デジタルビデオカメラ、携帯型メディアプレイヤー、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダ３Ｄスキャナ、３Ｄプリンタ、レーザー測距器、および視線追跡装置などの音声／視覚装置を、何ら限定されることなく含んでいてもよい。加えて、ユーザインターフェイス入力装置は、たとえば、コンピュータ断層撮影装置、磁気共鳴撮像装置、ポジトロン放出断層撮影装置、医療用超音波検査装置などの医療用撮像入力装置を含んでいてもよい。ユーザインターフェイス入力装置はまた、たとえば、ＭＩＤＩキーボード、デジタル楽器などの音声入力装置を含んでいてもよい。
【０１３９】
ユーザインターフェイス出力装置は、表示サブシステム、表示灯、または、音声出力装置などの非視覚的ディスプレイを含んでいてもよい。表示サブシステムは、陰極線管（cathode ray tube：ＣＲＴ）、液晶ディスプレイ（liquid crystal display：ＬＣＤ）またはプラズマディスプレイを使用するものなどのフラットパネル装置、投影装置、タッチスクリーンなどであってもよい。一般に、「出力装置」という用語の使用は、コンピュータシステム１５００からユーザまたは他のコンピュータに情報を出力するためのあらゆる可能なタイプの装置およびメカニズムを含むよう意図されている。たとえば、ユーザインターフェイス出力装置は、モニタ、プリンタ、スピーカ、ヘッドホン、自動車ナビゲーションシステム、プロッタ、音声出力装置、およびモデムといった、テキスト、グラフィックスおよび音声／映像情報を視覚的に伝えるさまざまな表示装置を、何ら限定されることなく含んでいてもよい。
【０１４０】
コンピュータシステム１５００は、現在システムメモリ１５１０内に位置するとして図示されたソフトウェア要素を含む記憶サブシステム１５１８を含んでいてもよい。システムメモリ１５１０は、処理部１５０４上でロード可能および実行可能なプログラム命令と、これらのプログラムの実行中に生成されたデータとを格納してもよい。
【０１４１】
コンピュータシステム１５００の構成およびタイプに依存して、システムメモリ１５１０は揮発性（ランダムアクセスメモリ（random access memory：ＲＡＭ）など）であってもよく、および／または不揮発性（読出専用メモリ（read-only memory：ＲＯＭ）、フラッシュメモリなど）であってもよい。ＲＡＭは典型的には、処理部１５０４に直ちにアクセス可能であり、および／または処理部１５０４によって現在動作および実行中のデータおよび／またはプログラムモジュールを含む。いくつかの実現化例では、システムメモリ１５１０は、スタティックランダムアクセスメモリ（static random access memory：ＳＲＡＭ）またはダイナミックランダムアクセスメモリ（dynamic random access memory：ＤＲＡＭ）などの複数の異なるタイプのメモリを含んでいてもよい。いくつかの実現化例では、起動中などにコンピュータシステム１５００内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入力／出力システム（basic input/output system：ＢＩＯＳ）が、典型的にはＲＯＭに格納されていてもよい。限定のためではなく例として、システムメモリ１５１０はまた、クライアントアプリケーション、ウェブブラウザ、中央層アプリケーション、リレーショナルデータベース管理システム（relational database management system：ＲＤＢＭＳ）などを含み得るアプリケーションプログラム１５１２と、プログラムデータ１５１４と、オペレーティングシステム１５１６とを示す。例として、オペレーティングシステム１５１６は、マイクロソフト・ウィンドウズ（登録商標）、アップル・マッキントッシュ（登録商標）、および／またはＬｉｎｕｘオペレーティングシステムのさまざまなバージョン、商業的に入手可能なさまざまなＵＮＩＸ（登録商標）またはＵＮＩＸ様オペレーティングシステム（さまざまなＧＮＵ／Ｌｉｎｕｘオペレーティングシステム、グーグル・クローム（登録商標）ＯＳなどを何ら限定されることなく含む）、および／または、ｉＯＳ、ウィンドウズ（登録商標）フォン、アンドロイド（登録商標）ＯＳ、ブラックベリー（登録商標）１０ＯＳ、パーム（登録商標）ＯＳオペレーティングシステムなどのモバイルオペレーティングシステムを含んでいてもよい。
【０１４２】
記憶サブシステム１５１８はまた、いくつかの実施形態の機能性を提供する基本プログラミングおよびデータ構造を格納するための有形のコンピュータ読取可能記憶媒体を提供してもよい。プロセッサによって実行されると上述の機能性を提供するソフトウェア（プログラム、コードモジュール、命令）が、記憶サブシステム１５１８に格納されてもよい。これらのソフトウェアモジュールまたは命令は、処理部１５０４によって実行されてもよい。記憶サブシステム１５１８はまた、この発明に従って使用されるデータを格納するためのリポジトリを提供してもよい。
【０１４３】
記憶サブシステム１５００はまた、コンピュータ読取可能記憶媒体１５２２にさらに接続され得るコンピュータ読取可能記憶媒体リーダ１５２０を含んでいてもよい。システムメモリ１５１０とともに、およびオプションでシステムメモリ１５１０と組合わされて、コンピュータ読取可能記憶媒体１５２２は、リモート、ローカル、固定および／またはリムーバブルの記憶装置に加えて、コンピュータ読取可能情報を一時的におよび／またはより永続的に含み、格納し、送信し、検索するための記憶媒体を包括的に表わしてもよい。
【０１４４】
コードまたはコードの一部を含むコンピュータ読取可能記憶媒体１５２２はまた、情報の格納および／または送信のためのあらゆる方法または技術で実現される揮発性および不揮発性でリムーバブルおよび非リムーバブルの媒体を含むがそれらに限定されない記憶媒体および通信媒体を含む、当該技術分野において公知であるかまたは使用されるあらゆる適切な媒体を含み得る。これは、ＲＡＭ、ＲＯＭ、電子的消去可能プログラマブルＲＯＭ（electronically erasable programmable ROM：ＥＥＰＲＯＭ）、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（digital versatile disk：ＤＶＤ）または他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、もしくは他の有形のコンピュータ読取可能媒体といった、有形のコンピュータ読取可能記憶媒体を含み得る。これは、所望の情報を送信するために使用可能であり、コンピューティングシステム１５００によってアクセスされ得るデータ信号、データ送信、または任意の他の媒体といった、非有形のコンピュータ読取可能媒体も含み得る。
【０１４５】
例として、コンピュータ読取可能記憶媒体１５２２は、非リムーバブルで不揮発性の磁気媒体から読出し、またはそれに書込むハードディスクドライブ、リムーバブルで不揮発性の磁気ディスクから読出し、またはそれに書込む磁気ディスクドライブ、ならびに、ＣＤ  ＲＯＭ、ＤＶＤ、およびＢｌｕ−Ｒａｙ（登録商標）ディスク、または他の光学媒体といった、リムーバブルで不揮発性の光ディスクから読出し、またはそれに書込む光ディスクドライブを含んでいてもよい。コンピュータ読取可能記憶媒体１５２２は、Ｚｉｐ（登録商標）ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス（universal serial bus：ＵＳＢ）フラッシュドライブ、セキュアデジタル（secure digitalＳＤ）カード、ＤＶＤディスク、デジタルビデオテープなどを含んでいてもよいが、それらに限定されない。コンピュータ読取可能記憶媒体１５２２はまた、フラッシュメモリベースのソリッドステートドライブ（solid-state drive：ＳＳＤ）、企業フラッシュドライブ、ソリッドステートＲＯＭといった、不揮発性メモリに基づいたＳＳＤ、ソリッドステートＲＡＭ、ダイナミックＲＡＭ、スタティックＲＡＭ、ＤＲＡＭベースのＳＳＤ、磁気抵抗ＲＡＭ（ＭＲＡＭ）ＳＳＤといった、揮発性メモリに基づいたＳＳＤ、および、ＤＲＡＭベースのＳＳＤとフラッシュメモリベースのＳＳＤとの組合せを使用するハイブリッドＳＳＤを含んでいてもよい。ディスクドライブおよびそれらの関連付けられたコンピュータ読取可能媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージをコンピュータシステム１５００に提供してもよい。
【０１４６】
通信サブシステム１５２４は、他のコンピュータシステムおよびネットワークへのインターフェイスを提供する。通信サブシステム１５２４は、コンピュータシステム１５００とは別のシステムからデータを受信し、別のシステムにデータを送信するためのインターフェイスとして機能する。たとえば、通信サブシステム１５２４は、コンピュータシステム１５００がインターネットを介して１つ以上の装置に接続できるようにしてもよい。いくつかの実施形態では、通信サブシステム１５２４は、（たとえば、３Ｇ、４Ｇ、またはＥＤＧＥ（enhanced data rates for global evolution：エンハンスト・データレート・フォー・グローバル・エボリューション）、ＷｉＦｉ（ＩＥＥＥ８０２．１１ファミリー規格）、または他の移動通信技術、またはそれらの任意の組合せといった携帯電話技術、高度なデータネットワーク技術を使用した）無線音声および／またはデータネットワークにアクセスするための無線周波数（radio frequency：ＲＦ）トランシーバコンポーネント、全地球測位システム（global positioning system：ＧＰＳ）受信機コンポーネント、および／または他のコンポーネントを含み得る。いくつかの実施形態では、通信サブシステム１５２４は、無線インターフェイスに加えて、またはその代わりに、有線ネットワーク接続（たとえば、イーサネット）を提供できる。
【０１４７】
いくつかの実施形態では、通信サブシステム１５２４はまた、コンピュータシステム１５００を使用し得る１人以上のユーザのために、構造化および／または非構造化データフィード１５２６、イベントストリーム１５２８、イベント更新１５３０などの形をした入力通信を受信してもよい。
【０１４８】
例として、通信サブシステム１５２４は、ツイッター（登録商標）フィード、フェースブック（登録商標）更新、リッチ・サイト・サマリー（Rich Site Summary：ＲＳＳ）フィードなどのウェブフィード、および／または１つ以上の第三者情報源からのリアルタイム更新といった、ソーシャルネットワークおよび／または他の通信サービスのユーザからのデータフィード１５２６をリアルタイムで受信するように構成されてもよい。
【０１４９】
加えて、通信サブシステム１５２４はまた、リアルタイムイベントのイベントストリーム１５２８および／またはイベント更新１５３０を含み得る、明確な終わりがなく本質的に連続的または無限であり得る連続データストリームの形をしたデータを受信するように構成されてもよい。連続データを生成するアプリケーションの例は、たとえば、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール（たとえば、ネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム分析ツール、自動車交通監視などを含んでいてもよい。
【０１５０】
通信サブシステム１５２４はまた、構造化および／または非構造化データフィード１５２６、イベントストリーム１５２８、イベント更新１５３０などを、コンピュータシステム１５００に結合された１つ以上のストリーミングデータソースコンピュータと通信し得る１つ以上のデータベースに出力するように構成されてもよい。
【０１５１】
コンピュータシステム１５００は、ハンドヘルド携帯装置（たとえば、ｉＰｈｏｎｅ（登録商標）携帯電話、ｉＰａｄ（登録商標）コンピューティングタブレット、ＰＤＡ）、ウェアラブル装置（たとえば、グーグル・グラス（登録商標）頭部装着型ディスプレイ）、ＰＣ、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の他のデータ処理システムを含む、さまざまなタイプのうちの１つであり得る。
【０１５２】
コンピュータおよびネットワークの絶えず変化する性質により、図に示すコンピュータシステム１５００の説明は、単に特定の一例として意図される。図に示すシステムよりも多い、または少ないコンポーネントを有する多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアも使用されてもよく、および／または、特定の要素が、ハードウェア、ファームウェア、ソフトウェア（アプレットを含む）、または組合せで実現されてもよい。また、ネットワーク入力／出力装置などの他のコンピューティング装置への接続が採用されてもよい。ここに提供される開示および教示に基づいて、当業者であれば、さまざまな実施形態を実現するための他のやり方および／または方法を理解するであろう。
【０１５３】
前述の明細書では、この発明の局面をその特定の実施形態を参照して説明したが、当業者であれば、この発明がそれに限定されないことを認識するであろう。上術の発明のさまざまな特徴および局面は、個々にまたは共同で使用されてもよい。また、実施形態は、明細書のより広範な精神および範囲から逸脱することなく、ここに記載されたものを超える任意の数の環境および用途において利用され得る。したがって、明細書および図面は、限定的でなく例示的であると見なされるべきである。
【０１５４】
その教示がこの開示において提示され得る１つ以上の発明のうちのいずれかのさまざまな実施形態が、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せにおけるロジックの形で実現され得る。ロジックは、この開示において提示された発明のさまざまな実施形態において開示され得る一組のステップを行なうように、ロジックマシンの中央処理装置（ＣＰＵまたはプロセッサ）に指示するように適合された一組の命令として、マシンアクセス可能なメモリ、マシン読取可能な物品、有形のコンピュータ読取可能媒体、コンピュータ読取可能記憶媒体、または他のコンピュータ／マシン読取可能媒体に格納されてもよい。ロジックは、コードモジュールが、この開示において提示された発明のさまざまな実施形態において方法またはプロセスを行なうために実行される際に、コンピュータシステムまたは情報処理装置のプロセッサにより動作可能になると、ソフトウェアプログラムまたはコンピュータプログラム製品の一部を形成してもよい。ここに提供されたこの開示および教示に基づいて、当業者であれば、提示された発明のうちの１つ以上におけるさまざまな実施形態の開示された動作または機能性のいずれかを、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せで実現するための他のやり方、変形例、修正例、代替例、および／または方法を理解するであろう。
【０１５５】
その教示がこの開示において提示され得るそれらの発明のうちのいずれか１つの開示された例、実現化例、およびさまざまな実施形態は、この開示の教示を適正な明確性で当業者に伝えるように例示的であるに過ぎない。これらの実現化例および実施形態は例示的な図解または特定の図を参照して説明され得るため、説明された方法および／または特定の構造のさまざまな修正例または適合例が、当業者には明らかとなり得る。ここに見出されたこの開示およびこれらの教示に依存し、かつ、教示が技術を進歩させた際に経た、すべてのそのような修正例、適合例、または変形例は、その教示がこの開示において提示され得る１つ以上の発明の範囲内にあると考えられるべきである。よって、開示において提示された発明は、具体的に示された実施形態にまったく限定されないということが理解されるため、本説明および図面は限定的な意味で考えられるべきでない。
【０１５６】
したがって、上述の説明およびあらゆる添付図面、図解、および図は、限定的ではなく例示的であるよう意図されている。この開示において提示されたあらゆる発明の範囲はしたがって、上述の説明および図に示されたそれらの実施形態を単純に参照するのではなく、係属中の請求項をそれらの完全な範囲または均等物とともに参照して、判断されるべきである。
【図１】
0006698646.tif 000002
【図２】
0006698646.tif 000003
【図３】
0006698646.tif 000004
【図４】
0006698646.tif 000005
【図５】
0006698646.tif 000006
【図６】
0006698646.tif 000007
【図７】
0006698646.tif 000008
【図８】
0006698646.tif 000009
【図９】
0006698646.tif 000010
【図１０】
0006698646.tif 000011
【図１１】
0006698646.tif 000012
【図１２】
0006698646.tif 000013
【図１３】
0006698646.tif 000014
【図１４】
0006698646.tif 000015
【図１５】
0006698646.tif 000016