IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オラクル・インターナショナル・コーポレイションの特許一覧

特表2023-514536障害が起こったデータベーストランザクション記録の取扱い
<>
  • 特表-障害が起こったデータベーストランザクション記録の取扱い 図1
  • 特表-障害が起こったデータベーストランザクション記録の取扱い 図2
  • 特表-障害が起こったデータベーストランザクション記録の取扱い 図3
  • 特表-障害が起こったデータベーストランザクション記録の取扱い 図4
  • 特表-障害が起こったデータベーストランザクション記録の取扱い 図5
  • 特表-障害が起こったデータベーストランザクション記録の取扱い 図6
  • 特表-障害が起こったデータベーストランザクション記録の取扱い 図7
  • 特表-障害が起こったデータベーストランザクション記録の取扱い 図8
  • 特表-障害が起こったデータベーストランザクション記録の取扱い 図9
  • 特表-障害が起こったデータベーストランザクション記録の取扱い 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-04-06
(54)【発明の名称】障害が起こったデータベーストランザクション記録の取扱い
(51)【国際特許分類】
   G06F 16/23 20190101AFI20230330BHJP
【FI】
G06F16/23
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022547148
(86)(22)【出願日】2021-01-07
(85)【翻訳文提出日】2022-09-27
(86)【国際出願番号】 US2021012391
(87)【国際公開番号】W WO2021158324
(87)【国際公開日】2021-08-12
(31)【優先権主張番号】16/780,862
(32)【優先日】2020-02-03
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ヌカラ・ベンカタ・ナガ,ラマ・クリシュナ・スレンドラ・ナス
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175BA01
5B175CA09
(57)【要約】
データをデータベースにコミットするために受信されるデータベーストランザクション記録は、1つ以上の検証タスクに関連付けられ得る。検証タスクのうちの1つが失敗すると、障害が検出され、トランザクション記録の処理が停止される。トランザクション記録を終了させて、サブミット側システムにプロセスを再開するよう要求する代わりに、システムは、自動再サブミッションが可能かどうかを判定するためにマッピングテーブルを使用し得る。元のトランザクション記録から呼出しコンテキストをコピーする新しいトランザクション記録が生成され、トランザクションペイロードの部分が、新しいトランザクション記録が検証タスクに合格することを保証する変更を伴って、新しいトランザクション記録にコピーされ得る。新しいトランザクション記録は次に、元のトランザクション記録を受信したのと同じインターフェイスを通してサブミット可能であり、元のトランザクション記録はトランザクションデータストアから除去可能である。
【特許請求の範囲】
【請求項1】
1つ以上のプロセッサによって実行されると前記1つ以上のプロセッサに動作を行なわせる命令を含む、非一時的コンピュータ読取可能媒体であって、前記動作は、
データベースにコミットされるべき第1のトランザクションを受信することを含み、前記第1のトランザクションは、前記データベースにコミットされる前に1つ以上の検証を必要とし、前記動作はさらに、
トランザクションオブジェクトをトランザクションデータストアに書込むことを含み、前記トランザクションオブジェクトは、前記第1のトランザクションのための呼出しコンテキストを含み、前記動作はさらに、
前記第1のトランザクションを、前記1つ以上の検証を行なうためのプロセスにサブミットすることと、
前記第1のトランザクションのための前記1つ以上の検証のうちの少なくとも1つが失敗したと判定することと、
前記トランザクションデータストアから前記トランザクションオブジェクトを検索することと、
前記呼出しコンテキストを前記トランザクションオブジェクトから第2のトランザクションにコピーすることと、
前記第2のトランザクションを、前記1つ以上の検証を行なうための前記プロセスにサブミットすることとを含む、非一時的コンピュータ読取可能媒体。
【請求項2】
前記第1のトランザクションのための前記呼出しコンテキストは、前記第1のトランザクションをサブミットしたユーザアカウントのためのユーザコンテキストを含む、請求項1に記載の非一時的コンピュータ読取可能媒体。
【請求項3】
前記ユーザコンテキストは、ユーザ名と、ユーザ識別子と、作成時間とを含む、請求項2に記載の非一時的コンピュータ読取可能媒体。
【請求項4】
前記第2のトランザクションは、前記ユーザアカウントとは異なる管理アカウントによって、前記1つ以上の検証を行なうための前記プロセスにサブミットされる、請求項2に記載の非一時的コンピュータ読取可能媒体。
【請求項5】
前記動作はさらに、トランザクションペイロードを前記トランザクションオブジェクトから前記第2のトランザクションにコピーすることを含む、請求項1に記載の非一時的コンピュータ読取可能媒体。
【請求項6】
前記第2のトランザクションを、前記1つ以上の検証を行なうための前記プロセスにサブミットすることは、サービス指向アーキテクチャ(SOA)が1つ以上のビジネスプロセス実行言語(BPEL)プロセスに前記1つ以上の検証を行なわせるように、SOAシステムに通知するためのイベントを生成することを含む、請求項1に記載の非一時的コンピュータ読取可能媒体。
【請求項7】
前記動作はさらに、前記1つ以上のBPELプロセスが、前記第1のトランザクションのための前記1つ以上の検証のうちの少なくとも1つが失敗したと判定した場合に、SOA障害ハンドラへしるしを送信することを含む、請求項6に記載の非一時的コンピュータ読取可能媒体。
【請求項8】
前記動作はさらに、前記SOA障害ハンドラが、前記第1のトランザクションのための前記1つ以上の検証が失敗したというしるしを、前記トランザクションデータストアにおける前記トランザクションオブジェクトに書込むことを含む、請求項7に記載の非一時的コンピュータ読取可能媒体。
【請求項9】
前記動作はさらに、
前記第2のトランザクションのための前記1つ以上の検証の各々が成功したと判定することと、
前記第2のトランザクションが前記データベースにコミットされるようにすることとを含む、請求項1に記載の非一時的コンピュータ読取可能媒体。
【請求項10】
前記動作はさらに、前記第2のトランザクションのための第2のトランザクションオブジェクトを前記トランザクションデータストアに書込むことを含む、請求項1に記載の非一時的コンピュータ読取可能媒体。
【請求項11】
前記動作はさらに、前記第1のトランザクションのための前記1つ以上の検証のうちの少なくとも1つが失敗したと判定した後に、
前記第1のトランザクションの実行時ステータスを判定することと、
前記第1のトランザクションの前記実行時ステータスは前記第2のトランザクションがサブミットされることを可能にすると判定することとを含む、請求項1に記載の非一時的コンピュータ読取可能媒体。
【請求項12】
前記第1のトランザクションの前記実行時ステータスは、前記第1のトランザクションが進行中であり、SOAコンポジットインスタンスまたはBPELタスクがエラー状態にあることを示す、請求項11に記載の非一時的コンピュータ読取可能媒体。
【請求項13】
前記第1のトランザクションの前記実行時ステータスは、前記第1のトランザクションがサブミットされ、SOAシステムに通知するイベントが生成されたものの、SOAコンポジットインスタンスまたはBPELタスクがまだ作成されていないことを示す、請求項11に記載の非一時的コンピュータ読取可能媒体。
【請求項14】
前記第1のトランザクションの前記実行時ステータスは前記第2のトランザクションがサブミットされることを可能にすると判定することは、既存のトランザクションに基づいて新しいトランザクションをサブミットするために、対応するトランザクション要件を有するトランザクションステータスのリストを含むデータテーブルにアクセスすることを含む、請求項11に記載の非一時的コンピュータ読取可能媒体。
【請求項15】
前記動作はさらに、前記第1のトランザクションを終了させ、前記トランザクションデータストアから前記トランザクションオブジェクトを消去することを含む、請求項1に記載の非一時的コンピュータ読取可能媒体。
【請求項16】
前記第1のトランザクションのための前記1つ以上の検証のうちの少なくとも1つが失敗したと判定することは、前記トランザクションデータストアにおける前記トランザクションオブジェクトと、SOA障害ハンドラによって生成された、前記第1のトランザクションのための前記1つ以上の検証が失敗したというしるしとを監視することを含む、請求項1に記載の非一時的コンピュータ読取可能媒体。
【請求項17】
前記第1のトランザクションのための前記1つ以上の検証のうちの少なくとも1つが失敗したと判定することは、
前記データベースにコミットされるべきトランザクションのリストを提供するトランザクションコンソールアプリケーションを生成することと、
前記トランザクションコンソールアプリケーションを通して前記第1のトランザクションの選択を受信することと、
前記トランザクションコンソールアプリケーションに前記第1のトランザクションの実行時ステータスを表示することとを含む、請求項1に記載の非一時的コンピュータ読取可能媒体。
【請求項18】
前記1つ以上の検証は、前記第1のトランザクションが前記データベースにコミットされることを可能にするユーザからの認可を受けることを含む、請求項1に記載の非一時的コンピュータ読取可能媒体。
【請求項19】
システムであって、
1つ以上のプロセッサと、
1つ以上のメモリデバイスとを含み、前記1つ以上のメモリデバイスは、前記1つ以上のプロセッサによって実行されると前記1つ以上のプロセッサに動作を行なわせる命令を含み、前記動作は、
データベースにコミットされるべき第1のトランザクションを受信することを含み、前記第1のトランザクションは、前記データベースにコミットされる前に1つ以上の検証を必要とし、前記動作はさらに、
トランザクションオブジェクトをトランザクションデータストアに書込むことを含み、前記トランザクションオブジェクトは、前記第1のトランザクションのための呼出しコンテキストを含み、前記動作はさらに、
前記第1のトランザクションを、前記1つ以上の検証を行なうためのプロセスにサブミットすることと、
前記第1のトランザクションのための前記1つ以上の検証のうちの少なくとも1つが失敗したと判定することと、
前記トランザクションデータストアから前記トランザクションオブジェクトを検索することと、
前記呼出しコンテキストを前記トランザクションオブジェクトから第2のトランザクションにコピーすることと、
前記第2のトランザクションを、前記1つ以上の検証を行なうための前記プロセスにサブミットすることとを含む、システム。
【請求項20】
障害が起こったデータベーストランザクション記録を再サブミットする方法であって、前記方法は、
データベースにコミットされるべき第1のトランザクションを受信するステップを含み、前記第1のトランザクションは、前記データベースにコミットされる前に1つ以上の検証を必要とし、前記方法はさらに、
トランザクションオブジェクトをトランザクションデータストアに書込むステップを含み、前記トランザクションオブジェクトは、前記第1のトランザクションのための呼出しコンテキストを含み、前記方法はさらに、
前記第1のトランザクションを、前記1つ以上の検証を行なうためのプロセスにサブミットするステップと、
前記第1のトランザクションのための前記1つ以上の検証のうちの少なくとも1つが失敗したと判定するステップと、
前記トランザクションデータストアから前記トランザクションオブジェクトを検索するステップと、
前記呼出しコンテキストを前記トランザクションオブジェクトから第2のトランザクションにコピーするステップと、
前記第2のトランザクションを、前記1つ以上の検証を行なうための前記プロセスにサブミットするステップとを含む、方法。
【発明の詳細な説明】
【背景技術】
【0001】
関連出願との相互参照
本願は、2020年2月3日に出願された、「障害が起こったデータベーストランザクション記録の取扱い」(HANDLING FAULTED DATABASE TRANSACTION RECORDS)と題された米国特許出願第16/780,862号の利益および優先権を主張する。
【0002】
背景
データベーストランザクションは、データベース管理システム内でデータベースに対して行なわれるプロセスを象徴する。トランザクションは典型的には、変更されるべき値、アクセスされるべきテーブル、および他の記述的情報を含むデータベースに1つ以上の変更を加えるための要求の局面を表わすトランザクション記録によって表わされる。データベース管理システム内で、トランザクション記録は、データベース管理システム内の複数のテーブルに対して実行される複数の動作を生成し得る。しかしながら、トランザクションは全体として、原子的で一貫し、分離され、かつ耐久性のある1つのプロセスとして、トランザクション記録によって表わされ得る。
【0003】
承認されていないかまたは正しくないトランザクション記録がデータベースにコミットされることを防止するために、いくつかのトランザクション記録は、データベースコミットが許可される前にトランザクション記録に対して実行され得る1つ以上の検証を含み得る。これらの検証は、追加のシステム/ユーザからの認可と、トランザクション記録における値に対して実行される検証規則とを受けることを含み得る。トランザクション記録が検証手順を履行しない場合、データベース管理システムは、トランザクション記録がデータベースにコミットされることを防止する。トランザクション記録はその場合キャンセルされ、トランザクション記録を提供するシステムは不履行について通知され得る。
【発明の概要】
【0004】
概要
データをデータベースにコミットするために受信されるデータベーストランザクション記録は、1つ以上の検証タスクに関連付けられ得る。検証タスクのうちの1つが失敗すると、障害が検出され、トランザクション記録の処理が停止される。トランザクション記録を終了させて、サブミット側システムにプロセスを再開するよう要求する代わりに、システムは、自動再サブミッションが可能かどうかを判定するためにマッピングテーブルを使用し得る。元のトランザクション記録から呼出しコンテキストをコピーする新しいトランザクション記録が生成され、トランザクションペイロードの部分が、新しいトランザクション記録が検証タスクに合格することを保証する変更を伴って、新しいトランザクション記録にコピーされ得る。新しいトランザクション記録は次に、元のトランザクション記録を受信したのと同じインターフェイスを通してサブミット可能であり、元のトランザクション記録はトランザクションデータストアから除去可能である。
【0005】
トランザクション記録がデータベースにコミットされるために最初に受信されると、それは、それがデータベースにコミットされる前に必要とされ得る検証に関連付けられ得る。トランザクション記録の処理を開始するイベントが起こり得る。加えて、トランザクションと、トランザクションのための呼出しコンテキストと、他の記述的材料とを含むトランザクションデータストアに、トランザクションオブジェクトが書込まれ得る。呼出しコンテキストは、ユーザ名、ユーザID、ソースアプリケーションインターフェイス、トランザクション記録をサブミットし、修正し、編集し、または他の態様でトランザクション記録と対話するユーザについての識別子、サブミッション日/時間などといった、トランザクション記録の起点を記述するメタデータを含み得る。トランザクションデータストアはまた、トランザクション記録がシステムによって処理される際にトランザクション記録の実行時ステータスを維持し得る。
【0006】
トランザクション記録の処理を開始するためにイベントが起こると、コンポジットがトランザクション記録について識別され、その記録についてのコンポジットインスタンスが生成され得る。コンポジットインスタンスは、トランザクション記録のための検証の各々についてタスクを組み立てて実行するための青写真として作用する。検証タスクは、トランザクションデータのためのユーザ認可および検証規則を含み得る。検証タスクが失敗すると、システムは、あらゆる障害詳細をトランザクションデータストアに格納し、トランザクションコンソールと通信する監視プロセスへ障害の通知を送信し得る。管理アカウントが、失敗したあらゆるタスクを、コンソールアプリケーションを通して監視し得る。単にタスクを終了させて、プロセスがゼロから再開されなければならないことをユーザに通知する代わりに、管理アカウントは、エンドユーザに対して透過的である再サブミッションプロセスを開始することができる。
【0007】
新しいトランザクションの再サブミッションを可能にするために一組の基準が満たされているかどうかを判定するために、マッピングテーブルが使用され得る。マッピングテーブルは、イベントステータス、コンポジットステータス、タスクステータスなどといった、処理パイプラインにおけるトランザクション記録の現在のステータスを使用し得る。これらの基準が満たされている場合、新しいトランザクションオブジェクトが生成され、最初の呼出しコンテキストがトランザクションデータストアからコピーされ得る。トランザクションペイロードにおける値も、トランザクション記録がその後検証タスクに合格するように、コピーおよび/または変更され得る。呼出しコンテキストをコピーすることにより、トランザクションは、システムが依然として元のユーザにプロセスがいつ完了するかを通知するように、元のインターフェイスを通してサブミットされ得る。
【0008】
図面の簡単な説明
本発明の性質および利点の一層の理解は、明細書の残りの部分および図面を参照して実現され得る。いくつかの図面にわたり、同様の構成要素を指すために同じ参照符号が使用される。場合によっては、複数の同様の構成要素のうちの1つを示すために、参照符号にサブラベルが関連付けられる。既存のサブラベルへの特定化なく参照符号が参照される場合、それは、そのような複数の同様の構成要素すべてを指すよう意図されている。
【図面の簡単な説明】
【0009】
図1】いくつかの実施形態に従った、トランザクション記録を受信し、検証し、および/またはデータベースにコミットするためのアーキテクチャのシステム図である。
図2】いくつかの実施形態に従った、トランザクションコンソールアプリケーションによって生成され得るユーザインターフェイスを示す図である。
図3】いくつかの実施形態に従った、障害が起こったトランザクション記録の再サブミッションを容易にするアーキテクチャのシステム図である。
図4】いくつかの実施形態に従った、再サブミットプロセス中のトランザクションコンソールアプリケーションのためのユーザインターフェイスを示す図である。
図5】いくつかの実施形態に従った、失敗したデータベーストランザクション記録を再サブミットするための方法のフローチャートを示す図である。
図6】いくつかの実施形態に従った、失敗したトランザクション記録の再サブミッションを実行するための方法のフローチャートを示す図である。
図7】いくつかの実施形態に従った、トランザクション記録の各処理段階についての再サブミッション基準を判定するために使用され得るマッピングテーブルを示す図である。
図8】実施形態のうちのいくつかを実現するための分散型システムの簡略ブロック図である。
図9】実施形態システムのコンポーネントによって提供されるサービスをクラウドサービスとして提供し得るシステム環境のコンポーネントの簡略ブロック図である。
図10】さまざまな実施形態が実現され得る例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【0010】
詳細な説明
ここに説明されるのは、障害が起こったデータベーストランザクション記録を再サブミットするための実施形態である。データをデータベースにコミットするために受信されるデータベーストランザクション記録は、1つ以上の検証タスクに関連付けられ得る。検証タスクのうちの1つが失敗すると、障害が検出され、トランザクション記録の処理が停止される。トランザクション記録を終了させて、サブミット側システムにプロセスを再開するよう要求する代わりに、システムは、自動再サブミッションが可能かどうかを判定するためにマッピングテーブルを使用し得る。元のトランザクション記録から呼出しコンテキストをコピーする新しいトランザクション記録が生成され、トランザクションペイロードの部分が、新しいトランザクション記録が検証タスクに合格することを保証する変更を伴って、新しいトランザクション記録にコピーされ得る。新しいトランザクション記録は次に、元のトランザクション記録を受信したのと同じインターフェイスを通してサブミット可能であり、元のトランザクション記録はトランザクションデータストアから除去可能である。
【0011】
クラウドベースの環境を含む多くの動作環境は、ソフトウェアの技術的スタックにおける複合層の上に構築される。エンドユーザによってアプリケーションインターフェイスを通してサブミットされるトランザクション記録はしばしば、障害または失敗をもたらす。そのような障害は、多くの異なる理由により、プロセスのさまざまな段階で生じ得る。しかしながら、理由にかかわらず、ユーザアプリケーションを通してサブミットされたトランザクションで障害が生じると、それらのトランザクション記録をサブミットしたエンドユーザはしばしば、トランザクション記録が失敗したと通知される。この通知後、エンドユーザにとっての唯一のオプションは、トランザクションを手動で再構成し、ユーザインターフェイスを通してトランザクション記録を手動で再サブミットすることである。トランザクションデータをデータベースにコミットするために、元のトランザクションは典型的にはキャンセルされ、新しいトランザクションが必要とされる。
【0012】
トランザクション記録障害または「障害インシデント」は、トランザクションがデータベース上でコミットされることに向かって進んでいないあらゆる状況を含み得る。トランザクション記録障害を引き起こし得る状況は、少なくとも2つのカテゴリーへとおおまかに細分され得る。第1に、障害は、システムエラーによって引き起こされ得る。システムエラーは、有効であるはずのトランザクションを受信側システムが実行できないような、受信側システムに関するあらゆるハードウェアおよび/またはソフトウェア問題を含み得る。たとえば、システムエラーは、一時的に利用不能であるかまたは到達不能であるサーバを含み得る。別の例では、システムエラーは、現在アップグレード中であるかまたはオフラインであるデータベースに書込むことを含み得る。別の例では、システムエラーは、通信システムにおけるネットワーク障害または帯域幅の欠如を含み得る。これらの状況の各々では、受信側システムのハードウェア/ソフトウェアに関する問題は、トランザクション自体ではなく障害にあり得る。
【0013】
システムエラーに遭遇した場合、トランザクション記録をサブミットするアプリケーションは、トランザクションを実行するために一連の再試行間隔を使用し得る。たとえば、システム障害は、トランザクションを周期的に再サブミットすることによって自動的に回復され得る。場合によっては、各再サブミッションで再試行間隔が徐々に増加される(たとえば、5分、15分、30分、60分後などに再試行する)さまざまなバックオフアルゴリズムが使用され得る。再試行がサブミットされると、最初に障害を引き起こしたハードウェアおよび/またはソフトウェアエラーは、トランザクションが最終的に成功するように、再試行間隔の間で修正されるであろう。
【0014】
システムエラーとは対照的に、障害の第2のカテゴリーは、検証失敗によるものであり得る。いくつかのトランザクションは、1つ以上の「検証」または「検証規則」の対象であり得る。検証のうちのいずれかが失敗した場合、トランザクションは、データがデータベースにコミットされないように拒否され得る。これらの検証は、データをデータベースにコミットする前にトランザクションが一組の規則を順守することを確認するために、トランザクションのペイロード上に対して行なわれ得る。たとえば、概して「ビジネスデータ」と呼ばれるクラスデータについては、検証は、自動ビジネスプロセスの一環としてビジネスプロセスマネージャ(Business Process Manager:BPM)によって確認される1つ以上のビジネス規則を含み得る。検証規則および/またはアルゴリズムは、ビジネスプロセス実行言語(Business Process Execution Language:BPEL)で書込まれ、BPMによってトランザクションのペイロードに対して実行され得る。たとえば、タイムオフを要求するトランザクション記録が、ユーザから時間管理アプリケーションを通して受信され得る。そのような要求に関連付けられた検証規則は、そのユーザに割り当てられた利用可能な休暇日数を要求中の休暇日数と比較する規則を含み得る。別の規則は、要求された日付と出席が必要な一連の日との比較を含み得る。これらの検証規則が満たされている場合のみ、タイムオフは承認され、要求は従業員記録のためのデータベースにコミットされ得る。
【0015】
なお、BPEL検証アルゴリズムを用いたBPMの使用は単なる例として提供されており、限定的であるよう意図されてはいない。以下に説明される実施形態は、任意のタイプのデータベースにコミットされるべきトランザクション記録に対するどの一組の検証にも適合するように設計されている。たとえば、データベース管理システム(Database Management System:DBMS)は、トランザクションがデータベースにコミットされる前に任意のタイプのデータ検証規則を含み得る。しかしながら、以下に説明される例は、特定のタイプのシステムアーキテクチャを一例として使用する。このアーキテクチャは、トランザクション記録を検証するためにBPMを実行するサービス指向アーキテクチャ(Service Oriented Architecture:SOA)にサブミットされる、クラウドベースのアプリケーションから受信されたトランザクション記録を含み得る。
【0016】
以下に説明される実施形態は、待ち状態のトランザクションがそれらのステータスに基づいてナビゲートされることを可能にするコンソールアプリケーションを提供し管理する。これは次に、検証エラーに起因して障害を生成したトランザクション記録が、管理アカウントを通して識別され訂正されることを可能にする。以下に説明されるアルゴリズムは、管理アカウントアカウントが、保存された呼出しコンテキストを再使用することにより、障害が起こったトランザクションに基づいて新しいトランザクションを生成することを可能にする。これは、トランザクションをサブミットした最初のユーザからのアクションを必要とすることなく、新しいトランザクションがサブミットされ検証されることを可能にする。最初のトランザクションをサブミットした後で、ユーザは次に、トランザクションがいつ検証され、データベースに首尾よくコミットされるかについて通知され得る。最初のトランザクションに基づいて第2のトランザクションを再サブミットするプロセスは、エンドユーザに対して完全に透過的であり得る。
【0017】
図1は、いくつかの実施形態に従った、トランザクション記録を受信し、検証し、および/またはデータベースにコミットするためのアーキテクチャ100のシステム図を示す。アーキテクチャ100は、アプリケーションインターフェイス102を含み得る。アプリケーションインターフェイス102は、システムの残りに登録されたユーザアカウントを有するユーザにアクセス可能なあらゆるアプリケーションを含み得る。アプリケーションインターフェイス102は、クラウド環境と通信するクライアントデバイス上のユーザインターフェイスとして生成され得る。たとえば、クラウドベースの企業アプリケーションが、クライアントデバイスを通してアクセスされ、組織のための任意のタイプの動作(たとえば、人材管理(human capital management:HCM)ソフトウェア、API、クラウドベースのデータストレージなど)を行ない得る。
【0018】
アプリケーションインターフェイス102は、対応するユーザアカウントを使用するユーザによってサブミットされたトランザクション記録を受信するように構成され得る。ユーザアカウントは、ユーザ名、ユーザ識別子(ユーザID)、および/または、ユーザに関連する他の識別情報、許可、およびデータを含み得る。ユーザアカウントがトランザクション記録を生成すると、記録は「呼出しコンテキスト」に関連付けられ得る。呼出しコンテキストは、トランザクション記録自体を記述するあらゆるメタデータを含み得る。たとえば、呼出しコンテキストは、ユーザの名前、ユーザID、トランザクション記録を更新し、作成し、サブミットし、および/または他の態様でトランザクション記録に関わったユーザへの参照、サブミッション/作成日および時間、認可番号、発信元アプリケーション識別子などを含み得る。場合によっては、呼出しコンテキストについての情報が、ユーザアカウントおよび/またはユーザプロファイルから自動的に抽出され得る。
【0019】
アプリケーションコンテキストは、トランザクション記録のペイロードでパッケージされ得る。トランザクション記録のペイロードは、データをデータベースにコミットするための要求にとって必要な情報を含み得る。これは、トランザクション記録を検証および/またはコミットするためにシステムによって必要とされ得る、データ値、要求タイプ、データベース識別子、および/または他の情報を含み得る。トランザクション記録のペイロードは、ユーザがウェブフォームに入力するかまたは他の態様でデータ値を提供し、サブミットされるべき特定の要求タイプを選択することを可能にするユーザインターフェイスによって生成され得る。アプリケーションインターフェイス102は、トランザクション記録を呼出しコンテキストとともにパッケージし、検証のためにサブミッションを提供し得る。
【0020】
アーキテクチャはまた、トランザクション記録を受信し、トランザクション記録を検証して最終的にトランザクションデータをデータベースにコミットするためのプロセスを開始する、トランザクション開始プロセス104を含み得る。トランザクション開始プロセス104は、検証プロセスを開始し実行するためにさまざまなSOAシステム108にサブミットされ得るイベントを生成し得る。これらのSOAシステム108およびトランザクション開始プロセス104の集合は個々にまたはまとめて、受信されるトランザクション記録に関連付けられた1つ以上の検証を行なうためのプロセスと呼ばれ得る。トランザクション開始プロセス104によって起きるイベントは、SOAシステム108に渡されるイベント配信ネットワーク(Event Delivery Network:EDN)イベントといった、任意のタイプのイベントを含み得る。
【0021】
トランザクション開始プロセス104はまた、トランザクションをトランザクションデータストア106に登録し得る。アプリケーションインターフェイス102から受信されたトランザクションに関連する情報をトランザクションオブジェクトが含むように、トランザクションオブジェクトが作成され、トランザクションデータストア106に格納され得る。トランザクションオブジェクトは、呼出しコンテキストを含む、トランザクション記録の一部として受信された情報のうちのいずれかまたはすべてを含み得る。トランザクションオブジェクトはまた、以下により詳細に説明されるような実行時ステータスおよび/またはあらゆる障害情報といった、追加のフィールドを含み得る。トランザクションデータストア106は、トランザクション記録のライフサイクル全体を通して、アーキテクチャ100におけるさまざまなプロセスによって更新され得る。たとえば、トランザクションオブジェクトの実行時ステータスはリアルタイムで更新されてもよく、障害詳細がトランザクションオブジェクトに書込まれてもよく、トランザクションペイロードからのフィールドがトランザクションを検証するために使用されてもよい。
【0022】
SOAシステム108によって受信されるイベントは、SOAシステム108に、トランザクションを検証するために必要なプロセスのすべてを生成させ得る。たとえば、いくつかの実施形態は、トランザクションタイプを分析し、そのトランザクションタイプについて定義されたSOAコンポジットを識別し得る。SOAコンポジットは、トランザクションを検証するためにともにデプロイされるサービス、サービスコンポーネント、および/または参照のアセンブリである。本質的には、SOAコンポジットは、トランザクションを検証するために実行されるべき1つ以上のプロセスの「青写真」と考えられ得る。適切なSOAコンポジットがいったん識別されると、SOAコンポジットインスタンスが、トランザクション記録を検証するために必要とされ得るさまざまなプロセスを定義するために生成され得る。
【0023】
SOA承認システム110は、コンポジットインスタンスに従って動作し、BPM112に対するさまざまなプロセスの実行を始め得る。BPM112によって実行されるプロセスの各々は、トランザクションを検証する1つ以上の検証規則を実行し得る。いくつかの実施形態は、トランザクションを検証するために別のユーザによる明示的な承認を必要とし得る。たとえば、いくつかのトランザクションは、マネージャまたは管理承認を必要とし得る。BPM112によって実行されるプロセスは、さまざまなユーザへ送信されるタスクを生成し得る。これらのタスクは、トランザクション記録を承認のためにユーザに提示することと、それに応じてユーザから承認/拒否を受けることとを管理し得る。
【0024】
ユーザが承認要求にいったん応答すると、トランザクションが検証されたか否かについて、判定が検証規則の各々について下され得る。各検証プロセスの結果について、条件付き(conditional)114が評価され得る。結果の各々が検証される場合、条件付き114はSOA承認システム110へポジティブなしるしを返し得る。次に、SOA承認システム110は、検証が完了したというしるしをトランザクション開始プロセス104へ送信し得る。このプロセス104は次に、「コミット」というしるしをトランザクションデータストア106へ送信し得る。これは、トランザクションデータストア106におけるトランザクションオブジェクトのステータスを、そのステータスが「完了」に更新されるように更新させ得る。このしるしはまた、トランザクションペイロードにおけるデータをデータベース(図示せず)にコミットさせ得る。
【0025】
それに代えて、条件付き114は、BPM112によって実行されたBPELプロセスの1つ以上がトランザクション記録を検証できないであろうと判定し得る。たとえば、トランザクションについての承認を提供するユーザが、トランザクションを拒否したかもしれない。別の例では、トランザクションペイロードにおけるデータが、検証規則のうちの1つによって施行される限度を超えたかもしれない。トランザクションデータを検証できない場合、いくつかの実施形態は、BPM112がトランザクション記録を検証することをもう1回以上試行するよう要求し得る。最終的には、トランザクション記録を検証できない場合、条件付き114はエラーまたは障害を生成し得る。
【0026】
いくつかの実施形態は、障害がSOAプロセス108によって生成されると障害取扱いポリシーを実行するSOA障害ハンドラ116を含み得る。SOA承認システム110は、障害詳細を、たとえば投げられた障害例外の一部として障害ハンドラ116に提供することができる。障害詳細は、満たすことができなかった特定の検証規則、および/または、トランザクション記録を記述するかまたは検証規則の不履行を記述する他の情報を含み得る。障害ハンドラは、生成される障害のタイプに基づいて障害ポリシーを実行し得る。障害詳細は、トランザクションデータストア106に渡され、このトランザクション記録のためのトランザクションオブジェクトとともに格納され得る。これは、トランザクション記録が処理される際にトランザクションデータストア106がトランザクション記録のリアルタイム記述を維持することを可能にする。あらゆる障害詳細が次に、トランザクションオブジェクトを更新するために使用され得る。障害詳細を受信することはまた、トランザクションデータストア106におけるトランザクションオブジェクトのステータスを、「障害」または「失敗」というステータスを有するように更新し得る。
【0027】
いくつかの実施形態は、トランザクションコンソールアプリケーション118を提供し得る。トランザクションコンソールアプリケーション118は、システムにおいてアクティブであるトランザクションのすべてをナビゲートするやり方を提供するグラフィカルユーザインターフェイス(graphical user interface:GUI)を生成するように構成され得る。たとえば、トランザクションデータストア106は、トランザクションオブジェクトを、それらがユーザによって閲覧および/または編集され得るようにトランザクションコンソールアプリケーション118に提供し得る。いくつかの実施形態はまた、トランザクションデータストア106におけるトランザクションオブジェクトのために、実行時ステータスをトランザクションコンソールアプリケーション118に提供し得る。場合によっては、トランザクションデータストア106におけるトランザクションオブジェクトのステータスは、新規登録、コミットコマンド、および/または障害詳細の受信といった、あるイベントに応答してのみ、更新され得る。他の実行時ステータスが利用可能であってもよく、より記述的であるかもしれない。ステータスは、トランザクションコンソールアプリケーション118がトランザクション記録のそのライフサイクルにおけるその現在の段階での正確なスナップショットを表示するように、トランザクションオブジェクトに加えて提供され得る。
【0028】
図2は、いくつかの実施形態に従った、トランザクションコンソールアプリケーション118によって生成され得るユーザインターフェイス200を示す。ユーザインターフェイス200は、トランザクションデータストア106からトランザクションオブジェクトを抽出し、システムにおいて現在アクティブであるトランザクションのリストにサマリー情報を表示し得る。トランザクションオブジェクトの各々について、ユーザインターフェイス200は、トランザクションの名前204、トランザクションのステータス206、トランザクションを検証するために実行中である現在のプロセスの名前208、トランザクションがサブミットされた日付210、トランザクションをサブミットしたユーザアカウント212、および/または、トランザクションデータストア106におけるトランザクションオブジェクトに格納された任意の他の情報といった、情報を抽出し得る。これらのトランザクションの各々は、図2で示されるようにナビゲート可能であるトランザクションのリストに表示され得る。ユーザは、利用可能なトランザクションのうちのいずれかを選択し、そのトランザクションについて現在利用可能であり得る追加のアクション214を行ない得る。利用可能であるアクションは、選択されるトランザクション記録のステータスおよび/またはタイプに依存し得る。
【0029】
リストされたトランザクション記録にはさまざまなフィルタが適用され得る。この例では、フィルタ202が、トランザクション記録のステータス属性を使用して実行されている。フィルタ202についてのステータス属性の下に、さまざまな利用可能な属性値が表示され得る。これらのステータス属性は、完了、下書き、失敗、進行中、サブミット済などといった、トランザクション記録についての可能なステータスを示し得る。この例では、「失敗」という値が、フィルタ202について選択されている。これにより、「失敗」という値を有する現在のステータスを有するトランザクション記録のみが、ユーザインターフェイス200の右側のトランザクション記録リストに表示されるようになる。
【0030】
トランザクションコンソールアプリケーション118は、管理アカウントがシステムにおける任意のトランザクションのステータスを迅速に評価するためのやり方を提供するために、ユーザインターフェイス200を使用し得る。これは、管理アカウントが、失敗したあらゆるトランザクション記録を迅速に識別し、次に是正措置をとることを可能にする。この開示より前では、不履行の検証規則に起因する「失敗」ステータスを有するトランザクション記録は、管理アカウントによってキャンセルされたであろう。その場合、検証エラーがもはやトリガされないようなやり方でトランザクション要求をゼロからやり直して再構築するようユーザに命令するしるしが、ユーザアカウントへ送信されたであろう。これは、時間がかかるとともにエラーが発生しやすいプロセスをもたらし、それは、ユーザ側での二度手間を必要とした。これはまた、コンピュータリソースに対する負担を引き起こした。要求が失敗したときはいつでも、ユーザアカウントおよびアプリケーションインターフェイス102へしるしを送信するために使用される追加のネットワークトラフィックが、システムにおいて新しい要求のために利用可能な帯域幅を必然的に縮小したであろう。したがって、ここに説明される実施形態は、管理アカウントが、検証プロセス中に障害を生成した失敗したトランザクション記録を、上述のユーザアカウントまたはアプリケーションインターフェイス102の関与を必要とすることなく、自動的に再サブミットすることを可能にする。
【0031】
図3は、いくつかの実施形態に従った、障害が起こったトランザクション記録の再サブミッションを容易にするアーキテクチャ300のシステム図を示す。このアーキテクチャ300は、上に図1で示されたアーキテクチャ100と似ているが、管理アカウントによる障害が起こったデータベーストランザクション記録の生成および再サブミッションを容易にするために、複数の追加のユーティリティが追加されている。障害は一般に、タスクワークフローがBPM112によって実行される際に生じるであろうということを思い出されたい。これは、検証規則の不履行または人間のユーザからの認可拒否によってしばしば引き起こされ、それらは双方とも、簡単にするために「検証」として分類され得る。エラーが生じると、SOA障害ハンドラ116は、障害のしるしだけでなく、なぜ障害が生じたかを記述する障害詳細、障害に関連付けられたデータ値、不履行の検証規則、および/または、障害に関する他の記述的情報を受信し得る。これらの障害詳細はトランザクションデータストア106に渡され、トランザクションオブジェクト記録の一部としてトランザクションデータストア106に格納され得る。
【0032】
このアーキテクチャ300では、監視プロセス304が、トランザクションコンソールアプリケーション118と通信するように追加され得る。SOA障害ハンドラ116からの障害詳細は、トランザクションデータストア106に加えて、監視プロセス304へ送信され得る。これは、監視プロセス304が、システムで生じるあらゆる障害のリアルタイム更新を受信することを可能にする。トランザクションコンソール118は、待ち状態のトランザクションのうちのいずれかについてのサマリー情報を提供でき、監視プロセス304は、コンソールに、表示されたトランザクションに関連付けられたあらゆる障害詳細を直ちに表示させ得る。上述のように、トランザクションコンソールアプリケーション118は、管理アカウントが、ステータスに従って待ち状態のトランザクションをフィルタリングすることを可能にし得る。これは、現在障害状態にあるトランザクション記録のうちのいずれかを識別するために使用され得る。
【0033】
この開示より前では、障害が起こったトランザクション記録は、管理アカウントがトランザクションデータストア106からトランザクション記録を消去することをもたらしたであろう。これはまた、障害が生じたことをエンドユーザに通知する、エンドユーザへ送信されるしるしを生成したであろう。この点で、エンドユーザは、以前の試みで失敗した検証に合格するであろう新しいトランザクション記録をもう一度やり直して再サブミットするよう要求されたであろう。
【0034】
このアーキテクチャ300は、システムが、ユーザアカウントからの入力を必要とすることなく、トランザクション記録を回復させて再サブミットすることを可能にする。障害が起こったトランザクション記録を管理アカウントが再作成し、編集し、再サブミットすることができるように、再サブミットプロセス302がトランザクションコンソールアプリケーション118を通して提供され得る。障害が起こったトランザクション記録がトランザクションコンソールアプリケーション118で選択された場合、利用可能なアクションのうちの1つは、新しいトランザクション記録を入力してサブミットするためにバックグラウンドで複数のアルゴリズムを自動的に行なう再サブミットアクションを含み得る。
【0035】
再サブミットアクションが開始された後で、複数の再サブミットタスク306が、トランザクション記録を生成しサブミットするために実行され得る。まず、タスク306は、障害が起こった元のトランザクション記録のためにトランザクションデータストア106から呼出しコンテキストを読出すアルゴリズムを含み得る。トランザクションデータストア106からの呼出しコンテキストは、ユーザアカウントを使用し、アプリケーションインターフェイス102を通したトランザクション記録の最初の生成およびサブミッションに関連付けられた情報を含み得ることを思い出されたい。このため、呼出しコンテキストは、元のエンドユーザ、アプリケーションインターフェイス102への参照、元のトランザクション記録がサブミットされた日付および時間などを記述する情報を含み得る。管理アカウントが従来の手段を使用して障害が起こったトランザクション記録を再作成することを試みた場合、トランザクション開始プロセス104にサブミットされた新しいトランザクションは必然的に、管理アカウント、現在の日付および時間、ならびに何らかの他のアプリケーションインターフェイスを参照した新しい呼出しコンテキストを含むであろう。この呼出しコンテキストは次に、システムに完了メッセージを管理アカウントへ送信させ、それは元のエンドユーザの視界からトランザクションを除去し得るであろう。アーキテクチャ300のトランザクション開始プロセス104または他の要素に変更が加えられることを必要とする代わりに、再サブミットタスク306は、トランザクションデータストア106における元のトランザクション記録から呼出しコンテキストの少なくとも一部をコピーし得る。これは、生成中の新しいトランザクション記録が、まるでそれがアプリケーションインターフェイス102によって作成された元のトランザクション記録であったかのように、システムに現われることを可能にする。
【0036】
いくつかの実施形態では、再サブミットタスク306は、呼出しコンテキストをコピーすることが管理アカウントによって構成可能であることを可能にし得る。たとえば、いくつかのタイプのタスクは、新しいトランザクション記録が生成されると作成/サブミット時間が現在の時間に変更されるように、生成され得る。いくつかの状況は、管理アカウントが、エンドユーザではなく呼出しコンテキストによって参照されることを必要とし得る。これらの異なる状況の各々は、特定のタイプのタスクおよび/または特定のアプリケーションの要件に依存する。したがって、管理アカウントは、フィールドがどのように元の呼出しコンテキストからコピーされるかをカスタマイズし、代わりにそれらを現在の呼出しコンテキストを表わすであろうフィールドと置き換え得る。
【0037】
再サブミットタスク306はまた、新しいトランザクションを生成するタスクを含み得る。なお、元のアプリケーションインターフェイス102からトランザクション開始プロセス104にサブミットされたトランザクションは、ここに「トランザクション」と呼ばれ、一方、トランザクションデータストア106に格納された対応するオブジェクトは「トランザクションオブジェクト」と呼ばれ得る。これは単に、トランザクション開始プロセス102によって受信されたトランザクションを、後でトランザクションデータストア106に格納されるものから区別するために行なわれる。しかしながら、アプリケーションインターフェイス102は、トランザクションを記述する情報を、トランザクション開始プロセスに渡されるオブジェクトへとパッケージするであろうということが理解されるべきである。そのオブジェクトからの情報は次に、別のオブジェクトの一部としてトランザクションデータストア106に格納され得る。トランザクションデータストア106におけるトランザクションオブジェクトは、トランザクション開始プロセス104で受信されたオブジェクトからの任意の/すべてのフィールドを、ステータス、障害詳細、実行中の現在のプロセス、呼出しコンテキストなどといった他の情報とともに含み得る。
【0038】
再サブミットタスク306によって生成された新しいトランザクションは、上述されるような元の呼出しコンテキストの少なくとも一部を含む新しいオブジェクトを生成し得る。新しいトランザクションはまた、トランザクションデータストア106に格納されたような元のトランザクションからの任意の/すべてのフィールドを含み得る。たとえば、ユーザステータスを変更するための要求は、新しいステータスだけでなく古いステータスも含み得る。これらのステータスは、新しいトランザクションにコピーされ得る。別の例では、休暇をスケジューリングするための要求は、日付、休暇日などを含み、これらのフィールドも新しいトランザクションにコピーされ得る。場合によっては、新しいトランザクションは、元のトランザクションとほぼ同じに見えることがある。
【0039】
いくつかの実施形態は、管理アカウントが、元のトランザクションからコピーされた元のトランザクションペイロードに変更を加えることを可能にする。たとえば、いくつかの元のトランザクションは、無効データフィールド、または、1つ以上の検証規則を破り、それによって元の障害を生じさせるデータフィールドを含み得る。管理アカウントは、新しいトランザクションが再サブミットされる際に検証に合格するように、この段階で追加措置をとり得る。たとえば、管理アカウントは、元のトランザクションペイロードにおけるフィールドのうちの1つ以上を、それが検証規則を破ること、たとえば休暇のために要求可能な日数を超えることがもうないように、変更し得る。別の例では、管理アカウントは、新しいトランザクションにおけるフィールドを元のフィールドと同じままにし得るが、管理アカウントは、トランザクション記録が検証に合格するように、トランザクションとは無関係の措置を取り得る。上述の休暇の例を続けると、管理アカウントは、元の探求が要求される検証に今合格するように、ユーザアカウントがより多くの休暇日を取得するかまたは別のユーザから休暇日を移すようにし得る。何らかの変更がいったん加えられると、新しいトランザクションはオブジェクトとしてパッケージされ得る。
【0040】
再サブミットタスク306はまた、新しいトランザクションをトランザクション開始プロセス104に再サブミットするタスクを含み得る。新しいトランザクションは、元のトランザクションがアプリケーションインターフェイス102からサブミットされたのと同じインターフェイスを通してサブミットされ得る。これは、トランザクション開始プロセス104が、再サブミットされた新しいトランザクション記録を、それが任意のアプリケーションインターフェイスからの任意の他のサブミッションを扱うのと同様に扱うことを可能にする。これはまた、トランザクション開始プロセス104およびSOA108が、それらの動作方法を変更することなく、新しいトランザクション記録を処理することを可能にする。たとえば、トランザクション開始プロセス104は、SOA108が再サブミットされたデータベーストランザクション記録のための検証を処理し始めるために新しいコンポジットインスタンスを生成するように、新しいトランザクションをトランザクションデータストアに登録し、新しいEDNイベントを起こし得る。
【0041】
いくつかの実施形態では、新しいトランザクションを再サブミットするタスクはまた、元のトランザクションに対応するトランザクションオブジェクトが、トランザクションデータストア106から除去されるようにし得る。トランザクション開始プロセス104は新しいトランザクション記録を受信し処理し得るため、それは、新しいトランザクションオブジェクトをトランザクションデータストア106に提供し得る。これは、二重のオブジェクトおよびエンドユーザにとっての混乱を避けるために、元のトランザクション記録が除去されることを可能にする。これは、キャンセルされ新しいトランザクション記録と置き換えられつつある障害が起こったトランザクションに関連するエンドユーザアカウントへ通知が送信されることを防止する。新しいトランザクションに関連するエンドユーザアカウントのために生成されたあらゆる通知が、代わりに、コピーされた呼出しコンテキストを参照し、ひいては、元のトランザクションを参照しているとしてエンドユーザアカウントに現われ得る。これはまた、再サブミッションプロセスがエンドユーザアカウントに対して完全に透過的であることを可能にする。
【0042】
図4は、いくつかの実施形態に従った、再サブミットプロセス中のトランザクションコンソールアプリケーション118のためのユーザインターフェイス400を示す。図3のアーキテクチャ300からの監視プロセス304を使用して、ユーザインターフェイス400は、「失敗」というステータスを有することによってトランザクションのグローバルリストからフィルタリングされたトランザクションのリストを提供し得る。表示された情報は、失敗が生じた検証プロセスにおける段階のリアルタイムステータスを含み得る。たとえば、ユーザインターフェイス400に表示されたトランザクション記録の各々は、「文書承認」段階中に失敗したものであり、それはおそらく、承認する人による拒否に対応する。
【0043】
ユーザインターフェイス400に表示されたトランザクション記録のうちの1つを管理アカウントが選択すると、複数のアクション402が利用可能になり得る。まず、アクション402のうちの1つは、管理アカウントがプロセスを終了させることを可能にし得る。上述のように、これは、トランザクションデータストア106およびユーザインターフェイス400からトランザクション記録を除去する。場合によっては、これはまた、このトランザクション記録についてプロセスが終了したという通知をエンドユーザアカウントへ送信し得る。これは、エンドユーザが新しいトランザクション記録をもう一度やり直してサブミットすることを可能にする。
【0044】
アクション402のうちの別の1つは、回復アクションを含み得る。回復アクションを選択することにより、管理アカウントは、上述の再サブミットタスク306を開始し得る。たとえば、回復アクションを選択することは、元の呼出しコンテキストの少なくとも一部をコピーし、元のトランザクションペイロードからフィールドのうちの1つ以上をインポートし、新しいトランザクションオブジェクトを生成し、新しいトランザクションオブジェクトをトランザクション開始プロセス104にサブミットし得る。これはまた、対応するトランザクションオブジェクトがトランザクションデータストア106から除去されると、元のトランザクションをユーザインターフェイス400から除去し得る。トランザクション記録を表示するためのフィルタ基準がユーザインターフェイス400において変更された場合、新しいトランザクションはその後、「失敗」というステータスを有していないトランザクションとして現われるであろう。
【0045】
図5は、いくつかの実施形態に従った、失敗したデータベーストランザクション記録を再サブミットするための方法のフローチャート500を示す。方法は、データベースにコミットされるべき第1のトランザクションを受信するステップ(502)を含み得る。第1のトランザクションは、上述されるようにアプリケーションインターフェイスから受信されてもよく、データベースにおけるデータを更新し、追加し、および/または除去する任意のタイプのトランザクションを含み得る。第1のトランザクションは、データベースにコミットされる前に完了されるべき1つ以上の検証を伴い得る。たとえば、検証は、検証規則を満たすこと、自動承認および/または人間の承認を受けること、ならびに/もしくは任意の他のタイプの要件を含み得る。
【0046】
方法はまた、トランザクションオブジェクトをトランザクションデータストアに書込むステップ(504)を含み得る。トランザクションデータストアは、システムによって受信された各トランザクションについてトランザクションオブジェクトを受信し得る。トランザクションオブジェクトは、元のトランザクションのペイロードを、トランザクションを記述するメタデータとともに含み得る。いくつかの実施形態では、トランザクションオブジェクトは、トランザクション記録を作成したエンドユーザへの参照を含む呼出しコンテキスト、トランザクションが生成されたアプリケーション、トランザクション記録が作成され、サブミットされ、修正され、または他の態様で対話を受信した日付/時間などを格納し得る。トランザクションオブジェクトはその後、トランザクション記録がシステムで処理される際に、実行時ステータス、障害詳細、実行されたプロセス、合格した検証などを含む追加情報を格納し得る。
【0047】
方法は加えて、第1のトランザクションを、1つ以上の検証を行なうためのプロセスにサブミットするステップ(506)を含み得る。このプロセスは、トランザクションを不活性化し、トランザクションオブジェクトをトランザクションデータストアに格納し、トランザクション処理を開始するためのイベント(EDNイベントなど)を起こすトランザクション開始プロセスといったサブプロセスを複数含み得る。これはまた、SOA承認システムおよびBPMといった、SOAの一部であるプロセスを含み得る。SOA内のプロセスは、コンポジットを識別し、トランザクションがどのように処理されるかを定めるためにコンポジットインスタンスを生成し、検証タスクを行なうためにBPMワークフローにおいてBPELタスクを実行し得る。これらのさまざまなプロセスは、上記の図1および図3に詳細に示される。
【0048】
方法はさらに、第1のトランザクションのための検証のうちの少なくとも1つが失敗したと判定するステップ(508)を含み得る。この失敗は、トランザクション記録内のデータを検証する1つ以上の検証規則を履行しないことを含み得る。失敗はまた、トランザクション記録についての人間の承認を提供するタスクを有するユーザアカウントによる拒否を含み得る。この失敗は、障害のさまざまな特性を記述する障害詳細を集約するSOA障害ハンドラによって捉えられ得る。いくつかの実施形態は、トランザクションデータストアに障害詳細を格納し、および/または、図3で上述されたようなトランザクションコンソールアプリケーションにおけるモニタに障害詳細を報告し得る。
【0049】
方法はまた、トランザクションデータストアからトランザクションオブジェクトを検索するステップ(510)を含み得る。このトランザクションオブジェクトは元のトランザクションに関連付けられていてもよく、再サブミットアクションがトランザクションコンソールアプリケーションから選択されると検索され得る。元のトランザクションオブジェクトを検索することは、図3および図4に関して上述されたように、失敗したタスクに基づいて新しいタスクの再サブミッションを開始する複数のアルゴリズムの一部であり得る。
【0050】
方法は加えて、呼出しコンテキストをトランザクションオブジェクトから第2のトランザクションにコピーするステップ(512)を含み得る。第2のトランザクションは、元のトランザクションを置き換えるために生成される新しいトランザクションであり得る。新しいトランザクションが、まるでそれが元のトランザクションと同じユーザから同時に同じ場所から生じたかのように、システムに現われるようにするために、元の呼出しコンテキストの一部/すべてが、元のトランザクションオブジェクトから新しいトランザクションにコピーされ得る。いくつかの実施形態では、システムはまた、トランザクションペイロードの一部/すべてを、元のトランザクションオブジェクトから新しいトランザクションにコピーし得る。管理アカウントは、第2のトランザクションにおけるデータフィールドに変更を加え得る。管理アカウントは、それに代えてまたはそれに加えて、元のトランザクションペイロードが検証に合格するように、トランザクションとは無関係の変更を加えるかまたはプロセスを実行し得る。
【0051】
方法はまた、第2のトランザクションを、1つ以上の検証を行なうためのプロセスにサブミットするステップ(514)を含み得る。第2のトランザクションのサブミッションは、アプリケーションインターフェイスから元の第1のトランザクションを受信したインターフェイスと同じかまたは似ているインターフェイスを通して受信され得る。第2のトランザクションをサブミットすることは再度、EDNイベントを起こし、コンポジットインスタンスを生成し、BPMによって実行される一組のタスクを開始することなどを行ない得る。この再サブミッションは、エンドユーザアカウントからの追加入力を伴うことなく完了され得る。
【0052】
図5に示す特定のステップは、本発明のさまざまな実施形態に従った、障害のあるデータベーストランザクション記録を再サブミットする特定の方法を提供するということが理解されるべきである。他の順序のステップも、代替的な実施形態に従って行なわれ得る。たとえば、本発明の代替的な実施形態は、上に概説されたステップを異なる順序で行ない得る。また、図5に示す個々のステップは、個々のステップにとって適切であるようにさまざまな順序で行なわれ得る複数のサブステップを含み得る。さらに、特定の用途に依存して、追加のステップが追加または除去され得る。当業者であれば、多くの変形、修正、および代替案を認識するであろう。
【0053】
図6は、いくつかの実施形態に従った、失敗したトランザクション記録の再サブミッションを実行するための方法のフローチャート600を示す。フローチャート600は、フローチャート500のステップ510~514で上述された再サブミッションプロセス中に行なわれ得る追加のステップを説明する。方法は、失敗したトランザクション記録の選択を受信するステップ(602)を含み得る。選択は、トランザクションコンソールを通して受信されてもよく、失敗したトランザクションが回復されるべきであることを示すアクションの選択を伴い得る。いくつかの実施形態では、選択は、同じプロセスを通して回復されるべき複数のトランザクションを含み得る。
【0054】
方法はまた、選択されたトランザクションが再サブミットされる資格を有するかどうかを判定するためにマッピングテーブルにアクセスするステップ(604)を含み得る。トランザクション記録を再サブミットする能力は、トランザクション記録がサブミッションから完了まで処理される際のトランザクション記録の現在の段階に依存し得る。各処理段階では、トランザクション記録が上述されたプロセスを使用して再サブミットされることになっている場合、ある基準を満たす必要があり得る。
【0055】
図7は、いくつかの実施形態に従った、トランザクション記録の各処理段階についての再サブミッション基準を判定するために使用され得るマッピングテーブル700を示す。障害が生じると、プロセスは、トランザクション記録の実行時ステータスを識別し得る。このプロセスは、マッピングテーブル700の第1の列にリストされてもよく、テーブルにおける他の値を調べるためのキーとして使用され得る。トランザクション記録のための利用可能なステータスは、下書き、サブミット済、進行中、自動回復、手動回復、エラー、および完了を含み得る。これらのトランザクションステータスの各々はまた、検証プロセスを開始するEDNイベントについてのステータスだけでなく、SOAコンポジットインスタンスのステータス、およびBPMタスクのステータスを含み得る。たとえば、トランザクションがサブミットされ、EDNイベントが起こってコンポジットインスタンスが開始された場合、イベント、コンポジットインスタンス、および/またはBPMタスクのうちの1つがまだ作成されていなければ、再サブミッションが可能にされ得る。別の例では、トランザクションステータスがエラー状態にある場合、トランザクションは上述されたように終了されて再サブミットされ得る。
【0056】
図6に戻って、マッピングテーブルに従ったトランザクションの現在のステータスが、トランザクション記録は再サブミッションの資格を有していないと判定した場合(606)、トランザクション記録のステータスは、ステータスが終了したことを示す「終点」へ変更され得る。エンドユーザはその場合、上述されたようにトランザクションを手動で再サブミットする必要があり得る。
【0057】
それに代えて、トランザクション記録は再サブミッションの資格を有すると判定された場合、上述されたように第2のトランザクションが開始され得る(608)。これは、トランザクションデータストアにおける前のトランザクションのためのトランザクションオブジェクトおよび対応するSOAコンポジットインスタンスのステータスをクリーンにするかまたは消去することを含み得る。これはまた、EDNイベント詳細および対応するトランザクションペイロードをトランザクションデータストアからクエリすることを含み得る。このステップはまた、新しいEDN呼出しコンテキストを作成し、ユーザーモードを、第1のトランザクションを最初にサブミットしたユーザに設定することを含み得る。トランザクション開始プロセスは、新しいトランザクションがサブミットされることを示す新しいEDNイベントを起こすために再度呼出されてもよく、新しいコンポジットインスタンスおよびBPELプロセスが開始され得る。上述されたように、これらのプロセスは、対応する検証の各々または新しいトランザクション記録を実行してもよく(610)、SOAシステムは、検証のすべてが成功しているというしるしを生成し得る(612)。トランザクション記録は次にデータベースにコミットされ、ステータスは「終点」へ変更され得る(614)。
【0058】
図6に示す特定のステップは、さまざまな実施形態に従った、障害が起こったデータベーストランザクション記録を再サブミットする特定の方法を提供するということが理解されるべきである。他の順序のステップも、代替的な実施形態に従って行なわれ得る。たとえば、本発明の代替的な実施形態は、上に概説されたステップを異なる順序で行ない得る。さらに、図6に示す個々のステップは、個々のステップにとって適切であるようにさまざまな順序で行なわれ得る複数のサブステップを含み得る。さらに、特定の用途に依存して、追加のステップが追加または除去され得る。当業者であれば、多くの変形、修正、および代替案を認識するであろう。
【0059】
ここに説明された方法の各々は、コンピュータシステムによって実現されてもよい。これらの方法の各ステップは、コンピュータシステムによって自動的に実行されてもよく、および/または、ユーザが関与する入力/出力を提供されてもよい。たとえば、ユーザは方法におけるステップごとに入力を提供してもよく、これらの入力の各々は、そのような入力を要求する特定の出力に応答するものであってもよく、出力はコンピュータシステムによって生成される。各入力は、対応する要求出力に応答して受信されてもよい。さらに、入力は、ユーザから、別のコンピュータシステムからデータストリームとして受信され、メモリ位置から検索され、ネットワークを通して検索され、ウェブサービスから要求されたりしてもよい。同様に、出力は、ユーザに、別のコンピュータシステムにデータストリームとして提供され、メモリ位置に保存され、ネットワークを通して送信され、ウェブサービスに提供されたりしてもよい。要するに、ここに説明された方法の各ステップは、コンピュータシステムによって行なわれてもよく、ユーザが関与する、または関与しないかもしれない、コンピュータシステムとの間での任意の数の入力、出力、および/または要求を伴ってもよい。ユーザが関与しないそれらのステップは、人の介入なくコンピュータシステムによって自動的に行なわれると言ってもよい。したがって、ここに説明された各方法の各ステップは、ユーザとの間での入力および出力を含むように変更されてもよく、または、人の介入なくコンピュータシステムによって自動的に行なわれてもよく、その場合、あらゆる決定がプロセッサによって下されるということが、この開示に鑑みて理解されるであろう。さらに、ここに説明された各方法のいくつかの実施形態は、有形のソフトウェア製品を形成するために有形の非一時的記憶媒体上に格納された一組の命令として実現されてもよい。
【0060】
図8は、実施形態のうちの1つを実現するための分散型システム800の簡略図を示す。図示された実施形態では、分散型システム800は1つ以上のクライアントコンピューティングデバイス802、804、806、および808を含み、それらは、1つ以上のネットワーク810を通して、ウェブブラウザ、専用クライアント(たとえば、オラクル・フォームズ(Oracle Forms))などのクライアントアプリケーションを実行し、動作させるように構成される。サーバ812は、ネットワーク810を介して、リモートのクライアントコンピューティングデバイス802、804、806、および808と通信可能に結合されてもよい。
【0061】
さまざまな実施形態では、サーバ812は、システムのコンポーネントのうちの1つ以上によって提供される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。いくつかの実施形態では、これらのサービスは、ウェブベースのサービスまたはクラウドサービスとして、もしくはソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)モデルの下で、クライアントコンピューティングデバイス802、804、806、および/または808のユーザに提供されてもよい。クライアントコンピューティングデバイス802、804、806、および/または808を操作するユーザは次に、これらのコンポーネントによって提供されるサービスを利用するためにサーバ812と対話するために、1つ以上のクライアントアプリケーションを利用してもよい。
【0062】
図に示す構成では、システム800のソフトウェアコンポーネント818、820および822は、サーバ812上で実現されるとして示されている。他の実施形態では、システム800のコンポーネントおよび/またはこれらのコンポーネントによって提供されるサービスのうちの1つ以上も、クライアントコンピューティングデバイス802、804、806、および/または808のうちの1つ以上によって実現されてもよい。クライアントコンピューティングデバイスを操作するユーザは次に、これらのコンポーネントによって提供されるサービスを使用するために、1つ以上のクライアントアプリケーションを利用してもよい。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せで実現されてもよい。分散型システム800とは異なり得るさまざまな異なるシステム構成が可能であることが理解されるべきである。図に示す実施形態はこのため、実施形態システムを実現するための分散型システムの一例であり、限定的であるよう意図されてはいない。
【0063】
クライアントコンピューティングデバイス802、804、806、および/または808は、携帯型ハンドヘルドデバイス(たとえば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(personal digital assistant:PDA))、またはウェアラブルデバイス(たとえば、グーグル・グラス(Google Glass)(登録商標)頭部装着型ディスプレイ)であってもよく、マイクロソフト・ウィンドウズ・モバイル(Microsoft Windows Mobile)(登録商標)などのソフトウェア、および/または、iOS、ウィンドウズフォン、アンドロイド(登録商標)、ブラックベリー(登録商標)10、パームOSなどのさまざまなモバイルオペレーティングシステムを実行し、インターネット、電子メール、ショートメッセージサービス(short message service:SMS)、ブラックベリー(登録商標)、または他の通信プロトコルに対応していてもよい。クライアントコンピューティングデバイスは、マイクロソフト・ウィンドウズ(登録商標)、アップル・マッキントッシュ(登録商標)、および/またはリナックス(登録商標)オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを例として含む、汎用パーソナルコンピュータであり得る。クライアントコンピューティングデバイスは、たとえばグーグル・クローム(Google Chrome)OSなどのさまざまなGNU/リナックスオペレーティングシステムを何ら限定されることなく含む、商業的に入手可能なさまざまなUNIX(登録商標)またはUNIX様オペレーティングシステムのうちのいずれかを実行するワークステーションコンピュータであり得る。それに代えて、またはそれに加えて、クライアントコンピューティングデバイス802、804、806、および808は、ネットワーク810を通して通信可能である、シンクライアントコンピュータ、インターネット対応ゲーミングシステム(たとえば、Kinect(登録商標)ジェスチャー入力デバイスを有する、または有さない、マイクロソフトXboxゲーミングコンソール)、および/またはパーソナルメッセージングデバイスといった、任意の他の電子デバイスであってもよい。
【0064】
例示的な分散型システム800は4つのクライアントコンピューティングデバイスを有して示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサを有するデバイスなどの他のデバイスが、サーバ812と対話してもよい。
【0065】
分散型システム800におけるネットワーク810は、TCP/IP(transmission control protocol/Internet protocol:伝送制御プロトコル/インターネットプロトコル)、SNA(systems network architecture:システムネットワークアーキテクチャ)、IPX(Internet packet exchange:インターネットパケット交換)、アップル・トーク(Apple Talk)などを何ら限定されることなく含む、商業的に入手可能なさまざまなプロトコルのうちのいずれかを使用してデータ通信をサポートできる、当業者にはよく知られた任意のタイプのネットワークであってもよい。単なる例として、ネットワーク810は、イーサネット(登録商標)、トークンリング(Token-Ring)などに基づくものといった、ローカルエリアネットワーク(local area network:LAN)であり得る。ネットワーク810は、ワイドエリアネットワークおよびインターネットであり得る。それは、仮想プライベートネットワーク(virtual private network:VPN)、イントラネット、エクストラネット、公衆交換電話網(public switched telephone network:PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば、電気電子技術者協会(the Institute of Electrical and Electronics:IEEE)802.11プロトコルスイート、Bluetooth(登録商標)、および/または任意の他の無線プロトコルのうちのいずれかの下で動作するネットワーク)、ならびに/もしくは、これらのおよび/または他のネットワークの任意の組合せを何ら限定されることなく含む、仮想ネットワークを含み得る。
【0066】
サーバ812は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウントサーバなどを例として含む)、サーバファーム、サーバクラスタ、もしくは任意の他の適切な構成および/または組合せで構成されてもよい。さまざまな実施形態では、サーバ812は、前述の開示で説明された1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、サーバ812は、本開示の一実施形態に従った上述の処理を行なうためのサーバに対応していてもよい。
【0067】
サーバ812は、上述のもののうちのいずれかを含むオペレーティングシステム、および商業的に入手可能な任意のサーバオペレーティングシステムを実行してもよい。サーバ812はまた、さまざまな追加のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行してもよく、HTTP(hypertext transport protocol:ハイパーテキスト伝送プロトコル)サーバ、FTP(file transfer protocol:ファイル転送プロトコル)サーバ、CGI(common gateway interface:コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含む。例示的なデータベースサーバは、オラクル、マイクロソフト、サイベース(Sybase)、IBM(International Business Machines:インターナショナル・ビジネス・マシーンズ)などから商業的に入手可能なものを何ら限定されることなく含む。
【0068】
いくつかの実現化例では、サーバ812は、クライアントコンピューティングデバイス802、804、806、および808のユーザから受信されたデータフィードおよび/またはイベント更新を分析して統合するための1つ以上のアプリケーションを含んでいてもよい。一例として、データフィードおよび/またはイベント更新は、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などに関連するリアルタイムイベントを含み得る、1つ以上の第三者情報源および連続データストリームから受信されたツイッター(登録商標)フィード、フェースブック(登録商標)更新またはリアルタイム更新を含んでいてもよいが、それらに限定されない。サーバ812はまた、クライアントコンピューティングデバイス802、804、806、および808の1つ以上の表示デバイスを介してデータフィードおよび/またはリアルタイムイベントを表示するための1つ以上のアプリケーションを含んでいてもよい。
【0069】
分散型システム800はまた、1つ以上のデータベース814および816を含んでいてもよい。データベース814および816は、さまざまな位置に存在していてもよい。例として、データベース814および816のうちの1つ以上は、サーバ812に対してローカルな(および/または、サーバ812内にある)非一時的記憶媒体上に存在していてもよい。それに代えて、データベース814および816は、サーバ812からリモートであってもよく、ネットワークベースの接続または専用接続を介してサーバ812と通信してもよい。一組の実施形態では、データベース814および816は、ストレージエリアネットワーク(storage-area network:SAN)に存在していてもよい。同様に、サーバ812に帰する機能を行なうための任意の必要なファイルが適宜、サーバ812上にローカルに格納されてもよく、および/またはリモートに格納されてもよい。一組の実施形態では、データベース814および816は、SQLフォーマットのコマンドに応答してデータを格納し、更新し、検索するように適合された、オラクルによって提供されるデータベースなどのリレーショナルデータベースを含んでいてもよい。
【0070】
図9は、本開示の一実施形態に従った、実施形態システムの1つ以上のコンポーネントによって提供されるサービスをクラウドサービスとして提供し得るシステム環境900の1つ以上のコンポーネントの簡略ブロック図である。図示された実施形態では、システム環境900は、クラウドサービスを提供するクラウドインフラストラクチャシステム902と対話するためにユーザによって使用され得る1つ以上のクライアントコンピューティングデバイス904、906、および908を含む。これらのクライアントコンピューティングデバイスは、クラウドインフラストラクチャシステム902によって提供されるサービスを使用するためにクラウドインフラストラクチャシステム902と対話するためにクライアントコンピューティングデバイスのユーザによって使用され得る、ウェブブラウザ、専用クライアントアプリケーション(たとえば、オラクル・フォームズ)、または何らかの他のアプリケーションといったクライアントアプリケーションを動作させるように構成されてもよい。
【0071】
図に示すクラウドインフラストラクチャシステム902は、図示されたもの以外のコンポーネントを有していてもよいということが理解されるべきである。また、図に示す実施形態は、この発明の一実施形態を取入れ得るクラウドインフラストラクチャシステムの単なる一例である。いくつかの他の実施形態では、クラウドインフラストラクチャシステム902は、図示されたものよりも多い、または少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組合せてもよく、もしくは、異なる構成または配置のコンポーネントを有していてもよい。
【0072】
クライアントコンピューティングデバイス904、906、および908は、802、804、806、および808について上述したものと同様のデバイスであってもよい。
【0073】
例示的なシステム環境900は3つのクライアントコンピューティングデバイスを有して示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサを有するデバイスなどの他のデバイスが、クラウドインフラストラクチャシステム902と対話してもよい。
【0074】
ネットワーク910は、クライアント904、906、および908とクラウドインフラストラクチャシステム902との間のデータの通信および交換を容易にしてもよい。各ネットワークは、ネットワーク810について上述したものを含む、商業的に入手可能なさまざまなプロトコルのうちのいずれかを使用してデータ通信をサポートできる、当業者にはよく知られた任意のタイプのネットワークであってもよい。
【0075】
クラウドインフラストラクチャシステム902は、サーバ812について上述したものを含み得る1つ以上のコンピュータおよび/またはサーバを含んでいてもよい。
【0076】
ある実施形態では、クラウドインフラストラクチャシステムによって提供されるサービスは、オンラインデータストレージおよびバックアップソリューション、ウェブベースの電子メールサービス、ホスト型オフィススイートおよび文書コラボレーションサービス、データベース処理、管理された技術サポートサービスなどといった、クラウドインフラストラクチャシステムのユーザにとってオンデマンドで利用可能にされる多数のサービスを含んでいてもよい。クラウドインフラストラクチャシステムによって提供されるサービスは、そのユーザのニーズを満たすために動的にスケール変更され得る。クラウドインフラストラクチャシステムによって提供されるサービスの特定のインスタンス化は、ここに「サービスインスタンス」と呼ばれる。一般に、クラウドサービスプロバイダのシステムからインターネットなどの通信ネットワークを介してユーザに利用可能とされる任意のサービスは、「クラウドサービス」と呼ばれる。典型的には、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを作り上げるサーバおよびシステムは、顧客自身の構内サーバおよびシステムとは異なっている。たとえば、クラウドサービスプロバイダのシステムはアプリケーションをホストしてもよく、ユーザは、インターネットなどの通信ネットワークを介してオンデマンドでアプリケーションをオーダーし、使用してもよい。
【0077】
いくつかの例では、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、クラウドベンダーによってユーザに提供されるかまたは当該技術分野において他の態様で公知であるようなストレージ、ホスト型データベース、ホスト型ウェブサーバ、ソフトウェアアプリケーション、もしくは他のサービスへの、保護されたコンピュータネットワークアクセスを含んでいてもよい。たとえば、サービスは、インターネットを通した、クラウド上のリモートストレージへの、パスワードで保護されたアクセスを含み得る。別の例として、サービスは、ネットワーク化された開発者による私的使用のための、ウェブサービスベースのホスト型リレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、サービスは、クラウドベンダーのウェブサイト上でホストされる電子メールソフトウェアアプリケーションへのアクセスを含み得る。
【0078】
ある実施形態では、クラウドインフラストラクチャシステム902は、セルフサービスで、サブスクリプションベースで、弾力的にスケーラブルで、信頼でき、高可用性で、かつ安全な態様で顧客に配信される、アプリケーション、ミドルウェアおよびデータベースサービス提供物一式を含んでいてもよい。そのようなクラウドインフラストラクチャシステムの一例は、本譲受人によって提供されるオラクル・パブリック・クラウド(Oracle Public Cloud)である。
【0079】
さまざまな実施形態では、クラウドインフラストラクチャシステム902は、クラウドインフラストラクチャシステム902によって提供されるサービスへの顧客のサブスクリプションを自動的にプロビジョニングし、管理し、追跡するように適合されてもよい。クラウドインフラストラクチャシステム902は、異なるデプロイメントモデルを介してクラウドサービスを提供してもよい。たとえば、サービスは、クラウドインフラストラクチャシステム902がクラウドサービスを販売する組織によって所有され(たとえば、オラクルによって所有され)、サービスが一般大衆または異なる産業企業にとって利用可能とされる、パブリッククラウドモデルの下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム902が単一の組織のためにのみ動作され、その組織内の1つ以上のエンティティのためのサービスを提供し得る、プライベートクラウドモデルの下で提供されてもよい。クラウドサービスはまた、クラウドインフラストラクチャシステム902、およびクラウドインフラストラクチャシステム902によって提供されるサービスが、関連するコミュニティにおけるいくつかの組織によって共有される、コミュニティクラウドモデルの下で提供されてもよい。クラウドサービスはまた、2つ以上の異なるモデルの組合せであるハイブリッドクラウドモデルの下で提供されてもよい。
【0080】
いくつかの実施形態では、クラウドインフラストラクチャシステム902によって提供されるサービスは、ソフトウェア・アズ・ア・サービス(SaaS)カテゴリー、プラットフォーム・アズ・ア・サービス(PaaS)カテゴリー、インフラストラクチャ・アズ・ア・サービス(Infrastructure as a Service:IaaS)カテゴリー、または、ハイブリッドサービスを含むサービスの他のカテゴリーの下で提供される、1つ以上のサービスを含んでいてもよい。顧客は、クラウドインフラストラクチャシステム902によって提供される1つ以上のサービスを、サブスクリプションオーダーを介してオーダーしてもよい。クラウドインフラストラクチャシステム902は次に、顧客のサブスクリプションオーダーにおけるサービスを提供するために処理を行なう。
【0081】
いくつかの実施形態では、クラウドインフラストラクチャシステム902によって提供されるサービスは、アプリケーションサービス、プラットフォームサービス、およびインフラストラクチャサービスを、何ら限定されることなく含んでいてもよい。いくつかの例では、アプリケーションサービスは、SaaSプラットフォームを介して、クラウドインフラストラクチャシステムによって提供されてもよい。SaaSプラットフォームは、SaaSカテゴリーに該当するクラウドサービスを提供するように構成されてもよい。たとえば、SaaSプラットフォームは、統合された開発およびデプロイメントプラットフォーム上にオンデマンドアプリケーション一式を構築し、配信するための能力を提供してもよい。SaaSプラットフォームは、SaaSサービスを提供するための基本ソフトウェアおよびインフラストラクチャを管理し、制御してもよい。SaaSプラットフォームによって提供されるサービスを利用することにより、顧客は、クラウドインフラストラクチャシステム上で実行されるアプリケーションを利用できる。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、アプリケーションサービスを取得できる。さまざまな異なるSaaSサービスが提供されてもよい。例は、大型組織のための販売実績管理、企業統合、およびビジネス柔軟性についてのソリューションを提供するサービスを、何ら限定されることなく含む。
【0082】
いくつかの実施形態では、プラットフォームサービスは、PaaSプラットフォームを介して、クラウドインフラストラクチャシステムによって提供されてもよい。PaaSプラットフォームは、PaaSカテゴリーに該当するクラウドサービスを提供するように構成されてもよい。プラットフォームサービスの例は、(オラクルなどの)組織が共有の共通アーキテクチャ上で既存のアプリケーションを統合できるようにするサービスと、プラットフォームによって提供される共有のサービスを活用する新しいアプリケーションを構築するための能力とを、何ら限定されることなく含んでいてもよい。PaaSプラットフォームは、PaaSサービスを提供するための基本ソフトウェアおよびインフラストラクチャを管理し、制御してもよい。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、クラウドインフラストラクチャシステムによって提供されるPaaSサービスを取得できる。プラットフォームサービスの例は、オラクルJava(登録商標)クラウドサービス(Java Cloud Service:JCS)、オラクル・データベース・クラウド・サービス(Database Cloud Service:DBCS)などを、何ら限定されることなく含む。
【0083】
PaaSプラットフォームによって提供されるサービスを利用することにより、顧客は、クラウドインフラストラクチャシステムによってサポートされるプログラミング言語およびツールを採用するとともに、デプロイメントされたサービスを制御することもできる。いくつかの実施形態では、クラウドインフラストラクチャシステムによって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス(たとえば、オラクル・フュージョン・ミドルウェア(Oracle Fusion Middleware)サービス)、およびJavaクラウドサービスを含んでいてもよい。一実施形態では、データベースクラウドサービスは、組織がデータベースリソースをプールし、データベースクラウドの形をしたデータベース・アズ・ア・サービスを顧客に提供することを可能にする共有のサービスデプロイメントモデルをサポートしてもよい。ミドルウェアクラウドサービスは、顧客がさまざまなビジネスアプリケーションを開発してデプロイメントするためのプラットフォームを提供してもよく、Javaクラウドサービスは、顧客がクラウドインフラストラクチャシステムにおいてJavaアプリケーションをデプロイメントするためのプラットフォームを提供してもよい。
【0084】
クラウドインフラストラクチャシステムにおいて、さまざまな異なるインフラストラクチャサービスが、IaaSプラットフォームによって提供されてもよい。これらのインフラストラクチャサービスは、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用する顧客のための、ストレージ、ネットワーク、ならびに他の基礎的コンピューティングリソースなどの基本コンピューティングリソースの管理および制御を容易にする。
【0085】
ある実施形態では、クラウドインフラストラクチャシステム902はまた、クラウドインフラストラクチャシステムの顧客にさまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース930を含んでいてもよい。一実施形態では、インフラストラクチャリソース930は、PaaSプラットフォームおよびSaaSプラットフォームによって提供されるサービスを実行するためのサーバ、ストレージ、およびネットワーキングリソースなどのハードウェアの予め統合され最適化された組合せを含んでいてもよい。
【0086】
いくつかの実施形態では、クラウドインフラストラクチャシステム902におけるリソースは、複数のユーザによって共有され、要望ごとに動的に再配分されてもよい。加えて、リソースは、異なる時間帯におけるユーザに配分されてもよい。たとえば、クラウドインフラストラクチャシステム930は、第1の時間帯における第1の一組のユーザが、特定数の時間、クラウドインフラストラクチャシステムのリソースを利用することを可能にし、次に、異なる時間帯に位置する別の一組のユーザへの同じリソースの再配分を可能にして、それによりリソースの利用を最大化してもよい。
【0087】
ある実施形態では、クラウドインフラストラクチャシステム902の異なるコンポーネントまたはモジュールによって、および、クラウドインフラストラクチャシステム902が提供するサービスによって共有される、複数の内部共有サービス932が提供されてもよい。これらの内部共有サービスは、セキュリティおよびアイデンティティサービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウィルススキャニングおよびホワイトリストサービス、高可用性、バックアップおよび回復サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを、何ら限定されることなく含んでいてもよい。
【0088】
ある実施形態では、クラウドインフラストラクチャシステム902は、クラウドインフラストラクチャシステムにおけるクラウドサービス(たとえば、SaaS、PaaS、およびIaaSサービス)の包括的管理を提供してもよい。一実施形態では、クラウド管理機能性は、クラウドインフラストラクチャシステム902によって受信された顧客のサブスクリプションをプロビジョニングし、管理し、追跡するための能力などを含んでいてもよい。
【0089】
一実施形態では、図に示すように、クラウド管理機能性は、オーダー管理モジュール920、オーダーオーケストレーションモジュール922、オーダープロビジョニングモジュール924、オーダー管理および監視モジュール926、ならびにアイデンティティ管理モジュール928などの1つ以上のモジュールによって提供されてもよい。これらのモジュールは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、もしくは任意の他の適切な構成および/または組合せであり得る、1つ以上のコンピュータおよび/またはサーバを含んでいてもよく、もしくはそれらを使用して提供されてもよい。
【0090】
例示的な動作934では、クライアントデバイス904、906または908などのクライアントデバイスを使用する顧客は、クラウドインフラストラクチャシステム902によって提供される1つ以上のサービスを要求し、クラウドインフラストラクチャシステム902によって提供される1つ以上のサービスについてサブスクリプションのオーダーを出すことにより、クラウドインフラストラクチャシステム902と対話してもよい。ある実施形態では、顧客は、クラウドユーザインターフェイス(User Interface:UI)、クラウドUI912、クラウドUI914および/またはクラウドUI916にアクセスし、これらのUIを介してサブスクリプションオーダーを出してもよい。顧客がオーダーを出したことに応答してクラウドインフラストラクチャシステム902が受信したオーダー情報は、顧客と、顧客が加入するつもりである、クラウドインフラストラクチャシステム902によって提供される1つ以上のサービスとを識別する情報を含んでいてもよい。
【0091】
顧客によってオーダーが出された後で、オーダー情報が、クラウドUI912、914、および/または916を介して受信される。
【0092】
動作936で、オーダーがオーダーデータベース918に格納される。オーダーデータベース918は、クラウドインフラストラクチャシステム918によって動作され、他のシステム要素とともに動作される、いくつかのデータベースのうちの1つであり得る。
【0093】
動作938で、オーダー情報がオーダー管理モジュール920へ発送されてもよい。場合によっては、オーダー管理モジュール920は、オーダーを確認し、確認後にオーダーを予約するといった、オーダーに関連する請求および課金機能を行なうように構成されてもよい。
【0094】
動作940で、オーダーに関する情報が、オーダーオーケストレーションモジュール922へ通信されてもよい。オーダーオーケストレーションモジュール922は、顧客によって出されたオーダーのためのサービスおよびリソースのプロビジョニングをオーケストレーションするために、オーダー情報を利用してもよい。場合によっては、オーダーオーケストレーションモジュール922は、オーダープロビジョニングモジュール924のサービスを使用して加入サービスをサポートするために、リソースのプロビジョニングをオーケストレーションしてもよい。
【0095】
ある実施形態では、オーダーオーケストレーションモジュール922は、各オーダーに関連付けられたビジネスプロセスの管理を可能にして、オーダーがプロビジョニングへ進むべきかどうかを判断するためにビジネスロジックを適用する。動作942で、新規サブスクリプションのオーダーを受信すると、オーダーオーケストレーションモジュール922は、リソースを配分してサブスクリプションオーダーを遂行するために必要とされるそれらのリソースを構成することを求める要求を、オーダープロビジョニングモジュール924へ送信する。オーダープロビジョニングモジュール924は、顧客によってオーダーされたサービスのためのリソースの配分を可能にする。オーダープロビジョニングモジュール924は、クラウドインフラストラクチャシステム900によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするために使用される物理的実装層との間の抽象化のレベルを提供する。オーダーオーケストレーションモジュール922はこのため、サービスおよびリソースが実際にオンザフライでプロビジョニングされるか否か、または予めプロビジョニングされて要求時にのみ配分され/割当てられるか否かといった実装詳細から切り離されてもよい。
【0096】
動作944で、サービスおよびリソースがいったんプロビジョニングされると、提供されたサービスの通知が、クラウドインフラストラクチャシステム902のオーダープロビジョニングモジュール924によって、クライアントデバイス904、906、および/または908上の顧客へ送信されてもよい。
【0097】
動作946で、顧客のサブスクリプションオーダーが、オーダー管理および監視モジュール926によって管理され、追跡されてもよい。場合によっては、オーダー管理および監視モジュール926は、使用されるストレージの量、転送されるデータの量、ユーザの数、システムアップタイムおよびシステムダウンタイムの量といった、サブスクリプションオーダーにおけるサービスについての使用統計を収集するように構成されてもよい。
【0098】
ある実施形態では、クラウドインフラストラクチャシステム900は、アイデンティティ管理モジュール928を含んでいてもよい。アイデンティティ管理モジュール928は、クラウドインフラストラクチャシステム900においてアクセス管理および認証サービスなどのアイデンティティサービスを提供するように構成されてもよい。いくつかの実施形態では、アイデンティティ管理モジュール928は、クラウドインフラストラクチャシステム902によって提供されるサービスを利用したい顧客についての情報を制御してもよい。そのような情報は、そのような顧客のアイデンティティを認証する情報と、さまざまなシステムリソース(たとえば、ファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど)に対してそれらの顧客がどのアクションを行なうことが認可されているかを記述する情報とを含み得る。アイデンティティ管理モジュール928はまた、各顧客についての記述的情報と、その記述的情報が誰によってどのようにアクセスされ、修正され得るかについての記述的情報との管理を含んでいてもよい。
【0099】
図10は、本発明のさまざまな実施形態が実現され得る例示的なコンピュータシステム1000を示す。システム1000は、上述のコンピュータシステムのうちのいずれかを実現するために使用されてもよい。図に示すように、コンピュータシステム1000は、バスサブシステム1002を介して複数の周辺サブシステムと通信する処理部1004を含む。これらの周辺サブシステムは、処理加速部1006と、I/Oサブシステム1008と、記憶サブシステム1018と、通信サブシステム1024とを含んでいてもよい。記憶サブシステム1018は、有形のコンピュータ読取可能記憶媒体1022と、システムメモリ1010とを含む。
【0100】
バスサブシステム1002は、コンピュータシステム1000のさまざまなコンポーネントおよびサブシステムを意図されるように互いに通信させるためのメカニズムを提供する。バスサブシステム1002は単一のバスとして概略的に示されているが、バスサブシステムの代替的な実施形態は複数のバスを利用してもよい。バスサブシステム1002は、さまざまなバスアーキテクチャのうちのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む、いくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、そのようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、強化ISA(EISA)バス、ビデオエレクトロニクス標準組織(Video Electronics Standards Association:VESA)ローカルバス、および周辺コンポーネント相互接続(Peripheral Component Interconnect:PCI)バスを含んでいてもよく、それは、IEEE P1386.1規格で製造されるメザニンバスとして実現可能である。
【0101】
1つ以上の集積回路(たとえば、従来のマイクロプロセッサまたはマイクロコントローラ)として実現され得る処理部1004は、コンピュータシステム1000の動作を制御する。処理部1004には、1つ以上のプロセッサが含まれていてもよい。これらのプロセッサは、シングルコアまたはマルチコアプロセッサを含んでいてもよい。ある実施形態では、処理部1004は、各処理部に含まれるシングルまたはマルチコアプロセッサを有する、1つ以上の独立した処理部1032および/または1034として実現されてもよい。他の実施形態では、処理部1004はまた、2つのデュアルコアプロセッサをシングルチップへと集積することによって形成されるクアッドコア処理部として実現されてもよい。
【0102】
さまざまな実施形態では、処理部1004は、プログラムコードに応答してさまざまなプログラムを実行でき、同時に実行される複数のプログラムまたはプロセスを維持できる。任意の所与の時間において、実行されるべきプログラムコードのうちのいくつかまたはすべては、プロセッサ1004に、および/または記憶サブシステム1018に存在し得る。好適なプログラミングを通して、プロセッサ1004は、上述のさまざまな機能性を提供できる。コンピュータシステム1000は加えて、処理加速部1006を含んでいてもよく、それは、デジタル信号プロセッサ(digital signal processor:DSP)、専用プロセッサなどを含み得る。
【0103】
I/Oサブシステム1008は、ユーザインターフェイス入力デバイスと、ユーザインターフェイス出力デバイスとを含んでいてもよい。ユーザインターフェイス入力デバイスは、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システム付き音声入力デバイス、マイクロホン、および他のタイプの入力デバイスを含んでいてもよい。ユーザインターフェイス入力デバイスは、たとえば、ジェスチャーおよび口頭コマンドを使用する自然のユーザインターフェイスを通して、マイクロソフトXbox(登録商標)360ゲームコントローラなどの入力デバイスをユーザが制御し、それと対話することを可能にする、マイクロソフトKinect(登録商標)運動センサなどの運動感知および/またはジェスチャー認識デバイスを含んでいてもよい。ユーザインターフェイス入力デバイスはまた、ユーザから目の活動(たとえば、写真撮影中および/またはメニュー選択中の「まばたき」)を検出し、アイジェスチャーを入力デバイス(たとえば、グーグル・グラス(登録商標))への入力として変換する、グーグル・グラス(登録商標)まばたき検出器などのアイジェスチャー認識デバイスを含んでいてもよい。加えて、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを通して音声認識システム(たとえば、Siri(登録商標)ナビゲータ)と対話できるようにする音声認識感知デバイスを含んでいてもよい。
【0104】
ユーザインターフェイス入力デバイスはまた、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびに、スピーカ、デジタルカメラ、デジタルビデオカメラ、携帯型メディアプレイヤー、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザー測距器、および視線追跡デバイスなどの音声/視覚デバイスを、何ら限定されることなく含んでいてもよい。加えて、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影装置、磁気共鳴撮像装置、ポジトロン放出断層撮影装置、医療用超音波検査装置などの医療用撮像入力デバイスを含んでいてもよい。ユーザインターフェイス入力デバイスはまた、たとえば、MIDIキーボード、デジタル楽器などの音声入力デバイスを含んでいてもよい。
【0105】
ユーザインターフェイス出力デバイスは、表示サブシステム、表示灯、または、音声出力デバイスなどの非視覚的ディスプレイを含んでいてもよい。表示サブシステムは、陰極線管(cathode ray tube:CRT)、液晶ディスプレイ(liquid crystal display:LCD)またはプラズマディスプレイを使用するものなどのフラットパネルデバイス、投影デバイス、タッチスクリーンなどであってもよい。一般に、「出力デバイス」という用語の使用は、コンピュータシステム1000からユーザまたは他のコンピュータへ情報を出力するためのあらゆる可能なタイプのデバイスおよびメカニズムを含むよう意図されている。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドホン、自動車ナビゲーションシステム、プロッタ、音声出力デバイス、およびモデムといった、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示デバイスを、何ら限定されることなく含んでいてもよい。
【0106】
コンピュータシステム1000は、現在システムメモリ1010内に位置するように図示されたソフトウェア要素を含む記憶サブシステム1018を含んでいてもよい。システムメモリ1010は、処理部1004上でロード可能および実行可能なプログラム命令、ならびに、これらのプログラムの実行中に生成されたデータを格納してもよい。
【0107】
コンピュータシステム1000の構成およびタイプに依存して、システムメモリ1010は、揮発性(ランダムアクセスメモリ(random access memory:RAM)など)および/または不揮発性(読出専用メモリ(read-only memory:ROM)、フラッシュメモリなど)であってもよい。RAMは典型的には、処理部1004に直ちにアクセス可能である、および/または、処理部1004によって現在動作され実行されている、データおよび/またはプログラムモジュールを含む。いくつかの実現化例では、システムメモリ1010は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)といった、複数の異なるタイプのメモリを含んでいてもよい。いくつかの実現化例では、起動中などにコンピュータシステム1000内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入力/出力システム(basic input/output system:BIOS)が、典型的にはROMに格納されてもよい。限定のためではなく例として、システムメモリ1010はまた、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などを含み得るアプリケーションプログラム1012と、プログラムデータ1014と、オペレーティングシステム1016とを示す。例として、オペレーティングシステム1016は、マイクロソフト・ウィンドウズ(登録商標)、アップル・マッキントッシュ(登録商標)、および/またはリナックスオペレーティングシステム、商業的に入手可能なさまざまなUNIX(登録商標)またはUNIX様オペレーティングシステム(さまざまなGNU/リナックスオペレーティングシステム、グーグル・クローム(登録商標)OSなどを何ら限定されることなく含む)、および/または、iOS、ウィンドウズ(登録商標)フォン、アンドロイド(登録商標)OS、ブラックベリー(登録商標)10OS、パーム(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムのさまざまなバージョンを含んでいてもよい。
【0108】
記憶サブシステム1018はまた、いくつかの実施形態の機能性を提供するデータ構造および基本プログラミングを格納するための有形のコンピュータ読取可能記憶媒体を提供してもよい。プロセッサによって実行されると上述の機能性を提供するソフトウェア(プログラム、コードモジュール、命令)が、記憶サブシステム1018に格納されてもよい。これらのソフトウェアモジュールまたは命令は、処理部1004によって実行されてもよい。記憶サブシステム1018はまた、本発明に従って使用されるデータを格納するためのリポジトリを提供してもよい。
【0109】
記憶サブシステム1000はまた、コンピュータ読取可能記憶媒体1022にさらに接続され得るコンピュータ読取可能記憶媒体リーダ1020を含んでいてもよい。システムメモリ1010とともに、およびオプションでシステムメモリ1010と組合わされて、コンピュータ読取可能記憶媒体1022は、リモート、ローカル、固定および/またはリムーバブルの記憶装置に加えて、コンピュータ読取可能情報を一時的におよび/またはより永続的に含み、格納し、伝送し、検索するための記憶媒体を包括的に表わしてもよい。
【0110】
コードまたはコードの一部を含むコンピュータ読取可能記憶媒体1022はまた、情報の格納および/または伝送のための任意の方法または技術において実現された揮発性および不揮発性、リムーバブルおよび非リムーバブルの媒体などといった記憶媒体および通信媒体を含む、当該技術分野において公知の、または使用されている任意の適切な媒体を含み得る。これは、RAM、ROM、電子的消去可能プログラマブルROM(electronically erasable programmable ROM:EEPROM)、フラッシュメモリまたは他のメモリ技術、CD-ROM、デジタル多用途ディスク(digital versatile disk:DVD)、または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置、もしくは他の有形のコンピュータ読取可能媒体といった、有形のコンピュータ読取可能記憶媒体を含み得る。これはまた、所望の情報を伝送するために使用可能であり、コンピューティングシステム1000によってアクセス可能であるデータ信号、データ伝送、または任意の他の媒体といった、非有形のコンピュータ読取可能媒体を含み得る。
【0111】
例として、コンピュータ読取可能記憶媒体1022は、非リムーバブルの不揮発性磁気媒体との間で読出および書込を行なうハードディスクドライブ、リムーバブルの不揮発性磁気媒体との間で読出および書込を行なう磁気ディスクドライブ、ならびに、CD ROM、DVD、Blu-Ray(登録商標)ディスク、または他の光学媒体といった、リムーバブルの不揮発性光ディスクとの間で読出および書込を行なう光ディスクドライブを含んでいてもよい。コンピュータ読取可能記憶媒体1022は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(universal serial bus:USB)フラッシュドライブ、セキュアデジタル(secure digital:SD)カード、DVDディスク、デジタルビデオテープなどを含んでいてもよいが、それらに限定されない。コンピュータ読取可能記憶媒体1022はまた、フラッシュメモリベースのソリッドステートドライブ(solid-state drive:SSD)、企業フラッシュドライブ、ソリッドステートROMといった、不揮発性メモリに基づいたSSD、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSDといった、揮発性メモリに基づいたSSD、および、DRAMベースのSSDとフラッシュメモリベースのSSDとの組合せを使用するハイブリッドSSDを含んでいてもよい。ディスクドライブおよびそれらの関連付けられたコンピュータ読取可能媒体は、コンピュータシステム1000のためのコンピュータ読取可能命令、データ構造、プログラムモジュール、および他のデータの不揮発性格納を提供してもよい。
【0112】
通信サブシステム1024は、他のコンピュータシステムおよびネットワークへのインターフェイスを提供する。通信サブシステム1024は、コンピュータシステム1000とは別のシステムからデータを受信し、別のシステムへデータを送信するためのインターフェイスとして機能する。たとえば、通信サブシステム1024は、コンピュータシステム1000がインターネットを介して1つ以上のデバイスに接続できるようにしてもよい。いくつかの実施形態では、通信サブシステム1024は、(たとえば、3G、4G、またはEDGE(enhanced data rates for global evolution:エンハンスト・データレート・フォー・グローバル・エボリューション)、WiFi(IEEE802.11ファミリー規格)、または他のモバイル通信技術、またはそれらの任意の組合せといった携帯電話技術、高度なデータネットワーク技術を使用した)無線音声および/またはデータネットワークにアクセスするための無線周波数(radio frequency:RF)トランシーバコンポーネント、全地球測位システム(global positioning system:GPS)受信機コンポーネント、および/または他のコンポーネントを含んでいてもよい。いくつかの実施形態では、通信サブシステム1024は、無線インターフェイスに加えて、またはその代わりに、有線ネットワーク接続(たとえば、イーサネット)を提供できる。
【0113】
いくつかの実施形態では、通信サブシステム1024はまた、構造化および/または非構造化データフィード1026、イベントストリーム1028、イベント更新1030などの形をした入力通信を、コンピュータシステム1000を使用する1人以上のユーザのために受信してもよい。
【0114】
例として、通信サブシステム1024は、ツイッター(登録商標)フィード、フェースブック(登録商標)更新、リッチ・サイト・サマリー(Rich Site Summary:RSS)フィードなどのウェブフィード、および/または1つ以上の第三者情報源からのリアルタイム更新といった、ソーシャルネットワークおよび/または他の通信サービスのユーザからのデータフィード1026をリアルタイムで受信するように構成されてもよい。
【0115】
加えて、通信サブシステム1024はまた、リアルタイムイベントのイベントストリーム1028および/またはイベント更新1030を含み得る、明確な終わりがなく本質的に連続的または無限であり得る連続データストリームの形をしたデータを受信するように構成されてもよい。連続データを生成するアプリケーションの例は、たとえば、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などを含んでいてもよい。
【0116】
通信サブシステム1024はまた、構造化および/または非構造化データフィード1026、イベントストリーム1028、イベント更新1030などを、コンピュータシステム1000に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに出力するように構成されてもよい。
【0117】
コンピュータシステム1000は、ハンドヘルド携帯デバイス(たとえば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえば、グーグル・グラス(登録商標)頭部装着型ディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の他のデータ処理システムを含む、さまざまなタイプのうちの1つであり得る。
【0118】
コンピュータおよびネットワークの絶えず変化する性質により、図に示されるコンピュータシステム1000の説明は、単に特定の一例として意図される。図に示されるシステムよりも多い、または少ないコンポーネントを有する多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアも使用されてもよく、および/または、特定の要素が、ハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、または組合せで実現されてもよい。さらに、ネットワーク入力/出力デバイスといった他のコンピューティングデバイスへの接続が採用されてもよい。ここに提供される開示および教示に基づいて、当業者であれば、さまざまな実施形態を実現するための他のやり方および/または方法を理解するであろう。
【0119】
前述の記載では、説明の目的のため、多くの特定の詳細が、本発明のさまざまな実施形態の完全な理解を提供するために述べられた。しかしながら、これらの特定の詳細のうちのいくつかがなくても本発明の実施形態は実践され得るということは、当業者には明らかであろう。他の例では、周知の構造およびデバイスは、ブロック図の形で示される。
【0120】
前述の記載は例示的な実施形態のみを提供しており、この開示の範囲、利用可能性、または構成を限定するよう意図されてはいない。むしろ、例示的な実施形態の前述の記載は、例示的な実施形態を実現するための実施可能な説明を当業者に提供するであろう。添付された請求項で述べられるようなこの発明の精神および範囲から逸脱することなく、要素の機能および配置においてさまざまな変更が行なわれてもよいということが理解されるべきである。
【0121】
前述の記載では、実施形態の完全な理解を提供するために、特定の詳細が与えられる。しかしながら、これらの特定の詳細がなくても実施形態は実践され得るということは、当業者には理解されるであろう。たとえば、実施形態を必要以上に詳細に記して不明瞭にすることがないように、回路、システム、ネットワーク、プロセス、および他のコンポーネントは、ブロック図の形のコンポーネントとして示されたかもしれない。他の例では、実施形態を不明瞭にしないように、周知の回路、プロセス、アルゴリズム、構造、および手法は、不要な詳細なしで示されたかもしれない。
【0122】
また、個々の実施形態は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスとして説明されたかもしれないということに留意されたい。フローチャートは動作を順次プロセスとして説明したかもしれないが、動作の多くは並行してまたは同時に行なうことが可能である。加えて、動作の順序は並べ替えられてもよい。プロセスは、その動作が完了すると終了するが、図に含まれない追加のステップを有していてもよい。プロセスは、方法、機能、手順、サブルーチン、サブプログラムなどに対応していてもよい。プロセスがある機能に対応している場合、その終了は、その機能が呼出し元の機能または主機能に戻ることに対応可能である。
【0123】
「コンピュータ読取可能媒体」という用語は、命令および/またはデータを格納し、含み、または担持することができる、携帯型または固定式記憶装置、光学記憶装置、無線チャネル、ならびにさまざまな他の媒体を含むものの、それらに限定されない。コードセグメントまたはマシン実行可能命令が、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、もしくは、命令、データ構造またはプログラム文の任意の組合せを表わしてもよい。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容を渡し、および/または受信することによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク伝送などを含む任意の好適な手段を介して渡され、発送され、または伝送されてもよい。
【0124】
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実現される場合、必要なタスクを行なうためのプログラムコードまたはコードセグメントが、マシン読取可能媒体に格納されてもよい。プロセッサが、必要なタスクを行なってもよい。
【0125】
前述の明細書では、この発明の局面がその特定の実施形態に関して説明されているが、当業者であれば、この発明がそれらに限定されないことを認識するであろう。上述の発明のさまざまな特徴および局面は、個々にまたはともに使用されてもよい。また、実施形態は、明細書のより広範な精神および範囲から逸脱することなく、ここに説明されたものを超えるあらゆる数の環境および用途において利用され得る。したがって、明細書および図面は、限定的ではなく例示的であるとみなされるべきである。
【0126】
加えて、例示のために、方法は特定の順序で説明された。代替的な実施形態では、方法は、説明されたものとは異なる順序で行なわれてもよいということが理解されるべきである。上述の方法はハードウェアコンポーネントによって行なわれてもよく、もしくは、命令でプログラミングされた汎用または専用プロセッサもしくは論理回路といったマシンに方法を行なわせるために使用され得るマシン実行可能命令のシーケンスで具現化されてもよいということも理解されるべきである。これらのマシン実行可能命令は、1つ以上のマシン読取可能媒体、たとえば、CD-ROMまたは他のタイプの光ディスク、フロッピー(登録商標)ディスケット、ROM、RAM、EPROM、EEPROM、磁気カードまたは光カード、フラッシュメモリ、もしくは、電子命令を格納するのに好適である他のタイプのマシン読取可能媒体上に格納されてもよい。それに代えて、方法は、ハードウェアとソフトウェアとの組合せによって行なわれてもよい。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
【国際調査報告】