発明の詳細な説明
はじめに
以下の記載では、説明の目的のため、この発明の実施形態の完全な理解を提供するために特定の詳細が述べられる。しかしながら、これらの特定の詳細がなくてもさまざまな実施形態は実践され得る、ということは明らかであろう。たとえば、実施形態を必要以上に詳細に記載して不明瞭にすることがないように、回路、システム、ネットワーク、プロセス、および他のコンポーネントは、ブロック図の形のコンポーネントとして示されてもよい。他の例では、実施形態を不明瞭にしないように、周知の回路、プロセス、アルゴリズム、構造、および手法は、不要な詳細なしで示されてもよい。図および説明は、限定的であるよう意図されてはいない。むしろ、例示的な実施形態の以下の記載は、例示的な実施形態を実現するための実施可能な記載を当業者に提供するであろう。添付された請求項で述べられるようなこの発明の精神および範囲から逸脱することなく、要素の機能および構成においてさまざまな変更が行なわれてもよい、ということが理解されるべきである。
また、個々の実施形態は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスとして説明され得ることに留意されたい。フローチャートは動作を順次プロセスとして説明し得るものの、動作の多くは並行してまたは同時に行なうことが可能である。加えて、動作の順序は並べ替えられてもよい。プロセスは、その動作が完了すると終了するが、図に含まれない追加のステップを有していてもよい。プロセスは、方法、機能、手順、サブルーチン、サブプログラムなどに対応していてもよい。プロセスがある機能に対応している場合、その終了は、その機能が呼出し元の機能または主機能に戻ることに対応可能である。
「マシン読取可能媒体」または「コンピュータ読取可能媒体」という用語は、命令および/またはデータを格納し、含み、または担持することができる、携帯型または非携帯型記憶装置、光学記憶装置、無線チャネル、ならびにさまざまな他の媒体を含むものの、それらに限定されない。コードセグメントまたはマシン実行可能命令が、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、もしくは、命令、データ構造またはプログラム文の任意の組合せを表わしてもよい。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容を渡し、および/または受信することによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む任意の好適な手段を介して渡され、発送され、または送信されてもよい。
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実現される場合、必要なタスクを行なうためのプログラムコードまたはコードセグメントが、マシン読取可能またはコンピュータ読取可能媒体に格納されてもよい。1つ以上のプロセッサが、必要なタスクを行なってもよい。
図のうちのいくつかに示されたシステムは、さまざまな構成で提供されてもよい。いくつかの実施形態では、システムは、システムの1つ以上のコンポーネントが1つ以上のネットワークを通してクラウドコンピューティングシステムに分散された分散型システムとして構成されてもよい。さらに他の実施形態では、システムは、システムの1つ以上のコンポーネントが単一の構造またはパッケージに組込まれた単一システムとして構成されてもよい。
図1は、この開示の一実施形態に従った、実施形態システムの1つ以上のコンポーネントによって提供されるサービスをクラウドサービスとして提供し得るシステム環境100の1つ以上のコンポーネントの簡略ブロック図である。図示された実施形態では、システム環境100は、1つ以上のクライアントコンピューティング装置104、106、および108にクラウドサービスを提供するクラウドインフラストラクチャシステム102を含む。クライアントコンピューティング装置104、106、および108は、クラウドインフラストラクチャシステム102とやりとりするためにユーザによって使用されてもよい。クライアントコンピューティング装置104、106、および108は、クラウドインフラストラクチャシステム102によって提供されるサービスを使用するためにクラウドインフラストラクチャシステム102とやりとりするためにクライアントコンピューティング装置のユーザによって使用され得る、ウェブブラウザ、専用クライアントアプリケーション(たとえば、オラクル・フォームズ(Oracle Forms))、または何らかの他のアプリケーションといったクライアントアプリケーションを動作させるように構成されてもよい。
図1に示すクラウドインフラストラクチャシステム102は、図示されたもの以外のコンポーネントを有していてもよい、ということが理解されるべきである。また、図1に示す実施形態は、この発明の一実施形態を取入れ得るクラウドインフラストラクチャシステムの単なる一例である。いくつかの他の実施形態では、クラウドインフラストラクチャシステム102は、図1に示すものよりも多い、または少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組合せてもよく、もしくは、異なる構成または配置のコンポーネントを有していてもよい。
クライアントコンピューティング装置104、106、および108は、携帯型ハンドヘルド装置(たとえば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))、またはウェアラブル装置(たとえば、グーグル・グラス(Google Glass)(登録商標)頭部装着型ディスプレイ)であってもよく、マイクロソフト・ウィンドウズ・モバイル(Microsoft Windows Mobile)(登録商標)などのソフトウェア、および/または、iOS、ウィンドウズ(登録商標)フォン、アンドロイド(登録商標)、ブラックベリー(登録商標)10、パームOSなどのさまざまなモバイルオペレーティングシステムを実行し、インターネット、電子メール、ショートメッセージサービス(short message service:SMS)、ブラックベリー(登録商標)、または他の通信プロトコルに対応している。クライアントコンピューティング装置104、106、および108は、マイクロソフト・ウィンドウズ(登録商標)、アップル・マッキントッシュ(登録商標)、および/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを例として含む、汎用パーソナルコンピュータであり得る。クライアントコンピューティング装置104、106、および108は、たとえばグーグル・クロームOSなどのさまざまなGNU/Linuxオペレーティングシステムを何ら限定されることなく含む、商業的に入手可能なさまざまなUNIX(登録商標)またはUNIX様オペレーティングシステムのうちのいずれかを実行するワークステーションコンピュータであり得る。それに代えて、またはそれに加えて、クライアントコンピューティング装置104、106、および108は、ネットワーク110を通して通信可能である、シンクライアントコンピュータ、インターネット対応ゲーミングシステム(たとえば、Kinect(登録商標)ジェスチャー入力装置を有する、または有さない、マイクロソフトXboxゲーミングコンソール)、および/またはパーソナルメッセージング装置といった、任意の他の電子装置であってもよい。
例示的なシステム環境100は3つのクライアントコンピューティング装置を有して図示されているが、任意の数のクライアントコンピューティング装置がサポートされてもよい。センサを有する装置などの他の装置が、クラウドインフラストラクチャシステム102とやりとりしてもよい。
ネットワーク110は、クライアント104、106、および108とクラウドインフラストラクチャシステム102との間でのデータの通信および交換を容易にしてもよい。ネットワーク110は、TCP/IP(transmission control protocol/Internet protocol:伝送制御プロトコル/インターネットプロトコル)、SNA(systems network architecture:システムネットワークアーキテクチャ)、IPX(Internet packet exchange:インターネットパケット交換)、アップル・トーク(Apple Talk)などを何ら限定されることなく含む、商業的に入手可能なさまざまなプロトコルのうちのいずれかを使用してデータ通信をサポートできる、当業者にはよく知られた任意のタイプのネットワークであってもよい。単なる例として、ネットワーク110は、イーサネット(登録商標)、トークンリング(Token-Ring)などに基づくものといった、ローカルエリアネットワーク(local area network:LAN)であり得る。ネットワーク110は、ワイドエリアネットワークおよびインターネットであり得る。それは、仮想プライベートネットワーク(virtual private network:VPN)を何ら限定されることなく含む仮想ネットワーク、イントラネット、エクストラネット、公衆交換電話網(public switched telephone network:PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば、電気電子技術者協会(the Institute of Electrical and Electronics:IEEE)802.11プロトコルスイート、Bluetooth(登録商標)、および/または任意の他の無線プロトコルのうちのいずれかの下で動作するネットワーク)、ならびに/もしくは、これらのおよび/または他のネットワークの任意の組合せを含み得る。
クラウドインフラストラクチャシステム102は、1つ以上のコンピュータおよび/またはサーバを含んでいてもよい。これらのコンピュータシステムまたはサーバは、1つ以上の汎用コンピュータ、専用サーバコンピュータ(PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウントサーバなどを例として含む)、サーバファーム、サーバクラスタ、もしくは任意の他の適切な構成および/または組合せで構成されてもよい。さまざまな実施形態では、クラウドインフラストラクチャシステム102に関連付けられた1つ以上のコンピュータシステムまたはサーバは、前述の開示で説明された1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、クラウドインフラストラクチャシステム102に関連付けられた1つ以上のコンピュータシステムまたはサーバは、この開示の一実施形態に従った、ここに記載された処理を行なうためのサーバに対応していてもよい。
クラウドインフラストラクチャシステム102に関連付けられた1つ以上のコンピュータシステムまたはサーバは、上述のもののうちのいずれかを含むオペレーティングシステム、および商業的に入手可能な任意のサーバオペレーティングシステムを実行してもよい。クラウドインフラストラクチャシステム102に関連付けられた1つ以上のコンピュータシステムまたはサーバはまた、さまざまな追加のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行してもよく、HTTP(hypertext transport protocol:ハイパーテキスト伝送プロトコル)サーバ、FTP(file transfer protocol:ファイル転送プロトコル)サーバ、CGI(common gateway interface:コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含む。例示的なデータベースサーバは、オラクル、マイクロソフト、サイベース(Sybase)、IBM(International Business Machines:インターナショナル・ビジネス・マシーンズ)などから商業的に入手可能なものを何ら限定されることなく含む。
ある実施形態では、クラウドインフラストラクチャシステム102によって提供されるサービスは、オンラインデータストレージおよびバックアップソリューション、ウェブベースの電子メールサービス、ホスト型オフィススイートおよび文書コラボレーションサービス、データベース処理、管理された技術サポートサービスなどといった、クラウドインフラストラクチャシステム102のユーザにとってオンデマンドで利用可能にされる多数のサービスを含んでいてもよい。クラウドインフラストラクチャシステム102によって提供されるサービスは、そのユーザの必要性を満たすために動的にスケール変更され得る。クラウドインフラストラクチャシステム102によって提供されるサービスの特定のインスタンス化は、ここに「サービスインスタンス」と呼ばれる。一般に、クラウドサービスプロバイダのシステムから、インターネットなどの通信ネットワークを介してユーザに利用可能とされる任意のサービスは、「クラウドサービス」と呼ばれる。典型的には、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを作り上げるサーバおよびシステムは、顧客自身の業務用サーバおよびシステムとは異なっている。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションをホストしてもよく、ユーザは、インターネットなどの通信ネットワークを介してオンデマンドでアプリケーションをオーダーし、使用してもよい。
いくつかの例では、クラウドインフラストラクチャ102によってインスタンス化されたサービスインスタンスは、クラウドベンダーによってユーザに提供されるかまたは当該技術分野において他の態様で公知であるようなストレージ、ホスト型データベース、ホスト型ウェブサーバ、ソフトウェアアプリケーション、もしくは他のサービスへの、保護されたコンピュータネットワークアクセスを含んでいてもよい。たとえば、クラウドインフラストラクチャ102によってインスタンス化されたサービスインスタンスは、インターネットを通した、クラウド上のリモートストレージへの、パスワードで保護されたアクセスを含み得る。別の例として、クラウドインフラストラクチャ102によってインスタンス化されたサービスインスタンスは、ネットワーク化された開発者による私的使用のための、ウェブサービスベースのホスト型リレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、クラウドインフラストラクチャ102によってインスタンス化されたサービスインスタンスは、クラウドベンダーのウェブサイト上でホストされる電子メールソフトウェアアプリケーションへのアクセスを含み得る。
ある実施形態では、クラウドインフラストラクチャシステム102は、セルフサービスで、サブスクリプションベースで、弾力的にスケーラブルで、信頼でき、高可用性で、かつ安全な態様で顧客に配信される、アプリケーション、ミドルウェア、開発サービス、およびデータベースサービス提供物一式を含んでいてもよい。クラウドインフラストラクチャサービス102において具現化されたような、そのようなクラウドインフラストラクチャシステムの一例は、本譲受人によって提供されるオラクル・パブリック・クラウド(Oracle Public Cloud)である。
クラウドインフラストラクチャシステム102は、異なるデプロイメントモデルを介してクラウドサービスを提供してもよい。たとえば、サービスは、クラウドインフラストラクチャシステム102がクラウドサービスを販売する組織によって所有され(たとえば、オラクルによって所有され)、サービスが一般大衆または異なる産業企業にとって利用可能とされる、パブリッククラウドモデルの下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム102が単一の組織のためにのみ動作され、その組織内の1つ以上のエンティティのためのサービスを提供し得る、プライベートクラウドモデルの下で提供されてもよい。クラウドサービスはまた、クラウドインフラストラクチャシステム102、およびクラウドインフラストラクチャシステム102によって提供されるサービスが、関連するコミュニティにおけるいくつかの組織によって共有される、コミュニティクラウドモデルの下で提供されてもよい。クラウドサービスはまた、2つ以上の異なるモデルの組合せであるハイブリッドクラウドモデルの下で提供されてもよい。
いくつかの実施形態では、クラウドインフラストラクチャシステム102によって提供されるサービスは、ソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)カテゴリー、プラットフォーム・アズ・ア・サービス(Platform as a Service:PaaS)カテゴリー、インフラストラクチャ・アズ・ア・サービス(Infrastructure as a Service:IaaS)カテゴリー、または、ハイブリッドサービスを含むサービスの他のカテゴリーの下で提供される、1つ以上のサービスを含んでいてもよい。いくつかの実施形態では、クラウドインフラストラクチャシステム102によって提供されるサービスは、アプリケーションサービス、プラットフォームサービス、およびインフラストラクチャサービスを、何ら限定されることなく含んでいてもよい。いくつかの例では、アプリケーションサービスは、SaaSプラットフォームを介して、クラウドインフラストラクチャシステム102によって提供されてもよい。SaaSプラットフォームは、SaaSカテゴリーに該当するクラウドサービスを提供するように構成されてもよい。たとえば、SaaSプラットフォームは、統合された開発およびデプロイメントプラットフォーム上にオンデマンドアプリケーション一式を構築し、配信するための能力を提供してもよい。SaaSプラットフォームは、SaaSサービスを提供するための根底的なソフトウェアおよびインフラストラクチャを管理し、制御してもよい。SaaSプラットフォームによって提供されるサービスを利用することにより、顧客は、クラウドインフラストラクチャシステム上で実行されるアプリケーションを利用できる。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、アプリケーションサービスを取得できる。さまざまな異なるSaaSサービスが提供されてもよい。例は、大型組織のための販売実績管理、企業統合、およびビジネス柔軟性についてのソリューションを提供するサービスを、何ら限定されることなく含む。
いくつかの実施形態では、プラットフォームサービスは、PaaSプラットフォームを介して、クラウドインフラストラクチャシステム102によって提供されてもよい。PaaSプラットフォームは、PaaSカテゴリーに該当するクラウドサービスを提供するように構成されてもよい。プラットフォームサービスの例は、(オラクルなどの)組織が共有の共通アーキテクチャ上で既存のアプリケーションを統合できるようにするサービスと、プラットフォームによって提供される共有のサービスを活用する新しいアプリケーションを構築するための能力とを、何ら限定されることなく含んでいてもよい。PaaSプラットフォームは、PaaSサービスを提供するための根底的なソフトウェアおよびインフラストラクチャを管理し、制御してもよい。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、クラウドインフラストラクチャシステム102によって提供されるPaaSサービスを取得できる。プラットフォームサービスの例は、オラクルJava(登録商標)クラウド・サービス(Java Cloud Service:JCS)、オラクル・データベース・クラウド・サービス(Database Cloud Service:DBCS)などを、何ら限定されることなく含む。
PaaSプラットフォームによって提供されるサービスを利用することにより、顧客は、クラウドインフラストラクチャシステム102によってサポートされるプログラミング言語およびツールを採用するとともに、デプロイメントされたサービスを制御することができる。いくつかの実施形態では、クラウドインフラストラクチャシステム102によって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス(たとえば、オラクル・フュージョン・ミドルウェア(Oracle Fusion Middleware)サービス)、およびJavaクラウドサービスを含んでいてもよい。一実施形態では、データベースクラウドサービスは、組織がデータベースリソースをプールし、データベースクラウドの形をしたデータベース・アズ・ア・サービスを顧客に提供することを可能にする共有のサービスデプロイメントモデルをサポートしてもよい。ミドルウェアクラウドサービスは、顧客がさまざまなビジネスアプリケーションを開発してデプロイメントするためのプラットフォームを提供してもよく、Javaクラウドサービスは、顧客がクラウドインフラストラクチャシステムにおいてJavaアプリケーションをデプロイメントするためのプラットフォームを提供してもよい。
クラウドインフラストラクチャシステム102において、さまざまな異なるインフラストラクチャサービスが、IaaSプラットフォームによって提供されてもよい。これらのインフラストラクチャサービスは、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用する顧客のための、ストレージ、ネットワーク、ならびに他の基礎的コンピューティングリソースなどの根底的なコンピューティングリソースの管理および制御を容易にする。
ある実施形態では、クラウドインフラストラクチャシステム102は、クラウドインフラストラクチャシステムにおけるクラウドサービス(たとえば、SaaS、PaaS、およびIaaSサービス)の包括的管理を提供してもよい。一実施形態では、クラウド管理機能性は、クラウドインフラストラクチャシステム102によって受信された顧客のサブスクリプションをプロビジョニングし、管理し、追跡するための能力などを含んでいてもよい。さまざまな実施形態では、クラウドインフラストラクチャシステム102は、クラウドインフラストラクチャシステム102によって提供されるサービスに顧客のサブスクリプションを自動的にプロビジョニングし、管理し、追跡するように適合されてもよい。顧客は、クラウドインフラストラクチャシステム102によって提供される1つ以上のサービスを、サブスクリプションオーダーを介してオーダーしてもよい。クラウドインフラストラクチャシステム102は次に、顧客のサブスクリプションオーダーにおけるサービスを提供するために処理を行なう。
一実施形態では、図1に示すように、クラウド管理機能性は、オーダー管理および監視モジュール114などの1つ以上のモジュールによって提供されてもよい。これらのモジュールは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、もしくは任意の他の適切な構成および/または組合せであり得る、1つ以上のコンピュータおよび/またはサーバを含んでいてもよく、もしくはそれらを使用して提供されてもよい。
例示的な動作では、クライアントコンピューティング装置104、106または108のうちの1つ以上といったクライアント装置を使用する顧客は、クラウドインフラストラクチャシステム102によって提供される1つ以上のサービスを要求することにより、クラウドインフラストラクチャシステム102とやりとりしてもよい。顧客は、さまざまな手段を使用して、サービス要求134をクラウドインフラストラクチャシステム102に発行してもよい。サービス要求134は、クラウドインフラストラクチャシステム102によって提供される1つ以上のサービスについてサブスクリプションオーダーを出すこと、クラウドインフラストラクチャシステム102によって提供される1つ以上のサービスにアクセスすること、などを含んでいてもよい。ある実施形態では、顧客は、クラウドユーザインターフェイス(User Interface:UI)であるクラウドUI132、クラウドUI134および/またはクラウドUI138にアクセスし、これらのUIを介してサブスクリプションオーダーを出してもよい。顧客がオーダーを出したことに応答してクラウドインフラストラクチャシステム102が受信したオーダー情報は、顧客を識別する情報と、顧客が申し込むつもりである、クラウドインフラストラクチャシステム102によって提供される1つ以上のサービスを識別する情報とを含んでいてもよい。顧客によってオーダーが出された後で、オーダー情報がクラウドUI132、134および/または138を介して受信される。
この例では、オーダー管理および監視モジュール114は、顧客から受信した情報をオーダーデータベースに送信して、顧客によって出されたオーダーを記録されるよう格納させる。オーダーデータベースは、クラウドインフラストラクチャシステム102によって動作され、他のシステム要素とともに動作される、いくつかのデータベースのうちの1つであり得る。オーダー管理および監視モジュール114は、オーダーデータベースに格納されたオーダー情報のすべてまたは一部を含む情報をオーダー管理モジュールに発送してもよい。場合によっては、オーダー管理モジュールは、オーダーを検証し、検証後にオーダーを予約するといった、オーダーに関連する請求および課金機能を行なうように構成されてもよい。
オーダー管理および監視モジュール114は、顧客によって出されたオーダーのためのサービスおよびリソースのプロビジョニングをオーケストレーションするためにオーダー情報を利用するオーダーオーケストレーションモジュールに、オーダー情報のすべてまたは一部を通信してもよい。場合によっては、オーダーオーケストレーションモジュールは、オーダープロビジョニングモジュールのサービスを使用して、申し込まれたサービスをサポートするようにリソースのプロビジョニングをオーケストレーションしてもよい。
ある実施形態では、オーダーオーケストレーションモジュールは、各オーダーに関連付けられたビジネスプロセスの管理を可能にし、オーダーがプロビジョニングに進むべきか否かを判断するためにビジネスロジックを適用する。新規サブスクリプションのオーダーを受信すると、オーダーオーケストレーションモジュールは、リソースを割当ててサブスクリプションオーダーを遂行するために必要とされるリソースを構成するようにという要求を、オーダープロビジョニングモジュールに送信する。オーダープロビジョニングモジュールは、顧客によってオーダーされたサービスのためのリソースの割当てを可能にする。オーダープロビジョニングモジュールは、クラウドインフラストラクチャシステム102によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするために使用される物理的実装層との間の抽象化のレベルを提供する。オーダーオーケストレーションモジュールはこのため、サービスおよびリソースが実際にオンザフライでプロビジョニングされるか否か、または予めプロビジョニングされて要求時にのみ割当てられるか否かといった実装詳細から切り離されてもよい。
ある実施形態では、オーダー管理および監視モジュール114は、顧客のサブスクリプションオーダーを管理し、追跡する。場合によっては、オーダー管理および監視モジュール114は、顧客に関連付けられた、プロビジョニングされた任意のサービスおよび/またはリソースを示す情報を受信してもよい。オーダー管理および監視モジュール114は、使用されるストレージの量、転送されるデータの量、ユーザの数、システムアップタイムおよびシステムダウンタイムの量といった、サブスクリプションオーダーにおけるサービスについての使用統計を収集するように構成されてもよい。
上述の例でサービスおよびリソースがいったんプロビジョニングされると、提供されるサービスおよび/またはリソースについて顧客に通知するサービス結果138が、クライアントコンピューティング装置104、106、および/または108上の顧客に送信されてもよい。サービス要求130が、サービスにアクセスするようにという要求、またはサービスに1つ以上の動作を行なわせるようにという要求を含む場合、要求されたアクセスまたは任意の動作の結果、行なわれたサービス、または要求されたデータを提供するサービス結果138が、クライアントコンピューティング装置104、106、および/または108上の顧客に送信されてもよい。
ある実施形態では、クラウドインフラストラクチャシステム100は、アイデンティティ管理モジュール114を含んでいてもよい。アイデンティティ管理モジュール114は、クラウドインフラストラクチャシステム102においてアクセス管理および認証サービスなどのアイデンティティサービスを提供するように構成されてもよい。いくつかの実施形態では、アイデンティティ管理モジュール114は、クラウドインフラストラクチャシステム102によって提供されるサービスを利用したい顧客についての情報を制御してもよい。そのような情報は、そのような顧客のアイデンティティを認証する情報と、さまざまなシステムリソース(たとえば、ファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど)に対してそれらの顧客がどのアクションを行なうことが認可されているかを記述する情報とを含み得る。アイデンティティ管理モジュール114はまた、各顧客についての記述的情報と、その記述的情報が誰によってどのようにアクセスされ、修正され得るかについての記述的情報との管理を含んでいてもよい。
ある実施形態では、クラウドインフラストラクチャシステム102はまた、クラウドインフラストラクチャシステム102の顧客にさまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース116を含んでいてもよい。一実施形態では、インフラストラクチャリソース116は、PaaSプラットフォームおよびSaaSプラットフォームによって提供されるサービスを実行するために、サーバ、ストレージ、およびネットワーキングリソースといったハードウェアの予め統合され最適化された組合せを含んでいてもよい。
いくつかの実施形態では、クラウドインフラストラクチャシステム102におけるリソースは、複数のユーザによって共有され、要望ごとに動的に再割当てされてもよい。加えて、リソースは、異なる時間帯におけるユーザに割当てられてもよい。たとえば、クラウドインフラストラクチャシステム102は、第1の時間帯における第1の一組のユーザが、特定数の時間、クラウドインフラストラクチャシステムのリソースを利用することを可能にし、次に、異なる時間帯に位置する別の一組のユーザへの同じリソースの再割当てを可能にして、それによりリソースの利用を最大化してもよい。
ある実施形態では、クラウドインフラストラクチャシステム102の異なるコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム102が提供するサービスによって共有される、多くの内部共有サービス118が提供されてもよい。これらの内部共有サービス118は、セキュリティおよびアイデンティティサービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウィルススキャニングおよびホワイトリストサービス、高可用性、バックアップおよび復元サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを、何ら限定されることなく含んでいてもよい。
ある実施形態では、クラウドインフラストラクチャシステム102の異なるコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム102が提供するサービスによって共有される、多くの外部共有サービス120が提供されてもよい。これらの外部共有サービス120は、セキュリティおよびアイデンティティサービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウィルススキャニングおよびホワイトリストサービス、高可用性、バックアップおよび復元サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを、何ら限定されることなく含んでいてもよい。
さまざまな実施形態では、外部共有サービス120は、アクセス、データ変換、自動化などを企業コンピュータシステム126に提供する1つ以上のコンポーネントを含んでいてもよい。企業コンピュータシステム126へのアクセスは、クラウドインフラストラクチャシステム102の異なるコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム102が提供するサービスによって、共有されてもよい。いくつかの実施形態では、企業コンピュータシステム126へのアクセスは、1人以上のサブスクライバに制限される、クラウドインフラストラクチャシステム102が提供するサービスインスタンスによって、共有されてもよい。
さらなる実施形態では、外部共有サービス120は、クラウドインフラストラクチャシステム102の異なるコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム102が提供するサービスによって共有される、外部アプリケーションプログラミングインターフェイス(application programming interface:API)サービス128を含んでいてもよい。これらの外部APIサービス128は、他の第三者サービスまたはエンティティによって提供されるAPIを、何ら限定されることなく含んでいてもよい。
クラウドインフラストラクチャシステム102では、モバイルクラウドサービス(mobile cloud service:MCS)122によって、さまざまな異なるモバイルクラウドサービスが提供されてもよい。この発明のいくつかの実施形態によれば、MCS122は、モバイルコンピューティング装置と企業コンピュータシステム(たとえば、企業コンピュータシステム124および126)との間の通信を容易にする。MCS122は、企業データおよび認証情報を格納するために使用される1つ以上のメモリ記憶装置「(「ローカルストレージ」)を含んでいてもよい。企業データは、企業コンピュータシステム126から、あるいはクライアントコンピューティング装置104、106、または108から受信されてもよく、もしくは、クラウドインフラストラクチャシステム102によって変換された企業データを含んでいてもよく、もしくはそれらの組合せであってもよい。認証情報は、アイデンティティ管理システム116から受信されてもよく、および/または、クラウドインフラストラクチャシステム102によって生成されてもよい。いくつかの実施形態では、認証情報は、サービスについての要求に関するユーザのセキュリティ認証を示す情報を含んでいてもよい。
企業コンピュータシステム126などの企業コンピュータシステムは、クラウドインフラストラクチャシステム102のファイアウォールを越えて、クラウドインフラストラクチャシステム102とは異なる地理的場所(たとえば、リモートの地理的場所)に物理的に位置していてもよい。いくつかの実施形態では、企業コンピュータシステム126は、1つ以上の異なるコンピュータまたはサーバを含んでいてもよい。いくつかの実施形態では、企業コンピュータシステム126は、単一のコンピュータシステムの一部であってもよい。
ある実施形態では、企業コンピュータシステム126は、1つ以上の異なるプロトコルを使用して、クラウドインフラストラクチャシステム102と通信してもよい。企業コンピュータシステム126の各々は、異なる通信プロトコルを使用して、クラウドインフラストラクチャシステム102と通信してもよい。企業コンピュータシステム126は、同じまたは異なるセキュリティプロトコルをサポートしてもよい。いくつかの実施形態では、MSC1112は、企業コンピュータシステム126との通信を扱うためのエージェントシステムを含んでいてもよい。
プロトコルは、SPDYなどの通信プロトコルを含んでいてもよい。プロトコルは、HTTPベースのプロトコルなどのアプリケーションプロトコルを含んでいてもよい。いくつかの実施形態では、企業コンピュータシステム126は、RESTまたはSOAP通信プロトコルを使用して、クラウドインフラストラクチャシステム102と通信してもよい。たとえば、RESTプロトコルは、URIまたはURLを含むフォーマットをサポートしてもよい。RESTプロトコルを使用する通信のためにフォーマットされた企業データは、JSON、コンマ区切り形式(comma-separated values:CSV)、およびリアリー・シンプル・シンジケーション(really simple syndication:RSS)などのデータフォーマットに容易に変換されてもよい。企業コンピュータシステム126とクラウドインフラストラクチャシステム102とは、リモート・プロシージャ・コール(remote procedure call:RPC)(たとえばXML RPC)などの他のプロトコルを使用して通信してもよい。
いくつかの実施形態では、MCS122は、クラウドインフラストラクチャサービス102によって提供される1つ以上のサービスとの通信をサポートするように構成されたアダプタインターフェイスを含んでいてもよく、それらのサービスのうちのいくつかは、通信用の異なるプロトコルまたは手法をサポートしてもよい。いくつかの実施形態では、MCS122は、企業コンピュータシステム126との通信をサポートするように構成されたアダプタインターフェイスを含んでいてもよく、企業コンピュータシステム126のうちのいくつかは、通信用の異なるプロトコルまたは手法をサポートしてもよい。MCS122は、通信プロトコル、企業コンピュータシステムのタイプ、アプリケーションのタイプ、サービスのタイプ、またはそれらの組合せに従って通信するように各々構成され得る1つ以上のアダプタを含んでいてもよい。アダプタによってサポートされる通信プロトコルは、サービスに、または企業コンピュータシステム126のうちの1つ以上に特有のものであってもよい。
ある実施形態では、クライアントコンピューティング装置104、106、および108は各々、MCS122と通信するための特定のユーザインターフェイスを提供できるアプリケーションを実装してもよい。特定のUIが、特定の通信プロトコルを使用して通信するように構成されてもよい。いくつかの実施形態では、特定のUIが、MCS122と通信するために呼び出され得る、呼出し可能インターフェイス、機能、ルーチン、方法、および/または動作を含んでいてもよい。特定のUIは、企業データのために、および/またはサービスを要求するために、クラウドインフラストラクチャサービス102によって提供されるサービスと通信するためのパラメータ、または企業コンピュータシステム126と通信するためのパラメータを、入力として受け入れてもよい。いくつかの実施形態では、MCS122を通した通信は、カスタム通信プロトコルを使用する通信のために変換されてもよい。いくつかの実施形態では、特定のUIが、アプリケーションにおけるカスタムクライアントに対応していてもよい。
MCS122は、1つ以上の呼出し可能インターフェイス、たとえばアプリケーションプログラミングインターフェイス(API)を含んでいてもよい。MCS122に関連付けられた呼出し可能インターフェイスは、モバイルコンピューティング装置上のアプリがMCS122に要求を通信することを可能にしてもよい。MCS122に関連付けられた呼出し可能インターフェイスは共通または標準インターフェイスをサポートしてもよく、それは、パラメータを含む要求が、標準化プロトコル、アーキテクチャスタイル、および/またはフォーマット(たとえばRESTプロトコル)に従って、アプリから受信されることを可能にしてもよい。MCS122に関連付けられた呼出し可能インターフェイスは、コンピューティング装置104、106、または108のうちのいずれか1つのユーザによって構成可能であってもよい。MCS122に関連付けられた呼出し可能インターフェイスは、通信プロトコルに従って、サービスについての要求を受信してもよい。装置アプリケーション開発者らは、自身のカスタムアプリケーションのためにMCS122に接続することができる。いくつかの実施形態では、MCS122に関連付けられた呼出し可能インターフェイスは、アプリを開発したのと同じ人によって構成され、その人が、MCS122と通信するためのカスタムアプリを実現できるようになっていてもよい。
MCS122に関連付けられた呼出し可能インターフェイスはさらに、企業コンピュータシステム126が、標準化プロトコルまたはフォーマットに従ってMCS122と通信することを可能にしてもよい。アプリケーション開発者らと同様に、企業コンピュータシステムを管理する人は、1つ以上の呼出し可能インターフェイスを介してMCS122と通信するように構成されたコード(たとえばエージェントシステム)を実現することができる。MCS122に関連付けられた呼出し可能インターフェイスは、コンピューティング装置のタイプ、企業コンピュータシステムのタイプ、アプリ、エージェントシステム、サービス、プロトコル、または他の基準に基づいて実現されてもよい。いくつかの実施形態では、MCS122に関連付けられた呼出し可能インターフェイスは、認証、圧縮、暗号化、カーソルを用いたページネーション、クライアントベースのスロットリング、否認不可、ロギング、およびメトリクス収集を含むサービスについての要求をサポートしてもよい。いくつかの実施形態では、MCS122に関連付けられた呼出し可能インターフェイスは、認証、ポリシー実施、応答のキャッシング、MCS122への呼出しのスロットリング、非同期パターンと同期パターンとの間の変換、根底的なサービスへの呼出しのロギング、またはそれらの組合せ、といったカスタムビジネス関連サービスのために実現されてもよい。いくつかの実施形態では、MCS122に関連付けられた呼出し可能インターフェイスは、ユーザが、クラウドインフラストラクチャシステム102による実現のためにカスタムコードをロードすることを可能にしてもよい。カスタムコードは、クラウドインフラストラクチャシステム102のために、MCS122に関連付けられた1つ以上の呼出し可能インターフェイスを実現してもよく、それは、ユーザがカスタムサービスまたは他の企業コンピュータシステムにアクセスすることを可能にできる。
MCS122に関連付けられたプロトコルトランスレータは、メッセージを処理して、メッセージ用の通信プロトコルを判断し、および/またはメッセージを宛先用の通信プロトコルに変換してもよい。MCS122に関連付けられたプロトコルトランスレータは、クライアントコンピューティング装置104、106、または108から受信された要求を変換してもよい。要求は、クライアントコンピューティング装置104、106、または108によってサポートされる通信プロトコルのフォーマットから、クラウドインフラストラクチャサービス102または企業コンピュータシステム126によって提供されるサービスによってサポートされる通信プロトコルのフォーマットに変換されてもよい。MCS122に関連付けられたプロトコルトランスレータは、クラウドインフラストラクチャサービス102または企業コンピュータシステム126によって提供されるサービスから受信された応答を変換してもよい。応答は、クラウドインフラストラクチャサービス102または企業コンピュータシステム126によって提供されるサービスによってサポートされる通信プロトコルのフォーマットから、クライアントコンピューティング装置104、106、または108によってサポートされる通信プロトコルのフォーマットに変換されてもよい。
MCS122に関連付けられたセキュリティサービスは、クライアントコンピューティング装置104、106、または108のうちのいずれかから受信された要求についてのセキュリティ認証を管理してもよい。MCS122に関連付けられたセキュリティサービスは、顧客プロセスおよび企業データの保全性を保護してもよい。システムまたはデータが損なわれないようにするために、クライアントコンピューティング装置104、106、または108から要求が受信されると、セキュリティ認証が起こってもよい。セキュリティ認証は、クラウドインフラストラクチャシステム102による処理のために要求が発送される前に行なわれてもよい。あるユーザについて判断されたセキュリティ認証は、モバイルコンピューティング装置に関連付けられたユーザが、MCS122を介してサービスを要求するための認証を有することを可能にしてもよい。セキュリティ認証は、ユーザが、MCS122を介して要求された異なる要求および/またはサービスについて認証するための労力を減少させてもよい。MCS122に関連付けられたセキュリティサービスは、要求のセキュリティを認証するさまざまな動作を行なうように構成された1つ以上の機能ブロックまたはモジュールとして実現されてもよい。
MCS122に関連付けられた認証サービスは、クライアントコンピューティング装置104、106、または108から受信された要求についてのセキュリティ認証を管理してもよい。MCS122に関連付けられた認証サービスは、MCS122に要求を送信するコンピューティング装置に関連付けられたユーザについてセキュリティ認証を判断してもよい。セキュリティ認証は期間に基づいて判断されてもよく、期間は、アプリの動作(たとえば、アプリの起動)、要求、コンピューティング装置、企業コンピュータシステム、要求に関連する他の基準、またはそれらの組合せに結び付けられてもよい。セキュリティ認証は、個々の要求、1つ以上の企業コンピュータシステム、特定のサービス、サービスのタイプ、ユーザ、コンピューティング装置、セキュリティ認証を判断するための他の基準、またはそれらの組合せ、などのうちのいずれか1つについて、検証され付与されてもよい。いくつかの実施形態では、クラウドインフラストラクチャシステム102は、企業コンピュータシステム、または企業コンピュータシステムをサポートする認証システムから受信されたユーザの認証情報を格納してもよい。クラウドインフラストラクチャシステム102は、要求に関連付けられたユーザのアイデンティティがそのような要求を行なう認可を有するかどうかを判断するためにルックアップ機能を行なうことによって、認証を判断してもよい。格納された認証情報は、ユーザがアクセスすることを認可され得る、要求、機能、企業コンピュータシステム、企業データなどのタイプといった情報を含んでいてもよい。いくつかの実施形態では、インフラストラクチャシステム102は、認証を判断するために、要求元のコンピューティング装置との通信を起動してもよい。
いくつかの実施形態では、セキュリティ認証は、サービスを要求するユーザに関連付けられた役割に基づいて判断されてもよい。役割は、MCS122へのアクセスを要求するユーザに関連付けられてもよい。いくつかの実施形態では、ユーザは、MCS122によって提供されるリソースおよび/またはサービスへのアクセスを付与され得るMCS122のサブスクライバまたはテナントとして、サービスを要求してもよい。認証は、ユーザがサブスクライバとしてMCS122を介してサービスを要求することが認可され得るように、MCS122へのユーザのサブスクリプションに対応していてもよい。いくつかの実施形態では、サブスクリプションは、MCS122によって提供される特定の一組のリソースに限定されてもよい。セキュリティ認証は、MCS122のユーザがアクセス可能なリソースおよび/またはサービスに基づいていてもよい。いくつかの実施形態では、「実行時環境」と呼ばれる実行中に、要求にテンプレートがプロビジョニングされてもよい。実行時環境は、要求、ユーザ、または装置に割当てられるリソースに関連付けられてもよい。
いくつかの実施形態では、MCS122に関連付けられた認証サービスは、アイデンティティ管理システムに、ユーザについてセキュリティ認証を判断するよう要求してもよい。アイデンティティ管理システムは、クラウドインフラストラクチャシステム102によって(たとえばアイデンティティ管理114として)実現されてもよく、または、クラウドインフラストラクチャシステム102の外部の別のコンピュータシステムによって実現されてもよい。アイデンティティ管理116は、MCS122にアクセスするためのユーザの役割またはサブスクリプションに基づいて、ユーザのセキュリティ認証を判断してもよい。役割またはサブスクリプションには、企業コンピュータシステム、企業コンピュータシステムによって提供されるサービス、企業コンピュータシステムの機能または特徴、企業コンピュータシステムへのアクセスを制御するための他の基準、またはそれらの組合せに対する特権および/または権利が割当てられてもよい。
クラウドインフラストラクチャシステム102では、アプリケーション開発フレームワーク(application development framework:ADF)124によって、さまざまな異なるアプリケーション開発フレームワーク(ADF)が提供されてもよい。ADF124は、アジャイルなSOAベースのアプリケーションを実装するためにインフラストラクチャコードを提供する。ADF124はさらに、1つ以上の開発ツール(たとえば、オラクルJDeveloper 11g開発ツール)を通して、開発への視覚的および宣言的アプローチを提供する。ADF124によって提供される1つ以上のフレームワークは、モデル・ビュー・コントローラデザインパターンを実装してもよい。そのようなフレームワークは、MVCアーキテクチャのすべての層を、オブジェクト/リレーショナルマッピング、データ持続性、再使用可能なコントローラ層、リッチなウェブユーザインターフェイスフレームワーク、UIへのデータ結合、セキュリティおよびカスタム化などのエリアに対する解決策でカバーする統合的解決策を提供する。コアウェブベースのMVCアプローチを超えて、そのようなフレームワークはまた、オラクルSOAおよびウェブセンターポータル(WebCenter Portal)フレームワークと統合されて、完全な複合アプリケーションの作成を簡略化する。
ある実施形態では、ADF124は、クラウドインフラストラクチャシステム102によって提供されるビルトインビジネスサービスにサービスインターフェイスを結合することによって、サービスとしてデータを公開するアジャイルなアプリケーションを開発することを容易にする。ビジネスサービス実装詳細のこの分離は、ADF124においてメタデータを介して行なわれる。このメタデータ駆動型アーキテクチャの使用により、アプリケーション開発者らは、サービスがどのようにアクセスされるかの詳細にではなく、ビジネスロジックおよびユーザ体験に集中できるようになる。ある実施形態では、ADF124は、サービスの実装詳細を、モデル層におけるメタデータに格納する。これにより、開発者らは、ユーザインターフェイスを修正することなくサービスを交換できるようになり、アプリケーションが非常にアジャイルになる。加えて、ユーザインターフェイスを作成する開発者は、ビジネスサービスアクセス詳細に悩まされる必要がない。代わりに、開発者らは、アプリケーションインターフェイスおよびやりとりロジックの開発に集中することができる。ユーザ体験を作り出すことは、ビジュアルページデザイナ上に所望のビジネスサービスをドラッグアンドドロップし、どのタイプのコンポーネントがそのデータを表わすべきかを示すのと同じくらい単純であり得る。
さまざまな実施形態では、開発者らはADF124とやりとりして、企業アプリケーションを形成するモジュールを作成する。企業アプリケーションは、クラウドインフラストラクチャシステム102のコンテキスト内で実行され得る。さまざまな実施形態では、開発者らはADF124とやりとりして、モバイルアプリケーションを形成するモジュールを作成する。モバイルアプリケーションは、クラウドインフラストラクチャシステム102のコンテキスト内で実行され得る。以下に説明されるこの発明の特徴は、ここに提供される開示を読むことによって当業者には明らかであるように、プログラミング言語とアプリケーション開発フレームワークとの任意の所望の組合せを使用して実現されてもよい。
ADF124によって提供される1つ以上のフレームワークは、一例ではオラクルADFとして具現化され得る。したがって、ADF124におけるフレームワークは、モデル・ビュー・コントローラ(Model-View-Controller:MVC)デザインパターンに基づき得る。MVCアプリケーションは、1)データソースとのやりとりを扱い、ビジネスロジックを実行するモデル層と、2)アプリケーションユーザインターフェイスを扱うビュー層と、3)アプリケーションフローを管理し、モデル層とビュー層との間のインターフェイスとして作用するコントローラとに分離される。これら3つの層にアプリケーションを分離することは、アプリケーション間にわたるコンポーネントの保守および再使用を簡略化する。各層の他の層からの独立は、緩く結合されたサービス指向アーキテクチャ(Service Oriented Architecture:SOA)をもたらす。
さまざまな実施形態では、ADF124は、開発者らがアプリケーションを多層の形で作成することを可能にするツールおよびリソースを提供し、各層は、予め定義された仕様に従って所望のロジックを実現するコードモジュール/ファイルを含む。このため、一実施形態では、ADF124は、アプリケーションが、アプリケーションのユーザインターフェイスを提供するコードモジュール/ファイルを含むビュー層と、アプリケーションのフローを制御するコードモジュールを含むコントローラ層と、根底的なデータのための抽象化層を提供するデータ/コードモジュールを含むモデル層と、さまざまなソースからのデータへのアクセスを提供し、ビジネスロジックを扱うコードモジュールを含むビジネスサービス層という4つの層として開発されることを可能にする。
ある実施形態では、ADF124は、開発者らに、層の各々を実装する際に自分たちが使用したい技術を選択させる。EJB、ウェブサービス(Web Services)、JavaBeans、JPA/エクリプスリンク(EclipseLink)/トップリンク(TopLink)オブジェクト、および他の多くがすべて、ADF124のためのビジネスサービスとして使用可能である。ビュー層は、JSF、デスクトップスイング(Desktop Swing)アプリケーション、およびMSオフィスフロントエンドを用いて実現されるウェブベースのインターフェイスと、モバイル装置のためのインターフェイスとを含み得る。
一局面では、ビュー層は、開発中のアプリケーションのユーザインターフェイスを表わす。ビュー層は、デスクトップビュー、モバイルビュー、およびブラウザベースのビューを含んでいてもよく、それらの各々はユーザインターフェイスのすべてまたは一部を提供するとともに、ビュータイプに対応するさまざまな態様でアクセス可能である。たとえば、ウェブページが、対応するURLを含むクライアント要求を受信することに応答して、アプリケーションによって送信されてもよい。ウェブページは次に、要求元クライアントシステムに関連付けられた表示部(図示せず)上にブラウザによって表示されてもよく、それにより、要求元クライアントシステムのユーザが企業アプリケーションとやりとりすることを可能にする。ADF124は、ビジネスサービスの再使用を可能にするビジネスサービスへのマルチチャネルアクセスと、ウェブクライアント、クライアント・サーバ・スイングデスクトップベース・アプリケーション(client-server swing desktop-based application)、マイクロソフトエクセルスプレッドシート、スマートフォンなどのモバイル装置、などからのアクセスとをサポートする。
(ウェブページなどの)ビュー層を形成するコードファイル/モジュールは、ハイパーテキストマークアップ言語(hypertext markup language:HTML)、Javaサーバページ(Java server page:JSP)、およびJavaサーバフェイス(JSF)のうちの1つ以上を使用して実現されてもよい。それに代えて、ユーザインターフェイスは、スイング(Swing)などのJavaコンポーネントおよび/または拡張マークアップ言語(extensible markup language:XML)を使用して実現されてもよい。さらに示されるように、ユーザインターフェイスは、マイクロソフトによるワードおよびエクセルなどのデスクトップアプリケーションについてのユーザの経験および習熟を活用してもよい。
上述のように、ユーザが開発した関連するコード/データモジュールが、層の各々において提供される。しかしながら、各層は典型的には、ADF124によって提供される他の予め定義されたコード/データモジュールを含む。予め定義されたモジュールのうちのいくつかは、たとえば、ウェブページを開発するためのテンプレート、開発されたコードに所望の機能性を含めるためのテンプレートなどとして、開発中に使用されてもよい。(URL書換モジュールなどの)他の予め定義されたモジュールが、開発されたアプリケーションとともにデプロイメントされてもよく、企業アプリケーションの実行中に追加の機能性(要求されたURLの、内部名へのマッピング)をユーザに提供してもよい。
コントローラ層は、アプリケーションのフローを制御するコードモジュール/ファイルを含む。各コントローラオブジェクトは、ビュー層において情報を提示する所望の態様に従って実現されたソフトウェア命令および/またはデータを含む。所望の態様は、別のウェブページにおけるリンクがユーザによってクリック/選択されると表示される特定のウェブページ、実行中にエラーが起こると表示される、格納/検索すべき特定のデータを示すページなどを含んでいてもよい。
一局面では、コントローラ層はアプリケーションフローを管理し、ユーザ入力を扱う。たとえば、ページ上でサーチボタンがクリックされると、コントローラは、どのアクションを行なうべきか(サーチを行なう)と、どこにナビゲートすべきか(結果ページ)とを判断する。JDeveloperでは、ウェブベースのアプリケーションについて、標準のJSFコントローラ、またはJSFコントローラ機能性を拡張するADFコントローラという2つのコントローラオプションがある。どちらのコントローラが使用されても、アプリケーションフローは典型的には、ページおよびナビゲーションルールをダイアグラム上にレイアウトすることによってデザインされる。アプリケーションのフローは、より小さい、再使用可能なタスクフローに分割可能であり、方法コールおよび決定ポイントなどの非視覚的コンポーネントをフローに含めることでき、単一の含有ページの領域内で実行される「ページフラグメント」フローを作成することができる。
コントローラ層を形成するコードモジュール/ファイルはしばしば、クライアント要求を受信するととともに対応する応答として所望のウェブページを送信するJavaサーブレットとして実現される。コントローラオブジェクトはまた、たとえば、アパッチジャカルタストラット(Apache Jakarta Struts)コントローラとして、またはJSF規格に従って実現されてもよい。
モデル層は、図示されるように、さまざまなビジネスサービスを、それらを他の層で使用するオブジェクトに、たとえば上述のコントローラオブジェクトに、または直接デスクトップアプリケーションに接続する、データ/コードモジュールを含む。モデル層の各抽象データオブジェクトは、任意のタイプのビジネスサービスにアクセスするために使用可能である対応するインターフェイスを提供し、根底的なビジネスサービス層で実行される。データオブジェクトは、クライアントからサービスのビジネスサービス実装詳細を抽象化し、および/または、データ制御方法/属性をビューコンポーネントに公開してもよく、ビュー層とデータ層との分離を提供する。
一局面では、モデル層は、データ制御およびデータ結合という2つのコンポーネントからなり、それらは、インターフェイスを定義するためにメタデータファイルを利用する。データ制御は、クライアントからビジネスサービス実装詳細を抽象化する。データ結合は、データ制御方法および属性をUIコンポーネントに公開し、ビューとモデルとのクリーンな分離を提供する。モデル層のメタデータアーキテクチャにより、開発者らは、任意のタイプのビジネスサービス層実装をビュー層およびコントローラ層に結合する際に、同じ開発経験を得る。
ある実施形態では、ADF124は、開発プロセス全体にわたって宣言的プログラミングパラダイムの使用を強調して、ユーザが、実現詳細に手をつける必要なく、アプリケーション作成のロジックに集中できるようにする。高レベルでは、フュージョン(Fusion)ウェブアプリケーションのための開発プロセスは通常、アプリケーションワークスペースを作成することを伴う。ウィザードを使用して、開発者が選択した技術にとって必要なライブラリおよび構成が自動的に追加され、アプリケーションが、パッケージおよびディレクトリを有するプロジェクトへと構造化される。
データベースオブジェクトをモデル化することにより、オンラインデータベースまたは任意のデータベースのオフラインレプリカが作成可能であり、定義が編集可能であり、スキーマが更新可能である。UMLモデラーを使用して、使用事例が次に、アプリケーションのために作成可能である。アプリケーション制御およびナビゲーションもデザイン可能である。アプリケーション制御およびナビゲーションのフローを視覚的に判断するために、ダイアグラマ(diagrammer)が使用可能である。次に、フローを記述する根底的なXMLファイルが自動的に作成可能である。開発者が、インポートされたライブラリを、アプリケーションに単純にドラッグアンドドロップすることによって閲覧および使用することを可能にするために、リソースライブラリが使用可能である。データベーステーブルから、エンティティオブジェクトが、ウィザードまたはダイアログを使用して作成可能である。それらのエンティティオブジェクトから、ビューオブジェクトが、アプリケーションにおけるページによって使用されるように作成される。検証ルールおよび他のタイプのビジネスロジックが実現可能である。
この例では、ビジネスサービス層は、データ持続性層とのやりとりを管理する。それは、データ持続性、オブジェクト/リレーショナルマッピング、トランザクション管理、およびビジネスロジック実行などのサービスを提供する。ビジネスサービス層は、シンプルJavaクラス、EJB、ウェブサービス、JPAオブジェクト、およびオラクルADFビジネスコンポーネントといったオプションのうちのいずれかで実装可能である。加えて、データは、ファイル(XMLまたはCSV)およびRESTから直接消費され得る。このため、各ビジネスサービスは、対応するデータ持続性層とのやりとりを管理し、また、オブジェクト/リレーショナルマッピング、トランザクション管理、ビジネスロジック実行などのサービスを提供する。ビジネスサービス層は、シンプルJavaクラス、エンタープライズJavaBeans、ウェブサービスなどのうちの1つ以上を使用して実装されてもよい。
ビジネスコンポーネントは、データベース、ウェブサービス、レガシーシステム、アプリケーションサーバなどとのやりとりを提供するために、たとえばオラクルADFビジネスコンポーネントを使用して実装されるビジネスサービスを表わす。一実施形態では、ビジネスサービス層のビジネスコンポーネントは、ビジネスサービス実装を提供するために協働するアプリケーションモジュール、ビュー/クエリオブジェクト、およびエンティティオブジェクトの混合を含む。アプリケーションモジュールは、アプリケーション/トランザクションデータと連携するためにUIクライアントが通信するトランザクションコンポーネント/コードモジュールであり得る。アプリケーションモジュールは、更新可能なデータモデルを提供してもよく、また、ユーザトランザクションに関する手順/機能(一般にサービス方法と呼ばれる)を提供してもよい。
エンティティオブジェクトは、データベーステーブルにおける対応する行を表わしてもよく、対応する行に格納されたデータの操作(更新、削除など)を簡略化する。エンティティオブジェクトはしばしば、所望のビジネスルールが一貫して実施されることを確実にするために、対応する行のためのビジネスロジックをカプセル化する。エンティティオブジェクトはまた、根底的なデータベースに格納された行間に存在する関係を反映するように、他のエンティティオブジェクトに関連付けられてもよい。
JSONスタイルシート言語変換
図2は、一実施形態において、JSONデータを変換するためのワークフロー200の簡略ブロック図である。ワークフロー200では、入力JSONデータ210が、JSL API220で受信される。(同様にJSON文書である)JSL230が、JSL API220で受信される。JSL API220は、入力JSONデータ210およびJSL230に基づいて、変換JSONデータ240を生成する。
この例示的な実施形態では、一般に、入力JSONデータ210は、オブジェクトまたはデータの一部の論理構造を特定するJSON文書である。入力JSONデータ210の論理構造は、1つ以上のJSONスキーマに従って定義されてもよい。
JSL230もJSON文書である。プロセッサ(たとえばJSL API220)は、JSL230のJSL(JSON StyleSheet Language)を理解し、入力JSONデータ210に1つ以上の特定された変換を適用することができる。これは、XMLに変換を適用するために使用されるXSLTと同様である。JSLの主な利点のうちの1つは、ユーザが他の言語の仕様に精通する必要がない、ということである。これは、XML変換を定義するXSLと同様に、JSL自体がJSONデータフォーマットで書かれているためである。
市場には、JSONデータを変換する多くの変換ツールがある。しかしながら、これらのツールの多くは別の言語で書かれており、それはユーザが扱うことを困難にする。たとえば、JsonTは、XML界におけるXSLTと同様に、JSON状構造を変換するための言語である。この実装は、JSLほど単純明快ではない。別の例では、json2jsonは、CoffeeScriptで書かれており、Node.js環境で実行されるように設計されている。この実装の欠点は、変換用のテンプレートファイルを作成するために、ユーザがCoffee言語を学ばなければならない、ということである。しかしながら、JSLでは、ユーザが変換用に特定するテンプレートはJSONで書かれている。
さまざまな実施形態では、JSL230は、JSL仕様に従って定義される。JSLは、入力JSONデータ210の変換を実現するようにプロセッサを構成するキーワードを含み得る。一局面では、入力JSONデータ210における特定されたキーについての値をどのように表わすかをプロセッサに命令するために、“value”というキーワードが、JSLファイルにおいて提供される。“value”というキーワードは値で定義されてもよい。一実施形態では、値は、入力JSONデータ210におけるキーの語彙経路を示す語彙文字列であり得る。この経路は“root”というキーワードで始まることができ(たとえば、root.employee.id)、ここでemployeeはオブジェクトであり、idは文字列値属性である。
別の実施形態では、値は、値と考えられる、シングルクォーテションマーク間に定義された任意のテキストを示すテキスト文字列であってもよい。さらに別の実施形態では、値は、語彙/テキスト文字列とそれらに対して定義された算術/文字列/論理演算との組合せを示す演算文字列であってもよい。たとえば、“concat(root.employee.id,‘abc’)”は、idフィールドの値が、変換JSONデータ240に挿入されると、文字列‘abc’と連結されることになっていることを示す。
別の局面では、特定のキーについての値のデータタイプをどのように表わすかをプロセッサに命令するために、“type”というキーワードが、JSLファイルにおいて提供される。さまざまな実施形態では、“type”というキーワードは値で定義されてもよい。ある実施形態では、値は、整数、文字列、2倍、ブール、ヌルなどであり得る。JSONArray要素については、値は、objectarray、<基本データタイプ>アレイ、たとえばStringarrayなどとして特定され得る。
さらに別の局面では、エンティティの親の語彙経路をどのように表わすかをプロセッサに命令するために、“source”というキーワードが、JSLファイルにおいて提供される。さまざまな実施形態では、このキーワードは、アレイ要素のためにのみ定義される。さらなる局面では、1つ以上の特定条件に対して入力JSONデータ210をどのように評価するかをプロセッサに命令するために、“testexpression”というキーワードが、JSLファイルにおいて提供される。このキーワードは、どの特定のJSONオブジェクトまたはJSONアレイが処理されるかに基づいて式を評価するために使用され得る。その式は、ブール値を返すことができる。オブジェクトレベルでは、“testexpression”結果に基づいて、プロセッサは、変換JSONデータ240においてオブジェクトが除外されるべきか含まれるべきかを判断することができる。ノードレベルでは、“testexpression”結果に基づいて、プロセッサは、変換JSONデータ240においてノードが除外されるべきか含まれるべきかを判断することができる。
ある実施形態では、さまざまな変換演算がサポートされる。たとえば、文字列演算は、連結、比較、置換、部分文字列などを含み得る。算術演算は、加算、乗算、除算、減算などを含み得る。ブール演算は、true()、false()、not()などを含み得る。
図3は、一実施形態において、1つ以上の変換を定義するJSONオブジェクトを使用してJSONデータ変換を行なうための方法300のフローチャートである。図3に示す方法300の実現化例または方法300における処理は、コンピュータシステムまたは情報処理装置などのロジックマシンの中央処理装置(CPUまたはプロセッサ)によって実行される場合にはソフトウェア(たとえば、命令またはコードモジュール)によって、電子装置または特定用途向け集積回路のハードウェアコンポーネントによって、もしくは、ソフトウェア要素とハードウェア要素との組合せによって行なわれてもよい。図3に示す方法300は、ステップ310で始まる。
ステップ310で、第1のJSONオブジェクトが受信される。第1のJSONオブジェクトは、文字列の形をしたシリアル化オブジェクトとして受信され得る。ステップ320で、1つ以上の変換を定義する第2のJSONオブジェクトが受信される。上述のように、第2のJSONオブジェクトは、ソースオブジェクト、ソースノード、またはそれらに適用されるフィルタへの変換を示す1つ以上の定義されたキーワードを使用して、ユーザがよく知っている他のJSONデータとして書かれている。
ステップ330で、第1のJSONオブジェクトおよび第2のJSONオブジェクトに基づいて、第3のJSONオブジェクトが生成される。したがって、中間形式または中間言語への変換は必要ない。加えて、ユーザは、変換を定義するために新しい言語を学ぶ必要がない。
図4は、一実施形態において、あるオブジェクトのJSONデータを、別のオブジェクトのJSONデータ属性言語を使用してどのように変換するかを判断するための方法400のフローチャートである。図4に示す方法400の実現化例または方法400における処理は、コンピュータシステムまたは情報処理装置などのロジックマシンの中央処理装置(CPUまたはプロセッサ)によって実行される場合にはソフトウェア(たとえば、命令またはコードモジュール)によって、電子装置または特定用途向け集積回路のハードウェアコンポーネントによって、もしくは、ソフトウェア要素とハードウェア要素との組合せによって行なわれてもよい。図4に示す方法400は、ステップ410で始まる。
ステップ410で、入力オブジェクトが変換オブジェクトの属性によって参照される属性を有するという判断が下される。ある実施形態では、入力オブジェクトと変換オブジェクトとの間で属性名を整合させることによって、参照が行なわれ得る。したがって、入力オブジェクトの属性は、変換オブジェクトの属性と同一の名前を有していてもよい。いくつかの実施形態では、入力オブジェクトの属性は、変換オブジェクトの属性の値によって参照され得る。たとえば、変換オブジェクトの属性の値として提供されるnameというキーワードが、入力オブジェクトの属性の名前を参照するために使用されてもよい。
ステップ420で、変換オブジェクトの属性に基づいて入力オブジェクトの属性をどのように変換するかについて判断が下される。ある実施形態では、判断される変換は、入力オブジェクトの属性の名前の変更、入力オブジェクトの属性の値の修正、入力オブジェクトの属性を出力オブジェクトに含めるべきかどうかの判断、などを含んでいてもよい。
ステップ430で、変換オブジェクトを使用して入力オブジェクトを変換することに基づいて、出力オブジェクトが生成される。
図5は、一実施形態において、JSONスタイルシート言語を使用してJSONデータをどのように変換するかを判断するための方法のフローチャートである。図5に示す方法500の実現化例または方法500における処理は、コンピュータシステムまたは情報処理装置などのロジックマシンの中央処理装置(CPUまたはプロセッサ)によって実行される場合にはソフトウェア(たとえば、命令またはコードモジュール)によって、電子装置または特定用途向け集積回路のハードウェアコンポーネントによって、もしくは、ソフトウェア要素とハードウェア要素との組合せによって行なわれてもよい。図5に示す方法500は、ステップ510で始まる。
ステップ510で、入力属性が受信される。入力属性は、キーと値とのペアによって表わされる。キーは属性の名前を提供し、値は1つ以上の基本データタイプまたはオブジェクトであり得る。ステップ520で、入力属性の対応する変換があるかどうかについて判断が下される。上述のように、入力属性と同じ名前を有する変換オブジェクトの属性、入力属性への参照を有する変換オブジェクトの属性、などによって、対応する変換が見出されてもよい。
入力属性の対応する変換がないという判断が下された場合、ステップ530で、出力オブジェクトにおいて入力属性を含めるか除外するかについて判断が下される。あるルールは、変換がないことにより、属性はそのまま出力オブジェクトに流されるようになる、ということを示してもよい。別のルールは、変換がないことにより、属性は出力オブジェクトからフィルタリングされるようになる、ということを示してもよい。
入力属性の対応する変換があるという判断が下された場合、ステップ540で、変換オブジェクトに基づいて一組の条件が判断される。さまざまな実施形態では、変換オブジェクトの対応する属性は、1つ以上の条件を定義する式を含んでいてもよい。条件は、その条件を真と評価するために満たされるべき基準を表わし得る。その基準は、属性の名前、属性の値、それらの組合せ、または、予め定められた基準を満たすかどうかを判断するために評価されるべき他の条件、ルール、しきい値、制限などの観点から表わされ得る。
ステップ550で、入力属性が定められた基準を満たすかどうかについて判断が下される。入力属性は、基準の空集合を満たすこと、または満たさないことが見出されてもよい。入力属性は、予め定められたしきい値、評価、計算、一組の演算などを満たすこと、または満たさないことが見出されてもよい。入力属性は定められた基準を満たさないという判断が下された場合、ステップ530で、上述のように、出力オブジェクトにおいて入力属性を含めるか除外するかについて判断が下される。
入力属性は定められた基準を満たすという判断が下された場合、ステップ560で、出力オブジェクトにおける対応する属性の値を判断する変換オブジェクトに基づいて、行なうべき一組の演算が判断される。ある実施形態では、判断される一組の演算は、入力オブジェクトの属性の名前の変更、入力オブジェクトの属性の値の修正、入力オブジェクトの属性の値のすべてまたは一部を出力オブジェクトに含めるべきかどうかの判断、などを含んでいてもよい。
ステップ570で、出力オブジェクトにおける対応する属性についての変換オブジェクトに基づいて、データタイプが判断される。データタイプはたとえば、変換オブジェクトによって明示的に定義されてもよく、入力オブジェクトから推論されてもよく、一組の演算を行なった結果に基づいて判断されてもよい。上述のように、判断されるデータタイプは、基本のJSONオブジェクトデータタイプを含み得る。
ステップ580で、一組の演算を行なった結果の値と判断されたデータタイプとに基づいて、出力オブジェクトの対応する属性が生成される。ある実施形態では、演算の空集合によって、入力属性の値が、出力オブジェクトの対応する属性へと流されてもよい。他の実施形態では、一組の演算は、値の名前の変更、新しい値の計算、値の修正、などを行なうことができる。
図6は、一実施形態において、JSONスタイルシート言語オブジェクトの属性と同じ名前を有するJSONデータ属性を変換するための方法600のフローチャートである。図6に示す方法600の実現化例または方法600における処理は、コンピュータシステムまたは情報処理装置などのロジックマシンの中央処理装置(CPUまたはプロセッサ)によって実行される場合にはソフトウェア(たとえば、命令またはコードモジュール)によって、電子装置または特定用途向け集積回路のハードウェアコンポーネントによって、もしくは、ソフトウェア要素とハードウェア要素との組合せによって行なわれてもよい。図6に示す方法600は、ステップ610で始まる。
ステップ610で、入力オブジェクトは、変換オブジェクトの属性の名前と名前が整合している属性を有する、という判断が下される。図7は、一実施形態において、入力JSON文字列710と、JSL文字列720と、JSL文字列720を使用した入力JSON文字列710の属性の変換から生じる出力JSON文字列730との図である。図示されているように、入力JSON文字列710およびJSL文字列720は双方とも、名前“id”による属性を有する。
ステップ620で、同じ名前を有する変換オブジェクトの属性から、演算およびデータタイプに関して判断が下される。図7を参照して、JSL文字列720の属性“id”は、式“root.id * 2”を使用して入力JSON文字列710の属性“id”をどのように変換するかを特定する。言い換えれば、入力JSON文字列710の属性“id”の値に2が乗算されることになっている。JSL文字列720の属性“id”はさらに、式“root.id * 2”から生じる値は整数であるはずである、ということを特定する。
ステップ630で、変換オブジェクトの整合する属性によって特定された、判断された演算が、入力オブジェクトの属性の値に対して行なわれる。ステップ640で、演算の結果と判断されたデータタイプとに基づいて、同じ名前を有する出力オブジェクトについての属性が作成される。図7に示すように、出力JSON文字列730は、式“root.id * 2”を使用して求められた値を有する属性“id”を含む。出力JSON文字列730の属性“id”のデータタイプは、整数である。
図8は、一実施形態において、JSONスタイルシート言語オブジェクトの属性によって参照されるJSONデータ属性を変換するための方法800のフローチャートである。図8に示す方法800の実現化例または方法800における処理は、コンピュータシステムまたは情報処理装置などのロジックマシンの中央処理装置(CPUまたはプロセッサ)によって実行される場合にはソフトウェア(たとえば、命令またはコードモジュール)によって、電子装置または特定用途向け集積回路のハードウェアコンポーネントによって、もしくは、ソフトウェア要素とハードウェア要素との組合せによって行なわれてもよい。図8に示す方法800は、ステップ810で始まる。
ステップ810で、入力オブジェクトは、変換オブジェクトの属性によって名前が参照される属性を有する、という判断が下される。図7に示すように、入力JSON文字列710は名前“name”による属性を有し、JSL文字列720は、入力JSON文字列710の名前“name”による属性を値である式(たとえば“value”:“root.name”)によって参照する名前“new_name”による属性を有する。
ステップ820で、変換オブジェクトの属性から、属性名に関して判断が下される。ステップ830で、変換オブジェクトの属性から、データタイプに関して判断が下される。ステップ840で、判断された名前と判断されたデータタイプとを有する出力オブジェクトについての属性が作成される。図7に示すように、出力JSON文字列730は、入力JSON文字列710の属性“name”と同じ値(たとえば“A green door”)およびデータタイプ(たとえば文字列)を有する属性“new_name”を含む。
図9は、一実施形態において、入力JSON文字列910と、JSL文字列920と、JSL文字列920を使用した入力JSON文字列910の属性値の変換から生じる出力JSON文字列930との図である。この例では、入力JSON文字列910とJSL文字列920とは、整合する属性“tags”を有する。JSL文字列920は、上に示すような属性名の変換ではなく、対応する属性の値の変換を特定する。文字列演算“concat(root.tags,‘_new’)”は、“tags”アレイにおける各要素に添字“_new”を追加するために特定されたものである。したがって、出力JSON文字列930は、アレイの各要素に添字“_new”が追加された“tags”という名前の属性を含む。
図10は、一実施形態において、JSONスタイルシート言語オブジェクトの属性の式を満たすJSONデータ属性を変換するための方法1000のフローチャートである。図10に示す方法1000の実現化例または方法1000における処理は、コンピュータシステムまたは情報処理装置などのロジックマシンの中央処理装置(CPUまたはプロセッサ)によって実行される場合にはソフトウェア(たとえば、命令またはコードモジュール)によって、電子装置または特定用途向け集積回路のハードウェアコンポーネントによって、もしくは、ソフトウェア要素とハードウェア要素との組合せによって行なわれてもよい。図10に示す方法1000は、ステップ1010で始まる。
ステップ1010で、入力オブジェクトは、変換オブジェクトの属性の式を満たす属性または属性値を有する、という判断が下される。その式は、入力属性の名前を参照する、または入力属性の値を参照する、同じ名前を有する変換オブジェクトの属性の値において特定され得る。図11は、一実施形態において、式が満たされた場合の、入力JSON文字列1110と、JSL文字列1120と、JSL文字列1120を使用した入力JSON文字列1110の変換から生じる出力JSON文字列1130との図である。図示されるように、入力JSON文字列1110は名前“emp”による属性を有し、JSL文字列1120は名前“emp”による属性を有する。JSL文字列1120の名前“emp”による属性は、empnameが“B”で始まるオブジェクトによって満たされる“testexpression”における式を含む。したがって、“emp”アレイにおけるたった1つのオブジェクトが条件を満たす(たとえば“empname”:“Bob”)。
ステップ1020で、変換オブジェクトの属性から、演算に関して判断が下される。図11を参照して、JSL文字列1120の属性“emp”は、“textexpression”を満たす入力JSON文字列1110の属性“emp”の各オブジェクトをどのように変換するかを特定する。ステップ1030で、変換オブジェクトの属性から、データタイプに関して判断が下される。ステップ1040で、演算の結果と判断されたデータタイプとに基づいて、出力オブジェクトについての属性が作成される。図11に示すように、出力JSON文字列1130は、“empname”:“Bob”を有する単一のオブジェクトを有する“emp”属性を含む。したがって、属性または属性値をフィルタリングにより除去し、出力オブジェクト中に所望のものだけを残す条件が特定され得る。
図12は、一実施形態において、式が満たされた場合の、入力JSON文字列1210と、JSL文字列1220と、JSL文字列1220を使用した入力JSON文字列1210の変換から生じる出力JSON文字列1230との図である。この例では、所望されない属性または属性値はフィルタリングにより除去される。したがって、CustomerTypeが“Gold”ではなく“Silver”であるため、“textexpression”はオブジェクトから“Discount”:20という属性を除去する。
図13は、一実施形態において、JSONスタイルシート言語オブジェクトを使用してJSONオブジェクト変換を行なうように構成されたハードウェアユニット1300のブロック図である。ハードウェアユニット1300は、JSONデータ受信ユニット1310と、プリプロセッサユニット1320と、JSON変換受信ユニット1330と、変換ユニット1340と、後処理ユニット1350と、JSONデータ生成ユニット1360とを含む。各ユニットは、コンピュータプロセッサにより、メモリに格納するコンピュータ実行可能コードに従って実現されてもよい。
JSONデータ受信ユニット1310は、JSONデータを受信するハードウェアおよび/またはソフトウェア要素を含む。JSONデータ受信ユニット1310は、ユーザ入力または他のコンピュータプロセスからJSONデータを受信することができる。プリプロセッサユニット1320は、JSONデータを前処理するハードウェアおよび/またはソフトウェア要素を含む。1つ以上の前処理ステップは、データ操作演算、データフィルタリング演算、データ増大演算などを含んでいてもよい。JSON変換受信ユニット1330は、JSONデータを受信するハードウェアおよび/またはソフトウェア要素を含む。JSON変換受信ユニット1330は、ユーザ入力または他のコンピュータプロセスからJSONデータを受信することができる。この例では、JSON変換受信ユニット1330で受信されたJSONデータは、上述のJSL仕様に従ってフォーマット化される。
変換ユニット1340は、JSONオブジェクトの形のJSONデータと、JSL変換と、適用される任意の特定された変換とを受信するハードウェアおよび/またはソフトウェア要素を含む。変換ユニット1340は、変換を実現するために、XMLなどの中間言語を必要としない。
後処理ユニット1350は、JSONデータを処理するハードウェアおよび/またはソフトウェア要素を含む。1つ以上の処理ステップは、データ操作演算、データフィルタリング演算、データ増大演算などを含んでいてもよい。JSONデータ生成ユニット1360は、JSONデータを生成するハードウェアおよび/またはソフトウェア要素を含む。複数のユニットが図示されたが、すべてが必要とされるとは限らず、いくつかのユニットによって行なわれるいくつかの機能を他のユニットに組込むことができる、ということが理解されるであろう。
結論
図14は、実施形態のうちの1つを実現するための分散型システム1400の簡略図を示す。図示された実施形態では、分散型システム1400は1つ以上のクライアントコンピューティング装置1402、1404、1406、および1408を含み、それらは、1つ以上のネットワーク1410を通して、ウェブブラウザ、専用クライアント(たとえば、オラクル・フォームズ)などのクライアントアプリケーションを実行し、動作させるように構成される。サーバ1412は、ネットワーク1410を介して、リモートのクライアントコンピューティング装置1402、1404、1406、および1408と通信可能に結合されてもよい。
さまざまな実施形態では、サーバ1412は、システムのコンポーネントのうちの1つ以上によって提供される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。いくつかの実施形態では、これらのサービスは、ウェブベースのサービスまたはクラウドサービスとして、もしくはソフトウェア・アズ・ア・サービス(SaaS)モデルまたはプラットフォーム・アズ・ア・サービス(PaaS)モデルの下で、クライアントコンピューティング装置1402、1404、1406、および/または1408のユーザに提供されてもよい。クライアントコンピューティング装置1402、1404、1406、および/または1408を動作させるユーザは次に、これらのコンポーネントによって提供されるサービスを利用するためにサーバ1412とやりとりするために、1つ以上のクライアントアプリケーションを利用してもよい。
図14に示す構成では、システム1400のソフトウェアコンポーネント1418、1420、および1422は、サーバ1412上で実現されるとして図示されている。他の実施形態では、システム1400のコンポーネントおよび/またはこれらのコンポーネントによって提供されるサービスのうちの1つ以上も、クライアントコンピューティング装置1402、1404、1406、および/または1408のうちの1つ以上によって実現されてもよい。クライアントコンピューティング装置を動作させるユーザは次に、これらのコンポーネントによって提供されるサービスを使用するために、1つ以上のクライアントアプリケーションを利用してもよい。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せで実現されてもよい。分散型システム1400とは異なり得るさまざまな異なるシステム構成が可能であることが理解されるべきである。図に示す実施形態はこのため、実施形態システムを実現するための分散型システムの一例であり、限定的であるよう意図されてはいない。
クライアントコンピューティング装置1402、1404、1406、および/または1408は、携帯型ハンドヘルド装置(たとえば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))、またはウェアラブル装置(たとえば、グーグル・グラス(登録商標)頭部装着型ディスプレイ)であってもよく、マイクロソフト・ウィンドウズ・モバイル(登録商標)などのソフトウェア、および/または、iOS、ウィンドウズ(登録商標)フォン、アンドロイド(登録商標)、ブラックベリー(登録商標)10、パームOSなどのさまざまなモバイルオペレーティングシステムを実行し、インターネット、電子メール、ショートメッセージサービス(SMS)、ブラックベリー(登録商標)、または他の通信プロトコルに対応している。クライアントコンピューティング装置1402、1404、1406、および/または1408は、マイクロソフト・ウィンドウズ(登録商標)、アップル・マッキントッシュ(登録商標)、および/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを例として含む、汎用パーソナルコンピュータであり得る。クライアントコンピューティング装置1402、1404、1406、および/または1408は、たとえばグーグル・クロームOSなどのさまざまなGNU/Linuxオペレーティングシステムを何ら限定されることなく含む、商業的に入手可能なさまざまなUNIX(登録商標)またはUNIX様オペレーティングシステムのうちのいずれかを実行するワークステーションコンピュータであり得る。それに代えて、またはそれに加えて、クライアントコンピューティング装置1402、1404、1406、および1408は、ネットワーク1410を通して通信可能である、シンクライアントコンピュータ、インターネット対応ゲーミングシステム(たとえば、Kinect(登録商標)ジェスチャー入力装置を有する、または有さない、マイクロソフトXboxゲーミングコンソール)、および/またはパーソナルメッセージング装置といった、任意の他の電子装置であってもよい。
例示的な分散型システム1400は4つのクライアントコンピューティング装置を有して図示されているが、任意の数のクライアントコンピューティング装置がサポートされてもよい。センサを有する装置などの他の装置が、サーバ1412とやりとりしてもよい。
分散型システム1400におけるネットワーク1410は、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、アップル・トークなどを何ら限定されることなく含む、商業的に入手可能なさまざまなプロトコルのうちのいずれかを使用してデータ通信をサポートできる、当業者にはよく知られた任意のタイプのネットワークであってもよい。単なる例として、ネットワーク1410は、イーサネット(登録商標)、トークンリングなどに基づくものといった、ローカルエリアネットワーク(LAN)であり得る。ネットワーク1410は、ワイドエリアネットワークおよびインターネットであり得る。それは、仮想プライベートネットワーク(VPN)を何ら限定されることなく含む仮想ネットワーク、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば、電気電子技術者協会(IEEE)802.11プロトコルスイート、Bluetooth(登録商標)、および/または任意の他の無線プロトコルのうちのいずれかの下で動作するネットワーク)、ならびに/もしくは、これらのおよび/または他のネットワークの任意の組合せを含み得る。
サーバ1412は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウントサーバなどを例として含む)、サーバファーム、サーバクラスタ、もしくは任意の他の適切な構成および/または組合せで構成されてもよい。さまざまな実施形態では、サーバ1412は、前述の開示で説明された1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、サーバ1412は、この開示の一実施形態に従った上述の処理を行なうためのサーバに対応していてもよい。
サーバ1412は、上述のもののうちのいずれかを含むオペレーティングシステム、および商業的に入手可能な任意のサーバオペレーティングシステムを実行してもよい。サーバ1412はまた、さまざまな追加のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行してもよく、HTTP(ハイパーテキスト伝送プロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含む。例示的なデータベースサーバは、オラクル、マイクロソフト、サイベース、IBM(インターナショナル・ビジネス・マシーンズ)などから商業的に入手可能なものを何ら限定されることなく含む。
いくつかの実現化例では、サーバ1412は、クライアントコンピューティング装置1402、1404、1406、および1408のユーザから受信されたデータフィードおよび/またはイベント更新を分析して統合するための1つ以上のアプリケーションを含んでいてもよい。一例として、データフィードおよび/またはイベント更新は、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などに関連するリアルタイムイベントを含み得る、1つ以上の第三者情報源および連続データストリームから受信されたツイッター(登録商標)フィード、フェースブック(登録商標)更新またはリアルタイム更新を含んでいてもよいが、それらに限定されない。サーバ1412はまた、クライアントコンピューティング装置1402、1404、1406、および1408の1つ以上の表示装置を介してデータフィードおよび/またはリアルタイムイベントを表示するための1つ以上のアプリケーションを含んでいてもよい。
分散型システム1400はまた、1つ以上のデータベース1414および1416を含んでいてもよい。データベース1414および1416は、さまざまな位置に存在していてもよい。例として、データベース1414および1416のうちの1つ以上は、サーバ1412に対してローカルな(および/または、サーバ1412内にある)非一時的記憶媒体上に存在していてもよい。それに代えて、データベース1414および1416は、サーバ1412からリモートであってもよく、ネットワークベースの接続または専用接続を介してサーバ1412と通信してもよい。一組の実施形態では、データベース1414および1416は、ストレージエリアネットワーク(storage-area network:SAN)に存在していてもよい。同様に、サーバ1412に帰する機能を行なうための任意の必要なファイルが適宜、サーバ1412上にローカルに格納されてもよく、および/またはリモートに格納されてもよい。一組の実施形態では、データベース1414および1416は、SQLフォーマットのコマンドに応答してデータを格納し、更新し、検索するように適合された、オラクルによって提供されるデータベースなどのリレーショナルデータベースを含んでいてもよい。
図15は、この発明のさまざまな実施形態が実現され得る例示的なコンピュータシステム1500を示す。システム1500は、上述のコンピュータシステムのうちのいずれかを実現するために使用されてもよい。図15に示すように、コンピュータシステム1500は、バスサブシステム1502と、バスサブシステム1502を介して多くの周辺サブシステムと通信する処理部1504とを含む。これらの周辺サブシステムは、処理加速部1506と、I/Oサブシステム1508と、記憶サブシステム1518と、通信サブシステム1524とを含んでいてもよい。記憶サブシステム1518は、有形のコンピュータ読取可能記憶媒体1522と、システムメモリ1510とを含む。
バスサブシステム1502は、コンピュータシステム1500のさまざまなコンポーネントおよびサブシステムを意図されるように互いに通信させるためのメカニズムを提供する。バスサブシステム1502は単一のバスとして概略的に図示されているが、バスサブシステムの代替的な実施形態は複数のバスを利用してもよい。バスサブシステム1502は、さまざまなバスアーキテクチャのうちのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む、いくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、そのようなアーキテクチャは、IEEE P1386.1規格で製造されるメザニンバスとして実現可能な、産業標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、強化ISA(EISA)バス、ビデオエレクトロニクス標準組織(Video Electronics Standards Association:VESA)ローカルバス、および周辺コンポーネント相互接続(Peripheral Component Interconnect:PCI)バスを含んでいてもよい。
1つ以上の集積回路(たとえば、従来のマイクロプロセッサまたはマイクロコントローラ)として実現され得る処理部1504は、コンピュータシステム1500の動作を制御する。処理部1504には、1つ以上のプロセッサが含まれていてもよい。これらのプロセッサは、シングルコアまたはマルチコアプロセッサを含んでいてもよい。ある実施形態では、処理部1504は、各処理部にシングルまたはマルチコアプロセッサが含まれた、1つ以上の独立した処理部1532および/または1534として実現されてもよい。他の実施形態では、処理部1504はまた、2つのデュアルコアプロセッサをシングルチップへと集積することによって形成されるクアッドコア処理部として実現されてもよい。
さまざまな実施形態では、処理部1504は、プログラムコードに応答してさまざまなプログラムを実行でき、同時に実行される複数のプログラムまたはプロセスを維持できる。任意の所与の時間において、実行されるべきプログラムコードのうちのいくつかまたはすべては、プロセッサ1504に、および/または記憶サブシステム1518にあり得る。好適なプログラミングを通して、プロセッサ1504は、上述のさまざまな機能性を提供できる。コンピュータシステム1500は加えて処理加速部1506を含んでいてもよく、それは、デジタル信号プロセッサ(digital signal processor:DSP)、専用プロセッサなどを含み得る。
I/Oサブシステム1508は、ユーザインターフェイス入力装置と、ユーザインターフェイス出力装置とを含んでいてもよい。ユーザインターフェイス入力装置は、キーボード、マウスまたはトラックボールなどのポインティング装置、ディスプレイに組込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システム付き音声入力装置、マイクロホン、および他のタイプの入力装置を含んでいてもよい。ユーザインターフェイス入力装置は、たとえば、ジェスチャーおよび口頭コマンドを使用したナチュラルユーザインターフェイスを通して、マイクロソフトXbox(登録商標)360ゲームコントローラなどの入力装置をユーザが制御し、それとやりとりすることを可能にする、マイクロソフトKinect(登録商標)運動センサなどの運動感知および/またはジェスチャー認識装置を含んでいてもよい。ユーザインターフェイス入力装置はまた、ユーザから目の活動(たとえば、写真撮影中および/またはメニュー選択中の「まばたき」)を検出し、アイジェスチャーを入力装置(たとえば、グーグル・グラス(登録商標))への入力として変換する、グーグル・グラス(登録商標)まばたき検出器などのアイジェスチャー認識装置を含んでいてもよい。加えて、ユーザインターフェイス入力装置は、ユーザが音声コマンドを通して音声認識システム(たとえば、Siri(登録商標)ナビゲータ)とやりとりできるようにする音声認識感知装置を含んでいてもよい。
ユーザインターフェイス入力装置はまた、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびに、スピーカ、デジタルカメラ、デジタルビデオカメラ、携帯型メディアプレイヤー、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザー測距器、および視線追跡装置などの音声/視覚装置を、何ら限定されることなく含んでいてもよい。加えて、ユーザインターフェイス入力装置は、たとえば、コンピュータ断層撮影装置、磁気共鳴撮像装置、ポジトロン放出断層撮影装置、医療用超音波検査装置などの医療用撮像入力装置を含んでいてもよい。ユーザインターフェイス入力装置はまた、たとえば、MIDIキーボード、デジタル楽器などの音声入力装置を含んでいてもよい。
ユーザインターフェイス出力装置は、表示サブシステム、表示灯、または、音声出力装置などの非視覚的ディスプレイを含んでいてもよい。表示サブシステムは、陰極線管(cathode ray tube:CRT)、液晶ディスプレイ(liquid crystal display:LCD)またはプラズマディスプレイを使用するものなどのフラットパネル装置、投影装置、タッチスクリーンなどであってもよい。一般に、「出力装置」という用語の使用は、コンピュータシステム1500からユーザまたは他のコンピュータに情報を出力するためのあらゆる可能なタイプの装置およびメカニズムを含むよう意図されている。たとえば、ユーザインターフェイス出力装置は、モニタ、プリンタ、スピーカ、ヘッドホン、自動車ナビゲーションシステム、プロッタ、音声出力装置、およびモデムといった、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示装置を、何ら限定されることなく含んでいてもよい。
コンピュータシステム1500は、現在システムメモリ1510内に位置するとして図示されたソフトウェア要素を含む記憶サブシステム1518を含んでいてもよい。システムメモリ1510は、処理部1504上でロード可能および実行可能なプログラム命令と、これらのプログラムの実行中に生成されたデータとを格納してもよい。
コンピュータシステム1500の構成およびタイプに依存して、システムメモリ1510は揮発性(ランダムアクセスメモリ(random access memory:RAM)など)であってもよく、および/または不揮発性(読出専用メモリ(read-only memory:ROM)、フラッシュメモリなど)であってもよい。RAMは典型的には、処理部1504に直ちにアクセス可能であり、および/または処理部1504によって現在動作および実行中のデータおよび/またはプログラムモジュールを含む。いくつかの実現化例では、システムメモリ1510は、スタティックランダムアクセスメモリ(static random access memory:SRAM)またはダイナミックランダムアクセスメモリ(dynamic random access memory:DRAM)などの複数の異なるタイプのメモリを含んでいてもよい。いくつかの実現化例では、起動中などにコンピュータシステム1500内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入力/出力システム(basic input/output system:BIOS)が、典型的にはROMに格納されていてもよい。限定のためではなく例として、システムメモリ1510はまた、クライアントアプリケーション、ウェブブラウザ、中央層アプリケーション、リレーショナルデータベース管理システム(relational database management system:RDBMS)などを含み得るアプリケーションプログラム1512と、プログラムデータ1514と、オペレーティングシステム1516とを示す。例として、オペレーティングシステム1516は、マイクロソフト・ウィンドウズ(登録商標)、アップル・マッキントッシュ(登録商標)、および/またはLinuxオペレーティングシステムのさまざまなバージョン、商業的に入手可能なさまざまなUNIX(登録商標)またはUNIX様オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、グーグル・クローム(登録商標)OSなどを何ら限定されることなく含む)、および/または、iOS、ウィンドウズ(登録商標)フォン、アンドロイド(登録商標)OS、ブラックベリー(登録商標)10OS、パーム(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムを含んでいてもよい。
記憶サブシステム1518はまた、いくつかの実施形態の機能性を提供する基本プログラミングおよびデータ構造を格納するための有形のコンピュータ読取可能記憶媒体を提供してもよい。プロセッサによって実行されると上述の機能性を提供するソフトウェア(プログラム、コードモジュール、命令)が、記憶サブシステム1518に格納されてもよい。これらのソフトウェアモジュールまたは命令は、処理部1504によって実行されてもよい。記憶サブシステム1518はまた、この発明に従って使用されるデータを格納するためのリポジトリを提供してもよい。
記憶サブシステム1500はまた、コンピュータ読取可能記憶媒体1522にさらに接続され得るコンピュータ読取可能記憶媒体リーダ1520を含んでいてもよい。システムメモリ1510とともに、およびオプションでシステムメモリ1510と組合わされて、コンピュータ読取可能記憶媒体1522は、リモート、ローカル、固定および/またはリムーバブルの記憶装置に加えて、コンピュータ読取可能情報を一時的におよび/またはより永続的に含み、格納し、送信し、検索するための記憶媒体を包括的に表わしてもよい。
コードまたはコードの一部を含むコンピュータ読取可能記憶媒体1522はまた、情報の格納および/または送信のためのあらゆる方法または技術で実現される揮発性および不揮発性でリムーバブルおよび非リムーバブルの媒体を含むがそれらに限定されない記憶媒体および通信媒体を含む、当該技術分野において公知であるかまたは使用されるあらゆる適切な媒体を含み得る。これは、RAM、ROM、電子的消去可能プログラマブルROM(electronically erasable programmable ROM:EEPROM)、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(digital versatile disk:DVD)または他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、もしくは他の有形のコンピュータ読取可能媒体といった、有形のコンピュータ読取可能記憶媒体を含み得る。これは、所望の情報を送信するために使用可能であり、コンピューティングシステム1500によってアクセスされ得るデータ信号、データ送信、または任意の他の媒体といった、非有形のコンピュータ読取可能媒体も含み得る。
例として、コンピュータ読取可能記憶媒体1522は、非リムーバブルで不揮発性の磁気媒体から読出し、またはそれに書込むハードディスクドライブ、リムーバブルで不揮発性の磁気ディスクから読出し、またはそれに書込む磁気ディスクドライブ、ならびに、CD ROM、DVD、およびBlu−Ray(登録商標)ディスク、または他の光学媒体といった、リムーバブルで不揮発性の光ディスクから読出し、またはそれに書込む光ディスクドライブを含んでいてもよい。コンピュータ読取可能記憶媒体1522は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(universal serial bus:USB)フラッシュドライブ、セキュアデジタル(secure digitalSD)カード、DVDディスク、デジタルビデオテープなどを含んでいてもよいが、それらに限定されない。コンピュータ読取可能記憶媒体1522はまた、フラッシュメモリベースのソリッドステートドライブ(solid-state drive:SSD)、企業フラッシュドライブ、ソリッドステートROMといった、不揮発性メモリに基づいたSSD、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSDといった、揮発性メモリに基づいたSSD、および、DRAMベースのSSDとフラッシュメモリベースのSSDとの組合せを使用するハイブリッドSSDを含んでいてもよい。ディスクドライブおよびそれらの関連付けられたコンピュータ読取可能媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージをコンピュータシステム1500に提供してもよい。
通信サブシステム1524は、他のコンピュータシステムおよびネットワークへのインターフェイスを提供する。通信サブシステム1524は、コンピュータシステム1500とは別のシステムからデータを受信し、別のシステムにデータを送信するためのインターフェイスとして機能する。たとえば、通信サブシステム1524は、コンピュータシステム1500がインターネットを介して1つ以上の装置に接続できるようにしてもよい。いくつかの実施形態では、通信サブシステム1524は、(たとえば、3G、4G、またはEDGE(enhanced data rates for global evolution:エンハンスト・データレート・フォー・グローバル・エボリューション)、WiFi(IEEE802.11ファミリー規格)、または他の移動通信技術、またはそれらの任意の組合せといった携帯電話技術、高度なデータネットワーク技術を使用した)無線音声および/またはデータネットワークにアクセスするための無線周波数(radio frequency:RF)トランシーバコンポーネント、全地球測位システム(global positioning system:GPS)受信機コンポーネント、および/または他のコンポーネントを含み得る。いくつかの実施形態では、通信サブシステム1524は、無線インターフェイスに加えて、またはその代わりに、有線ネットワーク接続(たとえば、イーサネット)を提供できる。
いくつかの実施形態では、通信サブシステム1524はまた、コンピュータシステム1500を使用し得る1人以上のユーザのために、構造化および/または非構造化データフィード1526、イベントストリーム1528、イベント更新1530などの形をした入力通信を受信してもよい。
例として、通信サブシステム1524は、ツイッター(登録商標)フィード、フェースブック(登録商標)更新、リッチ・サイト・サマリー(Rich Site Summary:RSS)フィードなどのウェブフィード、および/または1つ以上の第三者情報源からのリアルタイム更新といった、ソーシャルネットワークおよび/または他の通信サービスのユーザからのデータフィード1526をリアルタイムで受信するように構成されてもよい。
加えて、通信サブシステム1524はまた、リアルタイムイベントのイベントストリーム1528および/またはイベント更新1530を含み得る、明確な終わりがなく本質的に連続的または無限であり得る連続データストリームの形をしたデータを受信するように構成されてもよい。連続データを生成するアプリケーションの例は、たとえば、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などを含んでいてもよい。
通信サブシステム1524はまた、構造化および/または非構造化データフィード1526、イベントストリーム1528、イベント更新1530などを、コンピュータシステム1500に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに出力するように構成されてもよい。
コンピュータシステム1500は、ハンドヘルド携帯装置(たとえば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブル装置(たとえば、グーグル・グラス(登録商標)頭部装着型ディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の他のデータ処理システムを含む、さまざまなタイプのうちの1つであり得る。
コンピュータおよびネットワークの絶えず変化する性質により、図に示すコンピュータシステム1500の説明は、単に特定の一例として意図される。図に示すシステムよりも多い、または少ないコンポーネントを有する多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアも使用されてもよく、および/または、特定の要素が、ハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、または組合せで実現されてもよい。また、ネットワーク入力/出力装置などの他のコンピューティング装置への接続が採用されてもよい。ここに提供される開示および教示に基づいて、当業者であれば、さまざまな実施形態を実現するための他のやり方および/または方法を理解するであろう。
前述の明細書では、この発明の局面をその特定の実施形態を参照して説明したが、当業者であれば、この発明がそれに限定されないことを認識するであろう。上術の発明のさまざまな特徴および局面は、個々にまたは共同で使用されてもよい。また、実施形態は、明細書のより広範な精神および範囲から逸脱することなく、ここに記載されたものを超える任意の数の環境および用途において利用され得る。したがって、明細書および図面は、限定的でなく例示的であると見なされるべきである。
その教示がこの開示において提示され得る1つ以上の発明のうちのいずれかのさまざまな実施形態が、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せにおけるロジックの形で実現され得る。ロジックは、この開示において提示された発明のさまざまな実施形態において開示され得る一組のステップを行なうように、ロジックマシンの中央処理装置(CPUまたはプロセッサ)に指示するように適合された一組の命令として、マシンアクセス可能なメモリ、マシン読取可能な物品、有形のコンピュータ読取可能媒体、コンピュータ読取可能記憶媒体、または他のコンピュータ/マシン読取可能媒体に格納されてもよい。ロジックは、コードモジュールが、この開示において提示された発明のさまざまな実施形態において方法またはプロセスを行なうために実行される際に、コンピュータシステムまたは情報処理装置のプロセッサにより動作可能になると、ソフトウェアプログラムまたはコンピュータプログラム製品の一部を形成してもよい。ここに提供されたこの開示および教示に基づいて、当業者であれば、提示された発明のうちの1つ以上におけるさまざまな実施形態の開示された動作または機能性のいずれかを、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せで実現するための他のやり方、変形例、修正例、代替例、および/または方法を理解するであろう。
その教示がこの開示において提示され得るそれらの発明のうちのいずれか1つの開示された例、実現化例、およびさまざまな実施形態は、この開示の教示を適正な明確性で当業者に伝えるように例示的であるに過ぎない。これらの実現化例および実施形態は例示的な図解または特定の図を参照して説明され得るため、説明された方法および/または特定の構造のさまざまな修正例または適合例が、当業者には明らかとなり得る。ここに見出されたこの開示およびこれらの教示に依存し、かつ、教示が技術を進歩させた際に経た、すべてのそのような修正例、適合例、または変形例は、その教示がこの開示において提示され得る1つ以上の発明の範囲内にあると考えられるべきである。よって、開示において提示された発明は、具体的に示された実施形態にまったく限定されないということが理解されるため、本説明および図面は限定的な意味で考えられるべきでない。
したがって、上述の説明およびあらゆる添付図面、図解、および図は、限定的ではなく例示的であるよう意図されている。この開示において提示されたあらゆる発明の範囲はしたがって、上述の説明および図に示されたそれらの実施形態を単純に参照するのではなく、係属中の請求項をそれらの完全な範囲または均等物とともに参照して、判断されるべきである。