(57)【特許請求の範囲】
【請求項１】
コンピューティングシステムにおいて複数の種類のイベントメッセージを処理するための方法であって、前記方法は、
受信されたイベントメッセージをデータ記憶システム内に記憶することであって、前記データ記憶システムは、イベントメッセージに関連付けられた第１の複数のレコードのためのストレージを含み、各イベントメッセージはタイムスタンプを含み、イベントメッセージに関連付けられたレコードは、前記イベントメッセージについてのイベント結果に関する目標転送時間を示すフィールドを含み、少なくとも一部のイベントメッセージに関する前記目標転送時間は、前記イベントメッセージの種類に従って決定される、記憶することと、
前記記憶されたイベントメッセージを、前記記憶されたイベントメッセージ内の情報、および前記イベントメッセージに関連付けられた前記レコード内の前記目標転送時間に基づいてイベント結果を転送するよう処理することであって、前記処理することは、
前記イベントメッセージを、優先順位を示す前記イベントメッセージ内に記憶された情報に従って前記イベント結果を転送するために優先順位付けすること、
１つ以上のイベントメッセージの第１のクラス内の前記イベントメッセージの全てに関して同じ優先順位を示す情報を各々が含む、前記１つ以上のイベントメッセージの前記第１のクラス内の各イベントメッセージに関する前記目標転送時間を、前記イベントメッセージのそれぞれのタイムスタンプに対する固定された遅延に基づいて計算すること、および
前記イベントメッセージに関する前記計算された目標転送時間とクロック時間との比較に基づいて転送可能である前記イベントメッセージについての前記イベント結果を転送すること、
を含む、処理することと、
を含む、前記方法。
【請求項２】
前記処理することが、前記記憶されたイベントメッセージのうちの全てより少数を包含するイベントメッセージの第２のクラスを、イベントメッセージの前記第２のクラス内のイベントメッセージを、それらのイベントメッセージが受信された順序に従って処理する代わりに、イベントメッセージの前記第２のクラス内のイベントメッセージを、前記イベントメッセージ内の前記タイムスタンプに従って処理するように再順序付けすることをさらに含む、請求項１に記載の方法。
【請求項３】
特定のイベントメッセージに関連付けられた前記目標転送時間が、前記特定のイベントメッセージが受信された後に、前記特定のイベントメッセージ内に含まれる情報によって少なくとも部分的に定義された関数を用いて計算される、請求項２に記載の方法。
【請求項４】
第１のイベントクラスに関連付けられたイベントメッセージに対して、前記関数が、前記クロック時間に基づく目標転送時間を返す、請求項３に記載の方法。
【請求項５】
前記第１のイベントクラスに関連付けられたイベントメッセージが、再順序付けされる前記第２のクラス内になく、それらのイベントメッセージが受信された前記順序に従って処理される、請求項４に記載の方法。
【請求項６】
前記第１のイベントクラスよりも低い優先順位の第２のイベントクラスに関連付けられたイベントメッセージに対して、前記関数が、前記固定された遅延、および前記イベントメッセージ内のタイムスタンプの合計である目標転送時間を返す、請求項４に記載の方法。
【請求項７】
前記第２のイベントクラスに関連付けられたイベントメッセージが、再順序付けされる前記第２のクラス内にあり、前記第２のクラスに関連付けられた前記イベントメッセージ内に記憶されたタイムスタンプに従って再順序付けされる、請求項６に記載の方法。
【請求項８】
前記第２のイベントクラスよりも低い優先順位の第３のイベントクラスに関連付けられたイベントメッセージに対して、前記関数が、前記イベントメッセージ内に記憶されたタイムスタンプに基づく目標転送時間を返す、請求項６に記載の方法。
【請求項９】
前記第３のイベントクラスに関連付けられたイベントメッセージが、再順序付けされる前記第２のクラス内にあり、前記第３のクラスに関連付けられた前記イベントメッセージ内に記憶されたタイムスタンプに従って再順序付けされる、請求項８に記載の方法。
【請求項１０】
前記第２のイベントクラスよりも低い優先順位の第３のイベントクラスに関連付けられたイベントメッセージに対して、前記関数が、繰り返しスケジュールに基づく目標転送時間を返す、請求項６に記載の方法。
【請求項１１】
前記第２のクラスが、全てが共通キー値を含むイベントメッセージを含む、請求項２に記載の方法。
【請求項１２】
前記イベントメッセージ内に記憶された情報に従ってイベント結果を転送するためにイベントメッセージを優先順位付けすることが、異なる優先順位のイベントクラスに関連付けられたイベントメッセージを、異なるそれぞれの順序付けられたキュー内に記憶し、空でない最も高い優先順位の順序付けられたキューの前方から、イベント結果の潜在的転送について評価するべき次のイベントメッセージを選択することを含む、請求項１に記載の方法。
【請求項１３】
コンピューティングシステムにおいてイベントメッセージを処理するための、コンピュータ可読媒体上に非一時的形態で記憶されるソフトウェアであって、前記ソフトウェアは、前記コンピューティングシステムに、
受信されたイベントメッセージをデータ記憶システム内に記憶することであって、前記データ記憶システムは、イベントメッセージに関連付けられた第１の複数のレコードのためのストレージを含み、各イベントメッセージはタイムスタンプを含み、イベントメッセージに関連付けられたレコードは、前記イベントメッセージについてのイベント結果に関する目標転送時間を示すフィールドを含み、少なくとも一部のイベントメッセージに関する前記目標転送時間は、前記イベントメッセージの種類に従って決定される、記憶することと、
前記記憶されたイベントメッセージを、前記記憶されたイベントメッセージ内の情報、および前記イベントメッセージに関連付けられた前記目標転送時間に基づいてイベント結果を転送するよう処理することであって、前記処理することは、
前記イベントメッセージを、優先順位を示す前記イベントメッセージ内に記憶された情報に従って前記イベント結果を転送するために優先順位付けすること、
１つ以上のイベントメッセージの第１のクラス内の前記イベントメッセージの全てに関して同じ優先順位を示す情報を各々が含む、前記１つ以上のイベントメッセージの前記第１のクラス内の各イベントメッセージに関する前記目標転送時間を、前記イベントメッセージのそれぞれのタイムスタンプに対する固定された遅延に基づいて計算すること、および
前記イベントメッセージに関する前記計算された目標転送時間とクロック時間との比較に基づいて転送可能である前記イベントメッセージについての前記イベント結果を転送すること、
を含む、処理することと、
をさせるための命令を含む、前記ソフトウェア。
【請求項１４】
イベントメッセージを処理するためのコンピューティングシステムであって、前記コンピューティングシステムは、
受信されたイベントメッセージを記憶するためのデータ記憶システムであって、前記データ記憶システムは、イベントメッセージに関連付けられた第１の複数のレコードのためのストレージを含み、各イベントメッセージはタイムスタンプを含み、イベントメッセージに関連付けられたレコードは、前記イベントメッセージについてのイベント結果に関する目標転送時間を示すフィールドを含み、少なくとも一部のイベントメッセージに関する前記目標転送時間は、前記イベントメッセージの種類に従って決定される、データ記憶システムと、
前記記憶されたイベントメッセージを、前記記憶されたイベントメッセージ内の情報、および前記イベントメッセージに関連付けられた前記目標転送時間に基づいてイベント結果を転送するよう処理するように構成された少なくとも１つのプロセッサであって、前記処理することは、
前記イベントメッセージを、優先順位を示す前記イベントメッセージ内に記憶された情報に従って前記イベント結果を転送するために優先順位付けすること、
１つ以上のイベントメッセージの第１のクラス内の前記イベントメッセージの全てに関しての同じ優先順位を示す情報を各々が含む、前記１つ以上のイベントメッセージの前記第１のクラス内の各イベントメッセージに関する前記目標転送時間を、前記イベントメッセージのそれぞれのタイムスタンプに対する固定された遅延に基づいて計算すること、および
前記イベントメッセージに関する前記計算された目標転送時間とクロック時間との比較に基づいて転送可能である前記イベントメッセージについての前記イベント結果を転送すること、
を含む、少なくとも１つのプロセッサと、
を含む、コンピューティングシステム。
【請求項１５】
前記処理することが、前記記憶されたイベントメッセージのうちの全てより少数を包含するイベントメッセージの第２のクラスを、イベントメッセージの前記第２のクラス内のイベントメッセージを、それらのイベントメッセージが受信された順序に従って処理する代わりに、イベントメッセージの前記第２のクラス内のイベントメッセージを、前記イベントメッセージ内の前記タイムスタンプに従って処理するように再順序付けすることをさらに含む、請求項１３に記載のソフトウェア。
【請求項１６】
特定のイベントメッセージに関連付けられた前記目標転送時間が、前記特定のイベントメッセージが受信された後に、前記特定のイベントメッセージ内に含まれる情報によって少なくとも部分的に定義された関数を用いて計算される、請求項１５に記載のソフトウェア。
【請求項１７】
第１のイベントクラスに関連付けられたイベントメッセージに対して、前記関数が、前記クロック時間に基づく目標転送時間を返す、請求項１６に記載のソフトウェア。
【請求項１８】
前記第１のイベントクラスに関連付けられたイベントメッセージが、再順序付けされる前記第２のクラス内になく、それらのイベントメッセージが受信された前記順序に従って処理される、請求項１７に記載のソフトウェア。
【請求項１９】
前記第１のイベントクラスよりも低い優先順位の第２のイベントクラスに関連付けられたイベントメッセージに対して、前記関数が、前記固定された遅延、および前記イベントメッセージ内のタイムスタンプの合計である目標転送時間を返す、請求項１７に記載のソフトウェア。
【請求項２０】
前記第２のクラスが、全てが共通キー値を含むイベントメッセージを含む、請求項１５に記載のソフトウェア。
【請求項２１】
前記イベントメッセージ内に記憶された情報に従ってイベント結果を転送するためにイベントメッセージを優先順位付けすることが、異なる優先順位のイベントクラスに関連付けられたイベントメッセージを、異なるそれぞれの順序付けられたキュー内に記憶し、空でない最も高い優先順位の順序付けられたキューの前方から、イベント結果の潜在的転送について評価するべき次のイベントメッセージを選択することを含む、請求項１３に記載のソフトウェア。
【請求項２２】
前記処理することが、前記記憶されたイベントメッセージのうちの全てより少数を包含するイベントメッセージの第２のクラスを、イベントメッセージの前記第２のクラス内のイベントメッセージを、それらのイベントメッセージが受信された順序に従って処理する代わりに、イベントメッセージの前記第２のクラス内のイベントメッセージを、前記イベントメッセージ内の前記タイムスタンプに従って処理するように再順序付けすることをさらに含む、請求項１４に記載のコンピューティングシステム。
【請求項２３】
特定のイベントメッセージに関連付けられた前記目標転送時間が、前記特定のイベントメッセージが受信された後に、前記特定のイベントメッセージ内に含まれる情報によって少なくとも部分的に定義された関数を用いて計算される、請求項２２に記載のコンピューティングシステム。
【請求項２４】
第１のイベントクラスに関連付けられたイベントメッセージに対して、前記関数が、前記クロック時間に基づく目標転送時間を返す、請求項２３に記載のコンピューティングシステム。
【請求項２５】
前記第１のイベントクラスに関連付けられたイベントメッセージが、再順序付けされる前記第２のクラス内になく、それらのイベントメッセージが受信された前記順序に従って処理される、請求項２４に記載のコンピューティングシステム。
【請求項２６】
前記第１のイベントクラスよりも低い優先順位の第２のイベントクラスに関連付けられたイベントメッセージに対して、前記関数が、前記固定された遅延、および前記イベントメッセージ内のタイムスタンプの合計である目標転送時間を返す、請求項２４に記載のコンピューティングシステム。
【請求項２７】
前記第２のクラスが、全てが共通キー値を含むイベントメッセージを含む、請求項２２に記載のコンピューティングシステム。
【請求項２８】
前記イベントメッセージ内に記憶された情報に従ってイベント結果を転送するためにイベントメッセージを優先順位付けすることが、異なる優先順位のイベントクラスに関連付けられたイベントメッセージを、異なるそれぞれの順序付けられたキュー内に記憶し、空でない最も高い優先順位の順序付けられたキューの前方から、イベント結果の潜在的転送について評価するべき次のイベントメッセージを選択することを含む、請求項１４に記載のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１６年１２月１５日に出願された米国特許出願公開第６２／４３４，４７２号明細書に対する優先権を主張する。
【０００２】
本記載は、異種の特性を有するイベントを処理するためのイベントキューに関する。
【背景技術】
【０００３】
データ処理システムはしばしば、多くの異なる種類の入力イベントを扱う。例えば、電気通信領域では、いくつかのイベントは、例えば、電話通話のセットアップ、ルーティング、および／またはティアダウンに関連する、「実時間」特性を有し得る。いくつかのイベントは、例えば、通話ごとに一度発生する、例えば、通話記録処理に関連する、「準実時間」のものであり得る。他のイベントは、例えば、請求書作成発送または定期的保全タスクに関連する、より低頻度のものであり得る。全体として、これらの入力イベントは、特定の種類のイベント（例えば、準実時間イベント）のために適切な応答を常に提供しつつ、処理されなければならない大量のフローを構成し得る。
【０００４】
このような異種入力を扱うシステムを設計することへの１つのアプローチは、これらの種類の入力の異なるもの専用の別個のソフトウェアおよび／またはハードウェア構造を有し、これにより、異なる種類にふさわしい異なるタイプの処理を可能にすることである。異なるタイプの処理のいくつかの例は、イベントができるだけ迅速に処理されるべきであるのか、適切なビジネスロジックを確実にするために、イベントが生成された順序で処理されるべきであるのか、それともより高い優先順位のタスクから計算リソースをスチールすること（ｓｔｅｅｌｉｎｇ）を回避するために、低い優先順位で処理されるべきであるのかという点が異なり得る。
【０００５】
例えば、複雑なシステムを保全する人的コスト、および専用リソースの潜在的過少利用から生じる技術的コストのゆえに、別個のソフトウェアおよび／またはハードウェア構造の保全にはコストがかかる。
【発明の概要】
【課題を解決するための手段】
【０００６】
一般的態様では、システムへの異種イベント入力の処理のためのアプローチは、特定の種類のイベント（例えば、準実時間イベント）への必要な応答を提供しつつ、入力イベントの大量のフローを処理することができる、統合キュー構造を利用する。キュー構造は、（ａ）例えば、異なる種類もしくはクラスのイベントを異なる優先順位レベルに関連付けることによる、イベントの優先順位付け、（ｂ）例えば、イベントの種類もしくはクラスに依存し得る、規則に基づく転送時間の計算に従う、イベントの遅延転送、および（ｃ）例えば、イベント内のキー値によって任意選択的に制約される、イベントの発信時間に従う、イベントの再順序付けという複数の特徴を含む、特徴の組み合わせを含む。これらの特徴のうちの１つ以上をサポートするために、キュー構造は、記憶されたイベントの種類から規則によって評価され、決定された優先順位および／または遅延転送時間を含むか、またはそれを参照するものを有するフィールド（例えば、列）を有する、イベントに関する記録（レコード）のための記憶（ストレージ）（例えば、ｔａ表）を含む。記憶のこの構成は、（例えば、メッセージの種類ごとに別個のキューを用いることによる）従来のアプローチを用いて可能となるよりも少ない動作および／またはより効果的な記憶の使用を必要とする仕方でイベントを処理する方法を提供する。さらに、本アプローチは、例えば、新たな種類のイベントを処理しなければならない時に、その種類のイベントに関する新たなキューをシステム内に導入する必要がないため、システムの構成におけるさらなる柔軟性を可能にする。
【０００７】
実施例によっては、この統合されたキュー構造は、少なくとも一部の種類のイベントに関する準実時間性能を維持しつつ、イベントの大量のフローを処理するように構成され得る、イベント処理システムへの入力として用いられる。選択された特徴（例えば、上述の（ａ）〜（ｃ））の利用を通じて、キュー構造は、計算リソースの高い利用度を維持しつつ、多様な種類のイベントの効率的処理を提供することによって、イベント処理技術を改善する。処理の改善は、キュー構造および関連する手続きステップによって導入される機能性からもたらされ、単に、コンピュータによって、コンピュータがそれらの通常の能力内で用いられるタスクに対して遂行されるおかげでもたらされるのではないことに留意されたい。さらに、本アプローチは、もし、人が、処理されるべきイベントのフローを扱うために十分な能力を有していれば、従来、人がイベントを整理して処理するであろう仕方の単なる自動化ではない。
【０００８】
１つの特定の態様では、概して、方法がコンピューティングシステムにおけるイベントメッセージの処理に適用される。本方法は、受信されたイベントメッセージをデータ記憶システム内に記憶することを含む。データ記憶システムは、イベントメッセージに関連付けられた第１の複数の記録のための記憶を含み、各イベントメッセージはタイムスタンプを含み、イベントメッセージに関連付けられた記録は、イベントメッセージについてのイベント結果に関する目標転送時間を示すフィールドを含み、少なくとも一部のイベントメッセージに関する目標転送時間は、イベントメッセージの種類に従って決定される。記憶されたイベントメッセージは、記憶されたイベントメッセージ内の情報、およびイベントメッセージに関連付けられた目標転送時間に基づいてイベント結果を転送するよう処理される。この処理は、イベントメッセージを、優先順位を示すイベントメッセージ内に記憶された情報に従ってイベント結果を転送するために優先順位付けすること、第１のセット内のイベントメッセージの全てに関して同じ優先順位を示す情報を記憶する１つ以上のイベントメッセージの第１のセット内の各イベントメッセージに関する目標転送時間を、イベントメッセージのそれぞれのタイムスタンプに対する固定された遅延に基づいて計算すること、およびイベントメッセージの目標転送時間とクロック時間との比較に基づいて転送可能であるイベントメッセージについてのイベント結果を転送すること、を含む。
【０００９】
諸態様は以下の特徴のうちの１つ以上を含み得る。
【００１０】
処理は、記憶されたイベントメッセージのうちの全てより少数を包含するイベントメッセージの第２のセットを、イベントメッセージの第２のセット内のイベントメッセージを、それらのイベントメッセージが受信された順序に従って処理する代わりに、イベントメッセージの第２のセット内のイベントメッセージを、イベントメッセージ内のタイムスタンプに従って処理するように再順序付けすることをさらに含む。
【００１１】
特定のイベントメッセージに関連付けられた目標転送時間は、特定のイベントメッセージが受信された後に、特定のイベントメッセージ内に含まれる情報によって少なくとも部分的に定義された関数を用いて計算される。例えば、第１のイベントクラスに関連付けられたイベントメッセージに対して、関数は、クロック時間に基づく目標転送時間を返す。
【００１２】
第１のイベントクラスに関連付けられたイベントメッセージは、再順序付けされる第２のセット内になく、それらのイベントメッセージが受信された順序に従って処理される。
【００１３】
第１のイベントクラスよりも低い優先順位の第２のイベントクラスに関連付けられたイベントメッセージに対して、関数は、固定された遅延、およびイベントメッセージ内のタイムスタンプの合計である目標転送時間を返す。
【００１４】
第２のイベントクラスに関連付けられたイベントメッセージは、再順序付けされる第２のセット内にあり、第２のクラスに関連付けられたイベントメッセージ内に記憶されたタイムスタンプに従って再順序付けされる。
【００１５】
第２のイベントクラスよりも低い優先順位の第３のイベントクラスに関連付けられたイベントメッセージに対して、関数は、イベントメッセージ内に記憶されたタイムスタンプに基づく目標転送時間を返す。
【００１６】
第３のイベントクラスに関連付けられたイベントメッセージは、再順序付けされる第２のセット内にあり、第３のクラスに関連付けられたイベントメッセージ内に記憶されたタイムスタンプに従って再順序付けされる。
【００１７】
第２のイベントクラスよりも低い優先順位の第３のイベントクラスに関連付けられたイベントメッセージに対して、関数は、繰り返しスケジュールに基づく目標転送時間を返す。
【００１８】
第２のセットは、全てが共通キー値を含むイベントメッセージを含む。
【００１９】
イベントメッセージ内に記憶された情報に従ってイベント結果を転送するためにイベントメッセージを優先順位付けすることは、異なる優先順位のイベントクラスに関連付けられたイベントメッセージを、異なるそれぞれの順序付けられたキュー内に記憶し、空でない最も高い優先順位の順序付けられたキューの前方から、イベント結果の潜在的転送について評価するべき次のイベントメッセージを選択することを含む。
【００２０】
別の態様では、概して、コンピューティングシステムにおいてイベントメッセージを処理するためのソフトウェアがコンピュータ可読媒体上に非一時的形態で記憶される。ソフトウェアは、コンピューティングシステムに、受信されたイベントメッセージをデータ記憶システム内に記憶することであって、データ記憶システムは、イベントメッセージに関連付けられた第１の複数の記録のための記憶を含み、各イベントメッセージはタイムスタンプを含み、イベントメッセージに関連付けられた記録は、イベントメッセージについてのイベント結果に関する目標転送時間を示すフィールドを含み、少なくとも一部のイベントメッセージに関する目標転送時間は、イベントメッセージの種類に従って決定される、記憶することと、記憶されたイベントメッセージを、記憶されたイベントメッセージ内の情報、およびイベントメッセージに関連付けられた目標転送時間に基づいてイベント結果を転送するよう処理することであって、この処理することは、イベントメッセージを、優先順位を示すイベントメッセージ内に記憶された情報に従ってイベント結果を転送するために優先順位付けすること、第１のセット内のイベントメッセージの全てに関して同じ優先順位を示す情報を記憶する１つ以上のイベントメッセージの第１のセット内の各イベントメッセージに関する目標転送時間を、イベントメッセージのそれぞれのタイムスタンプに対する固定された遅延に基づいて計算すること、およびイベントメッセージの目標転送時間とクロック時間との比較に基づいて転送可能であるイベントメッセージについてのイベント結果を転送すること、を含む、処理することと、をさせるための命令を含む。
【００２１】
別の態様では、概して、イベントメッセージを処理するためのコンピューティングシステムであって、このコンピューティングシステムは、受信されたイベントメッセージを記憶するためのデータ記憶システムであって、このデータ記憶システムは、イベントメッセージに関連付けられた第１の複数の記録のための記憶を含み、各イベントメッセージはタイムスタンプを含み、イベントメッセージに関連付けられた記録は、イベントメッセージについてのイベント結果に関する目標転送時間を示すフィールドを含み、少なくとも一部のイベントメッセージに関する目標転送時間は、イベントメッセージの種類に従って決定される、データ記憶システムと、記憶されたイベントメッセージを、記憶されたイベントメッセージ内の情報、およびイベントメッセージに関連付けられた目標転送時間に基づいてイベント結果を転送するよう処理するように構成された少なくとも１つのプロセッサであって、処理することは、イベントメッセージを、優先順位を示すイベントメッセージ内に記憶された情報に従ってイベント結果を転送するために優先順位付けすること、第１のセット内のイベントメッセージの全てに関して同じ優先順位を示す情報を記憶する１つ以上のイベントメッセージの第１のセット内の各イベントメッセージに関する目標転送時間を、イベントメッセージのそれぞれのタイムスタンプに対する固定された遅延に基づいて計算すること、およびイベントメッセージの目標転送時間とクロック時間との比較に基づいて転送可能であるイベントメッセージについてのイベント結果を転送すること、を含む、少なくとも１つのプロセッサと、を含む。
【００２２】
諸態様は以下の利点のうちの１つまたは複数を含むことができる。
【００２３】
優先順位および転送時間もしくは遅延要求に関する実質的に異なる特性を有するイベント（すなわち、イベントの異種セット）を単一のキュー構造において処理することで、イベントタイプごとの別個のキューの必要性が回避される。さらに、キューから出力されたイベントの処理が共有リソース（例えば、計算リソース）を消費する際には、イベントをキューから出す順序および時間が、共有リソースの使用をスケジュールし、割り振り、および／または優先順位付けする働きをする。例えば、遅延に敏感でないイベント（例えば、「バッチ」処理イベント）は、イベントを処理するために必要とされる共有リソースの高い利用度を維持しつつ、待ち時間の少ないもの（例えば、「実時間」イベント）と同じキューにおいて処理することができる。
【００２４】
本発明の他の特徴および利点は、以下の説明および請求項から明らかになるであろう。
【図面の簡単な説明】
【００２５】
【図１】図１は、入力イベントの異種セットを受信し、これらのイベントをイベント処理エンジンに提供するイベントキューを含むイベント処理システムのブロック図である。
【図２】図２は、図１のイベントキューの一実施形態のブロック図である。
【図３】図３は、図２に示されるイベントキューの入力プロセッサの一例によって実施される規則を示す表である。
【図４】図４は、分散イベントキューを利用する分散イベント処理システムのブロック図である。
【図５Ａ−Ｈ】図５Ａ〜Ｈは、一連のイベントの処理を示す図２に対応するブロック図である。
【図６】図６は、図２に示されるイベントキューにおける処理の様々な段階におけるイベントデータ構造を示す図である。
【発明を実施するための形態】
【００２６】
図１は、イベントソース１１２のセットが、システムによって処理されるイベントを提供する（例えば、作成する）、データ処理システム１００の一例を示す。システム１００では、作成されたイベントは、イベントキュー１１０に提供され、イベントキュー１１０は、ソース１１２からの異なる種類のイベントを受け付ける例えば、各イベントソース１１２が異なる種類のイベントを提供し得るか、または特定のソースが複数の種類のイベントを各々提供し得る。いずれにせよ、イベントキュー１１０は異なる種類のイベントを処理し、それらをイベント処理環境１２０による処理のために提供する。以上に紹介されたように、電気通信の一例において、１つのイベントソース１１２は、通話セットアップ、ルーティング、およびティアダウンに関連する実時間イベントを提供してもよく、その一方で、別のイベントソース１１２は通話記録イベントを提供してもよく、その一方で、さらに別のイベントソース１１２は、はるかにより低い優先順位および遅延要求実時間イベントを有する、請求書作成発送イベントを提供してもよい。
【００２７】
図２を参照すると、図１のイベントキュー１１０の一実装形態は、第１の段階２４４および第２の段階２４５として表される２つの処理段階を内部において一般的に利用する。処理の第１の段階２４４では、入力プロセッサ２１０が、例えば、イベントソースからの通信リンク上のデータ記録として、またはイベントキューのオブジェクト指向ソフトウェア実装形態の場合には、入力メソッドへの通話内のパラメータとして、イベント２１２を受信する。以上に紹介されたように、これらのイベントは複数の異なるソース１１２から到来してもよく、各ソースは、同種である（すなわち、全て同じタイプのものである）イベント２１２を提供してもよいか、または異種であるイベント（すなわち、様々なタイプのイベント）を提供してもよい。図２では、異なるタイプのイベントが、異なるクロスハッチングを用いて示されており、これにより、イベント２１２ａはイベント２１２ｂとは異なるタイプのものである。
【００２８】
以下においてより詳細に説明されるように、イベントは、イベントが生成された時間を通例指示するタイムスタンプを含む。イベントはまた、特定の文脈においては「メッセージ」または「記録」と呼ばれる場合もあり、用語「イベント」は、データ表現内のタイムスタンプの呈示を考慮して用いられる。概して、第１の処理段階では、イベントの追跡は、直接経路（矢印２３０で示される）、または遅延経路（矢印２３２によって示される）のいずれかをたどることができる。遅延経路においては、特定のイベントが、入力プロセッサによって遅延転送にふさわしいと識別され、入力プロセッサは各々のこのようなイベントに転送時間を付与し、これにより、その転送時間の経過後になるまでイベントはイベントキュー１１０から転送されない。まだ到達していない転送時間を付与されたイベント２２２は、「遅延キュー」と呼ばれるキュー２２０内に維持される。一実装形態では、キュー２２０内のイベントは、最も早い転送時間を有するイベント２２２がキューの先頭になるようにソートされる。この遅延キューは多数のイベント２２０を保持することができ、遅延転送を許容するこれらのイベントの性質は、転送時間によるソートなどのステップのための時間を提供する。遅延プロセッサ２３０は、入力プロセッサ２１０および遅延プロセッサの両方に時間基準を提供するクロック２５０を利用する。遅延プロセッサは、クロック２５０によって提供された時間が、遅延キューの先頭にあるイベントの付与された転送時間以降であるために、イベント２２２をいつ遅延キューから出すべきかを決定する。実例として、入力プロセッサによって受信された２つの入力イベント２１２ｂがイベント２２２ｂとして遅延キューに入れられた様子が示されている。イベント２２２ｂは、それらの転送時間がキュー内で最も早いため、ここではキューの先頭に示されている。
【００２９】
イベントキュー１１０の第２の段階２４５は優先順位キュー２４５を利用する。一実装形態では、優先順位の個別のセットの各優先順位（最も高い優先順位Ａ〜最も低い優先順位Ｚとして示される）がキュー２４０Ａ〜Ｚのセットのうちの別個のキューを有する。イベントは、入力プロセッサ２１０が、そのイベントが遅延転送にふさわしくないと決定した場合には、例えば、経路２３０上のイベント２１２ａとして示される、直接経路２３０によっていずれかでこの第２の段階に入る。入力プロセッサ２１０から遅延経路２３２を介して進み、遅延キュー２２０に入れられるイベントに対して、本実装形態において、遅延プロセッサ２３０は、転送時間が経過した各イベント２４２を、イベントの優先順位に基づいて適切なキュー２４０Ａ〜Ｚキューに入れる。例えば、入力されたイベント２１２ｂおよびキューに入れられたイベント２２２ｂに対応するイベント２４２ｂは、キュー２４０Ｂへ進むように示されている。優先順位プロセッサ２５０が、任意の保留イベント２４２を有する最も高い優先順位のキューを選定することによって、イベント２４２をキュー２４０Ａ〜Ｚから出し、そのキューの先頭にあるイベントをキューから出す。イベント結果と呼ばれ得る、イベントキュー１１０の出力は、イベントが渡される通信リンクであり得る。オブジェクト指向実装形態では、イベントをキュー２４０Ａ〜Ｚから出すプロセスは、イベントキューオブジェクトの出力メソッドの実行中に遂行されてもよい。実装形態によっては、遅延プロセッサによる処理はまた、イベントキューのオブジェクト指向実装形態の出力メソッドの実行の一部として遂行されてもよいか、または遅延キュー２２０のイベント２２２をソートし、経過した転送時間を有するそれらのイベント２２２をそれらの優先順位に基づく適切なキュー２４０Ａ〜Ｚへ渡す定期的タイマ「割り込み」に基づいて実施されてもよい。
【００３０】
以上に紹介されたように、入力プロセッサ２１０によって受け付けられた特定のイベント２１２は、遅延または遅延転送を全く必要としない、またはそれに全くふさわしくない。このようなイベントは、入力プロセッサ２１０によって、入力プロセッサによって決定された優先順位に従って直接経路２３０を介して適切なキュー２４０Ａ〜Ｚに直接渡される。
【００３１】
図３を参照すると、クラスのセット、ならびに例えば、それらのタイムスタンプ（ｔｓと表示）に従って、それらの優先順位（ｐｒｉと表示）および転送時間（ｄｔと表示）を付与するための規則の一例が表に示されている。本例では、「実時間」と呼ばれる、イベントの第１のクラスに最も高い優先順位（Ａ）が付与される。転送時間は現在の時間（ｎｏｗ（  ））に付与される。これは、このようなクラスからのイベントのためには余分の遅延が存在しないことを意味する。図２を再び参照すると、入力プロセッサ２１０はこのようなイベントを優先順位キュー２４５の最も高い優先順位のキュー２４０Ａに直接渡す。第２のクラス、「準実時間」には、２番目に高い優先順位（Ｂ）が付与される。このクラスのイベントの特徴は、イベントは、それらのタイムスタンプとは異なる順序で着信し得るが、その後、順序正しく転送されることが望ましいということである。これらのイベントのこの順序がばらばらの着信に対処する仕方は、入力プロセッサ２１０が、転送時間を、タイムスタンプ・プラス・タイムスタンプと（クロック２６０に従う）イベントの着信の時間との間の最も長い典型的遅延（デルタと表示）として付与することである（すなわち、ｄｔ＝ｔｓ＋デルタ）。このようにして、イベントキューに転送されるのにデルタも要しないこの準実時間クラスのイベントは、それらのタイムスタンプの順序で、優先順位キュー２４５から、およびその後、イベントキュー１１０から転送されることになる。いずれかのイベントが、イベントキュー１１０に着信する前にデルタよりも長く遅延された場合には、そのイベントはイベントキュー１１０からｔｓの順序で転送されないことがあり、したがって、このアプローチは、順序がばらばらの着信の場合のほとんどを処理するものの、イベントキューからの正しい順序の出力を絶対的に保証するわけではないことに留意されたい。しかし、入力遅延が非常に大きい、なり得る場合には、そのクラス内の全てのイベントの同等の遅延を生じさせなければ、このような正しい順序の出力を保証することはできない。
【００３２】
図３では、３つの他のクラスも、遅延転送を必要としないものとして示されており、異なる優先順位を各々有する。これらのクラスは、優先順位Ｃにおける「準実時間（ｎｅａｒ  ｒｅａｌ−ｔｉｍｅ、ＮＲＴ）アラーム」、優先順位Ｄにおける「バッチアラーム」、および優先順位Ｚにおける「スケジュールされていないバッチ」である。入力プロセッサ２１０はこれらのイベントを、遅延キュー２２０を通して渡すことなく、優先順位キュー２４５に直接渡す。
【００３３】
最後に、「スケジュールされたバッチ」キューは優先順位Ｅを有するが、処理時間ｎｅｘｔ＿ｗｉｎｄｏｗ（  ）、例えば、現在の時間の後の次の午前零時まで遅延される。このようなクラスのイベントは、転送時間が経過するまで遅延キュー２２０内に保持され、その後、遅延プロセッサ２３０によって優先順位キュー２４５のキュー２４０Ｅに渡される。
【００３４】
図４を参照すると、イベントキューを通過するイベントの構造の１つの可能なセットが示されている。本例では、イベントキュー１１０への各入力イベント２１２は、フィールドのセット：メッセージ４１２は、例えば、メッセージを表現するフィールドのセットを自ら有する、イベントの「ペイロード」を保持する、以下においてより詳細に説明される特定の再順序付け操作のために特別に扱われる、メッセージのフィールドのうちの１つと考えられ得る、キー４１３、例えば、指示「実時間」などを表現する、ｃｌｓ４１４と表される、クラス、ならびにイベントのソースによって付与されたイベントに関するタイムスタンプｔｓ４１５を有する。入力プロセッサ２１０が入力イベント２１２を受信すると、それはイベントを補足し、構造２２２を形成する。具体的には、入力プロセッサは、例えば、図３に示される規則に従って、転送時間ｄｔ４２６、および優先順位ｐｒｉ４２７を追加する。イベントが遅延プロセッサによって遅延キュー２２０から出された後に、イベント２４２が優先順位キュー内に配置される。優先順位は、イベントが配置されたキュー２４０Ａ〜Ｚによって暗に示され、転送時間はすでに過ぎたことが保証されているため、優先順位ｐｒｉ４２７、および転送時間ｄｔ４２６は省略されてもよい。
【００３５】
キュー２４０Ａ〜Ｚ内のイベント２４２の任意選択的な処理において、メッセージは、多数の制約に従ってさらに再順序付けされてもよい。１つの制約は、クラスについてのイベントが、再順序付けされることを許可されることである。例えば、入力プロセッサ２１０に関する図３に示される規則は、「実時間」クラスは再順序付けされなくてもよく（ｒｅ＝Ｆ）、その一方で、クラス「準実時間」は再順序付けされてもよいこと（ｒｅ＝Ｔ）を指示し得る。実施形態によっては、再順序付けは、特定のキュー（例えば２４０Ｂ）内のイベントは任意の順序で転送することができるという要求の支配を受け、同じキー値を有するイベントは、規定の順序（例えば、ｔｓの順序、またはイベントがイベントキュー１１０に到着した順序）のままでなければならないという要求の支配を受けてもよい。ｒｅ＝Ｆに関するクラスのための１つの任意選択的な実装形態は、優先順位プロセッサ２５０が、最も低いｔｓを有し、先に転送された、同じｔｓを有するイベントを有しないイベントを取ることである。ｒｅ＝Ｔであるクラスに関する１つの任意選択的な実装形態は、優先順位プロセッサ２５０が、各キュー２４０Ａ〜Ｚ内全体で最も早いｔｓを有するイベントを転送することである。
【００３６】
図５Ａ〜Ｈを参照すると、イベントキュー１１０を通る一連の入力イベント２１２−１〜２１２−５の通過を示す、図２に対応する一実施形態の動作が示されている。図５Ａを参照すると、イベント２４２−０および２４２−１０がそれぞれキュー２４０Ｃおよび２４０Ｄに入れられており、イベント２１２−１が入力プロセッサ２１０によって処理されようとしている。図５Ｂでは、イベント２４２−０は優先順位プロセッサ２５０によってキューから出されており、入力プロセッサが、イベント２１２−１が遅延経路を介して処理されてもよいと決定した後に、入力イベント２１２−１に対応するイベント２２２−１（すなわち、イベント２１２−１の内容に加えて転送時間フィールドおよび優先順位フィールドを含む）が遅延キュー２２０内に入れられている。イベント２２２−１は、入力プロセッサによって計算された転送時間を含み、このそのイベント２２２−１は、その時間が過ぎるまで遅延キュー２２０内にとどまることになる。図５Ｂでは、２つの新たなイベント２１２−２および２１２−３が入力プロセッサ２１０によって処理されようとしている。図５Ｃでは、入力イベント２１２−２および２１２−３は入力プロセッサ２１０によって処理されている。本図では、イベント２１２−２は、入力プロセッサによって、即時の処理を必要とすると決定され、したがって、直接経路を介してキュー２４０Ａに（イベント２４２−２として）入れられる。他方で、イベント２１２−３は、入力プロセッサが、このイベントは遅延転送にふさわしいと決定したため、イベント２２２−３として遅延キュー２２０に入れられ、この場合も先と同様に、転送時間がイベント２２３−３内で指示される。本図では、イベント２２２−３の転送時間はイベント２２２−１のものよりも遅く、したがって、イベント２２２−３は、より遅くキューから出されることになるため、遅延キュー内により遅くまで保持される。図５Ｃでは、イベント２１４−４が、入力プロセッサ２１０によって処理されようとしているように示されている。図５Ｄでは、イベント２４２−２は、優先順位プロセッサ２５０によってキューから出されたように示されており、入力イベント２１２−４は、イベント２２２−４として遅延キューに入れられて示されている。本図では、イベント２２２−４の転送時間は、イベント２２２−１のものの後、且つイベント２２２−３のものの前であると仮定され、したがって、イベントは２２２−１である。２２２−４、および２２２−３は、遅延キュー２２０内においてそれらの転送時間に従って順序付けられる。図５Ｅでは、イベント２２２−１の転送時間が過ぎ、遅延プロセッサ２３０は、対応するイベント２４２−１をキュー２４０Ｂに入れた。入力プロセッサ２１０はまた、入力イベント２１２−５をイベント２４２−５としてキュー２４０Ａに直接渡した。図５Ｆでは、優先順位プロセッサはイベント２４２−５をキューから出しており、イベント２２２−４および２２２−３の双方の転送時間が過ぎたため、遅延プロセッサは、対応するイベント２４２−４および２４２−３をそれぞれキュー２４０Ｂおよび２４０Ｄに入れた。図５Ｇでは、優先順位プロセッサ２５０は、イベント２４２−１（すなわち、保留イベントを有する最も高い優先順位のキューの先頭イベント）をキューから出した。図５Ｈでは、優先順位プロセッサ２５０はイベント２４２−４をキューから出し、低い優先順位のイベント２４２−１０および２４２−３を、優先順位プロセッサによって後にキューから出すために残した。典型的な実際の動作では、これらのキュー内にははるかにより多数のイベントが含まれ、優先順位キュー２４０Ａ〜Ｄは一般的に複数の保留イベントを有することになることを理解されたい。
【００３７】
以上の説明は単一のイベントキュー１１０に焦点を当てている。図６に、分散イベントキュー５１０が示される。分散キュー５１０は、図２に示されるイベントキュー１１０の構造を各々有する、多数のコピー５１１を含む。本例では、分散イベントキューに入力されるイベントは、上述されたキーに従って区分化される。このように、クラスが、特定の値についてのイベントが正しい順序のままとどまることを必要とする場合には、その制約を各イベントキューコピー５１１において別個に適用することができる。
【００３８】
一実装形態では、上述されたイベントキュー１００の一実装形態が、本明細書において参照により組み込まれる、米国特許出願公開第２０１６／００６２７７６号明細書、「ＥＸＥＣＵＴＩＮＧ  ＧＲＡＰＨ−ＢＡＳＥＤ  ＰＲＯＧＲＡＭ  ＳＰＥＣＩＦＩＣＡＴＩＯＮＳ」に記載されているシステムと併せて用いられる。例えば、イベントキュー１００は、実行され得るタスクの「動作可能キュー」を実施するために用いられてもよく、または、例えば、順序付けられていない集団のフローを支援するための、リンクバッファを実施してもよい。実装形態によっては、イベント１００は、以上において参照された公報に記載されるとおりの実行時システムのためのスケジューリングおよび優先順位付け機能を形成し、これによって、異なる計算グラフの動作可能タスクが単一のイベントキュー内で組み合わせられ、イベントキューによって課される優先順位付けおよびスケジューリングが、計算リソース、特に、計算の動作インスタンスを優先順位付けおよびスケジューリングに従って効率的に割り振る。このように、複数のグラフが実行時システム内に共存することができ、より優先順位の高い、またはより遅延に敏感なイベントにはリソースが優先的に適用され、他のイベントは、利用可能である時には、より多くの「バックグラウンド」リソースを消費する。
【００３９】
上述されたアプローチは、例えば、好適なソフトウェア命令を実行するプログラム可能なコンピューティングシステムを用いて実施し得るか、あるいはそれは、フィールドプログラマブルゲートアレイ（ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ、ＦＰＧＡ）などの好適なハードウェアの形で、あるいは何らかのハイブリッド形態で実施することができる。例えば、プログラムされたアプローチでは、ソフトウェアは、少なくとも１つのプロセッサ、（揮発性および／または不揮発性メモリおよび／または記憶要素を含む）少なくとも１つのデータ記憶システム、（少なくとも１つの入力デバイスもしくはポートを用いて入力を受信するため、および少なくとも１つの出力デバイスもしくはポートを用いて出力を提供するための）少なくとも１つのユーザインターフェースを各々含む、（分散型、クライアント／サーバ型、またはグリッド型などの様々なアーキテクチャのものであり得る）１つ以上のプログラムされた、またはプログラム可能なコンピューティングシステム上で実行する１つ以上のコンピュータプログラム内の手続きを含み得る。ソフトウェアは、例えば、データフローグラフの設計、構成、および実行に関連するサービスを提供する、より大きなプログラムの１つまたは複数のモジュールを含んでもよい。プログラムのモジュール（例えば、データフローグラフの要素）は、データリポジトリ内に記憶されたデータモデルに適合するデータ構造またはその他の編成データとして実装可能である。
【００４０】
ソフトウェアは、媒体の物理特性（例えば、表面ピットおよびランド、磁気領域、または電荷）を用いて、期間（例えば、ダイナミックＲＡＭなどのダイナミックメモリデバイスのリフレッシュ周期の間の時間）にわたって、揮発性もしくは不揮発性記憶媒体、または任意の他の非一時的媒体内に組み込まれるなど、非一時的形態で記憶され得る。命令のロードに備えて、ソフトウェアは、ＣＤ−ＲＯＭ、または（例えば、汎用もしくは専用コンピューティングシステムもしくはデバイスによって可読の）その他のコンピュータ可読媒体などの、有形の非一時的媒体上に提供され得るか、あるいはネットワークの通信媒体を通じて、ソフトウェアが実行されるコンピューティングシステムの有形の非一時的媒体へ（例えば、伝搬信号内に符号化されて）転送され得る。処理の一部または全ては、専用コンピュータ上で、あるいはコプロセッサまたはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）または専用の特定用途向け集積回路（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ、ＡＳＩＣ）などの、専用ハードウェアを用いて遂行されてもよい。処理は、ソフトウェアによって指定された計算の異なる部分が、異なるコンピューティング要素によって遂行される、分散した仕方で実施されてもよい。このようなコンピュータプログラムは各々、好ましくは、記憶デバイス媒体がコンピュータによって、本明細書において説明されている処理を遂行するために読み出されると、コンピュータを構成し、動作させるために、汎用または専用プログラム可能コンピュータによってアクセス可能な記憶デバイスのコンピュータ可読記憶媒体（例えば、ソリッドステートメモリもしくは媒体、または磁気的もしくは光学的媒体）上に記憶されるか、またはそれにダウンロードされる。本発明のシステムはまた、コンピュータプログラムを用いて構成された、有形の非一時的媒体として実装されると考えられてもよく、このように構成された媒体は、コンピュータを、本明細書において説明されている処理ステップのうちの１つまたは複数を遂行するための特定の既定の仕方で動作させる。
【００４１】
命令は、機械言語命令、仮想機械命令、より高水準のプログラミング命令、および／またはコンパイルもしくは解釈実行される命令を含む、異なるレベルのものであり得る。実装形態によっては、機能のうちの一部は、専用ハードウェアの形で完全に、または部分的に実施され得る。例えば、図２に示される様々なキューは、実施されるキューイングアプローチの効率を増大させるか、またはその待ち時間を低減し得る、専用ハードウェアを有し得る。いくつかの実装形態は、ソフトウェア構成要素および専用ハードウェア構成要素の組み合わせを用いる。
【００４２】
本発明の多数の実施形態が説明された。しかし、上述の説明は、本発明の範囲を限定することではなく、本発明を例示することが意図されていることを理解されたい。本発明の範囲は添付の請求項の範囲によって定義される。したがって、他の実施形態もまた、添付の請求項の範囲内に含まれる。例えば、様々な変更が、本発明の範囲から逸脱することなくなされ得る。追加的に、上述されたステップのいくつかは順序に依存しなくてもよく、それゆえ、説明されているものと異なる順序で遂行されることが可能である。
【図１】
0006864746.tif 000002
【図２】
0006864746.tif 000003
【図３】
0006864746.tif 000004
【図４】
0006864746.tif 000005
【図５Ａ】
0006864746.tif 000006
【図５Ｂ】
0006864746.tif 000007
【図５Ｃ】
0006864746.tif 000008
【図５Ｄ】
0006864746.tif 000009
【図５Ｅ】
0006864746.tif 000010
【図５Ｆ】
0006864746.tif 000011
【図５Ｇ】
0006864746.tif 000012
【図５Ｈ】
0006864746.tif 000013
【図６】
0006864746.tif 000014