(57)【要約】  それぞれキーの値に関連付けられたキー付きデータ項目を処理するための方法であって、このキー付きデータ項目は複数の相異なるデータストリームに属し、上記処理は、前記キー付きデータ項目を収集するステップと、前記キー付きデータ項目の少なくとも１つの内容に基づいて、１つ又は複数の動作の実行のための１つ又は複数の指定された条件の満足度を決定するステップと、前記決定に応じて前記１つ又は複数の動作の少なくとも１つの実行を引き起こすステップとを含む、方法について記述する。
2020514881.tif 000002
【特許請求の範囲】
【請求項１】
それぞれキーの値に関連付けられているキー付きデータ項目を処理する方法であって、前記処理は、前記キー付きデータ項目を収集するステップと、前記キー付きデータ項目の少なくとも１つの内容に基づいて、１つ又は複数の動作の実行のための１つ又は複数の指定条件の満足度を決定するステップと、前記決定に応じて前記１つ又は複数の動作の少なくとも１つの実行を引き起こすステップとを含み、前記方法は、
第１、第２及び第３仕様をそれぞれ含む、前記第１、第２及び第３パラメータ化アプリケーションにアクセスするステップであって、
第１仕様は、第１パラメータ化アプリケーションの１つ又は複数の特性を規定する１つ又は複数のパラメータ及び前記１つ又は複数のパラメータの１つ又は複数のそれぞれの値を指定し、
第２仕様は、第２パラメータ化アプリケーションの１つ又は複数の特性を規定する１つ又は複数のパラメータ及び前記１つ又は複数のパラメータの１つ又は複数のそれぞれの値を指定し、第２仕様は、規則及びその規則のそれぞれの条件を含み、
第３仕様は、第３パラメータ化アプリケーションの１つ又は複数の特性を規定する１つ又は複数のパラメータ及び前記１つ又は複数のパラメータの１つ又は複数のそれぞれの値を指定する、ステップと、
当該状態において前記第２パラメータ化アプリケーションにより実行されるべき前記第２仕様の１つ又は複数の部分を指定する前記キーの特定の値に関わる状態により、前記キーのそれぞれの値に関わる前記第２仕様の状態を維持するステップと；
前記第１パラメータ化アプリケーションを実行するステップであって、
１つ又は複数のデータソース及び１つ又は複数のデータストリーム、複数のデータソース又は複数のデータストリームからのデータ項目を収集することであって、収集された第１のデータ項目のフォーマットは収集された第２のデータ項目のフォーマットと異なり、且つデータ項目はキーの値に関連付けられる、収集することと；
変換されたデータ項目を得るために、前記第１及び第２データ項目を、前記第１パラメータ化アプリケーションの前記第１仕様に従って変換することと；
前記変換されたデータ項目をキューに追加することと
を含む処理を実行するために、前記第１仕様により指定される前記１つ又は複数のパラメータの前記１つ又は複数の値により前記第１パラメータ化アプリケーションを実行するステップと；
前記第２パラメータ化アプリケーションを実行するステップであって、
前記キーの特定の値に関連付けられた前記変換データ項目の１つ又は複数について、
前記キーの前記特定の値に関して前記第２仕様の現状を識別することと；
前記現状において実行されるべき前記第２仕様の一部における１つ又は複数の規則を識別することと；
識別された前記１つ又は複数の規則を実行することと；
前記１つ又は複数の変換されたデータ項目の少なくとも１つが、前記現状において実行された前記１つ又は複数の規則の少なくとも１つの１つ又は複数の条件を満たすことを決定することと；
前記決定に応じて、１つ又は複数の動作の実行を指定するデータ構造を生成することと；
前記キーの前記特定の値に関して前記第２仕様のその現状から次の状態への遷移を引き起こすことと；
前記生成されたデータ構造を前記第３パラメータ化アプリケーションに送ることと
を含む前記変換されたデータ項目の処理とともに、前記キュー中の前記変換されたデータ項目を処理するために、前記第２仕様により指定された前記１つ又は複数のパラメータの前記１つ又は複数の値により前記第２パラメータ化アプリケーションを実行するステップと；
前記第３パラメータ化アプリケーションを実行するステップであって、
前記データ構造において指定された前記１つ又は複数の動作の少なくとも１つに基づいて、前記１つ又は複数の動作の前記少なくとも１つの実行を引き起こす１つ又は複数の命令を送ること
を含む作業を行うために、前記第３仕様により指定された前記１つ又は複数のパラメータの前記１つ又は複数の値により前記第３パラメータ化アプリケーションを実行するステップと
を含む方法。
【請求項２】
１つ又は複数のユーザーインターフェースの作動中に、前記第１、第２及び第３パラメータ化アプリケーションのそれぞれの前記１つ又は複数のパラメータの１つ又は複数の値を指定する１つ又は複数のユーザーインターフェース要素を表示するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記第１パラメータ化アプリケーションを実行するステップが、前記第１パラメータ化アプリケーションの前記１つ又は複数のパラメータのための前記１つ又は複数のユーザーインターフェース要素により指定される１つ又は複数の値により前記第１パラメータ化アプリケーションを実行することを含む、請求項２に記載の方法。
【請求項４】
前記第２パラメータ化アプリケーションを実行するステップが、前記第２パラメータ化アプリケーションの前記１つ又は複数のパラメータのための前記１つ又は複数のユーザーインターフェース要素により指定される１つ又は複数の値により前記第２パラメータ化アプリケーションを実行することを含み、前記１つ又は複数の条件が満たされるか否か決定する際に前記１つ又は複数の指定された値が前記規則により入力として使用される、請求項２に記載の方法。
【請求項５】
前記第３パラメータ化アプリケーションを実行するステップが、前記第３パラメータ化アプリケーションの前記１つ又は複数のパラメータのための前記１つ又は複数のユーザーインターフェース要素により指定される１つ又は複数の値により前記第３パラメータ化アプリケーションを実行することを含む、請求項２に記載の方法。
【請求項６】
データ項目がデータレコードを含み、且つ前記変換が前記第１パラメータ化アプリケーションの前記第１仕様により指定されるフォーマットによる前記データレコードの再フォーマット化を含む、請求項１に記載の方法。
【請求項７】
前記第２パラメータ化アプリケーションの実行に基づいて、前記データレコードをそのデータレコードに関連付けられるユーザーのプロフィールからのデータにより補強するステップであって、前記第２パラメータ化アプリケーションの前記第２仕様により指定される命令に従って、メモリから前記ユーザーのプロフィールデータを取り出し、その取り出したプロフィールデータを前記データレコードの１つ又は複数のフィールドに入力するステップをさらに含む、請求項６に記載の方法。
【請求項８】
パラメータ化アプリケーションが、データ処理のためのアプリケーションを含み、前記アプリケーションが１つ又は複数の値により設定可能な１つ又は複数のパラメータを含む、請求項１に記載の方法。
【請求項９】
前記１つ又は複数の動作の実行の確認を求めるために、１つ又は複数の第三者システムへのフィードバックループを実行するステップをさらに含む、請求項１に記載の方法。
【請求項１０】
前記第２パラメータ化アプリケーションの実行に基づいて、前記キーの前記特定の値に関連付けられたデータ項目の１つ又は複数の値を指定する重要業績評価指標（ＫＰＩ）として、前記キーの前記特定の値に関わる１つ又は複数のＫＰＩを生成するステップをさらに含む、請求項１に記載の方法。
【請求項１１】
前記キーの前記特定の値のデータであって、前記１つ又は複数の動作の少なくとも１つに関するフィードバックを示すデータを受信するステップと、
前記ＫＰＩに含まれているか又は関連付けられているデータの１つ又は複数の部分と前記受信したデータを集約することにより前記キーの前記特定の値に関わるＫＰＩを前記フィードバックデータにより更新するステップと
をさらに含む、請求項１０に記載の方法。
【請求項１２】
前記１つ又は複数の動作が、テキストメッセージを外部装置に送ること、ｅメールを外部システムに送ること、ケースマネジメントシステムにおいて作業命令のチケットをオープンすること、移動電話接続を切断すること、ウェブサービスを目標装置に与えること、前記１つ又は複数の変換されたデータ項目のデータパケットを通知とともに送信すること、及び前記１つ又は複数の変換されたデータ項目について１つ又は複数の外部コンピュータ上でホストされているデータ処理アプリケーションを実行することの１つ又は複数を含む、請求項１に記載の方法。
【請求項１３】
請求項１に記載の方法であって、外部装置上における前記１つ又は複数の動作の少なくとも１つの実行を引き起こすために、前記１つ又は複数の命令がネットワーク接続経由で送られ、前記方法が、
前記１つ又は複数の動作の少なくとも１つが（ｉ）が正常に完了したか、又は（ｉｉ）失敗したかを示すフィードバックメッセージを受信するステップ
をさらに含む方法。
【請求項１４】
前記１つ又は複数の動作の前記少なくとも１つの一部が完了しなかった場合に、前記１つ又は複数の動作の前記少なくとも１つが失敗したと見なされ、前記フィードバックメッセージが前記１つ又は複数の失敗した動作の前記少なくとも１つのどの部分が完了しなかったかを示す、請求項１３に記載の方法。
【請求項１５】
前記フィードバックメッセージが、前記１つ又は複数の動作の前記少なくとも１つの正常完了及び／又は失敗の結果データを示す、請求項１３に記載の方法。
【請求項１６】
前記第１、第２、及び／又は第３パラメータ化アプリケーションの１つ又は複数のパラメータの前記１つ又は複数の指定された値を前記結果データに基づいて変更するステップと、
前記変更された１つ又は複数の指定値により、前記第１、第２、及び／又は第３パラメータ化アプリケーションを再実行するステップと
をさらに含む、請求項１５に記載の方法。
【請求項１７】
請求項１に記載の方法であって、外部装置上における前記１つ又は複数の動作の実行を引き起こすために、前記１つ又は複数の命令がネットワーク接続経由で送信され、前記方法が、
前記外部装置から、前記１つ又は複数の動作の少なくとも１つの実行の結果データを含むフィードバックメッセージを受信するステップと；
前記結果データを、前記１つ又は複数の動作の前記少なくとも１つの前記実行の正常な完了に関連付けられた所定データと比較するステップと；
前記比較に基づいて、前記１つ又は複数の動作の前記少なくとも１つの前記実行が正常に完了したこと、又は前記１つ又は複数の動作の前記少なくとも１つの前記実行が失敗したことを決定するステップと
をさらに含む方法。
【請求項１８】
前記第１、第２、及び／又は第３パラメータ化アプリケーションの１つ又は複数のパラメータの前記１つ又は複数の指定された値を前記結果に基づいて変更するステップと；
前記変更された１つ又は複数の指定値により、前記第１、第２及び／又は第３パラメータ化アプリケーションを再実行するステップと
をさらに含む、請求項１７に記載の方法。
【請求項１９】
前記結果データの前記所定データからのずれが所定量未満である場合に、前記１つ又は複数の動作の前記少なくとも１つの前記実行が正常に完了したと決定され、且つ前記結果データが前記所定データから少なくとも所定量だけずれている場合に、前記１つ又は複数の動作の前記少なくとも１つの前記実行が失敗したと決定される、請求項１７に記載の方法。
【請求項２０】
１つ又は複数のユーザーインターフェースの作動中に、前記所定データ及び前記所定量を指定する１つ又は複数のユーザーインターフェース要素を表示するステップをさらに含む、請求項１９に記載の方法。
【請求項２１】
１つ又は複数のユーザーインターフェースの作動中に、１つ又は複数の表示されるユーザーインターフェース要素を経由して、前記１つ又は複数の動作の前記少なくとも１つが（ｉ）正常に完了したか、又は（ｉｉ）失敗したかを出力するステップをさらに含む、請求項１３に記載の方法。
【請求項２２】
ユーザーインターフェースの作動中に、１つ又は複数の表示されるユーザーインターフェース要素を経由して、前記結果データを出力するステップをさらに含む、請求項１５に記載の方法
【請求項２３】
１つ又は複数の表示されるユーザーインターフェース要素を経由して、前記結果データに基づく前記第１、第２、及び／又は第３パラメータ化アプリケーションの１つ又は複数のパラメータの１つ又は複数の指定された値に対するユーザー指定変更を受信するステップと；
前記変更された１つ又は複数の指定値により、前記第１、第２、及び／又は第３パラメータ化アプリケーションを再実行するステップと
をさらに含む、請求項２２に記載の方法。
【請求項２４】
前記１つ又は複数の動作の前記少なくとも１つの実行を引き起こす前記１つ又は複数の命令を送る前記ステップが、前記第３パラメータ化アプリケーションにより、前記１つ又は複数の動作の実行を指定する前記出力を入力として使用することにより自動的に行われる、請求項１に記載の方法。
【請求項２５】
前記１つ又は複数の動作の前記少なくとも１つの前記実行が外部システムにより行われる、請求項１に記載の方法。
【請求項２６】
指定されたイベントの受領後に又は指定された時刻に、前記第１パラメータ化アプリケーションが実行される、請求項１に記載の方法。
【請求項２７】
前記１つ又は複数の変換されたデータ項目の前記少なくとも１つが前記１つ又は複数の条件を満たすことの決定に続いて、前記１つ又は複数の変換されたデータ項目の前記少なくとも１つが前記１つ又は複数の条件を満たすことを示すデータにより重要業績評価指標（ＫＰＩ）を表すデータを更新するステップをさらに含む、請求項１に記載の方法。
【請求項２８】
請求項１に記載の方法であって、前記１つ又は複数の変換されたデータ項目が、前記キーの前記値の集約された業績データを含む更新された重要業績評価指標（ＫＰＩ）を含み、前記方法が、
前記更新されたＫＰＩが、前記現状において実行された前記１つ又は複数の規則の少なくとも１つの１つ又は複数の条件を満たしていることを決定するステップ
をさらに含む方法。
【請求項２９】
変換されたデータ項目が、前記１つ又は複数の規則の少なくとも１つの１つ又は複数の条件を満たしていることを示すデータをメモリに記録するステップをさらに含む、請求項２８に記載の方法。
【請求項３０】
前記第１パラメータ化アプリケーションの実行に基づいて、変換されたデータ項目を、同様に前記変換されたデータ項目に関連付けられているキーの値に関連付けられているユーザーのプロフィールからのデータにより補強する、請求項１に記載の方法。
【請求項３１】
それぞれキーの値に関連付けられているキー付きデータ項目を処理する電子システムであって、前記キー付きデータ項目は複数の相異なるデータストリームに属し、前記処理は、前記キー付きデータ項目を収集するステップと、前記キー付きデータ項目の少なくとも１つの内容に基づいて、１つ又は複数の動作の実行のための１つ又は複数の指定された条件の満足度を決定するステップと、前記決定に応じて前記１つ又は複数の動作の少なくとも１つの実行を引き起こすステップとを含み、前記電子システムは、
１つ又は複数の処理装置と；
１つ又は複数の機械読み取り可能ハードウェア記憶装置であって、
第１、第２及び第３第仕様をそれぞれ含む、第１、第２及び第３パラメータ化アプリケーションにアクセスするステップであって、
第１仕様は、前記第１パラメータ化アプリケーションの１つ又は複数の特性を規定する１つ又は複数のパラメータ及び前記１つ又は複数のパラメータの１つ又は複数のそれぞれの値を指定し、
第２仕様は、前記第２パラメータ化アプリケーションの１つ又は複数の特性を規定する１つ又は複数のパラメータ及び前記１つ又は複数のパラメータの１つ又は複数のそれぞれの値を指定し、第２仕様は、規則及びその規則のそれぞれの条件を含み、
第３仕様は、前記第３パラメータ化アプリケーションの１つ又は複数の特性を規定する１つ又は複数のパラメータ及び前記１つ又は複数のパラメータの１つ又は複数のそれぞれの値を指定する、ステップと；
当該状態において前記第２パラメータ化アプリケーションにより実行されるべき前記第２仕様の１つ又は複数の部分を指定する前記キーの特定の値に関わる状態により前記キーのそれぞれの値に関わる前記第２仕様の状態を維持するステップと；
前記第１パラメータ化アプリケーションを実行するステップであって、
１つ又は複数のデータソース及び１つ又は複数のデータストリーム、複数のデータソース又は複数のデータストリームからのデータ項目を収集することであって、収集された第１のデータ項目のフォーマットは収集された第２のデータ項目のフォーマットと異なり、且つデータ項目はキーの値に関連付けられる、収集することと；
変換されたデータ項目を得るために、前記第１及び第２データ項目を、前記第１パラメータ化アプリケーションの前記第１仕様に従って変換することと；
前記変換されたデータ項目をキューに追加することと
を含む処理を実行するために、前記第１仕様により指定される前記１つ又は複数のパラメータの前記１つ又は複数の値により前記第１パラメータ化アプリケーションを実行するステップと；
前記第２パラメータ化アプリケーションを実行するステップであって、
前記キーの特定の値に関連付けられた前記変換データ項目の１つ又は複数について、
前記キーの前記特定の値に関して前記第２仕様の現状を識別することと；
前記現状において実行されるべき前記第２仕様の一部における１つ又は複数の規則を識別することと；
識別された前記１つ又は複数の規則を実行することと；
前記１つ又は複数の変換されたデータ項目の少なくとも１つが、前記現状において実行された前記１つ又は複数の規則の少なくとも１つの１つ又は複数の条件を満たすことを決定することと；
前記決定に応じて、１つ又は複数の動作の実行を指定するデータ構造を生成することと；
前記キーの前記特定の値に関して前記第２仕様のその現状から次の状態への遷移を引き起こすことと；
前記生成されたデータ構造を前記第３パラメータ化アプリケーションに送ることと
を含む前記変換されたデータ項目の処理とともに、前記キュー中の前記変換されたデータ項目を処理するために、前記第２仕様により指定された前記１つ又は複数のパラメータの前記１つ又は複数の値により前記第２パラメータ化アプリケーションを実行するステップと；
前記第３パラメータ化アプリケーションを実行するステップであって、
前記データ構造において指定された前記１つ又は複数の動作の少なくとも１つに基づいて、前記１つ又は複数の動作の前記少なくとも１つの実行を引き起こす１つ又は複数の命令を送ること
を含む作業を行うために、前記第３仕様により指定された前記１つ又は複数のパラメータの前記１つ又は複数の値により前記第３パラメータ化アプリケーションを実行するステップと
を含む作業を行うために、前記１つ又は複数の処理装置により実行可能な命令を格納する１つ又は複数の機械読み取り可能ハードウェア記憶装置と
を含む電子システム。
【請求項３２】
それぞれキーの値に関連付けられているキー付きデータ項目を処理する１つ又は複数の機械読み取り可能なハードウェア記憶装置であって、前記キー付きデータ項目は複数の相異なるデータストリームに属し、前記処理は、前記キー付きデータ項目を収集するステップと、前記キー付きデータ項目の少なくとも１つの内容に基づいて、１つ又は複数の動作の実行のための１つ又は複数の指定された条件の満足度を決定するステップと、前記決定に応じて前記１つ又は複数の動作の少なくとも１つの実行を引き起こすステップとを含み、
第１、第２及び第３第仕様をそれぞれ含む、第１、第２及び第３パラメータ化アプリケーションにアクセスするステップであって、
第１仕様は、前記第１パラメータ化アプリケーションの１つ又は複数の特性を規定する１つ又は複数のパラメータ及び前記１つ又は複数のパラメータの１つ又は複数のそれぞれの値を指定し、
第２仕様は、前記第２パラメータ化アプリケーションの１つ又は複数の特性を規定する１つ又は複数のパラメータ及び前記１つ又は複数のパラメータの１つ又は複数のそれぞれの値を指定し、第２仕様は、規則及びその規則のそれぞれの条件を含み、
第３仕様は、前記第３パラメータ化アプリケーションの１つ又は複数の特性を規定する１つ又は複数のパラメータ及び前記１つ又は複数のパラメータの１つ又は複数のそれぞれの値を指定する、ステップと；
当該状態において前記第２パラメータ化アプリケーションにより実行されるべき前記第２仕様の１つ又は複数の部分を指定する前記キーの特定の値に関わる状態により前記キーのそれぞれの値に関わる前記第２仕様の状態を維持するステップと；
前記第１パラメータ化アプリケーションを実行するステップであって、
１つ又は複数のデータソース及び１つ又は複数のデータストリーム、複数のデータソース又は複数のデータストリームからのデータ項目を収集することであって、収集された第１のデータ項目のフォーマットは収集された第２のデータ項目のフォーマットと異なり、且つデータ項目はキーの値に関連付けられる、収集することと；
変換されたデータ項目を得るために、前記第１及び第２データ項目を、前記第１パラメータ化アプリケーションの前記第１仕様に従って変換することと；
前記変換されたデータ項目をキューに追加することと
を含む処理を実行するために、前記第１仕様により指定される前記１つ又は複数のパラメータの前記１つ又は複数の値により前記第１パラメータ化アプリケーションを実行するステップと；
前記第２パラメータ化アプリケーションを実行するステップであって、
前記キーの特定の値に関連付けられた前記変換データ項目の１つ又は複数について、
前記キーの前記特定の値に関して前記第２仕様の現状を識別することと；
前記現状において実行されるべき前記第２仕様の一部における１つ又は複数の規則を識別することと；
識別された前記１つ又は複数の規則を実行することと；
前記１つ又は複数の変換されたデータ項目の少なくとも１つが、前記現状において実行された前記１つ又は複数の規則の少なくとも１つの１つ又は複数の条件を満たすことを決定することと；
前記決定に応じて、１つ又は複数の動作の実行を指定するデータ構造を生成することと；
前記キーの前記特定の値に関して前記第２仕様のその現状から次の状態への遷移を引き起こすことと；
前記生成されたデータ構造を前記第３パラメータ化アプリケーションに送ることと
を含む前記変換されたデータ項目の処理とともに、前記キュー中の前記変換されたデータ項目を処理するために、前記第２仕様により指定された前記１つ又は複数のパラメータの前記１つ又は複数の値により前記第２パラメータ化アプリケーションを実行するステップと；
前記第３パラメータ化アプリケーションを実行するステップであって、
前記データ構造において指定された前記１つ又は複数の動作の少なくとも１つに基づいて、前記１つ又は複数の動作の前記少なくとも１つの実行を引き起こす１つ又は複数の命令を送ること
を含む作業を行うために、前記第３仕様により指定された前記１つ又は複数のパラメータの前記１つ又は複数の値により前記第３パラメータ化アプリケーションを実行するステップと
を含む作業を行うために、１つ又は複数の処理装置により実行可能な命令を格納する１つ又は複数の機械読み取り可能なハードウェア記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一定の動作、例えば、電気通信ネットワーク等のネットワークで実行される動作を実行するパラメータ化アプリケーションにおける（準）リアルタイムネットワークデータストリームの収集、検証、フォーマット化及びさらなる処理のためのネットワーク即応コンピュータ実施方法、コンピュータシステム及びコンピュータ読み取り可能媒体に関する。
【０００２】
優先権の主張
本願は、参照によりそのそれぞれの全内容が本明細書に援用される２０１７年２月２３日に出願された米国仮特許出願第６２／４６２，４９８号及び２０１７年８月２８日に出願された米国特許出願公開第１５／６８８，５８７号に対する優先権を主張する。
【背景技術】
【０００３】
異種ソースから受信したデータレコードを処理する一般的な方法では、複数の異種システムによりデータレコードを収集し、それらの各システムは特定のタイプのデータを処理するように構成する。特定のタイプのデータを処理するように構成されたシステムによりそのタイプのデータを処理した後、このシステムは次にさらなる処理のために下流の別のアプリケーションにデータを転送する。従来のシステムにおいては、この下流のアプリケーションは、次に受信データレコードに対する追加フォーマット化（及び／又は再フォーマット化）を行ってそれを当該アプリケーションにとって受け入れ可能なフォーマットに変換する。その結果、この従来の方法は、待ち時間及びデータを受信・収集するシステムとデータを処理する下流のアプリケーションとの間の相互作用の遅延をもたらす。この従来の方法は、１つのデータレコードを複数回再フォーマットしなければならないことからも待ち時間の増大をもたらす。例えば、データレコードは、それを受信し、且つそれを処理する各システムによりフォーマット化（及び／又は再フォーマット化）され、その結果として増大した待ち時間が累積する。この統合されていないシステム枠組み（それぞれ自分自身のデータフォーマット化及び処理を行う異種システムの）は、リアルタイム又は少なくとも準リアルタイムでデータを処理・分析することができないので、データの処理の待ち時間ももたらす。したがって、処理されたデータに依存する作業又は動作もますます遅延するか、あるいはやがて全く処理されなくなり、現状がすでに再変化してしまった場合には、行われる実行は陳腐化する。
【発明の概要】
【課題を解決するための手段】
【０００４】
これらの一般的方法とは異なり、本明細書において記述される方法、システム及びコンピュータ読み取り可能媒体は、データ統合及びデータレコード管理の準備を簡素化され、且つ加速化された方法で行う。記述される機能は、バッチとリアルタイム両方によるデータストリームの収集、検証、フォーマット化及びさらなる処理を可能にする（例えば、データが受信されたとき、例えば、収集されたデータをディスクに格納することなく、リアルタイム又は準リアルタイムで）。また、収集、検出及び動作の作業を行う単一の実行システムを設けることにより、実行システムは、データ収集のための１つのシステムにデータを統合し、続いて収集されたデータを検出及び動作を行う別のシステムに再統合することに関する複雑さを除去する。本明細書において記述される機能は、データレコード又はデータ項目に即時応答を与えることができ（例えば、それが受信されたときに）、これによりアプリケーション結果を直ちに見ることも可能となる。所望の最終動作は、通常、データの迅速な処理に依存するので、物流又は電気通信における動作等の最終動作は、種々の相異なるフォーマットのデータを生み出す種々の相異なるソースから到来する大量のデータのこの迅速な処理により大きな利益を受ける。本明細書において記述されるシステムは、１日あたり５，０００万人のユーザーの２０億件超のデータレコード又はデータ項目を処理することができる。一般的な方法とは異なり、本明細書において記述されるシステムは、帯域幅の増大及びメモリ使用量の抑制をもたらす。
【０００５】
それぞれキーの値に関連付けられているキー付きデータ項目を処理するこの方法では、これらのキー付きデータ項目は複数の相異なるデータストリームから到来し、この処理はキー付きデータ項目を収集すること、少なくとも１つのキー付きデータ項目の内容に基づいて、１つ又は複数の動作の実行のための１つ又は複数の指定された条件の満足度を決定すること及びこの決定に応じて１つ又は複数の動作の少なくとも１つの実行を引き起こすことを含む。この方法は、以下のステップを含む。すなわち、それぞれの第１、第２及び第３仕様を含む第１、第２及び第３パラメータ化アプリケーションにアクセスするステップ（この場合、第１仕様は、第１パラメータ化アプリケーションの１つ又は複数の特性を規定する１つ又は複数のパラメータ及びこれらの１つ又は複数のパラメータのそれぞれの１つ又は複数の値を指定し、第２仕様は、第２パラメータ化アプリケーションの１つ又は複数の特性を規定する１つ又は複数のパラメータ及びこれらの１つ又は複数のパラメータのそれぞれの１つ又は複数の値を指定し、さらに規則及びその規則のそれぞれの条件を含んでおり、また、第３仕様は、第３パラメータ化アプリケーションの１つ又は複数の特性を規定する１つ又は複数のパラメータ及びこれらの１つ又は複数のパラメータのそれぞれの１つ又は複数の値を指定する）、当該状態において第２パラメータ化アプリケーションにより実行されるべき第２仕様の１つ又は複数の部分を指定する当該キーの特定の値の状態により当該キーのそれぞれの値に関わる第２仕様の状態を維持するステップ、１つ又は複数のデータソース及び１つ又は複数のデータストリーム、複数のデータソース又は複数のデータストリームからデータ項目を収集すること（この場合、収集された第１データ項目のフォーマットは収集された第２データ項目のフォーマットとは異なり、且つデータ項目はキーの値と関連付けられている）、第１パラメータ化アプリケーションの第１仕様に従って第１及び第２データ項目を変換して変換されたデータ項目を得ること、及び変換されたデータ項目をキューに追加することを含む処理を行うために、第１仕様により指定される１つ又は複数のパラメータの１つ又は複数の値により第１パラメータ化アプリケーションを実行するステップ、当該キーの特定値に関連付けられた変換された１つ又は複数のデータ項目について、当該キーの当該特定値について第２仕様の現状を識別すること、現状において実行されるべき第２仕様の一部分における１つ又は複数の規則を識別すること、識別された１つ又は複数の規則を実行すること、１つ又は複数の変更されたデータ項目の少なくとも１つが現状において実行される１つ又は複数の規則の少なくとも１つの１つ又は複数の条件を満たすことを決定すること、前記決定に応じて、１つ又は複数の動作の実行を指定するデータ構造を作成すること、キーの特定の値に関して第２仕様をその現状から次の状態に移行させること、作成したデータ構造を第３パラメータ化アプリケーションに送ることを含む前記変換されたデータ項目の処理とともに、第２仕様により指定された１つ又は複数のパラメータの１つ又は複数の値により第２パラメータ化アプリケーションを実行してキュー中の前記変換されたデータ項目を処理するステップと、データ構造において指定された１つ又は複数の動作の少なくとも１つに基づいて前記１つ又は複数の動作の前記少なくとも１つの実行を引き起こす１つ又は複数の命令を送信することを含む作業を行うために第３仕様により指定された１つ又は複数のパラメータの１つ又は複数の値により第３パラメータ化アプリケーションを実行するステップ。ソフトウェア、ファームウェア、ハードウェア、又はそれらの組み合わせをシステムに設けることにより特定の作業又は動作を行う１つ又は複数のコンピュータからなるシステムを構成することができる。これらのソフトウェア、ハードウェア等又はその組み合わせは、その動作において、このシステムにこれらの動作を行わせる。命令を包含することにより特定の作業又は動作を行う１つ又は複数のコンピュータプログラムを構成することができる。これらのプログラムは、データ処理装置により実行されたとき、この装置にそれらの動作を実行させる。特定の状況において、前記の方法、コンピュータプログラム及び／又はシステムは、以下の機能及び／又は動作の１つ又は複数を含む。
【０００６】
この動作は、１つ又は複数のユーザーインターフェースの作動中における第１、第２及び第３パラメータ化アプリケーションのそれぞれの１つ又は複数のパラメータの１つ又は複数の値を指定するための１つ又は複数のユーザーインターフェース要素の表示をさらに含む。第１パラメータ化アプリケーションの実行は、第１パラメータ化アプリケーションの前記１つ又は複数のパラメータについて前記１つ又は複数のユーザーインターフェース要素により指定される１つ又は複数の値による第１パラメータ化アプリケーションの実行を含む。第２パラメータ化アプリケーションの実行は、第２パラメータ化アプリケーションの前記１つ又は複数のパラメータについて前記１つ又は複数のユーザーインターフェース要素により指定される１つ又は複数の値による第２パラメータ化アプリケーションの実行を含む。この場合、指定された前記１つ又は複数の値は、前記１つ又は複数の条件が満たされるか否か決定するために前記規則により入力として使用される。第３パラメータ化アプリケーションの実行は、第３パラメータ化アプリケーションの前記１つ又は複数のパラメータについて前記１つ又は複数のユーザーインターフェース要素により指定される１つ又は複数の値による第３パラメータ化アプリケーションの実行を含む。データ項目はデータレコードを含み、且つこの場合、変換は第１パラメータ化アプリケーションの第１仕様により指定されるフォーマットに従うデータレコードの再フォーマット化を含む。
【０００７】
この動作は、第２パラメータ化アプリケーションの実行に基づいて行われる当該データレコードに関連するユーザーのプロフィールからのデータによるデータレコードの補強をさらに含む。この補強は、第２パラメータ化アプリケーションの第２仕様により指定される命令による。この命令は、メモリから当該ユーザーのプロフィールデータを取り出し、且つ取り出したプロフィールデータを当該データレコードの１つ又は複数のフィールドに入力する。パラメータ化アプリケーションは、データ処理のためのアプリケーションを含んでおり、このアプリケーションは１つ又は複数の値により設定可能な１つ又は複数のパラメータを含んでいる。この動作は、１つ又は複数の動作の実行の確認を要求するための１つ又は複数の第三者システムへのフィードバックループ（例えば、同期又は非同期フィードバックループ）の実行を含むことをさらに含む。この動作は、第２パラメータ化アプリケーションの実行に基づいて行われるキーの特定の値に関わる１つ又は複数の重要業績評価指標（ＫＰＩ）の生成をさらに含む。ＫＰＩは、キーの特定の値に関連付けられたデータ項目の１つ又は複数の値を指定する。例えば、ＫＰＩは、業績データ、例えば１つ又は複数の部分又はキャンペーンの論理分岐又は一連の所定論理の業績を指定する業績データを含み得る。
【０００８】
この動作は、キーの特定の値のデータを受信することをさらに含む。この受信したデータは、前記１つ又は複数の動作の少なくとも１つに関するフィードバックを示す。また、この動作はフィードバックデータによるキーの特定の値に関わるＫＰＩの更新を含む。前記の１つ又は複数の動作は、外部装置に対するテキストメッセージの送信、外部システムに対するｅメールの送信、ケースマネジメントシステムにおける作業命令のチケットのオープン、移動電話接続の切断、ターゲット装置へのウェブサービスの提供、通知を含む１つ又は複数の変換データ項目のデータパケットの送信、及び１つ又は複数の外部コンピュータ上でホストされるデータ処理アプリケーションを前記１つ又は複数の変換されたデータ項目について実行することの１つ又は複数を含む。前記１つ又は複数の命令はネットワーク接続経由で送られて、外部装置上における前記１つ又は複数の動作の少なくとも１つの実行を引き起こす。この方法は、さらに以下を含む：前記１つ又は複数の動作の少なくとも１つが（ｉ）正常に完了したか、又は（ｉｉ）失敗したかを示すフィードバックメッセージを受信すること。前記１つ又は複数の動作の前記少なくとも１つは、前記１つ又は複数の動作の少なくとも１つの一部が完了しなかった場合に失敗したと見なされる。この場合、フィードバックメッセージは、失敗した前記１つ又は複数の動作の前記少なくとも１つのどの部分が完了しなかったかを示す。このフィードバックメッセージは、前記１つ又は複数の動作の少なくとも１つの正常に完了した結果のデータ及び／又は失敗した結果のデータを示す。
【０００９】
この動作は、第１、第２、及び／又は第３パラメータ化アプリケーションの１つ又は複数のパラメータの前記１つ又は複数の指定された値を前記結果データに基づいて変更することをさらに含む。また、この動作は、変更された前記１つ又は複数の指定値により第１、第２及び／又は第３パラメータ化アプリケーションを再実行することを含む。前記１つ又は複数の命令はネットワーク接続経由で送信されて前記１つ又は複数の動作の外部装置に関する実行を引き起こす。この方法はさらに以下を含む：外部装置から、前記１つ又は複数の動作の少なくとも１つの実行された動作の結果データを含むフィードバックメッセージを受信すること、結果データを前記１つ又は複数の動作の少なくとも１つの実行の正常完了に関する所定のデータと比較すること、及び前記１つ又は複数の動作の前記少なくとも１つの実行が正常に完了したこと又は前記１つ又は複数の動作の前記少なくとも１つの実行が失敗したことを前記比較に基づいて決定すること。
【００１０】
この動作は、第１、第２、及び／又は第３パラメータ化アプリケーションの１つ又は複数のパラメータの前記１つ又は複数の指定された値を結果データに基づいて変更すること、及び前記１つ又は複数の指定された値を変更して第１、第２及び／又は第３パラメータ化アプリケーションを再実行することをさらに含む。前記１つ又は複数の動作の前記少なくとも１つの実行は、結果データの所定データからのずれが所定量未満である場合に正常に完了したと決定され、且つ前記１つ又は複数の動作の前記少なくとも１つの実行は、結果データが所定データから少なくとも所定量だけずれている場合に失敗したと決定される。
【００１１】
この動作は、１つ又は複数のユーザーインターフェースの作動中に、前記所定データ及び前記所定量を指定する１つ又は複数のユーザーインターフェース要素を表示することをさらに含む。この動作は、１つ又は複数のユーザーインターフェースの作動中に１つ又は複数の表示ユーザーインターフェース要素を経由して、前記１つ又は複数の動作の前記少なくとも１つが（ｉ）が正常に完了したか、又は（ｉｉ）失敗したかを出力することをさらに含む。請求項１５の方法は、さらに以下を含む：１つ又は複数のユーザーインターフェースの作動中に、１つ又は複数の表示ユーザーインターフェース要素を経由して、結果データを出力すること。この動作は、１つ又は複数の表示ユーザーインターフェース要素を経由して、第１、第２、及び／又は第３パラメータ化アプリケーションの１つ又は複数のパラメータの１つ又は複数の指定された値に対する結果データに基づくユーザー指定変更を受信すること、及び前記１つ又は複数の指定値を変更して第１、第２及び／又は第３パラメータ化アプリケーションを再実行することをさらに含む。前記１つ又は複数の動作の前記少なくとも１つの実行を引き起こす前記１つ又は複数の命令の送信は、第３パラメータ化アプリケーションにより前記１つ又は複数の動作の実行を指定する出力を入力として使用することにより自動的に行われる。
【００１２】
この概要は選択したコンセプトを簡素化された形態で紹介するために提示されたが、これらのコンセプトは以下の詳細説明においてさらに詳しく説明する。この概要は、請求される主題事項の重要な機能又は本質的な機能を示すことも、請求される主題事項の範囲を限定するために利用されることも意図していない。
【図面の簡単な説明】
【００１３】
【図１】図１は、キー付きデータの処理のためのパラメータ化論理を実現するシステムの略図である。
【図２Ａ】図２Ａは、典型的なデータフローグラフを示す略図である。
【図２Ｂ】図２Ｂは、データフロー図をカスタマイズするインターフェースの各部を示す略図である。
【図２Ｃ】図２Ｃは、データフロー図をカスタマイズするインターフェースの各部を示す略図である。
【図３Ａ】図３Ａは、準リアルタイムデータレコード集約を計算するためのシステムの略図である。
【図３Ｂ】図３Ｂは、キー付きデータを処理するシステムの略図である。
【図３Ｃ】図３Ｃは、キー付きデータを処理するシステムの略図である。
【図４】図４は、キー付きデータを処理するシステムの略図である。
【図５Ａ】図５Ａは、キー付きデータを処理するシステムの略図である。
【図５Ｂ】図５Ｂは、キー付きデータを処理するシステムの略図である。
【図６】図６は、パラメータ化論理の構成のためのグラフィックユーザーインターフェースの例である。
【図７】図７は、パラメータ化論理の構成のためのグラフィックユーザーインターフェースの例である。
【図８】図８は、パラメータ化論理の構成のためのグラフィックユーザーインターフェースの例である。
【図９】図９は、パラメータ化論理の構成のためのグラフィックユーザーインターフェースの例である。
【図１０】図１０は、フローチャートの略図である。
【図１１】図１１は、フローチャートインスタンスの略図である。
【図１２】図１２は、長大レコードによる準リアルタイム論理実行の略図である。
【図１３】図１３は、パラメータ化論理によりキー付きデータを処理する例示プロセスの略図である。
【発明を実施するための形態】
【００１４】
詳細説明
図１を参照する。種々のソースから、例えば、相異なる場所に配置され、且つネットワーク経由で相互接続される種々のサーバからデータ及びデータレコードを収集し、且つデータ検出及び動作実行のためにそれらのデータをモジュールに統合するシステム１００が示されている。一般的に、データ項目は、データレコード、データレコード又はイベントを示すデータ（例えば、動作の生起を示すデータ又は動作（例えば、電話呼の生起又は電話呼の長さ）の生起を示すデータを含むレコード）を含んでいる。本明細書において記述される技術は主としてデータレコードに関して記述されるが、この技術はイベントを処理するためにも使用され得る。システム１００は、コード管理記憶１０２、開発環境１０４、データソース１０６及び実行システム（又はランタイム環境と呼ばれる）１０８を含む。実行システム１０８は、上述の収集、検出及び動作を実行する種々のアプリケーション及びプログラムを構成し、且つ実行する収集・検出・動作（ＣＤＡ）環境を実現するシステムを含む。これらの種々のアプリケーション及びプログラムは、例えば、一連の再利用可能なグラフ、プラン、アプリケーション等（例えば、アプリケーション及びプログラムの開発を促進し、且つそれらの維持を簡素化するもの）を含む。一般的に、グラフ（例えば、データフローグラフ）は、例えば、“Managing Parameters for Graph-Based Applications”と題され、参照により本明細書に組み込まれている米国特許出願公開第２００７／００１１６６８号において記述されている頂点間の有向辺（作動要素の流れを示す）により接続される頂点又はノード（成分又はデータセット）を含む。一般的に、プランは、タスクと呼ばれるプロセスステップが実行順（例えば、依存関係）を示すフローにより接続されているプロセスフローを表すアプリケーションを含む。
【００１５】
本明細書において記述されるそれぞれの方法はシステム１００により実行され得る。このシステムは、コード管理記憶１０２に結合される開発環境１０４を含む。開発環境１０４は、本明細書において記述されるアプリケーションの何れかを作成するために構成される。かかるアプリケーションは、１つ又は複数の入力データセットから処理グラフコンポーネントのグラフを経由して１つ又は複数の出力データセットに流れるデータについて行われるグラフベースコンピュテーションを実現するデータフローグラフに関連付けられる。このデータフローグラフは、コード管理記憶１０２中のデータ構造により指定される。データフローグラフは、データ構造により指定され、且つ１つ又は複数の辺により接続されるグラフコンポーネントを表す複数の頂点又はノードを有する。辺は、データ構造により指定され、且つグラフコンポーネント間のデータフローを表す。また、ランタイム環境１０８は記憶１０２に結合され、且つ１つ又は複数のコンピュータ上でホストされる。ランタイム環境１０８は、データフローグラフを指定する記憶データ構造も読み出し、且つランタイム環境１０８によりデータフローグラフに割り当てられるグラフコンポーネントの計算を行うためにプロセス等のコンピューティング資源の割当及び設定を行う。ランタイム環境１０８は、この方法による作業が実行されるように、割り当てられたプロセスの実行をスケジュールし、且つ制御する実行モジュールも含んでいる。
【００１６】
実行システム１０８は、データレコード（及びその他のデータ）を収集し、それを変換し、且つ変換されたデータを下流のアプリケーション（例えば、検出モジュール１１６及び動作モジュール１１８を含む）に分配する収集／統合モジュール１１４（以下、収集モジュール１１４）を含んでいる。この例では、動作モジュール１１８は、第三者システム及び／又は外部システムへのインターフェースを含んでいる。特に、収集モジュール１１４は、例えば、データソース１０６等の種々のソースから、又は種々の場所に配置されてネットワーク経由で相互接続されている種々のサーバからバッチ又はリアルタイムでデータを集めるとともにリアルタイムデータストリーム１０７、例えば、種々の場所に配置されてネットワーク経由で相互接続されている種々のサーバから到来するリアルタイムデータを収集する。データソース１０６を与える記憶装置は、システム１００へのローカル接続、例えば、コンピュータ稼働実行システム１０８に接続される記憶媒体（例えば、ハードドライブ）上の記憶でも実行システム１０８へのリモート接続、例えば、ローカル又は広域データネットワーク経由で実行システム１０８と通信するリモートシステム上においてホストされる記憶でもよい。
【００１７】
収集モジュール１１４は、（例えば、データソース１０６から受信したより低速のバッチデータ１０９及び／又はリアルタイムデータストリーム１０７中のデータにより構文解析し、検証し、且つ補強するように構成される。便宜上、用語「リアルタイム」及び「準リアルタイム」は、以下、まとめて無制限に「リアルタイム」又は「準リアルタイム」と称することとする。収集モジュール１１４は、補強されたデータレコードをメモリに格納し、且つ保管及び当該レコードのリカバリを保証するためにこの補強されたデータレコードをディスクにも書き込む。収集モジュール１１４は任意のソースを取り扱うことができるので、収集モジュール１１４は、ＣＤＡ環境へのデータの迅速且つ自立的な統合（例えば、収集モジュール１１４が統合を正常に行うためには追加アプリケーションが必要である）を可能にする一方、自由裁量による膨大なデータ量、低遅延、及び複数のデータフォーマットによる複雑性に対処する。
【００１８】
１つの例では、レコードはリモートシステムからシステム１０８に転送される。この例では、毎日数千のレコードが到着する。この例では、収集モジュール１１４は、システム１０８のローカルディレクトリに転送されたレコードを検出する。収集モジュール１１４は、レコードをキューに追加し、且つデータをアーカイブ（示されていない）にコピーすることによりレコード転送も行う。収集モジュール１１４は、構文解析後に元のレコードの消去も行う。この例では、アーカイブは、変更されていない入力データのコピーを格納し、任意選択により圧縮する。アーカイブは、規定日数の間データを保管する。この例では、収集モジュール１１４は、収集したデータをデータキューに追加するか又はそれに転送する。各データフィードにつき１つのデータキューが用意される。収集モジュール１１４は、当該レコードを読むこと、重複を除去すること、当該レコードを補強すること（例えば、レコードにプロフィールデータを追加することにより）、当該レコードをキーにより区分すること（例えば、さらなる補強のために）及びレコードをキューに書き込むことによりレコードの構文解析も行う。この例では、収集モジュール１１４は、重複を除去するために使用されるべき各レコードのハッシュのコピーを規定日数にわたり保存するＩＣＦＦ（索引付き圧縮単層ファイル）アーカイブを記憶することにより重複を除去する。この例では、収集モジュール１１４は、アーカイブ及びＩＣＦＦアーカイブから古いファイルを片付ける（例えば、除去する）予定（例えば、毎日）グラフを実行することにより保守も行う。
【００１９】
この例では、キュー（これにレコードが付けられる）は、キーにより区分される単一集中型キューを含む。この集中型キューは、データレコードタイプ（ソースデータフィード名を示す）、標準フィールド（キー等）、及びフィード固有フィールドを含む標準化フォーマットを有する。このキューは、１つのサーバ内又はサーバ間において並列待ち可能な並列キュー及び／又は１つ又は複数のシステム間で並列処理可能な並列キューを含む。
【００２０】
この例では、収集モジュール１１４は、規定数のレコード又はファイル（例えば、一連のレコード）を受信した後に又は規定秒数の経過後にデータフィードのチェックポイント動作を行う。収集モジュール１１４は、入力ファイルが到着したときに準リアルタイムの待ち時間でシステム１０８経由でデータを送り込む設定可能なパラメータを有するグラフの実行によりこのチェックポイント動作を行う。実行システム１０８は、所定の生起を検出するプログラムの論理を作成する検出モジュール１１６も含む。収集モジュール１１４による収集及び収集されたデータの統合に続いて、実行システム１０８は、収集・統合されたデータについて検出モジュール１１６を実行する。１つの例では、収集モジュール１１４は、収集されたデータの１つ又は複数の（例えば、相異なる）ストリーム（例えば、すでに検証され、且つフォーマット化／再フォーマット化されている）を収集されたデータのストリームに対する１つ又は複数の所定の規則のさらなる処理及び／又は実行のために、データが受信されたときに、例えば、リアルタイムで検出モジュール１１６に送る。以下においてさらに詳しく述べるように、検出モジュール１１６は比類なく融通性が高く、複数の動的データレコードタイプ、集約タイプ、状態の定義及び遷移、複合関数、及びタイマーに基づいて単純な検出方式と非常に高度な検出方式（例えば、規則実行に先立って満たされるべき種々の条件を有するキャンペーン及び／又は一連の規則）両方のユーザーによる作成を可能にする。検出モジュール１１６は、「合成」データ（例えば、データレコード）の検出も可能にする。一般的に、合成データは、条件又は生起の欠如、例えば、所定の時間内にユーザーがポータルにアクセスしなかったことを検出することを示すデータを含む。データレコードの検出後に検出モジュール１１６が命令又はメッセージをキューに追加し、その内容が動作モジュール１１８により受信され、且つ処理される。
【００２１】
動作モジュール１１８は、テキストメッセージ又はｅメールの送信、ケースマネジメントシステムにおける作業命令のチケットのオープン、サービスの即時打ち切り、ターゲットとされたシステム又は装置へのウェブサービスの提供、１つ又は複数の通知を含むパケット化データの送信等のような起動された動作を実行する。別の例では、動作モジュール１１８は、命令及び／又はメッセージの内容を作成し、且つこれらの命令（及び／又は内容）を第三者システムに送る。これを受けて第三者システムは、当該命令に基づいて、例えば、テキストメッセージの送信、ウェブサービスの提供等の動作を実行する。１つの例では、動作モジュール１１８は、種々の受領者のためにカスタマイズされた内容を作成するように構成される。この例では、動作モジュール１１８は、どのカスタマイズされた内容をどの受領者に送付又は伝達するか指定する規則又は命令により構成される。
【００２２】
データ統合及びデータレコード検出の従来型モデルでは、１つのシステムがデータ収集を行い、且つデータをバッチ収集し、そしてデータをデータウェアハウスに格納する。次にデータレコード検出を行うために、もう１つの別のシステムがデータウェアハウスのバッチデータの検索及びクエリーを行い、且つウェアハウスデータについてデータレコード検出を行う。この従来のモデルには、例えば、リアルタイムデータ収集をサポートできないことを含む複数の制約がある。また、様々な種類のデータレコード検出（例えば、種々のセグメントの）を行うために、様々な種類の一貫性をもたないアプリケーション及び／又はエンジンが考案されている。これらの従来型モデルとは異なり、本明細書において記述されるＣＤＡ環境は、追加技術を必要とすることなく、例えば、データ統合のための別のシステム及びデータレコード管理のためにさらに別のシステムを必要とすることなく、データの統合及びデータレコード管理のための準備を行う。この機能は、徹底的な統合を単純化し、且つ加速する。また、本明細書において記述されるＣＤＡ環境は、バッチとリアルタイム両方のデータストリームを処理するように構成される（例えば、データが受信されるとき、リアルタイム又は準リアルタイムである）。例えば、ＣＤＡ環境は、準リアルタイムで（例えば、データが実行システム１０８により受信されたときに）データを処理し、検証し、及び／又はフォーマット化する収集モジュール１１４により、例えば、収集データをディスクに格納することなくリアルタイムでデータを取り扱うことができる。収集モジュール１１４は、例えば、データが受信されたときにデータのストリームを検証・処理し、次に検出モジュール１１６によるさらなる処理のために処理済みデータをキューに追加するように構成されるが、これらはすべて、後続の検索のためにデータをデータウェアハウスに格納するステップ（それは待ち時間をもたらす）なしに行われる。また、収集、検出及び動作の作業を行う単一のシステムを設けることにより、実行システム１０８は、データ収集のためにデータを１つのシステムに統合し、次にその収集されたデータを検出及び動作を行う別のシステムに再統合することに関わる複雑さを除去する。所望の最終作業又は動作は一般的に処理されるデータに依存し、且つますます遅延することもあるので（又は現状がすでに再変化しており、当該実行を陳腐化する場合には結局動作が全く行われないこともある）、物流又は電気通信における動作等の最終的作業又は動作は、種々の相異なるフォーマットの大量のデータのこの迅速な処理から非常に大きな利益を受ける。
【００２３】
この例では、コード管理記憶１０２は、実行システム１０８と通信を行うように構成され、且つパラメータ化収集アプリケーション１２０、パラメータ化検出アプリケーション１２２、及びパラメータ化動作アプリケーション１２４を格納する。一般的に、パラメータ化アプリケーションは、１つ又は複数のパラメータについて指定された機能及び作業を行うように事前設定された電子テンプレート又はレコードを含む。これらのパラメータの値は、１つ又は複数の他のアプリケーション及び／又はユーザー入力からパラメータ化アプリケーションに渡される。パラメータの値が指定又は特定された後、パラメータ化アプリケーション（例えば、パラメータ化テンプレート）は、パラメータ化テンプレート仕様（以下、「仕様」）を表す。例えば、パラメータ化アプリケーションは状態の値、動作の値、状態間の遷移の値等を指定するからである。一般的に、仕様は、実行可能な論理を表し、且つ先行データ項目に関する実行可能な論理の実行により到達した状態に基づいて実行可能な論理及び実行可能な論理の種々の状態のパラメータの値を指定する。場合によっては、このシステムは、パラメータ化されない動作アプリケーションを含む。
【００２４】
１つの例では、パラメータ化アプリケーションはパラメータ化論理と呼ばれる。例えば、電子アプリケーション又はレコードが１つ又は複数のパラメータに関して指定された機能及び作業を行う論理式（又は他の論理）により事前設定される場合である。
【００２５】
１つの例では、パラメータ化アプリケーションは、種々のパラメータを有する包括的データフローグラフ（又はその他の包括的データ処理プログラム又はアプリケーション）を含むが、これらのパラメータの値はパラメータ化アプリケーションに対する入力として指定される。この例では、パラメータ化収集アプリケーションは、データの収集及び統合を行うパラメータ化アプリケーションを含む。パラメータ化検出アプリケーションは、データ検出を行うパラメータ化アプリケーションを含む。パラメータ化動作アプリケーションは、動作を行うパラメータ化アプリケーションを含む。
【００２６】
１つの例では、モジュール１１４、１１６、１１８のそれぞれは、それぞれ、パラメータ化アプリケーション１２０、１２２、１２４のインスタンスの実行により実現される。この例では、パラメータ化アプリケーションのインスタンスは、パラメータの値が指定されているパラメータ化アプリケーションの実行を含む。収集モジュール１１４の実行は、データの収集、フォーマット化、検証及び統合の方法を指定する１つ又は複数のパラメータ化収集アプリケーション１２０に基づく。入力データストリームをパラメータ化することにより、各入力データストリームの処理を記述する新しいプログラムを作成する必要がない。むしろ、実行システム１０８は、入力データを処理するプログラム又はアプリケーションを維持する。そのプログラム又はアプリケーションは種々のパラメータを含んでおり、特定の入力データストリームを処理するようにプログラム又はアプリケーションを構成するようにこれらのパラメータの値を設定することができる。一部の例では、このプログラム又はアプリケーションは、例えば、パラメータ化アプリケーションのような包括的データフローグラフである。インターフェースモジュール１２６を使用して、ユーザーは、特定の入力データストリームについて包括的データフローグラフをこの包括的データフローグラフのパラメータの値を指定することによりカスタマイズする。これらの指定された値は、収集モジュール１１４が当該特定データストリームを処理する方法を指定する。各入力データストリームを処理する専用プログラムを作成する従来の技術に依拠しない汎用データフローグラフ（又はアプリケーション）のパラメータ化は再利用を可能とする。これは、実行システム１０８のメモリ要求を低減し、且つただ１つであり、汎用であり（且つエラーを引き起こさない）仕組みが使用され、且つ再利用されるので、データの収集及び統合におけるデータフローエラーも低減する。
【００２７】
この例では、パラメータ化収集アプリケーションは、指定された収集アプリケーションの再利用を促進する。これは、パラメータ化収集アプリケーションのパラメータがパラメータ化収集アプリケーションにおける値の変更を容易にするためであり、例えば、収集アプリケーションの値に関連する変更があった都度コード自体を変更しなければならない（非パラメータ化）収集アプリケーションの代わりに使用することになるためである。この例では、実行システム１０８は、パラメータ化収集アプリケーション１２０を実行可能コードにコンパイルする。収集モジュール１１４は、この実行可能なコードの実行により実現される。
【００２８】
検出モジュール１１６の実行は、指定された生起又はその欠如を検出する１つ又は複数の所定規則を指定する１つ又は複数のパラメータ化検出アプリケーション１２２に基づく。この例では、パラメータ化検出アプリケーション１２２は、１つ又は複数の値（例えば、検出を行うために規則により使用される値）を指定する１つ又は複数のパラメータを含む。この例では、パラメータ化検出アプリケーションは、指定された検出アプリケーションの再利用を促進する。パラメータ化検出アプリケーションのパラメータがパラメータ化検出アプリケーションにおける値の変更を容易にするためであり、例えば、検出アプリケーションの値に関連する変更があった都度コード自体を変更しなければならない（非パラメータ化）検出アプリケーションの代わりに使用することになるためである。また、パラメータ化アプリケーション一般及び特にパラメータ化検出アプリケーション１２２は、種々のセグメント（例えば、ユーザーの）間及び多様なタイプのデータレコードとデータレコード間の融通性の高いオンザフライ検出の実行を可能にする。例えば、パラメータ化検出アプリケーション１２２の１つは、指定されたタイプのデータレコードの生起を検出するように構成することができる（例えば、そのパラメータ化検出アプリケーション中のパラメータの値を設定することにより）。次にそのパラメータ化検出アプリケーションを再利用して別のタイプのデータレコードの生起を検出することができる（例えば、そのパラメータ化検出アプリケーションのパラメータの他の値を指定することにより）。パラメータ化アプリケーションのこの再利用は、検出モジュール１１６の実行におけるエラーを低減する。例えば、エラーなしのアプリケーションを再利用することができるためである。これらのパラメータ化アプリケーションは、データレコード検出における融通性も促進する。特に、従来の検出モジュール（例えば、検出エンジン）の配備は、検出を行う前に種々の命令及び関係（例えば、種々のデータレコードタイプの検出と正常な検出に応ずる種々の動作を指定する規則との間）の広範なモデル化及び構成を必要とする。対照的に、検出モジュール１１６は、かかる作業なしに立ち上げることができ、且つむしろオンザフライ式に、例えば、パラメータ化検出アプリケーション１２２のパラメータの値を指定するユーザーにより（例えば、ユーザーインターフェースモジュール１２６を経由して）構成され得る。この例では、実行システム１０８は、パラメータ化検出アプリケーション１２２を実行可能コードにコンパイルする。検出モジュール１１６は、この実行可能コードの実行により実現される。
【００２９】
動作モジュール１１８の実行は、例えば、検出モジュール１１６から受信した命令又はトリガーに基づいて実行されるべき１つ又は複数の所定の動作又は転送又は実行されるべき命令を指定する１つ又は複数のパラメータ化動作アプリケーション１２４に基づく。この例では、パラメータ化動作アプリケーション１２４は、１つ又は複数の値（例えば、規則が当該動作を実行する際に使用される値）を指定する１つ又は複数のパラメータを含む。この例では、パラメータ化動作アプリケーションは、指定された動作アプリケーションの再利用を促進する。パラメータ化動作アプリケーションのパラメータがパラメータ化動作アプリケーションにおける値の変更を容易にするためであり、例えば、動作アプリケーションの値に関連する変更があった都度コード自体を変更しなければならない（非パラメータ化）動作アプリケーションの代わりに使用することになるためである。また、パラメータ化動作アプリケーション１２４は、種々のセグメント（例えば、ユーザーの）間及び多様なタイプのデータレコードとデータレコード間の動作の融通性の高いオンザフライ実行の実現を可能にする。例えば、パラメータ化動作アプリケーション１２４の１つは、そのパラメータ化動作アプリケーション中のパラメータの値を設定することにより、指定された動作（例えば、ユーザーに警告するテキストメッセージを送信する動作）を行うように構成することができる。次にそのパラメータ化動作アプリケーションを再利用して動作、例えば、特定のメッセージを送信する命令を第三者に送ることができる。パラメータ化動作アプリケーションは、そのパラメータ化動作アプリケーションのパラメータの値を指定するか又は変更することにより再利用される。この例では、実行システム１０８は、パラメータ化動作アプリケーション１２４を実行可能コードにコンパイルする。動作モジュール１１８は、この実行コードの実行により実現される。
【００３０】
収集モジュール１１４、検出モジュール１１６、動作モジュール１１６は、融通性の向上、リアルタイムデータストリームの処理時間の短縮、及びメモリ要求量の低減等従来のシステムに勝る利益を実現することによる既存技術（例えば、収集、検出及び動作を行う別々のシステムを備える）の改善を表す。前述したように、実行システム１０８は、収集モジュール１１４、検出モジュール１１６及び動作モジュール１１８を含む統合システムを含んでいる。単一のシステムに統合されるこれらのモジュールを備えることにより、実行システム１０８は、データをリアルタイム（又は準リアルタイム）で処理することができる。なぜならば、収集モジュール１１４がメモリ中の受信したデータストリームを処理し、次に、例えば、受信したデータをその後の検索のためにデータ記憶に委託するのではなく、検証したデータをさらなる処理のためにキューに追加するからである。また、収集モジュール１１４、検出モジュール１１６及び動作モジュール１１８の１つのシステムへの統合は、メモリ要求量の低減をもたらす。システムにとって、レコードをもたらす各データストリームについて収集、検出及び動作を行う複数の種々のアプリケーションを格納する必要がなくなるためである。むしろ、それぞれのパラメータ化アプリケーションは、例えば、種々のパラメータの種々の値が指定されたときに、再利用することができる。
【００３１】
実行システム１０８は、パラメータ化アプリケーションの構成の変更も行い、且つパラメータ化アプリケーション中の種々のパラメータの値の設定も行う。それは、例えば、パラメータの値を指定するユーザー入力に基づくか、又は、かかる変更又はかかる設定をもたらす実行された動作に基づく。ユーザーインターフェースモジュール１２６は、構成情報をユーザーに表示し、且つユーザーから構成動作、例えば、パラメータの値を指定するデータ及び／又はパラメータ化アプリケーションの構成のための動作を指定するデータを受信する。この例では、パラメータ化収集アプリケーション１２０、パラメータ化検出アプリケーション１２２及びパラメータ化動作アプリケーション１２４のそれぞれは、コード管理記憶１０２に格納される。コード管理記憶１０２は、開発環境１０４からもアクセス可能である。この開発環境において開発者は、コード管理記憶１０２に格納され、ユーザーインターフェースモジュール１２６によりユーザーインターフェースを表示するために使用されるユーザーインターフェースを開発することができる。開発環境１０４は、例えば、パラメータ化収集アプリケーション１２０、パラメータ化検出アプリケーション１２２及びパラメータ化動作アプリケーション１２４を含むパラメータ化アプリケーションを開発者が開発することも可能にする。これらの１つ又は複数のアプリケーションの実行からもたらされる実行された動作は、これらの１つ又は複数のアプリケーションが１つ又は複数の所与のパラメータ値の下で正しく働いたか否か開発者が決定することを可能にする。すなわち、正しく働かない１つ又は複数のアプリケーションにユーザーが出会うことのないように、これらの１つ又は複数のアプリケーションについて、それらがユーザーにより利用可能にされる前に、試験することができる。
【００３２】
図２Ａを参照する。データフローグラフ２０２は、データソース２０６ａ、２０６ｂ、コンポーネント２０８ａ−ｃ、２１０及びデータシンク２１２を含み得る。この例では、データフローグラフ２０２は、パラメータ化アプリケーションの一例である。さらに詳しく述べるように、データフローグラフ２０２は、ユーザー入力により指定される値を有する種々のパラメータを含む。例えば、データフローグラフ２０２がパラメータ化収集アプリケーションである場合、データソース２０６ａ、２０６ｂ、コンポーネント２０８ａ−ｃ、２１０及びデータシンク２１２のそれぞれは、データストリームが受信されたときにデータを準リアルタイムで収集、処理及び（例えば、実行システム１０８に）統合する方法を指定する。データフローグラフ２０２がパラメータ化検出アプリケーションである別の例では、データソース２０６ａ、２０６ｂ、コンポーネント２０８ａ−ｃ、２１０及びデータシンク２１２のそれぞれは、種々のデータレコードの検出において実行される種々の検出作業及び機能を指定する。データフローグラフ２０２がパラメータ化動作アプリケーションであるさらに別の例では、データソース２０６ａ、２０６ｂ、コンポーネント２０８ａ−ｃ、２１０及びデータシンク２１２のそれぞれは、検出モジュールから受信したトリガー及び／又は命令に応じて実行される種々の動作作業及び機能を指定する。
【００３３】
この例では、ソース、コンポーネント、及びシンクのそれぞれは、一連のパラメータ２０４ａ−ｇに関連付けられ得る。ユーザーは、ユーザーインターフェースモジュール１２６（図１）を使用してこれらのパラメータの値を入力するか又はその他により指定することができる。１つのソース、コンポーネント、又はシンクのパラメータを使用して種々のソース、コンポーネント、又はシンクのパラメータを評価することができる。ソース２０６ａ、２０６ｂは、コンポーネント２０８ａ、２０８ｃの入力ポートに接続される。コンポーネント２０８ａの出力ポートは、コンポーネント２０８ｂの入力ポートに接続される。コンポーネント２１０の出力ポートは、データシンク２１２に接続される。ソース、コンポーネント、及びシンク間の接続は、データフローを規定する。
【００３４】
データソース、コンポーネント、又はシンクの一部は、グラフの動作の一部を規定し得る入力パラメータ２０４ａ−ｇをもち得る。例えば、パラメータは、物理的ディスク上のデータソース又はシンクの場所を規定することができる。パラメータは、コンポーネントの動作も規定することができる。例えば、パラメータは、分類コンポーネントが入力をソートする方法を規定することができる。別の例では、パラメータは、データレコードのフォーマット化方法又は検証方法を規定する。一部の構成では、１つのパラメータの値は、別のパラメータの値に依存し得る。例えば、ソース２０６ａは、特定のディレクトリ中のファイルに格納され得る。パラメータ群２０４ａは、“DIRECTORY”と呼ばれるパラメータ及び“FILENAME”と呼ばれる別のパラメータを含み得る。この場合、FILENAMEパラメータは、DIRECTORYパラメータに依存する。（例えば、DIRECTORYは“/usr/local/”、また、FILENAMEは“/usr/local/input.dat”となり得る）。パラメータは、他のコンポーネントのパラメータに依存することも可能である。例えば、シンク２１２の物理的場所は、ソース２０６ａの物理的場所に依存し得る。この例では、シンク２１２は、ソース２０６ａのDIRECTORYパラメータに依存するFILENAMEパラメータを含む一連のパラメータ２０４ｇを含んでいる。（例えば、集合２０４ｇ中のFILENAMEパラメータは“/usr/local/output.dat”とすることができ、この場合、値“/usr/local/”は集合２０４ａ中のDIRECTORYパラメータから得られる。）
【００３５】
クライアントに関するユーザーインターフェース内において、パラメータ群２０４ａ−２０４ｇのパラメータは、技術的事項よりむしろ業務上の事項を反映してユーザーと相互作用するための種々の群に結合・再編成され得る。ユーザー入力に基づくパラメータの値を受信するためのユーザーインターフェースは、パラメータ間の関係に従って種々のパラメータをサーバ上の開発環境の状況により必ずしも制約されない柔軟性の高い方法により表示することができる。
【００３６】
図２Ｂを参照する。ユーザーインターフェースは、アイコンを表示してパラメータ間の依存性を表す関係により表すことができる。この例では、パラメータは、第１ソースデータセットのパラメータを表す第１ソースアイコン２２４により表される第１群のパラメータ、第２ソースデータセットのパラメータを表す第２ソースアイコン２２６、シンクデータセットのパラメータを表すシンクアイコン２３０、及び構成されるデータフローグラフの１つ又は複数のコンポーネントのパラメータを表す変換アイコン２２８に分類され、これらとソースデータセット及びシンクデータセットとの間の関係を示している。パラメータのこのグループ化は、格納されているユーザーインターフェース仕様２２２に基づいて行われ得る。この仕様は、ユーザーがクライアントに関するユーザーインターフェース内においてデータフローグラフからのパラメータと相互作用する方法及びユーザーインターフェースにおける提示のためにアイコン２２４、２２６、２２８、２３０等のユーザーインターフェース要素を相互に関係付け、且つ整備する方法を規定する。実施例によっては、このユーザーインターフェース仕様は、ＸＭＬ文書である。ユーザーインターフェース仕様は、データフローグラフコンポーネントも識別し、また、一定の機能、例えば、以下においてさらに詳しく述べるようにユーザーがグラフの構成中にサンプルデータの閲覧等の機能を果たすことを可能にする特定コンポーネントの識別も行い得る。
【００３７】
場合によっては、ユーザーインターフェース仕様は、パラメータを表示する方法に関する命令を含み得る。図２Ｂ及び２Ｃを参照すると、例えば、ユーザーインターフェース仕様２２２は、ユーザーに表示されるインターフェース２５０を規定することができる。さらに、ユーザーインターフェース仕様２２２は、ソースデータセットアイコン２２４との相互作用に応じて、１つのパラメータがユーザーから書き込み可能なテキストボックス２５２としてユーザーインターフェース２５０に表示される一方、他のパラメータはあらかじめ用意された値を含むドロップダウンリスト２５４としてユーザーインターフェース２５０に表示され、さらに別のパラメータはラジオボタン２５６としてユーザーインターフェースに表示され得ること等を指示することができる。このように、ユーザーインターフェース仕様は、ビジネスユーザー及び／又は非技術系ユーザーに適し得る方法によりデータフローグラフをカスタマイズするためのパラメータをユーザーに提示する方法における融通性を与える。
【００３８】
場合によっては、ユーザーインターフェース仕様は、ビジネスユーザーがパラメータ値を入力する順序を強制することができる。点線により表されているように、シンク２３０に関するパラメータは、ユーザーが所定の条件を満たすまで、ユーザーに表示され得ない。例えば、ユーザーは、データシンクパラメータ群が表示される前に特定のパラメータ値を与えるか又は一連のパラメータに記入しなければならないこともある。
【００３９】
一部の実施形態では、ユーザーインターフェース仕様は、ユーザーインターフェース要素の特性を規定する変数を含むこともできる（データフローグラフのコンポーネントの特性を規定するパラメータに対比して）。例えば、これらの変数を使用してユーザーインターフェース要素がビジネスユーザーにより使用される順序を制御することができる。変数は、少なくとも１つのデータ値を参照する。一部の例では、変数は複数のデータ値を参照し、そして、各データ値は当該変数の特性として規定される。したがって、単一の変数が複数の特性をもち、それらのそれぞれがデータ値と関連付けられ得る。
【００４０】
ユーザーインターフェース仕様により規定されるユーザーインターフェース２５０は、ユーザーインターフェース要素（例えば、テキストボックス２５２、ドロップダウンリスト２５４、ラジオボタン２５６）がデータフローグラフをカスタマイズするために使用されるパラメータに直接対応しない方法により提示され得る。その代わりに、ユーザーインターフェース要素の一部は、ユーザー、例えば、パラメータに関する知識をもたない可能性もあるビジネスユーザー及び／又は非技術的ユーザーにとって適切な構成オプションに対応し得る。
【００４１】
これらの例では、ユーザーインターフェース２５０をデータフローグラフの特定の要素２２４に関連付ける必要はない。さらに、ユーザーインターフェース２５０は、複数のデータフローグラフ並びにその他のデータ処理構造及びデータ格納構造と関連付けられ得る。
【００４２】
例えば、ユーザーインターフェース要素は、技術的意味よりむしろビジネス的意味を有する構成オプションのユーザーによる変更を可能にし得る。この構成オプションは、商業取引において使用される通貨の種類間の変換に関するオプション又は製品在庫の特定のカテゴリに関する情報を更新するオプション、又は単一のパラメータの構成に相関しない別の種類のオプションであり得る。ユーザーインターフェース仕様２２２は、ビジネスユーザー／非技術的ユーザーがこれらのユーザーの理解できる用語を使用して構成オプションを変更でき、且つパラメータの変更がユーザーインターフェース仕様２２２において規定される関連性及び依存関係を用いて行われるようにする方法により規定され得る。
【００４３】
ユーザーインターフェース仕様２２２は、構成オプションがデータフローグラフ及びユーザーインターフェース２５０を経て構成できる他のデータ要素のパラメータの構成に対応する方法を規定することができる。例えば、ユーザーとユーザーインターフェース要素間の相互作用は、複数のデータフローグラフコンポーネント中のパラメータの変更及びデータベース、データファイル、メタデータレポジトリ、又はその他の種類のデータ記憶中に格納されているデータの変更を引き起こすことができる。ユーザーインターフェース仕様２２２は、ユーザーインターフェース要素とユーザーインターフェース２５０の作動中にユーザーインターフェース要素の変更に関連して変化するデータとの間の関係を規定することができる。
【００４４】
ユーザーインターフェース仕様２２２は、データベース、データファイル、メタデータレポジトリ、又は別の種類のデータ記憶、又はウェブサービスのような別の種類のデータソースから受信するデータに基づいてユーザーインターフェース要素を規定することもできる。ユーザーインターフェース２５０を表示する場合、受信したデータを使用してユーザーインターフェース要素を表示する方法を決定する。ある実施形態では、ユーザーインターフェース２５０の作動中、データは、データベース、データファイル、メタデータレポジトリ、又は別の種類のデータ記憶、又はウェブサービスのような別の種類のデータソース等の外部ソースから受信され、且つ外部ソースから受信されたデータは、パラメータに関連付けられるべきものとしてユーザーインターフェース２２２において規定される（例えば、外部ソースから受信したデータを含むようにこのパラメータを更新する）。
【００４５】
ユーザーインターフェースは、データフローグラフの１つの辺により表されるデータの少なくとも１つのフローに関連付けられるコンポーネント出力データも表示することができる。図２Ｃを参照する。例えば、データは、１つのコンポーネント２２４から別のコンポーネント２２８に流れる。コンポーネント間のデータの流れは、ユーザーインターフェース２５０上で見ることができる。ある例では、サンプルデータ（例えば、処理又は変換の目的ではなく、試験のために検索されたデータ）を１つのコンポーネント２２４に与えてコンポーネント２２４がデータを取り扱う方法を決定する。
【００４６】
図２Ｃの１つの変換では、ユーザーインターフェース２５０（又は複数のユーザーインターフェース）は、パラメータ化収集アプリケーション１２０（図１）、パラメータ化検出アプリケーション１２２（図１）及びパラメータ化動作アプリケーション１２４（図１）のそれぞれにおけるパラメータの値を指定するユーザーインターフェース要素を表示する。この例では、ユーザーインターフェース２５０は、どのユーザーインターフェース要素がどのパラメータ化アプリケーションに対応するか指定することとは無関係にユーザーインターフェース要素を表示する。むしろ、これらのユーザーインターフェース要素は、例えば、特定のデータストリームについてデータの収集及び統合を行う方法、検出を行う方法、及び動作を行う方法をユーザーが指定することを可能にするために提示される。
【００４７】
図３Ａを参照する。環境３００は、データレコードを収集し、データレコードにおける１つ又は複数の所定の条件（規則において指定される）の満足度を検出し、且つ検出されたデータレコードについて適切な動作を実行する収集・検出動作（ＣＤＡ）システム３２０を含んでいる。この例では、図１の実行システム１０８がＣＤＡシステム３２０として示され、且つＣＤＡシステムのデータの流れが示されている。ＣＤＡシステム３２０は、種々のデータソース、例えば、ネットワークにおいて相互接続されている種々のサーバからデータを間欠的に（例えば、周期的又は連続的に）受信する。データは間欠的に受信されるので、システムはデータを単一のデータストリームに収集し（例えば、受信したデータをまとめてキューに追加することより）、且つデータを準リアルタイム（例えば、１ミリセカンド後、２ミリセカンド後等）で単一の長大レコードに結合する（例えば、まとめてキューに追加されたデータを含む長大レコードを生成することにより）。データは、データウェアハウスから取り出される（バッチ方式により）のではなく、データソースから準リアルタイムで収集される。この収集されたデータは、例えば、イベント又は動作（例えば、電話呼の生起又は電話呼の長さ）の生起を示すデータ又はイベント又は動作の生起を示すデータを含むレコードを含むデータレコードを含む。これらの種々のデータソースからのデータを結合することにより、長大レコードは、様々な種類のデータレコード（例えば、ショートメッセージサービス（ＳＭＳ）データレコード、音声データレコード等）を含む。ＣＤＡシステム３２０は、この長大レコードをデータレコード集約、イベントの無生起を示すデータ、顧客データ（例えば、顧客プロフィール）等の状態データ及び種々の様相、アカウントデータ等により補強する。環境３００は、様々なタイプのデータレコードの長大レコード（例えば、種々のサブレコードを含み及び／又はそれらを指すレコード）を、データレコードを受信したときに準リアルタイムで生成する。
【００４８】
一般的に、データストリームから収集されたデータは、ユーザーの名称及びプロフィール情報等のＣＤＡシステムによる処理のために必要とされるすべての情報を含んでいるわけではない。このような場合、データ（すなわち、データストリームから収集されたデータ）は、プロフィールデータをリアルタイムデータストリーム中の受領データに結合することにより、及び準リアルタイム集約を計算することにより補強される。プロフィールデータをリアルタイムデータストリームからのデータに結合することにより及び準リアルタイム集約を計算することにより、この探索・検索システムは、その探索・検索システムの処理要求条件に適合された重要なデータレコード（例えば、キーに関連付けられた準リアルタイム受信データ、当該キーのプロフィールデータ及び当該キーの準リアルタイム集約を含むデータレコード）を作成する。一般的に、この処理要求条件は、当該システムにより行われるべき種々の作業（及び／又は執行されるベき規則）及びこれらの作業の遂行のために必要な種々のデータを含む。また、データレコード中のデータレコードのそれぞれに対応するデータがあらかじめ書き込まれている「すべてのデータレコード」又はフィールド（及び／又はフィールドの所定の集合）を含むデータレコードのこの事前計算又は作成は、例えば、リアルタイムデータストリームの処理時のネットワークボトルネックにおける混雑状態の回避及び低減に役立つ。これは、処理のために必要なすべてのデータが単一のレコード（例えば、レコード群のレコード）中に含まれており、例えば、このようにしてデータレコードの処理又はレコードの収集の各段階又はステップにおけるデータ検索、計算及びデータベースクエリーを除去又は低減するためである。また、大量の補強データ（例えば、プロフィールデータ）をＣＤＡシステムのメモリ又はキャッシュインデックスに保存することにより、システムはあらかじめ計算されたレコード（レコード群の）を生成するので、システムはそれらのデータに対しより迅速にアクセスすることができる。
【００４９】
例えば、本明細書において記述されるシステムは、例えば、他の時点の負荷に比してシステムの負荷が低下しているときに補強・強化データをメモリ（又はインデックス付きキャッシュ）にロードするように構成される。このシステムは、システムの負荷が低下しているときに補強データをあらかじめロードする高い融通性を有しているので、このシステムは、例えば、データレコードの処理が行われているときに（それは負荷増大の期間にあたる）リアルタイムでそれを行わなければならないのではなく、負荷が低下しているときに補強データをメモリにロードすることにより負荷分散を可能にする。
【００５０】
１つの例では、ＣＤＡシステム３２０は、１日あたり５，０００万のユーザーの２０億超のデータレコードを処理し、且つデータレコードタイプのそれぞれの集約を計算する。この例では、ＣＤＡシステム３２０は、データソース３６０からリアルタイムデータストリーム３４０（例えば、それぞれ固有のフォーマットを有する複数の別々のデータストリーム）を受信する。本明細書において使用する場合、リアルタイムは、準リアルタイム及び実質的にリアルタイムを含むが、これらに限定されない。これらのそれぞれの場合、データが受信又はアクセスされたときとそのデータの処理が実際に行われたときとの間に時間差は存在し得るが、データはデータが受信されたときにも依然としてリアルタイムで処理されるためである。リアルタイムデータストリーム３４０から、ＣＤＡシステム３２０は、データ項目とも呼ばれるデータレコードを含むデータを間欠的に受信する。受信されたデータは、様々なタイプ（例えば、様々なフォーマット）のデータレコードも含んでいる。１つの例では、第１のリアルタイムデータストリームの１つは第１のタイプ／フォーマットのデータレコードを表すデータを含んでおり、また、第２のリアルタイムデータストリームの１つは第２のタイプ／フォーマットのデータレコードを表すデータを含んでいる。ＣＤＡシステム３２０は、リアルタイムデータストリーム３４０において受信された様々なタイプのデータレコードを収集する収集モジュール４２０を含んでいる。収集モジュール４２０は、ＥＤＷから抽出されたデータではなく、リアルタイムデータレコードについて動作するので、ＣＤＡシステム３２０は、データレコードに対する即時応答（データレコードが受信されたときに）及びデータレコードの準リアルタイム集約に対する即時応答を与えることができ、これはアプリケーション結果の即時可視性も与える。収集モジュール４２０は、データレコードを単一のデータストリームに収集し、且つこれらのデータレコードをまとめてキューに追加する。１つの例では、収集モジュール４２０は、受信されたデータレコードを連続的に処理するために連続フローを使用することによりデータレコードを収集する。
【００５１】
リアルタイムデータストリーム３４０からのデータレコードが収集モジュール４２０により間欠的に受信され続けているときに、収集モジュール４２０は、データレコードパレットに含まれているか又は特定のユーザー属性（例えば、ユーザー識別子（ＩＤ）、ユーザーキー等）に関連付けられる等の共通の属性を共有する２つ以上の特定データレコードを検出する（例えば、キューにおいて）。１つの例では、この共通属性は、前記２つ以上の特定のデータレコードの特定のフィールド（例えば、ユーザーＩＤフィールド）の換算値であり、前記２つ以上の特定データレコードは、指定データレコードタイプに属し、及び／又は前記２つ以上の特定データレコードは前記データレコードパレットにより規定される。
【００５２】
収集モジュール４２０は、検出された２つ以上の特定のデータレコードを含むデータレコードの集まりを作成する。この例では、収集モジュール４２０は、この検出されたデータレコードの集まりを含むデータレコード４６０を作成する。また、収集モジュール４２０は、データレコード４６０、例えば、長大レコードに補強４４０を挿入する。一般的に、補強は、データレコードに関連するデータウェアハウスに格納されているデータ（事前に受信されているか又は計算されている）である。例えば、データレコードは、ユーザーが送ったＳＭＳメッセージの通数を指定し得、且つ当該ユーザーのユーザーＩＤも含み得る。この例では、データウェアハウス３８０は、データレコード４６１を受信し、且つ同一ユーザーＩＤを含むか（又はそれに関連付けられる）データを格納する。この格納されたデータは、例えば、ユーザーの最新ハンドセットタイプを含むユーザープロフィールデータを含む。収集モジュール４２０は、データレコード４６０に含まれている特定のデータレコードに関連付けられる顧客の顧客プロフィールデータをデータレコード４６０に添付又は挿入する。
【００５３】
収集モジュール４２０は、例えば、受信したデータの一部のみ補強され、且つデータレコード４６０に追加されるようにするために、受信したデータをフィルタリングする。収集モジュール４２０は、キー（レコードに関連付けられる）に基づいて、及び／又はレコードの指定フィールドの指定された値に基づいてフィルタリングするように構成され得る。また、収集モジュール４２０は、例えば、複雑なデータレコード処理（例えば、特定のキーに関連付けられ且つ時間的にずれているレコードの処理）を可能にするために、同一又は同様なキーに関連付けられるレコードがグループ化されるように受信したデータ及び／又はデータレコードを相互に関連付ける。別の例では、収集モジュール４２０は、一定のフィールド、一定のフィールドの一定の値等を有するレコードに基づいてデータレコードを相互に関連付ける。この例では、相互に関連付けられたレコードのフィールドの値は、長大レコードに挿入又は追加される。
【００５４】
また、収集モジュール４２０は、データレコード４６０に含まれている１つ又は複数のデータレコードの１つ又は複数の集約（すなわち、データレコード集約）を計算する。特定のユーザー（データレコードに含まれているユーザーＩＤにより指定される）の特定のデータレコードについて、収集モジュール４２０は、データウェアハウス３８０から、当該特定ユーザーの特定のデータレコードのバッチデータ４００を取り出す。バッチデータ４００は当該特定データレコードに関する履歴集約を含んでおり、この履歴集約は、以前の期間、例えば、開始時からデータレコード検出実行以前の特定の時までの期間からのデータレコードデータの事前に計算された集約である。一般的に、データレコードデータは、データレコードの特定の性質、属性又は特性（例えば、データ利用データレコードのデータ利用の量）を示すデータを含んでいる。例えば、データレコードの性質は、特定のフィールド（当該データレコードに含まれている）、当該データレコードに含まれているフィールドの特定の値、データレコードに含まれているか又は関連付けられている特定のユーザーＩＤキー、当該データレコードの特定のフィールドの欠如又はその特定フィールドの値等を含む。当該特定ユーザーの当該特定データレコードのリアルタイムデータストリーム３４０に含まれているデータに基づき、且つ当該履歴集約に基づいて、収集モジュール４２０は、結合されたデータレコードデータ、例えば、当該データレコードの準リアルタイム集約を計算する。収集モジュール４２０は、前記少なくとも１つの特定データレコードの結合されたデータレコードデータによりデータレコード４６０を補強する。
【００５５】
１つの例では、データレコード４６０中の１つのデータレコードは、ユーザーＩＤ  ５４５４ｈｄｒｍを有する「某」のデータ利用である。この例では、収集モジュール４２０は、データウェアハウス３８０から、ユーザーＩＤ  ５４５４ｈｄｒｍに関連付けられている「データ利用」のデータレコードのバッチデータ４００を取り出す。この特定ユーザーのこのデータレコードの準リアルタイム集約を計算するために、収集モジュール４２０は、バッチデータ４００を逐次増加データ４１０と集約してこのデータレコードの準リアルタイム集約４３０を計算する。
【００５６】
この例では、逐次増加データ４１０は、当該特定ユーザーについて集約されるデータレコードタイプに関するリアルタイムデータストリーム３４０から受信したデータの一部を含んでいる。逐次増加データ４１０は、履歴集約が最後に計算されたときからほぼ現在時刻、例えば、準リアルタイムデータストリームが受信された時刻までに生ずる。例えば、バッチデータ４００は、ユーザー「某」が先月中に６５メガバイトのデータを使用したことを示し、また、逐次増加データ４１０は、ユーザー「某」が最後の５分間に１メガバイトのデータを使用したことを示す。バッチデータ４００を逐次増加データ４１０と集約することにより、収集モジュール４２０は、顧客「某」のこの特定データ利用データレコードの準リアルタイム集約４３０を計算する。収集モジュール４２０は、例えば、この特定ユーザーのこの特定データレコードのレコードの一部として、準リアルタイム集約４３０をデータレコード４６０に挿入する。また、収集モジュール４２０は、例えば、バッチファイル４００により指定された当該特定データレコードの履歴集約とともに付加参照ファイル（ＡＬＦ）をデータレコード４６０に添付する。収集モジュール４２０は、例えば、新しいデータレコードが受信されたときに新しい準リアルタイム集約の計算における履歴集約の利用を推進するために履歴集約とともにＡＬＦを添付する。
【００５７】
この例では、収集モジュール４２０は、データレコード４６０を検出モジュール４８０に転送する。検出モジュール４８０は、例えば、いろいろな種類の実体の多種多様なアプリケーションを実施するための規則を含む、規則５００を含んでいる。検出モジュール４８０は、種々のアプリケーション及びアプリケーションを実施し、且つ集約を実行するための単一のモジュールを含んでいる。
【００５８】
検出モジュール４８０は、データレコード４６０に含まれている１つ又は複数のデータレコードの１つ又は複数の集約（すなわち、データレコード集約）を計算する。特定のユーザー（当該データレコード中に含まれているユーザーＩＤにより指定されている）の特定のデータレコードについて、検出モジュール４８０は、データウェアハウス３８０から、当該特定ユーザーの当該特定データレコードのバッチデータ４００を取り出す。バッチデータ４００は、当該特定データレコードに関する履歴集約を含んでおり、この履歴集約は、以前の期間、例えば、開始時からデータレコード検出実行以前の特定の時までの期間からのデータレコードデータの事前に計算された集約である。一般的に、データレコードデータは、データレコードの特定の性質、属性又は特性（例えば、データ利用データレコードのデータ利用の量）を示すデータを含んでいる。例えば、データレコードの性質は、特定のフィールド（当該データレコードに含まれている）、当該データレコードに含まれているフィールドの特定の値、データレコードに含まれているか又は関連付けられている特定のユーザーＩＤキー、及び当該データレコードの特定のフィールド又はその特定フィールドの値の欠如等を含む。当該特定ユーザーの当該特定データレコードのリアルタイムデータストリーム３４０に含まれているデータに基づき、且つ当該履歴集約に基づいて、検出モジュール４８０は、結合されたデータレコードデータ、例えば、当該データレコードの準リアルタイム集約を計算する。検出モジュール４８０は、前記少なくとも１つの特定データレコードの結合されたデータレコードデータによりデータレコード４６０を補強する。
【００５９】
１つの例では、データレコード４６０中の１つのデータレコードは、ユーザーＩＤ  ５４５４ｈｄｒｍに関連付けられている「某」のデータ利用である。この例では、検出モジュール４８０は、データウェアハウス３８０から、ユーザーＩＤ  ５４５４ｈｄｒｍに関連付けられている「データ利用」のデータレコードのバッチデータ４００を取り出す。この特定ユーザーのこのデータレコードの準リアルタイム集約を計算するために、検出モジュール４８０は、バッチデータ４００を逐次増加データ４１０と集約してこのデータレコードの準リアルタイム集約４３０を計算する。
【００６０】
この例では、逐次増加データ４１０は、当該特定ユーザーについて集約されるデータレコードタイプに関するリアルタイムデータストリーム３４０から受信したデータの一部を含んでいる。逐次増加データ４１０は、履歴集約が最後に計算されたときからほぼ現在時刻、例えば、準リアルタイムデータストリームが受信された時刻までに生ずる。例えば、バッチデータ４００は、ユーザー「某」が先月中に６５メガバイトのデータを使用したことを示し、また、逐次増加データ４１０は、ユーザー「某」が最後の５分間に１メガバイトのデータを使用したことを示す。バッチデータ４００を逐次増加データ４１０と集約することにより、検出モジュール４８０は、顧客「某」のこの特定データ利用データレコードの準リアルタイム集約４３０を計算する。検出モジュール４８０は、例えば、この特定ユーザーのこの特定データレコードのレコードの一部として、準リアルタイム集約４３０をデータレコード４６０に挿入する。また、検出モジュール４８０は、例えば、バッチファイル４００により指定された当該特定データレコードの履歴集約とともに付加参照ファイル（ＡＬＦ）をデータレコード４６０に添付する。検出モジュール４８０は、例えば、新しいデータレコードが受信されたときに新しい準リアルタイム集約の計算における履歴集約の利用を推進するために履歴集約とともにＡＬＦを添付する。
【００６１】
この例では、ＣＤＡシステム３２０は、ユーザーのクライアント装置から、アプリケーションを規定する１つ又は複数の規則を表すデータを取り出す。例えば、ユーザーは、規則を規定するためにデータレコードパレットを使用することができる。ＣＤＡシステム３２０は、受信したデータに基づいて、アプリケーションを規定する前記１つ又は複数の規則を生成する。ＣＤＡシステム３２０は、これらの１つ又は複数の規則を前記１つ又は複数の規則を実現するように構成されているプロセス、例えば、検出モジュール４８０に渡す。検出モジュール４８０は、データレコード４６０に対する規則５００の実行に基づいてアプリケーションを実現する。検出モジュール４８０は、例えば、アプリケーションにおいてユーザーが遷移したか又は進行した状態を示すデータを含む状態遷移５３０も含んでいる。状態遷移５３０に基づいて、検出モジュール４８０は、アプリケーションにおいて実行される動作及び／又はアプリケーションにおいて実行される選択肢を識別する。例えば、当該ユーザーの状態遷移５３０により指定されるアプリケーションにおける特定のユーザーの状態に基づいて、検出モジュール４８０は、当該ユーザーのアプリケーション状態に従って、アプリケーションのどのコンポーネントがすでに実行されたか、及びそのアプリケーションのどのコンポーネントが次に実行されるべきか識別する。
【００６２】
データレコード４６０は、ＳＭＳデータレコード、音声データレコード等のような種々のタイプのデータレコードを含んでいる。したがって、規則５００は、多様な種々のタイプのデータレコードの条件に関する規則を含んでいる。一般的に規則は、満たされることにより動作の実行を引き起こす条件を含んでいる。この例では、１つの規則（「規則１」）は、ユーザーが最新６ヶ月以内に３０通のＳＭＳメッセージを送信したことという条件をもち得る。この条件が満たされたとき、「規則１」は、５ドルのクレジットを当該ユーザーに与える動作を指定する。別の規則（「規則２」）は、ユーザーが最新１ヶ月間に５０メガバイト未満のデータを使用したという条件をもち得る。この条件が満たされたとき、「規則２」は、例えば、データ利用増加を促すために当該ユーザーに利用割引を提供する動作を指定する。この例では、「規則１」と「規則２」の両方とも異なるタイプのデータレコード（すなわち、それぞれ、ＳＭＳデータと音声データレコード）を使用している。データレコード４６０は種々のデータレコードタイプを含む単一の長大レコードであるから、検出モジュール４８０は、種々のタイプのデータレコードに依存する規則を含むプログラムを実行することができる。また、検出モジュール４８０は、複数の種々のアプリケーションためのアプリケーションを実行する単一のモジュールである。なぜならば、検出モジュール４８０は、すべての相異なる作動レベルのすべてのデータレコードタイプを含むデータレコード４６０を受信するからである。すなわち、検出モジュール４８０は、種々のアプリケーションを種々のデータレコード（これらのデータレコードは、それぞれ、それぞれのアプリケーションに適するデータのタイプを含んでいる）に対して実行する種々のモジュールを準備するのではなく、複数の相異なるアプリケーションを単一の長大レコード、すなわちデータレコード４６０に対して実行するように構成されている。
【００６３】
規則５００中の条件の少なくとも１つを満たすデータレコード４６０中のデータレコード（又はデータレコードの集約）の検出後、検出モジュール４８０は、１つ又は複数の動作（例えば、それらは、満たされる条件を有する規則に指定される）の開始のために動作トリガー５１０をキュー５２０に追加する。１つの例では、動作トリガーは、実行する動作、動作実行の目的たるアプリケーション及びユーザー（例えば、当該動作実行の目的たるユーザー）を指定するデータを含む。検出モジュール４８０は、動作トリガー５１０において指定される動作の実行のためにキュー５２０を動作モジュール５４０に転送する。この例では、動作モジュール５４０は、ユーザーアカウントに対するクレジットの発行、メッセージの送信、割引メッセージの送信等のような種々の動作を実行するように構成される。
【００６４】
図３Ｂを参照する。略図５４１は、実行可能論理（例えば、キャンペーンの）のライフサイクルを示している。この例では、実行可能論理は検出エンジンの一部である。この例では、システムは、起動イベントが生起するまでキャンペーンを開始しない。一般的に、起動イベントは、１つ又は複数の指定された条件又は属性を満たすイベントを含む。起動イベントは、入力イベントストリーム及び加入者プロフィールに基づく。システムは、以下において説明するように、起動イベントが生起するまで対照群の計算を先延ばしする。また、システムは、例えば、受け入れイベントが生起した場合に早期に終了するようにキャンペーンを構成できる。システムは、受け入れ又は満了の後に別のキャンペーンを起動できるように、システムはキャンペーンを連鎖することができる。
【００６５】
この例では、開始ノード５４２は、キャンペーンの開始を表す。この例では、開始ノード５４２は、キャンペーンの開始期日及び終了期日を指定する実行可能な論理を表す。実行可能な論理は、当該キャンペーンについて実行されるべき規則（規則の集まりの一部であり、本明細書においては「決定規則」と称する）も指定する。この例では、ノード５４３は、起動イベント、例えば、キャンペーンを開始するべきことを示すイベントを検出するための決定規則（例えば、実行可能論理）を表す。この例では、決定規則は、例えば、どのイベントがキャンペーンを開始するか指定することによりキャンペーンを起動するために使用される論理を含む。決定規則は、申し入れ内容、キャンペーン期間及びメッセージ優先度を指定する論理も含んでいる。決定規則は、申し入れが受け入れられたときを検出する論理も含んでいる。
【００６６】
キャンペーンの開始時、システムは、受信したすべてのイベントについて決定規則を実行する。システムは、そのイベントに基づいてキャンペーンを起動するか否か決定する。（決定規則のイベントに対する実行の）起こり得る結果は、イベントの無視、キャンペーンの終了、翌日までイベントを無視すること、又はキャンペーンの起動である。以下においてさらに詳しく説明するように、決定規則は、メッセージを送信できない場合に、行うべきことも指定する。例えば、この規則は、キャンペーンを取り消すこと、キャンペーンを起動すること、又はその後、例えば、翌日にトリガーの検索を再開することを指定する。
【００６７】
キャンペーンが起動された後、システムは、イベント（例えば、データレコード）が申し入れを受信するか又は申し入れを受信しない対照群に割り当てられるか決定するために、ノード５４４により表される対照群論理を実行する。対照群割当はジャストインタイムである。例えば、なぜならば、それはキャンペーンが起動された後に初めて行われるからである。また、システムは、以下においてさらに詳しく説明するマッチパネルキューブを使用して対照群を計算する。
【００６８】
目標群（例えば、申し入れを受信する群）又は対照群への割当に続いて、システムは、ノード５４５により表されるメッセージ調停を実行する。この例では、メッセージ調停は、システムが相対的メッセージ優先度の検索を行うときに依存するプロセスを指す。この例では、システムは、加入者プロフィール中の新しいメッセージ限度を順守するように構成される。例えば、加入者プロフィールは、加入者が受信することができる１日あたりの「一般」メッセージの所定（例えば、最大）量を指定することができる。加入者プロフィールは、加入者が特定の日に受信し得る「緊急」メッセージの所定（例えば、最大）量を指定することもできる。この例では、各メッセージは緊急度及び優先度を有する。様々な種類の緊急度は、通常、緊急又は無制限を含む。この例では、同時に送るべきメッセージが多すぎる場合、緊急メッセージを通常メッセージに優先して送信するようにシステムはメッセージに優先付けを行う。この例では、決定規則は、メッセージ送信時刻を指定する。この時刻が未来である場合、システムは、より高い優先度のメッセージが代わりに送信される機会を与えるために当該メッセージの送信を後回しにする。
【００６９】
１つの例では、キャンペーンが最初に起動されたとき、システムはメッセージ調停を行う。最初のメッセージが送信され得ないとき（例えば、メッセージの最大量に関する制限が超過されているために）、当該イベントの起動は取り消され得る。この例では、後続メッセージにとって、メッセージ調停が失敗した場合にキャンペーンを取り消す選択肢はない。この例では、当該加入者にはただメッセージが見えないだけである。
【００７０】
調停プロセスの一部は、メッセージ（例えば、申し入れ）優先度検索である。この例では、メッセージの優先度及び緊急度は検索（参照）ファイルにおいて指定される。検索フィールドのキーは、テーマフィールド、タイプフィールド及び優先キーフィールドを含む。すなわち、それぞれの申し入れ又はメッセージは、指定された優先度及び緊急度により事前に設定される。この例では、メッセージ調停の結果に基づいて、ノード５４６により表されているようにメッセージが送信され得る。
【００７１】
メッセージの送信に続いて、ノード５４７により表されているように、さらなる待ち動作を行うようにシステムは構成されている（例えば、翌日まで待つか又は取り込み（すなわち、申し入れ達成）により）。システムは、追加決定規則を実行することにより、このさらなる待ち動作を行う。この例では、決定規則はすべてのイベントについて実行される。この規則は、当該イベントに基づいて（例えば、目標イベントの生起の検出に基づいて）当該キャンペーンを終了するか否か識別するように構成される。この例では、目標イベントは、通常、達成が生起したことの通知である。しかし、どのようなイベントも状態もキャンペーン段階終了を引き起こすために使用され得る。この例では、採択可能な選択肢は、イベントの無視、キャンペーンの終了、及び新しい段階の開始である。通常、キャンペーンの段階は、キャンペーンにより提供される明確な申し入れを指す。この例では、キャンペーン段階を終了するとき、決定規則は新しい段階を開始できる。この決定規則は、キャンペーン段階が指定日数（例えば、Ｎ日）にわたり実行された後にも、例えば、達成イベントが検出されなかった場合に、実行される。キャンペーン段階が終了したとき、決定規則は新しい段階を開始する。この例では、採択可能な選択肢は、キャンペーンの終了又は新しい段階の開始である。
【００７２】
次の待ち合わせイベントの実行に続いて、システムは、ノード５４８により表されているように、カレンダ規則を実行する１つ又は複数の動作も行う。例えば、カレンダ規則は、初期メッセージの後に、毎日リマインダメッセージを送るようにキャンペーンが構成されることを指定する。この規則は、このメッセージを何日か抑止するためにも使用され得る。カレンダ規則に基づいて、このシステムは、リマインダメッセージを再送信するか否か決定する。このシステムが前記メッセージを再送信することに決定した場合、このシステムは、ノート５４９により表されているようにメッセージ調停を再び実行する。メッセージ調停の結果に基づいて、システムは、ノード５５０により表されているように、再びメッセージを送ってもよい。通常、この図においてノードにより表されている実行可能な論理は、ビジネスルールエディタ（例えば、参照により全内容が本明細書に含まれている米国特許第８，０６９，１２９号において記述されている）又はフローチャートユーザーインターフェースエディタ（例えば、参照により全内容が本明細書に含まれている米国特許出願第１５／３７６，１２９号において記述されている）により構成され得る。
【００７３】
図３Ｃを参照する。ネットワーク化環境５６０は、データソース５６２、５７０及びＣＤＡシステム５７７を含んでいる。この例では、ＣＤＡシステム５７７は、パラメータ化収集アプリケーション５７３、パラメータ化検出アプリケーション５８０及びパラメータ化動作アプリケーション５９０を含んでいる。この例では、パラメータ化収集アプリケーション５７３の１つは、例えば、それぞれ１つ又は複数のデータ処理作業を表すノードを含むデータフローグラフ５７３ａを含んでいる。パラメータ化検出アプリケーション５８０の１つは、ノード５８２、５８３、５８４、５８５を含むデータフローグラフ５８０ａを含んでいる。一部の例では、例えば、データフローグラフ５８０ａが種々の状態において実行される種々の実行可能論理を指定するように、データフローグラフ５８０ａは状態図を含んでいる。この例では、この状態図は、例えば、この状態図における種々のパラメータの値の入力を可能にするために、パラメータ化され得る。また、例えば、種々のデータフローグラフ間でキーの状態を維持するために、単一のキーを複数の状態図（ここに示されていない）に関連付けることができる。各ノードは、特定の状態（この実行可能な論理の）において実行される実行可能な論理の１つ又は複数の部分を表す。したがって、ノード５８２、５８３、５８４、５８５は、以下において、それぞれ、状態５８２、５８３、５８４、５８５と称する。この例では、パラメータ化動作アプリケーション５９０の１つは、データフローグラフ５９０ａを含む。
【００７４】
この例では、パラメータ化収集アプリケーション５７３は、パラメータ化収集アプリケーション５７３（又はパラメータ化収集アプリケーション５７３の１つ）の１つ又は複数の特性を規定する１つ又は複数のパラメータ（例えば、パラメータＡ及びＣ）及びこれらの１つ又は複数のパラメータの１つ又は複数のそれぞれの値（例えば、値Ｂ及びＤ）を指定する仕様５７４を含む。例えばパラメータＡはデータフォーマットを指定するパラメータとし、また、パラメータＣはデータ項目の収集元のデータソースを指定するパラメータとすることができる。この例では、値Ｂ（パラメータＡの）は、収集されたデータ項目の変換に適用されるデータフォーマットを指定する。値Ｄ（パラメータＣの）は、データ項目（例えば、その後に変換される）の収集元のデータソースを指定する。１つの例では、変換は相関付けを含む。この例では、データレコードは、同一キーに関連付けられているデータレコードを相互に関連付け、次に相関付けられたレコを示すデータレコード（例えば、マスターレコード）をキューに追加することにより変換される。この例では、パラメータ化収集アプリケーション５７３は、補強、フィルタリング及びフォーマット化も行うように構成される。この例では、パラメータ化収集アプリケーション５７３は、例えば、プロフィールデータによりデータレコードを補強する（それはパラメータ化検出アプリケーション５８０により行われる）のではなく、イベント（例えば、データレコード）自体を補強する。例えば、ＳＭＳメッセージのイベントは、ＳＭＳメッセージを中継するセル式無線電話タワーの所在を指定するデータを含めることにより補強される。この例では、パラメータ化収集アプリケーション５７３は、このデータによりイベントを補強する。例えば、このデータを内部又は外部の１つ又は複数のデータソースから取り出すことにより。
【００７５】
パラメータ化検出アプリケーション５８０は、当該パラメータ化検出アプリケーション５８０（又はパラメータ化検出アプリケーション５８０の１つ）の１つ又は複数の特性を規定する１つ又は複数のパラメータ（例えば、パラメータＥ及びＧ）及びこれらの１つ又は複数のパラメータの１つ又は複数のそれぞれの値（例えば、値Ｆ及びＨ）を指定する仕様５８６を含んでいる。例えば、パラメータＥ、Ｇは、パラメータ化検出アプリケーション５８０により実行される規則（例えば、指定されたイベントを検出する規則）に含まれるパラメータとすることができ、また、値Ｆ、Ｈは、これらのパラメータの値（例えば、検出されるイベントの種々のタイプを指定する値）である。仕様５８６は、規則５８７及びこの規則のそれぞれの条件も含む。仕様５８６は、例えば、データフローグラフ５８０ａを含むパラメータ化検出アプリケーションの種々の状態を指定する状態データ５９２も含む。この例では、状態データ５９２は、パラメータ化検出アプリケーション５８０ａが４つの状態、すなわち、それぞれ状態５８２〜５８５に対応する状態１〜４を有することを指定する。この例では、規則５８７の一部は、データ構造５９３、５９４、５９５（例えば、ポインタ）に従って、一定の状態において実行される。例えば、データ構造５９３は、規則１が状態１で実行されることを指定する。状態２ではどの規則も実行されない。規則２は、データ構造５９４に従って状態３において実行される。規則３は、データ構造５９５に従って状態４において実行される。
【００７６】
パラメータ化検出アプリケーション５８０は、ＫＰＩ５７６及びキー付き状態データ５８９を含むプロフィールデータ５７５を格納する。通常、ＫＰＩは、検出により得られるデータ（例えば、収集されたレコードに含まれているか又はそこで表されている種々のイベントのデータ）を含む。したがって、ＫＰＩの値は、オンザフライ及びリアルタイムで更新され、且つ変更される。例えば、ＣＤＡシステム５７７は、データ利用を追跡するＫＰＩを規定する。この例では、新しいデータレコードが受信されたとき、パラメータ化検出アプリケーション５８０は、その新しいデータレコードがデータ利用イベントを含んでいるか又はそれを指定するか検出する。そのデータレコードがデータ利用イベントを指定している場合、ＣＤＡシステム５７７は、更新されるデータ利用を指定するデータによりＫＰＩ（データ利用イベントに関連付けられているキーの）を更新する。この例では、各ＫＰＩは、特定のキーに関連付けられているキー付きＫＰＩである。１つの例では、ＫＰＩは、この規則の実行において、例えば、特定のキーのＫＰＩの内容が実行されるべき規則の条件を当該キーの仕様５８６の現在の状態において満たしているか否かを決定することにより規則の種々の条件が満たされているか否かを決定するために、使用される。また、ＫＰＩは、複数のイベントに基づいて計算され得る。例えば、ＫＰＩは、ユーザーが指定量のデータ及び指定量の音声利用をすでに使用した時点を示すように規定され得る。この例では、ＫＰＩは、２つのイベント、すなわち、データイベント及び音声利用イベントに基づく。ＫＰＩ自体の集約も可能であり、集約されたＫＰＩは、イベントの検出及び／又は規則条件の満足度の検出において使用される。ＫＰＩは、顧客プロフィールの一環として格納される。また、一部の例では、ＫＰＩは、ユーザー及び／又はシステム管理者により規定される属性である。
【００７７】
この例では、キー付き状態データ５８９は、パラメータ化検出アプリケーションの状態をキーの各値について指定する。この例では、ＣＤＡシステム５７７により受信されるデータ項目は、それぞれ、キーの値に関連付けられる。例えば、キーは、加入者識別名等の一意の識別名とすることができる。ＣＤＡシステム５７７は、パラメータ化検出アプリケーション５８０の状態をキー値のそれぞれについて維持する。例えば、キー値、“３４９ｊｄｓ４”は、パラメータ化検出アプリケーション５８０の状態１に関連付けられる。キー値、“８３４ｅｄｓｆ”は、最初の時点（Ｔ１）におけるパラメータ化検出アプリケーション５８０の状態３に関連付けられ、且つ第２の時点（Ｔ２）における状態４に関連付けられる。
【００７８】
この例では、パラメータ化動作アプリケーション５９０は、パラメータ化動作アプリケーション５９０の１つ又は複数の特性を規定するパラメータＩ、Ｋ及びこれらのパラメータのそれぞれの値Ｊ、Ｌを指定する仕様５９７を含んでいる。例えば、パラメータＩは、ユーザーの動作のカスタマイズにおいてプロフィールデータが使用されることを指定するパラメータとすることができる。この例では、パラメータＩの値Ｊは、このカスタマイズにおいて使用するべきプロフィールデータを指定する。
【００７９】
作動中に、ＣＤＡシステム５７７は、１つ又は複数のパラメータ化収集アプリケーション５７３を実行する。この実行において、前記１つ又は複数のパラメータの前記１つ又は複数の値が仕様５７４により指定されてデータレコードの処理が行われる。この例では、この処理は、データソース５６２からのデータストリーム５６４中のデータ項目５６６ａ、５６６ｂ．．．５６６ｎのパラメータ化収集アプリケーション５７３による収集を含む。この例では、データ項目５６６ａ、５６６ｂ．．．５６６ｎのそれぞれは、キー付きデータ項目、例えば、キーに関連付けられたデータ項目である。１つ又は複数のパラメータ化収集アプリケーション５７３は、データソース５７０からデータ項目５７２ａ、５７２ｂ．．．５７２ｎ（これらはバッチデータ５６８の一部である）も収集する。この例では、データ項目５７２ａ、５７２ｂ．．．５７２ｎのそれぞれは、キー付きデータ項目である。この例では、データ項目５６６ａ、５６６ｂ．．．５６６ｎのフォーマットは、データ項目５７２ａ、５７２ｂ．．．５７２ｎのフォーマットとは異なる。
【００８０】
１つ又は複数のパラメータ化収集アプリケーション５７３は、仕様５７４に従ってデータ項目５６６ａ、５６６ｂ．．．５６６ｎ及びデータ項目５７２ａ、５７２ｂ．．．５７２ｎを変換して変換されたデータ項目５７９ａ．．．５７９ｆを得る。この例では、変換されたデータ項目５７９ａ．．．５７９ｆのそれぞれは、パラメータ化検出アプリケーション５８０に適するデータフォーマットに変換される。１つ又は複数のパラメータ化収集アプリケーション５７３は、変換されたデータ項目５７９ａ．．．５７９ｆをキュー５７９に追加し、且つ追加されたキュー５７９をパラメータ化検出アプリケーション５８０に転送する。
【００８１】
ＣＤＡシステム５７７は、１つ又は複数のパラメータ化検出アプリケーション５８０を実行する。この実行において、前記１つ又は複数のパラメータの前記１つ又は複数の値が仕様５８６により指定され、キュー５７９中の変換されたデータ項目５７９ａ．．．５７９ｆの処理が次のとおり行われる。ＣＤＡシステム５７７は、変換されたデータ項目をプロフィールデータ５７５の１つ又は複数の部分及び／又はＫＰＩ  ５７６により補強することができる。例えば、ＣＤＡシステム５７７は、プロフィールデータ（例えば、データ利用、ＳＭＳ利用、地理位置情報及びデータプランのデータ等）を変換されたデータ項目５７９ｆに追加することにより補強、変換されたデータ項目５９８を作成する。この例では、補強、変換されたデータ項目５９８は、キーの特定の値（“８３４ｅｄｓｆ”）に関連付けられる。パラメータ化検出アプリケーション５８０は、キーの特定の値に関する１つ又は複数のパラメータ化検出アプリケーション５８０の現在の状態を識別する。この例では、時刻Ｔ１において、１つ又は複数のパラメータ化検出アプリケーション５８０の現状は、キー付き状態データ５８９により指定される状態３である。パラメータ化検出アプリケーション５８０は、仕様５８６の一部の中の１つ又は複数の規則５８７を現状において実行されるべきものとして識別する。この例では、図３Ｃの規則２の周りの点線により示されている規則２が状態３において実行される。パラメータ化検出アプリケーション５８０は、識別された１つ又は複数の規則（例えば、規則２）を実行する。パラメータ化検出アプリケーション５８０は、前記１つ又は複数の変換されたデータ項目の少なくとも１つ（例えば、補強、変換されたデータ項目５９８）が現状において実行される前記１つ又は複数の規則の少なくとも１つ（例えば、規則２）の１つ又は複数の条件を満たすことを決定する。この決定に応じて、パラメータ化検出アプリケーション５８０は、１つ又は複数の動作（動作データ５１１により表される）の実行を指定するデータ構造５２１を生成する。パラメータ化検出アプリケーション５８０は、キーの特定の値（例えば、８３４ｅｄｓｆ）に関して、仕様５８６の現状から次の状態への遷移も引き起こす。この例では、この遷移は、時刻Ｔ１から時刻Ｔ２への遷移として示されており、この場合、仕様５８６の状態は、キー値８３４ｅｄｓｆに関して、状態３から状態４に遷移する。さらにパラメータ化検出アプリケーション５８０は、生成したデータ構造５２１をパラメータ化動作アプリケーション５９０に転送する。
【００８２】
ＣＤＡシステム５７７は、パラメータ化動作アプリケーション５９０を実行する。この実行では、前記１つ又は複数のパラメータの前記１つ又は複数の値が仕様５９７により指定され、以下を含む作業が行われる：データ構造５２１において指定された前記１つ又は複数の動作の少なくとも１つに基づいて、１つ又は複数の命令５９１を送って前記１つ又は複数の動作の少なくとも１つの実行を引き起こすこと。
【００８３】
１つの変換として、パラメータ化収集アプリケーション５７３は、受信した各データレコードのプロフィールデータ（例えば、プロフィールデータ５７５）にアクセスし、そしてそのアクセスしたプロフィールデータでデータレコードを補強する。この例では、パラメータ化検出アプリケーション５８０は、プロフィールデータの内容をパラメータ化検出アプリケーション５８０に含まれている１つ又は複数の規則及び／又はアプリケーションと比較して１つ又は複数の所定のイベントの生起を検出する。検出した後、パラメータ化検出アプリケーション５８０は、それに応じて、例えば、検出された情報及び／又は検出されたイベントを指定する情報によりＫＰＩを更新する。
【００８４】
さらに別の変換では、収集アプリケーションと検出アプリケーションの間に複数のキューが存在する。例えば、ある種類のイベント、例えば、処理の遅延が許されないイベントのための優先キューを設けることができる。他のイベントの処理は遅延され得る。これらの他のイベントは、他のキュー、例えば、非優先キューに割り当てられ、且つこれらのイベントの処理が遅延することを示すためにアラームがこのキューに挿入される。通常、チャートそれ自身が将来のあらかじめ計算された時刻に到着する特別な種類のイベント（例えば、アラームイベント）を送ったときにアラームが発生する。アラームは、チャート論理が待ち合わせに入りたい場合に常に使用される。複数のキューを有することにより、システムはイベント処理の負荷の平衡をとることができ、且つ優先キューのイベントを先に処理し、非優先キューのイベントの処理を後回しにすることによりイベントの処理における待ち時間を低減することもできる。この例では、パラメータ化収集アプリケーションは、アラームの挿入規則及びアラームに関連付けられる種々のイベントタイプを指定する規則を用いてパラメータ化され、且つ構成される。
【００８５】
図４を参照する。システム６００は、例えば、バッチ式により及び／又はリアルタイムデータストリームからデータレコード６０１〜６０８を６１５により示されているように受信する収集ユニット６１０を含んでいる。この例では、収集ユニット６１０は、レコード６０１〜６０８をメモリに、例えば、メモリ中のデータ構造６２０（例えば、インデックス）に格納する。この例では、データ構造６２０は、静的なデータ構造ではない。データ構造６２０は、むしろ、データストリーム６１９中の新しいレコードが受信されたときに、間欠的に更新且つ変更される動的データ構造である。また、データ構造６２０中の入力は、入力（例えば、論理行）が処理された後に、例えば、データ構造６３０に割り当てられることにより、又はデータ構造６２０からフィルタリングされることにより除去される。データ構造６２０は、論理行６２１〜６２８を含む。この例では、論理行６２１〜６２８のそれぞれは、データレコード６０１〜６０８の１つに対応する。データ構造６２０は、それぞれ、データレコード６０１〜６０８中のフィールド及び／又はフィールドの値に対応する論理列６２０ａ〜６２０ｄも含んでいる。この例では、論理行６２１〜６２８等のデータ構造６２０の各論理行は、収集ユニット６１０により特定のデータレコード６０１〜６０８から抽出された関連情報の部分集合に対応する。データ構造６２０の各論理列は、特定の論理行に関連付けられた特定のデータレコードの特定のデータ属性を概念的に規定する。データ構造６２０がインデックスで１つの例では、論理行６２１〜６２８のそれぞれはインデックス付き入力である。
【００８６】
収集ユニット６１０は、データ構造６１７もメモリに格納する。１つの例では、データ構造６１７は、データ記憶又はレポジトリに格納される静的データ構造を表す。この例では、データ構造６１７は、補強データ、例えば、プロフィールデータを格納する。この例では、データ構造６１７に格納された補強データは、例えば、特定の補強データをデータ構造６２０の論理行に追加又は付加することにより、受信されたデータレコードにオンザフライ式に追加され得る。データ構造６１７は、データレコード６３０に含まれるデータタイプ、例えば、受信されたレコードに当該レコードが受信されたときオンザフライ式に動的に追加されるデータタイプも規定する。この例では、データ構造６１７は、論理行６１７ａ〜６１７ｈを含み、その各論理行は特定ＩＤの補強データを含む。この例では、データ構造６１７は、ＩＤデータ（示されていない）の論理列を含む。データ構造６２０中のＩＤデータをデータ構造６１７中のＩＤデータと組み合わせることにより、収集ユニット６１０は、特定ＩＤの補強されたレコード、例えば、リアルタイムデータストリームから受信したデータを含み、次に補強データにより補強されたレコードを作成する。
【００８７】
収集ユニット６１０は、データストリーム６１９中において受信されたデータレコード６０１〜６０８のフィルタリング及び相関付けも行う。ある変換では、収集ユニット６１０は、バッチ検索から、例えば、データ記憶から受信したレコードを収集する。この例では、収集ユニット６１０は、“location”フィールド中にnon-Boston値を含むレコードをフィルタリングする。すなわち、収集ユニット６１０は、データレコード６０１〜６０８をフィルタリングしてlocationフィールド中に“Boston”の値を有するデータレコードのみを含むようにする。収集ユニット６１０は、フィルタリングにより残ったレコード６０２、６０３、６０６の相関付けも行う。例えば、レコード６０２をレコード６０３に相関付ける（これらの両方とも同じＩＤに関連付けられているので）。収集ユニット６１０は、レコード６０２、６０３をこれらのレコードを隣同士に表す論理行６３１、６３２をデータ構造６３０に含めることにより相互に関連付ける。ある変換では、相関付けられたレコード６０２、６０３を単一のレコードに併合する。さらに別の例では、収集ユニット６１０は、相関付けられた集約を作成することにより相関付けを行う。
【００８８】
相関付けられた集約では、集約された値は、戻される値と同じではない。むしろ、収集ユニット６１０は、レコード中の種々のフィールドを使用して（時間的に別々に）相関付けを行う。この例では、相関付けは特に複雑である。なぜならば、収集ユニット６１０は、時間的に離れているレコードを、例えば、これらのレコード中のフィールドの特定の値に基づいて結合するからである。以下に、収集ユニット６１０により行われる相関付けの例を示す：
［各顧客について、タイプ取引の各データレコードについて（ここで取引・行為＝「購入」である）、最終２０分間に見られた最大取引高のシンボルを計算せよ。］
上記の例では、下線の部分は、指定され得るパラメータである集約定義の部分を表している。相関付けられる集約について考えられるパラメータのリストを以下に示す。この例では、これらのパラメータは、収集アプリケーションの一部として指定され得る。
【００８９】
【表１】
2020514881.tif 000003
【００９０】
この例では、収集ユニット６１０は、「フィールド」又は「式」を「フィルタリング式」及び「選択関数」とともに使用して「時間ウィンドウ」から適切なデータレコードを選択する。次に、われわれは、そのデータレコードから値を計算し、且つ集約値としてその値を使用する。１つの例では、データレコードは２つのフィールド、量フィールド及びシンボルフィールドを有する。収集ユニット６１０が最大量（所与の期間内における）のデータレコードに対応するシンボルを確認するために、その収集アプリケーションにおいて、「選択関数」は「最新最大」に、「フィールド」又は「式」は「量」に、また、「計算される式」は「シンボル」に設定される。
【００９１】
さらに別の変換では、収集ユニット６１０は、例えば、特定のキーにより関連付けられているか又はそれを含む特定のデータレコードを収集し、次に指定された長さの時間だけ同一のキーを含むか又はそれに関連付けられている別のデータレコードを待ち合わせることにより、時間的に隔てられているデータレコードを相関付ける。収集ユニット６１０が相関付けられたデータレコード（例えば、同一キーにより関連付けられているデータレコード）を収集したとき、収集ユニット６１０は、これらの相関付けられたデータレコードをパケット化する。例えば、これらのデータレコードを単一のレコードに併合し、且つこの単一の併合レコードを含むデータパケットを作成することにより。１つの例では、データレコードは時間的に隔てられているので、収集ユニット６１０は、収集されたデータレコードを示すデータをメモリに格納し、且つ指定された期間だけ待ち合わせることにより、先刻データの格納された（例えば、メモリ中の一時性）データレコードのキーに合致するキーを有する別のデータレコードが受信されるか否か確認する。収集ユニット６１０により受信されたデータレコードの量のゆえに、収集ユニット６１０は、インメモリグリッド（又は別のインメモリデータ構造）を設けて受信されたデータレコードを表すキー付きデータ及び（任意選択により）これらのレコードが受信された時刻を表すタイムスタンプを追跡し、且つ格納する。新しいレコードが受信されたとき、収集ユニット６１０は、新しく受信されたレコードのキーを識別し、且つインメモリデータグリッド中に合致キーが存在するか否かインメモリデータグリッド中を検索する。合致キーが存在する場合、収集ユニット６１０は、合致キーのデータレコードを、例えば、それらのレコードを単一のレコード中に併合することにより相関付ける。収集ユニット６１０は、当該キーの次のデータレコードが受信されたことを示すデータによりインメモリグリッドを更新することもできる。また、収集ユニット６１０は、タイムスタンプにおいて示されている時刻から指定された長さの時間が経過した後にインメモリグリッド中のエントリを消去するか又はその他により除去するように構成される。
【００９２】
この例では、データ構造６３０は、フィルタリングされ、相関付けられたレコードをあらわし、且つ論理行６３１〜６３３及び論理列６３０ａ〜６３０ｅを含む。データ構造６３０は、静的データ構造ではなく、間欠的に、例えば、新しいレコードが受信されたときに、更新される動的データ構造を含む。入力（例えば、論理行）は、動的論理（以下においてさらに詳しく説明される）が特定の入力に適用された後にデータ構造６３０から取り除かれる。動的論理の特定の入力に対する適用に続いて、データ構造６３０は、当該エントリの保持も格納継続も行わない。この例では、論理列６３０ｅは、補強データ、例えば、特定ＩＤの補強データを表す。論理行６３１は、ＩＤ“３８４３４３”に関連付けられた補強データを含むことにより補強されたバージョンのレコード６０２を表す。
【００９３】
収集ユニット６１０は、データ構造６３０を検出モジュール６３４に転送する。この例では、検出モジュール６３４は、本明細書において記述されるように実行可能論理６４４を実行する。検出モジュール６３４は、例えば、動的論理データ構造６４０に含まれている論理を実行することにより、動的論理（例えば、動的セグメンテーションを行う）も実行する。１つの例では、動的論理は、入力データレコードが到着したときにそれらを動的にオンザフライ処理するように構成される実行可能論理を含む。この例では、データ構造６４０は、論理行６４６、６４８及び規則を指定する論理列６４０ａ〜６４０ｄを含んでいる。この例では、検出モジュール６３４は、データ構造６４０をデータ構造６３０に対して実行してデータ構造６４０により規定される論理を満たすデータ構造６３０において表現されているレコードを決定するように構成される。この論理を満たすレコードを検出した後、検出モジュール６３４は、データ構造６４０（例えば、データ構造６４０により規定されているセグメント）中に含まれている論理の一部に関連付けられている実行可能論理６４４の１つ又は複数の部分を実行する。すなわち、実行可能論理６４４は、この動的論理の種々の部分に関連付けられている種々の部分（例えば、規則）を有している。実行可能論理６４４のすべての部分がこの動的論理のすべての部分にとって実行可能であるわけではない。検出モジュール６３４は、この動的論理の一部を満たす検出されたレコードについて実行可能論理６４４の一部を実行する。例えば、論理行６３２により表されるレコード６０３は、データ構造６４０中の論理行６４６に含まれている動的論理を満たす。この例では、実行可能論理６４４の一部は、データ構造６４０中の論理行６４６により規定される論理にとって実行可能であるように規定される。したがって、検出モジュール６３４は、実行可能論理６４４のその部分をレコード６０３に対して（又は論理行６３２中に含まれているデータに対して）実行する。実行可能論理のその部分の実行に基づいて、検出モジュール６３４は、論理列６３０ａの論理行６３２に含まれているＩＤにより表されるユーザーに関連付けられるクライアント装置に目標メッセージ（例えば、携帯電話利用時間を補充する申し入れ）を送る命令６４２を作成する。
【００９４】
１つの例では、データ構造６４０に含まれている動的論理は、種々のセグメント、例えば、母集団セグメントを指定する。例えば、論理行６４６に含まれている論理は、特定のセグメントを指定する。この例では、検出モジュール６３４により実行されるセグメンテーションは動的である。なぜならば、このセグメンテーションは、データレコードがシステム６００によりリアルタイムで受信され、処理されるときに、「オンザフライ」で行われるからである。従来、顧客レコードはディスク（例えば、データレポジトリ）に格納され、次に、例えば、種々のセグメンテーション規則を顧客レコードに適用することにより顧客は「分割」される。これは静的セグメンテーションの例である。なぜならば、変化しない顧客レコードの集まりが分割されるからである。対照的に、ここでは、変化しないレコードの集まりは存在しない。むしろ、レコードは、システム６００により連続的に及び／又は間欠的に受信される。レコードが受信されるとき、システム６００は、例えば、レコードをオンザフライ処理する連続フローを使用することによりそれらを動的に分割するが、その処理の一部はセグメンテーションを含んでいる。レコードは動的に分割されるので、システム６００は、ユーザー又はクライアント装置が特定の地理的位置、例えばモールに入る時点を検出して、その時点において当該ユーザーがまだモールにいる間に目標メッセージをクライアント装置に送信することができる。１つの例では、動的セグメンテーション規則は、パラメータ化アプリケーション、例えば、パラメータ化検出アプリケーションの１つの設定により指定され得る。
【００９５】
１つの例では、収集ユニット６１０又はＣＤＡシステムの別のコンポーネントは、例えば、動的論理を実行する対象として目標群（ＴＧ）及び対照群（ＣＧ）を生成する。通常、対照群は、動的論理の指定基準に合致し、したがって特定の群に含めるための候補（例えば、キャンペーンに含めるため）であるが、それらの挙動を実際に群内に置かれている他のユーザー（例えば、そしてそれ故にキャンペーンの申し入れを受けているユーザー、すなわち目標群のユーザー）と比較できるように明確に群外に置かれている一連のユーザー（例えば、加入者）を含んでいる。この例では、収集ユニットは、データレコードが受信されたときにリアルタイムで目標群及び対照群を動的にオンザフライ決定する。すなわち、静的データセットから対照群及び目標群を計算するのではなく、収集ユニット６１０は、動的に変化するデータセット（例えば、新しいレコードが受信されたときに間欠的に更新・変化する）から目標群及び対照群を決定する。
【００９６】
１つの例では、対照群は、次のとおり規定される：データレコードが特定の論理に関連付けられている（例えば、所定のキャンペーン中に存在する）場合、それらは収集ユニット６１０によりＴＧ又はＣＧに割り当てられる。１つの例では、データレコードは、そのデータレコードのキーが特定の論理に関連付けられるように指定されている場合、その論理に関連付けられる。ＴＧ及びＣＧが同様な特性及び属性を有するようにするために、収集ユニット６１０は、データレコードを分割するマッチパネルを作成してそれをメモリに格納する。マッチパネル（マッチパネルキューブとも呼ばれる）は、受信されるレコードのキーを表す多次元グリッド（例えば、全加入者ベースを含む）を含んでおり、各キー（例えば、加入者）は１つの「キューブ」（セル）に割り当てられている。これらの次元は、キーに関連付けられる種々の態様（以下を示すデータフィールド等）を記述する：ユーザーあたりの平均収入（ＡＲＰＵ）、地理（田舎又は都会）、エイジオンネットワーク等。これらの次元の同一値を有するキーがパッチパネルの同一キューブに出現する。
【００９７】
次に、後述するように、例えば、収集ユニット６１０により、指定論理を使用するマッチパネルの各キューブについてＴＧ又はＣＧ中に置かれるキー（又はデータレコード）を決定することができる。目標群対対照群成員決定は、指定されたチャート（例えば、収集アプリケーションから作成される）においても行われる。後から到着したレコードは、それが（キャンペーンの）論理に影響を及ぼす場合、チャート論理により取り扱われる。例えば、当該論理がデータレコードＢより前に到着したデータレコードＡに依存するが、しかし稼働上の遅延のためにデータＢが最初に到着する可能性もある場合に、この可能性に対処するようにチャートを作成することができる。これらのデータレコードを送信するシステム間に時間的歪みの可能性がある場合、タイムチャート論理はこの時間的歪みにも対処する。１つの例では、ＴＧ又はＣＧの何れかにキー（又はレコード）を割り当てる（又はどちらにも割り当てない−ＴＧとＣＧ両方が飽和している場合のデータレコードにおいて）論理が次のとおり収集ユニット６１０により実行される。当該論理がＣＧを要求しないように構成されている場合、収集ユニット６１０は当該キーをＴＧに割り当てる。
【００９８】
この論理は次のとおりである：各キーについて、そのキーがＣＧに属するものとして事前に指定されているか否か（例えば、テーブル及び／又はメモリにおいて）決定する。指定されている場合、収集ユニット６１０は、そのキーをＣＧに割り当てる。マッチパネルの各キューブについて、収集ユニット６１０はＣＧ中のエントリを次のとおり変更する：そのキューブに属するキー（例えば、キャンペーン母集団を表す）の所定群の指定量（例えば、指定パーセンテージ）未満がＣＧに存在する場合、不足状態が存在する。不足状態が存在する場合、当該キューブ中のＴＧキーをそのキューブのＣＧに移す。そのキューブに属するキーの所定群の指定量を超える量がＣＧに存在する場合、過剰状態が存在する。過剰状態が存在する場合、収集ユニット６１０は、これらのキーをＴＧにもＣＧにも入れないものとして標識する。１つの例では、収集ユニット６１０は、ＣＧの適切性の尺度（青、黄、又は赤として採点される）を計算する。この測定は、間欠的に変化する動的測定であり、これはＣＧは間欠的に変化するためである。
【００９９】
図５Ａを参照する。リアルタイムＣＤＡ機能を実行するための例示ネットワーク化環境７００が示されている。この例では、ネットワーク化環境７００は、ＣＤＡシステム７０２、クライアントシステム７０４、外部データソース７０６、ネットワークデータソース７０８及び外部システム７１０を含んでいる。ＣＤＡシステム７０２は、例えば、前述した収集モジュールの機能を実行する収集／統合モジュール７１２を含んでいる。この例では、収集モジュール７１２は、データをデータウェアハウス７３２に格納する（矢印７５６により示されている）。収集モジュール７１２は、準リアルタイム（例えば、データが受信されたときに）とバッチの両方でデータを格納する。また、収集モジュール７１２は、例えば、データレコードの補強及び長大レコードの作成のためにデータウェアハウス７３２からデータを取り出す（矢印７５８により示されている）。この例では、収集モジュール７１２は、データウェアハウス７３２から取り出したデータを保管するインメモリアーカイブ７１５を含んでいる。この例では、収集モジュール７１２は、例えば、データフィードバックの推進及びデータフィードバックループの形成のために、矢印７１７により示されているように、収集したデータの一部を外部データソース７０６に送り返すこともできる。ＣＤＡシステム７０２は、上述した作業及び機能を実行する検出モジュール７１６及び動作モジュール７３０を含むアプリケーション７１４も含んでいる。
【０１００】
この例では、検出モジュール７１６は、プロフィールデータ（例えば、ＣＤＡシステム７０２のユーザーの）のほか、状態データ（例えば、アプリケーションの実行状態を示す）、データフローチャート、キャンペーン（例えば、一連のアプリケーション及び／又はデータフローチャートを含む）等も格納するインメモリデータ記憶７１８を含んでいる。この例に示されているように、プロフィールは、例えば、データ検索における遅延を低減及び／又は除去するため及び状態のリアルタイム維持を可能にするために、ディスクに格納されるのではなくメモリに格納される。この例では、検出モジュール７１６は、例えば、インメモリデータ記憶７１８に格納されているプロフィールデータによりデータレコード７２３を補強することにより、補強を行う。この例では、検出モジュール７１６は、パラメータ化検出アプリケーションのための指定を行う。検出モジュール７１６により行われる補強は、パラメータ化検出アプリケーションの仕様により指定される命令に従って、メモリ７１８からキーに関連付けられたプロフィールデータ（例えば、特定のユーザーのプロフィールデータ）を取り出し、且つデータレコード７２３（そのキーの）の１つ又は複数のフィールドに取り出したプロフィールデータを書き込む。
【０１０１】
また、ＣＤＡシステム７０２は、例えば、インメモリデータ記憶７１８中のプロフィールデータを更新することによりユーザーのプロフィールを連続的又は間欠的に更新する。例えば、動作モジュール７３０がユーザーに申し入れを送った場合、ＣＤＡシステム７０２は、その申し入れが送られたこと及びどの申し入れであるかを示すデータによりそのユーザーのプロフィールデータを更新する。例えば、各申し入れは、キー又は一意の識別子を含むか又はそれに関連付けられている。プロフィールデータもキー又は他の一意の識別子を含むか又はそれに関連付けられている。動作モジュール７３０が申し入れを送った後、ＣＤＡシステム７０２は、その申し入れに関連付けられたキーを識別し、且つその申し入れが送られたことを示すデータにより当該同一キーに関連付けられたプロフィールデータを更新する。
【０１０２】
また、このプロフィールデータに基づいて、ＣＤＡシステム７０２は、ＫＰＩを作成する。１つの例では、ＫＰＩは、所定の目的が効果的に実現されている程度を示す測定可能な値である。１つの例では、ＫＰＩは検出モジュール７１６により作成され、検出モジュール７１６に格納される。この例では、ＫＰＩは、申し入れが顧客に送られた時刻、当該申し入れの宛先顧客、その顧客が申し入れに応答したか否か等を示すデータを含む。別の例では、ＫＰＩは、例えば、ユーザーが１０ドル超をＡＴＭに入金した回数のような他の測定基準又はその他の所定測定基準又はイベントも表す。この例では、ＣＤＡシステム７０２は入力データレコードを受信する。ＣＤＡシステム７０２は、どの測定基準がＫＰＩであるか指定するように構成される。したがって、ＫＰＩ（及び／又はその定義）は、ＣＤＡシステム７０２の初期設定の一環として組み込まれる。さらに別の例では、ＣＤＡシステム７０２は、プロフィールデータ及び／又はＫＰＩ（特定のキーの）をその特定のキーについて受信された特定のレコードにより表される各イベントを示す他のデータにより更新する。したがって、このプロフィールデータは、すべての受信されたイベント（特定ユーザーの）及び／又は所定のイベント又はイベントのタイプを表すデータを追跡し、且つ含む。
【０１０３】
別の例では、検出モジュール７１６（又はパラメータ化検出アプリケーション）は、特定の値のキーについて１つ又は複数のＫＰＩを作成する。この例では、ＫＰＩは、このキーの特定の値に関連付けられたデータ項目の１つ又は複数の値を指定する。ＣＤＡシステム７０２は、このキーの特定の値のデータを受信する。この受信されたデータは、動作モジュール７３０により開始された１つ又は複数の動作及び／又は入力データレコードを含むこの受信されたデータに関するフィードバックを示す。この例では、検出モジュール７１６は、当該キーの特定の値のＫＰＩをフィードバックデータにより更新し、且つそのＫＰＩをインメモリデータ記憶７１８に格納する。
【０１０４】
ＣＤＡシステム７０２は、そのＫＰＩを他のシステムに転送して、例えば、これらのシステムが申し入れの効果性及び／又はカスタマージャーニーを追跡し、且つ管理することができるようにする。前述したように、プロフィールデータは、ＫＰＩとともに、例えば、メモリに格納されるプロフィールデータにより及びプロフィールデータの一環として格納されるＫＰＩによりメモリ中に維持される。
【０１０５】
また、検出モジュール７１６は、外部データをインメモリプロフィール（それはインメモリデータ記憶７１８に格納される）に追加するように構成される。この外部データは、ＣＤＡシステム７０２により１つ又は複数の外部データソース７０６から取り出される。この例では、検出モジュール７１６は、外部データをインメモリプロフィールに追加する。それは、例えば、データレコードの検出のための補強及びプロフィールデータを含むレコードを構築する際の遅延をさらに低減するためである。この例では、検出モジュール７１６は、インメモリのキー応用処理（例えば、収集されたデータレコードの）を行う。この例では、この処理は、キー応用処理である。なぜならば、検出モジュール７１６は、米国特許出願第６２／２７０，２５７号において記述されているように、特定のキー（又は識別子）に関係付けられたデータレコードを処理し、且つこれらのキー付きデータレコード（例えば、特定のキーに関連付けられたデータレコード）を当該キーのインメモリ状態（アプリケーション又は一連のアプリケーションの）に応じて処理するからである。この例では、収集モジュール７１２は、検出モジュール７１６による検索のためにレコード７２３をキュー７２１に送る。この例では、収集モジュール７１２は、データ及び／又はデータレコードを検出モジュール７１６にバッチとリアルタイム（例えば、データレコードが収集モジュール７１２により受信されたときに）の両方で送る。収集モジュール７１２は、例えば、１つ又は複数のデータレポジトリから受信したバッチデータを（レコード７２３の一部として）送ることにより、データを検出モジュール７１６にバッチ転送する。
【０１０６】
この例では、検出モジュール７１６は、種々の規則（例えば、種々のアプリケーション及び／又はフローチャートにより指定される規則）を実行する。これらの規則の実行に基づいて、検出モジュール７１６は、状態（例えば、特定のキーに関する）が更新を要するか否か決定する。例えば、規則の実行に基づいて、アプリケーションの状態（特定のキーに関する）は、１つの状態から他の状態に遷移する。この例では、検出モジュール７１６は、それに応じて当該キーに関する状態を更新する。１つの例では、検出モジュール７１６は、例えば、特定の実行中データフローグラフ又はアプリケーションから隔離される持続インメモリキー付きデータ記憶経由で共有される変数として状態を格納する。これは、状態を決定するために必要となる待ち時間を低減する。これは、例えば、各アプリケーション及び／又はモジュールがその共有変数のインメモリ値を取り出すことができるためである。
【０１０７】
検出モジュール７１６は、アプリケーション７２０、７２２、７２４、７２６も含んでおり、それらのそれぞれは様々な種類のデータ処理を行う。この例では、収集モジュール７１２は、例えば、収集されたデータレコードをサブレコードとしてデータレコード７２３に含めることにより、且つプロフィールデータ及び／又は他の格納されていたデータによりデータレコード７２３を補強することにより、１つ又は複数の収集されたデータレコードから、データレコード７２３を作成する。検出モジュール７１６は、データレコード７２３をアプリケーション７２０、７２２、７２４、７２６のそれぞれに送る。これらアプリケーションのそれぞれは、データ処理を行い、且つデータレコード検出を行うための規則を適用するように構成されている。データレコード検出を行う従来の方法では、別々のデータレコードが作成され、且つ各アプリケーションに転送されるが（例えば、各アプリケーションに適するフォーマットにより）、その結果として、例えば、米国特許出願第６２／２７０，２５７号において記述されているように、データレコードの単一の長大レコード（例えば、レコード７２３）をアプリケーション７２０、７２２、７２４、７２６のそれぞれに送った場合のシステム資源消費量、メモリ消費量及びその結果の待ち時間と比較してシステム資源の増加、メモリ格納の増加及びシステム待ち時間の増加をもたらす。しかし、各アプリケーションがすでに特定のシステム又はモジュールに組み込まれている場合、各アプリケーションは、共通のフォーマットを共用し、したがって単一のレコードをアプリケーションのそれぞれに送ることができる。
【０１０８】
アプリケーション７２０、７２２、７２４、７２６の１つ又は複数の実行に基づいて、検出モジュール７１６は、１つ又は複数の所定のデータレコードを検出する。検出された各データレコードについて、検出モジュール７１６は、動作トリガー（例えば、１つ又は複数の動作を行うか又はその実行を引き起こす命令）をキュー７２８に追加し、このキューはこの動作トリガーを動作モジュール７３０に転送する。アクショントリガー内容に基づいて、動作モジュール７３０は、１つ又は複数の動作（例えば、ｅメール、テキストメッセージ、ＳＭＳメッセージ等の送信）の実行を引き起こす。一部の例では、動作トリガーの内容に基づいて、動作モジュール７３０はメッセージ又はコンテンツを作成し、且つそのメッセージ／コンテンツをこのメッセージ／コンテンツの宛先のユーザー向けにカスタマイズする。動作モジュール７３０は、そのカスタマイズされたメッセージを１つ又は複数の外部システム７１０に転送する（矢印７６６により示されているように）。その外部システムは、当該メッセージ／コンテンツを送信するか、又はカスタマイズされたメッセージに基づいてさらなる動作を行わせる。
【０１０９】
この例では、データウェアハウス７３２は、クエリーエンジン７３４、データウェアハウス７３８及び分析エンジン７３６を含んでいる。クエリーエンジン７３４は、検出モジュール７１６、データウェアハウス７３８又はその他のデータソースからデータ（例えば、検出されたデータレコードを示すデータ、処理されたデータレコードを示すデータ等）をクエリーし、且つそのクエリーされたデータをデータ分析の実行のために分析エンジン７３６に転送する（矢印７６０により示すように）。この例では、分析エンジン７３６は、データ分析結果をデータウェアハウス７３８に格納する（矢印７６２により示すように）。データレコード検出を行うほか、検出モジュール７１６は、ウェアハウスデータ（例えば、データウェアハウス７３８又は別のデータ記憶に格納されているデータ）を処理して種々の分析も行うように構成されている。この例では、分析エンジン７３６は、どの規則をどのキーに関連付けられているデータレコードに適用するか指定する種々の個別化規則７１３を使用する。この例では、この個別化規則は、種々の所定セグメントに関連付けられているレコードについて命令を個別化又は標的化する方法を指定するセグメンテーション規則も含んでいる。分析エンジン７３６は、例えば、個別化規則の実行のために個別化規則７１３をアプリケーション７１４に送る（矢印７６４により示されているように）。
【０１１０】
この例では、動作モジュール７３０は、データ及び／又はメッセージをネットワークデータソース７０８に送り（矢印７４０により示されているように）、ネットワークデータソース７０８はデータをＣＤＡシステム７０２にフィードバックする（矢印７５２により示されているように）。１つの例では、動作モジュール７３０は、カスタマイズされたメッセージをネットワークデータソース７０８に送り、ネットワークデータソース７０８は、これらのカスタマイズされたメッセージをクライアントシステム７０４に再転送する（矢印７４４により示されているように）。クライアントシステムは、確認メッセージ（示されていない）をネットワークデータソース７０８に送り（矢印７４６により示されているように）、ネットワークデータソース７０８は、この確認メッセージをＣＤＡシステム７０２にフィードバックとして転送する（矢印７５２により示されているように）。したがって、ネットワーク環境７００は、ＣＤＡシステム７０２がメッセージの受信を監査又は追跡することを可能にするフィードバックループ（矢印７４０、７４４、７４６、７５２により示されている１つ又は複数の経路経由）を実現する。
【０１１１】
この例では、動作モジュール７３０は、データフィードバックループを実行するためにデータ（例えば、カスタマイズされたメッセージ又はその他のカスタマイズされたデータ）を外部データソース７０６にも送る（矢印７４２により示されているように）。これに応じて、１つ又は複数の外部データソース７０６は、このデータ（動作モジュール７３０から受信した）をクライアントシステム７０４に送り（矢印７４８により示されているように）、後者は、これに応じて、確認を１つ又は複数の外部データソース７０６に送り返すことができ（矢印７５０により示されているように）、外部データソースは、その確認をフィードバックとしてＣＤＡシステム７０２に送り返す（矢印７５４により示されているように）。したがって、ネットワーク環境７００は、別のフィードバックループ（矢印７４２、７４８、７５０、７５４により示されている１つ又は複数のパスを経由する）を実現する。この例では、分析エンジン７３６又はＣＤＡシステム７０２の別のモジュールは、例えば、申し入れが計画されたとおり（例えば、申し入れの実行）送達されたか否か、ユーザーの申し入れに対する応答、申し入れの達成等を追跡することによりエンドツーエンドカスタマージャーニーを追跡する。この例では、分析エンジン７３６は、上述のフィードバックループの１つにより及び／又は複数のシステムから、例えば、外部データソース７０６、外部システム７１０又は申し入れの達成及び送達を追跡する他の外部システムからデータを取得することによりカスタマージャーニー（例えば、申し入れの送達及び申し入れの達成）を追跡する。
【０１１２】
一部の例では、ＣＤＡシステム７０２は、上述のフィードバックループの１つの部分として受信されたデータを評価することができる。例えば、受信されたこのデータは、申し入れ又は動作モジュールによる動作出力の有効性を示すことができる。受信されたこのデータに基づいて、ＣＤＡシステム７０２は、パラメータ値（例えば、ユーザーによる入力）がシステムの所望の反応に通じたか、例えば、実行される所望の動作に通じたか否か評価する。このフィードバックを使用して、ＣＤＡシステム７０２又はユーザーは、収集、検出又は動作アプリケーションの１つ又は複数のパラメータ値を変更又は調整することができる。例えば、検出アプリケーションは、ユーザーのデータプランが残データの閾値未満であることを示すイベント（又はデータレコード）の検出を指定するパラメータ値により構成することができる。このイベントの検出に応じて、動作アプリケーションは、特定の動作又は作成されるべき出力を指定する１つ又は複数のパラメータ化値により構成され得る。この例では、この出力は、より多くのデータを補充又は購入する特別販売促進機会をユーザーに通知するメッセージとすることができる。上述のフィードバックループの１つを使用して、ＣＤＡシステム７０２は、例えば、申し入れの達成を追跡することにより出力の有効性を追跡する。１つの例では、動作モジュールからの出力は、出力又は出力の宛先又は送り先のユーザーを一意に識別するキー（又はその他の識別子）を含む。出力に関する動作（例えば、出力中のリンク又はその他の選択可能な部分のクリック）は、例えば、当該キー又は識別子（又はその出力のキーに関連付けられた別の識別子）を含むクッキーにより、当該動作をその出力のキー又は識別子を含むデジタル署名に関連付けること等により、追跡される（例えば、外部システムにより）。
【０１１３】
この例では、フィードバックループから受信したデータに基づいて、ＣＤＡシステム７０２は、特定出力が特に効果的ではないことを識別することができる。例えば、出力は、少なくともユーザーが追加データを購入する閾値をもたらしていないこともある。フィードバックデータに基づいて、ＣＤＡシステム７０２又はユーザーは、検出アプリケーション（例えば、種々の又は多様なイベントの検出を指定する）及び／又は動作アプリケーション（例えば、検出されたイベントに応じて多様な又は種々の出力を指定する）の１つ又は複数のパラメータ値を調整することができる。この例では、ＣＤＡシステム７０２は、実行された動作が正しくなかったか（例えば、所望の結果を実現しなかった）又は正しく実行されなかったと決定した後、値を変更することによりパラメータ値を調整する修正ループを実行して実行されるべき正しい動作を得る。一部の例では、修正ループは、経験則ベースであり且つ変更するべき１つ又は複数のアプリケーションに対する変更を指定し及び／又は指定結果を得る一連の規則を含んでいる。
【０１１４】
別の例では、検出モジュール７１６は、矢印７０１により示されているようにフィードバックをデータウェアハウス７３２に直接送る。例えば、検出モジュール７１６は、キャンペーンの成功を示すデータをデータウェアハウス７３２に送ることができる。検出モジュール７１６は、通った経路（検出アプリケーションにおいて）、検出アプリケーションにより下された決定、検出アプリケーションのたどった分岐論理を示すデータ（例えば、フィードバックデータ）をデータウェアハウス７３２に送ることもできる。この例では、ＣＤＡシステム７０２は、検出モジュール７１４からデータウェアハウス７３２により受信されたフィードバックデータについて、１つ又は複数の機械学習プログラム、ヒューリスティックネットワーク又はニューラルネットワークを実行することができる。この実行に基づいて、検出モジュール７１６は、検出アプリケーション中の１つ又は複数のパラメータの値又は検出アプリケーション中に含まれているパラメータのタイプを更新することができる。例えば、分岐論理の特定領域が十分に利用されていない場合（フィードバックデータにより示される）、ニューラルネットワークは、どの論理がアクセスされるかを示すフィードバックデータを利用し、且つそのフィードバックデータに基づいて、十分に利用されていない分岐論理のパラメータを調整してその論理のトラバースを促進することができる。
【０１１５】
上述のフィードバックループ及び修正ループは、基礎のシステムの適切な作動を確保するために、例えば、１つ又は複数の動作が正しく、すなわち要望どおりに実行されることを確保するために、次のような方法により実行することもできる。前記１つ又は複数の動作は、テキストメッセージを外部装置に送ること、ｅメールを外部システムに送ること、ケースマネジメントシステムにおいて作業命令書のチケットをオープンすること、移動電話接続を即時切断すること、ウェブサービスを目標装置に提供すること、及び１つ又は複数の変換されたデータ項目のデータパケットを通知とともに伝送すること、及び１つ又は複数の外部コンピュータ上でホストされているデータ処理アプリケーションを１つ又は複数の変換されたデータ項目について実行することの１つ又は複数等のデータ処理タスク又はネットワーク通信に関わり得る。一部の例では、前記１つ又は複数の動作は、ユーザーに申し入れ、例えば、追加音声通話１０分又は追加データを提供することを含む。この例では、本明細書において記述されるシステムは、プロビジョニングシステム（例えば、電話網等、時分及び／又はデータ利用を維持するか又は管理するシステム）と通信することによりユーザーが追加音声時分及び／又はデータを有していることをプロビジョニングシステムに示すように構成される。別の例では、前記１つ又は複数の動作は、例えば、金銭を提供する等ユーザーに利益を提供するシステムを含む。この例では、システムは、金融機関に維持されているユーザーの口座との金融取引により金銭を提供するように構成される。別の例では、前記１つ又は複数の動作は、ユーザーがローミングしているときにユーザーのサービスをダウングレードして、ユーザーがローミング料金を負担することを妨げることを含む。
【０１１６】
基礎のシステム及び／又はユーザーは、フィードバックループにおいて、前記１つ又は複数の動作が（ｉ）正常に完了したか、又は（ｉｉ）失敗したかを示すフィードバックメッセージを受信することができる。前記１つ又は複数の動作は、前記１つ又は複数の動作の一部が完了しなかった場合に失敗したと見なされる。フィードバックメッセージは、前記１つ又は複数の失敗した動作のどの部分が完了しなかったかを任意選択により示すこともできる。例えば、フィードバックメッセージは、前記１つ又は複数の外部コンピュータ上でホストされているデータ処理アプリケーションが前記１つ又は複数の変換されたデータ項目について正しく実行されたか又は実行されなかったか、例えば、このアプリケーションの一定のデータ処理タスクが前記データ項目のうちの一定の項目について実行されなかったことを示すことができる。このフィードバックメッセージは、どのデータ処理タスク（例えば、プログラムコードのどの部分）が実行されなかったのか示すことができる。例えば、移動電話接続を即時切断する動作が正しく行われなかったが、それは、許容されると見なされる所定の遅延を超える一定の遅延の後に初めてその移動電話接続が切断されたためであった。このフィードバックメッセージは、この一定の遅延を示すことができる。このフィードバックメッセージは、正常に完了した及び／又は失敗した前記１つ又は複数の動作の結果データ（例えば、当該データ処理アプリケーションにより生じた一定の遅延又は結果）を示すこともできる。
【０１１７】
前記結果データを前記１つ又は複数の動作の実行の正常な完了と関連付けられる所定のデータ（例えば、許容される見なされる所定の遅延又は当該データ処理アプリケーションにより生ずるべき所望の結果）と比較することができる。次に、前記１つ又は複数の動作の実行が正常に完了されたのか又は前記１つ又は複数の動作の実行が失敗したのか、前記比較に基づいて決定することができる。前記１つ又は複数の動作の実行は、結果データの所定データからのずれが所定量（例えば、絶対値の形態又はパーセンテージの形態における）より少ない場合に、正常に完了されたと見なすことができ、且つ結果データが所望データから少なくとも所定量だけずれている場合に、前記１つ又は複数の動作の実行は失敗したと判断される。
【０１１８】
すなわち、１つ又は複数の動作の正しい実行は、所定データ及び／又は所定量により表すことができる。実行されるべき上述の考えられる動作を考慮すると、結果データの所定データからのこのようなずれは、確認データの受信、テキスト／ｅメールメッセージの送信時間又は送信字数、チケットのチケット番号、移動電話接続の切断に要した時間、ウェブサービスのために利用可能なネットワーク帯域幅、当該データパケットについて送信されたデータ量、外部装置上のデータ処理アプリケーションにおいて実行されたデータ処理タスク又は当該動作を特徴付ける同様なパラメータ又は特性に関して発生し得る。
【０１１９】
続いて、第１、第２及び／又は第３パラメータ化アプリケーションの１つ又は複数のパラメータの前記１つ又は複数の指定された値は、前記結果データに基づいて変更され（システム７０２により、又はユーザーにより）、且つ第１、第２及び／又は第３パラメータ化アプリケーションは、前記変更された１つ又は複数の指定値の下でシステムにより再実行され得る。基礎のシステムの正しい作動を評価し及び／又は開始するさらなる機会をユーザーに与えるために、１つ又は複数のユーザーインターフェースの作動中に以下に示す１つ又は複数の相互作用を準備することができる：前記所定データ及び前記所定量を示す１つ又は複数のユーザーインターフェース要素を表示すること；表示される１つ又は複数のユーザーインターフェース要素経由で前記１つ又は複数の動作が（ｉ）正常に完了したか、又は（ｉｉ）失敗したかを出力すること；及び表示される１つ又は複数のユーザーインターフェース要素経由で前記結果データを出力すること。ユーザーインターフェースは、ユーザーから前記所定データ及び前記所定量を受信することができる（例えば、グラフィック要素としてのアイコンを経由して）。
【０１２０】
別案として、前記所定データ及び所定量の一方又は両方をシステムからアクセス可能且つ取り出し可能なメモリに格納する。ユーザーインターフェースは、前記１つ又は複数の動作が（ｉ）正常に完了したか、又は（ｉｉ）失敗したか、図式的に出力することができる（例えば、ユーザーインターフェース要素としてのアイコンを経由して）。ユーザーインターフェースは、ユーザーによる検査又はシステムによる自動的使用のために結果データを図式的に出力することができる（例えば、ユーザーインターフェース要素としてのアイコンを経由して）。表示される１つ又は複数の（グラフィック）ユーザーインターフェース要素を経由して、第１、第２、及び／又は第３パラメータ化アプリケーションの１つ又は複数のパラメータのユーザー指定により変更された１つ又は複数の指定値が受信され（それは前記結果データに基づく）、且つ前記第１、第２、及び／又は第３パラメータ化アプリケーションがシステム（例えば、システム７０２）により１つ又は複数の前記変更された指定値の下で自動的に再実行され得る。前記１つ又は複数の動作の（再）実行を引き起こす前記１つ又は複数の命令の送信は、前記第３パラメータ化アプリケーションにより前記１つ又は複数の動作の実行を指定する出力を入力として使用することにより自動的に行われる。前記１つ又は複数の命令は、外部装置上での前記１つ又は複数の動作の（再）実行を引き起こすためにネットワーク接続経由で送られ得る。
【０１２１】
このユーザーインターフェースはグラフィック要素を提供することができ、このグラフィック要素がユーザーにより起動されたとき、それは前記変更値による前記再実行を自動的に開始する。例えば、ユーザーは、ユーザーインターフェース上で前記結果データを提供され、且つ前記１つ又は複数の動作の正しい実行によると前記結果データが所望どおりでない旨の情報を認識するか又はかかる情報の提供を受けることができる。次にユーザー又はシステム（例えば、システム７０２）は、修正ループにおいて、前記変更された値による前記動作の前記再実行を開始することができる。この場合、前記変更される値は、システム（又はユーザーによる入力）により前記結果データに基づいて、この値が前記動作の正しい／所望の実行を保証するように計算される。これは、例えば、前記１つ又は複数の動作が正しく（すなわち要望どおりに）実行されることを保証することにより基礎のシステムの適切な作動を確保することに役立ち得る。
【０１２２】
本明細書において記述されるとおり、ＣＤＡシステム７０２は、エンドツーエンド作動ロバスト性（例えば、ＣＤＡシステム７０２は、保管／分析システムのほか作動システムのデータを処理するためにも利用することができる）及び必須ハードウェアに関するほとんど無制限の拡張性を提供するが、これは、例えば、アプリケーションの再使用のおかげ、インメモリの状態及びプロフィールのおかげ、及び生成された後に例えばアプリケーション７２０、７２２、７２４、７２６を含む種々のアプリケーションにマルチパブリッシュされるデータレコードの長大レコードのおかげである。
【０１２３】
図５Ｂを参照する。ネットワーク環境７５１は、図５Ａにおいて記述されたネットワーク環境７００の変換である。この例では、ネットワーク環境７５１は、クライアントシステム７９２、ネットワーク化システム７６８、外部入力システム７６９（データのストリーム化又は入力）、外部出力システム７７０（出力データを受信する）及びＣＤＡシステム７５３を含む。ＣＤＡシステムは、収集アプリケーション７８０、アプリケーション７５５（それは検出アプリケーション７７５及び動作アプリケーション７７６を含む）、プロフィールデータ構造７７１及びデータ分析アプリケーション７８２を含んでいる。このアプリケーションでは、データ分析アプリケーション７８２は、データ（例えば、ネイティブフォーマットの）を格納するデータレポジトリ７６５（例えば、データレイク）、データウェアハウス７８４、分析アプリケーション７８６（例えば、機械学習及びデータ相関付けを実現する分析エンジン）、及び視覚化データ７６３（例えば、データ分析の視覚化を生成するためのデータ、プロフィールデータ等）を含む。データ分析アプリケーション７８２は、分析アプリケーション７８６による処理又は分析のため及び／又は視覚化データ７６３へ含めるためのデータを例えばクエリーするために、データレポジトリ７６５、データウェアハウス７８４、プロフィールデータ構造７７１等をクエリーするクエリーエンジン７６７も含む。１つの例では、プロフィールデータ構造７７１は、揮発メモリに（例えば、メモリ格納要求を低減するため及びプロフィールデータの検索における待ち時間を例えば、プロフィールデータがディスクに格納されている場合のプロフィールデータの取り出しにおける待ち時間に比較して低減するために）及び／又は非揮発メモリ（例えば、データレポジトリ７６５及び／又はデータウェアハウス７８４に）に格納される。ＣＤＡシステム７５３は、（例えば、バッチ又はリアルタイムで）準リアルタイムプロフィールデータの一部をプロフィールデータ構造７７１から外部出力システム７７０及び／又は外部入力システム７６９に送る（例えば、バッチ又はリアルタイムで）データレイヤー７８８（例えば、サービスレイヤー）も含んでいる。
【０１２４】
稼働において、１つ又は複数のクライアントシステム７９２は、イベントを含む（又はイベントを示す）データ（例えば、データパケット）をネットワーク化システム７６８及び外部入力システム７６９に送る。１つの例では、クライアントシステム７９２の１つは、スマートフォンである。外部入力システム７６９の１つは、電話会社の電気通信システムである。この例では、スマートフォンはテキストメッセージを送る。テキストメッセージを送るとき、このスマートフォンは、データ（テキストメッセージが送られたことを示す）も電気通信システムに送る。この例では、テキストメッセージが送られたことを示すデータはイベントである。これに応じて、電気通信システムは、このイベントを収集アプリケーション７８０に送る。通常、収集アプリケーション７８０は、データソース及びデータストリームからデータレコードを収集する（例えば、バッチ及び／又はリアルタイムで）ように構成される。この例では、収集アプリケーション７８０は、受信したデータレコードをアプリケーション７５５に送る。この例では、収集アプリケーション７８０は、収集されたデータレコードをキュー７５９に追加することにより、バッチ及びリアルタイムで受信したデータレコードを送る。
【０１２５】
この例では、検出アプリケーション７７５は、種々の規則群、７９０ａ、７９０ｂ、７９０ｃ．．．７９０ｎを実行するように構成される。この例では、各規則群は、特定のキャンペーン、ロイヤルティプログラム、不正検出プログラム等を実行する。検出アプリケーション７７５は、収集アプリケーション７８０から受信したデータレコードについて種々の規則群を実行する。この例では、検出アプリケーション７７５は、ユーザープロフィール（例えば、メモリー中の）を受信したデータレコードに含まれているデータにより動的に更新するプロフィールレポジトリ７７３を含んでいる。この例では、プロフィールデータ構成７７１は、プロフィールデータ（例えば、特定のキー及び／又はすべてのキーに関連付けられている）をプロフィールレポジトリ７７３に間欠的に転送する。プロフィールレポジトリ７７３は、例えば前記規則群の実行及び／又は規則の１つ又は複数が満たされているか否かの決定のためにプロフィールデータが必要になった場合に検出アプリケーション７７５によるプロフィールデータの検索時間を低減するために、プロフィールデータをメモリに格納する。検出アプリケーション７７５が新しいデータレコードを受信したとき、検出モジュール７７５は、該当するプロフィールのプロフィールデータによりプロフィールレポジトリ７７３を更新する（例えば、受信したデータレコードに関連付けられているキーをプロフィールレポジトリ７７３に格納されているプロフィールデータに関連付けられているキーと照合することにより）。１つの例では、データレコードの特定のフィールドは、プロフィールデータを含んでいる。この例では、プロフィールレポジトリ７７３は、それらのフィールド（例えば、該当するキーの）の内容により更新される。プロフィールレポジトリ７７３は、間欠的にその更新されたプロフィールデータをプロフィールデータ構造７７１に転送してプロフィールデータ構造７７１を更新する。
【０１２６】
１つ又は複数の規則群の実行に基づいて、検出アプリケーション７７５は、実行されるべき１つ又は複数の動作を識別する。この例では、検出アプリケーション７７５は、これらの１つ又は複数の動作の実行を引き起こす命令をキュー７６１に追加する。キュー７６１中の命令は、プロフィールレポジトリ７７２を含む動作アプリケーション７７６に送られる。このレポジトリはプロフィールデータをメモリに格納する。この例では、プロフィールレポジトリ７７２は、プロフィールデータ構造７７１からプロフィールデータを間欠的に取り出し、その取り出したプロフィールデータをメモリに格納する。プロフィールレポジトリ７７２は、プロフィールデータディスクの検索の待ち時間に比して低減された待ち時間で行われる動作アプリケーション７７６によるプロフィールデータの取り出しを可能にするために、これを行う。命令において指定されている動作のそれぞれについて、動作アプリケーション７７６は、当該動作を行うか又は当該動作の実行を引き起こす（例えば、実行命令をキュー７７４に追加すること及びキュー７７４中のこれらの実行命令を外部出力システム７７０に送ることにより）。いずれの例においても、動作アプリケーション７７６は、プロフィールレポジトリ７７２中のプロフィールデータを使用して実行される動作をカスタマイズするか（当該動作の受領者に固有のプロフィールデータにより）又は実行命令をカスタマイズする（例えば、当該動作の受領者に固有のプロフィールデータを追加することにより）。プロフィールレポジトリ７７２中のプロフィールデータをディスクに格納するのではなく、メモリに格納することにより、動作アプリケーション７７６は、ディスクからプロフィールデータを取り出す際の待ち時間に比して低減された待ち時間でプロフィールデータを取り出す。この低減された待ち時間に基づいて、動作アプリケーション７７６は、プロフィールデータを当該命令及び／又は当該動作に準リアルタイムで追加することができる。一部の例では、動作アプリケーション７７６は、プロフィールレポジトリ７７２を新しいプロフィールデータ（例えば、申し入れが特定ユーザーに送られたことを示すデータ）で更新する。プロフィールレポジトリ７７２は、プロフィールデータ及び／又はプロフィールレポジトリ７７２に格納されているそのプロフィールデータのコピーに対する更新情報をプロフィールデータ構造７７１に間欠的に転送する。プロフィールレポジトリ７７３、７７２から受信した更新情報及び／又はプロフィールデータに基づいて、プロフィールデータ構造７７１は、準リアルタイム顧客プロフィールを維持する。この例では、プロフィールデータ構造７７１は、データウェアハウス７８４からもプロフィールデータを受信するが、これは、プロフィールデータ構造７７１がさらに特定のキー及び／又はすべてのキーに関連するバージョンのプロフィールデータを維持することを可能にする。
【０１２７】
この例では、ＣＤＡシステム７５３は、プロフィールデータ構造７７１中のプロフィールデータを収集アプリケーション７８０に転送する（例えば、バッチ及び／又はリアルタイムで）ように構成されており、後者はそのプロフィールデータを外部入力システム７６９及び／又はネットワーク化システム７６８に転送する。また、ＣＤＡシステム７５３は、データフロー７５７に示されている外部出力システム７７０、ネットワーク化システム７６８への転送のために（例えば、実行された動作及び実行された時期を示すデータ等プロフィールデータに含まれているデータに基づく作業スケジューリング、監視、オーディットトレール及び実行追跡を可能にするために）及びデータフロー７９１に示されている外部入力システム７６９に対する転送のために（例えば、プロフィールデータに含まれているメタデータ及び参照データに基づくデータプロファイリング並びに品質及びデータの系列等のデータガバナンス及びデータ管理を可能にするために）プロフィールデータ構造７７１からデータレイヤー７８８にプロフィールデータを転送する（例えば、バッチ及び／又はリアルタイムで）ように構成される。この例では、プロフィールデータ構造７７１に格納されているプロフィールデータは、データ系列データ及びプロフィールデータ（例えば、特定のキーに関連付けられた）の１つ又は複数の部分について行われた変換及びその他の操作を表すデータを含む。
【０１２８】
この例では、収集アプリケーション７８０及びデータ分析アプリケーション７８２は、お互いに対してデータをバッチで送るように構成される。これを行うことにより、収集アプリケーション７８０は、データレポジトリ７６５及び／又はデータウェアハウス７８４への格納のためにシステム７６８、７６９から受信した収集データレコード及びその他のデータをデータ分析アプリケーション７８２に転送する。同様に、データ分析アプリケーション７８２は、例えば、例えば種々のシステム間のデータ統合の促進を目的としてシステム７６８、７６９の１つ又は複数へその後に転送するために、分析データ及び／又はその他の格納されたデータを収集アプリケーション７８０に送る。
【０１２９】
図６を参照する。グラフィックユーザーインターフェース８００は、例えばキャンペーン又はプログラムの期間、データレコード、データソース等のパラメータ及び目標母集団の定義を設定することにより検出を行うプログラムの初期設定を規定すること等により検出モジュールを構成するために融通のきくウィザードを示す。この例では、グラフィックユーザーインターフェース８００は、プログラム（例えば、キャンペーン実行のためのプログラム）の１つ又は複数の特性を指定する部分８０２、検出対象のイベントを規定する１つ又は複数の特性及び／又はパラメータ値を指定する部分８０４、検出を行うための１つ又は複数の特性及び／又はパラメータ値を指定する部分８０６及び状態遷移（例えば、それは検出の一部である）指定する部分８０８、結果を見るための１つ又は複数の特性及び／又はパラメータ値を含む。
【０１３０】
この例では、部分８０４は、検出を行うための種々のパラメータ（例えば、パラメータ化論理又はパラメータ化アプリケーションに含まれている）の値を指定する下位部分８０４ａ、８０４ｂ、８０４ｃを含んでいる。例えば、下位部分８０４ａは、どのタイプのデータレコード（例えば、データレコード又は特定の特性を有するデータレコード）を検出するべきかユーザーが指定することを可能にする。下位部分８０４ｂは、検出の対象とならないキーをユーザーが指定すること、例えば、特定のキーに関連付けられた我々のレコードをフィルタリングすることを指定することを可能にする。下位部分８０４ｃは、例えば、アプリケーションによるデータレコードの処理をリアルタイムで試験する場合にどのレコードを試験レコードとして使用するかユーザーが指定することを可能にする。部分８０６は、検出モジュールによりどの規則及び／又は論理が実行されるべきか設定することを可能にする。
【０１３１】
図７を参照する。図６の変換が示されている。この例では、部分８０４は、選択可能部分８１２（例えば、リンク）を含んでおり、その選択は、オーバーレイ８１０の表示を引き起こす。この例では、オーバーレイ８１０は、これらのデータレコードに対してどのデータレコードを処理するか（例えば、規則を適用することにより）指定する１つ又は選択可能な部分（例えば、チェックボックス）を含んでいる。この例では、オーバーレイ８１０に入力されたデータは、図２Ｃに関連して記述された方法、例えば、インターフェース２５０が基礎のグラフ及び／又はパラメータ化アプリケーション（又はパラメータ化論理）及び／又はアプリケーションのパラメータ値を設定したときに機能した場合と同じ方法により機能的にパラメータ値を指定する。
【０１３２】
図８を参照する。グラフィックユーザーインターフェース９００は、収集モジュールの構成を与え、且つ構成インターフェース９０１の部分９０２、９０４、９０６、９０８とデータフローグラフ９１０の部分９１２、９１４、９１６、９１８との間の対応を示す。データフローグラフ９１０のパラメータの値は、構成インターフェース９０１により、例えば、図２Ａ〜２Ｃに関連して上述した機能を実行することにより設定される。この例では、グラフィックユーザーインターフェース９００は、非開発者により構成され得る一般的アプリケーションを示す。この例では、データフローグラフ９１０は、複数のソースから受信したデータレコードを収集、変換、及び補強するアプリケーションを含んでいる。この例では、データフローグラフ９１０は種々のパラメータを有するアプリケーションを含んでおり、それらの値は構成インターフェース９０１を経由して設定される。データフローグラフ９１０のパラメータの値の値が指定された後、ＣＤＡシステムは、データフローグラフのインスタンスを生成する。これは、例えば、データフローグラフ９１０のインスタンスであるが、その場合、このデータフローグラフ中のパラメータの値は構成インターフェースにより指定される値として設定されることになっている。
【０１３３】
この例では、構成インターフェース９０１の部分９０２は、構成モジュールにより収集されるソースファイルを指定する。部分９０２への入力は、データフローグラフ９１０の部分９１２に含まれているパラメータの値を指定する。部分９０２中の１つ又は複数の選択可能な部分の選択に基づいて、ユーザーは、データ及びデータレコードの収集のソースを指定する。部分９０４は、変換、例えば、再フォーマット化を指定する。本明細書において記述されているように、任意に膨大なデータ量、短い待ち時間及び複数のデータフォーマットの複雑性を扱うＣＤＡシステム。この例では、部分９０４は、複数のデータフォーマットの取り扱いを可能にする。部分９０４への入力は、データフローグラフ９１０の部分９１４に含まれているパラメータの値を指定する。部分９０６への入力は、データ変換、例えば、プロフィールデータの長大レコードへの補強及び追加を指定する。この例では、部分９０６は、データフローグラフ９１０の部分９１６に対応し、且つデータフローグラフ９１０の部分９１６に含まれている１つ又は複数のパラメータの値を指定する。この例では、部分９０８は、データフローグラフ９１０の部分９１８に含まれている１つ又は複数のパラメータの値を指定する１つ又は複数の選択可能な部分を含んでいる。部分９０８は、データの出力、例えば、出力されるべきデータ及び種々の装置への転送のための命令に関するパラメータの値を指定する。
【０１３４】
図９を参照する。グラフィックユーザーインターフェース１０００は、検出モジュールを構成する制御手段を表示する。グラフィックユーザーインターフェース１０００は、グラフィックユーザーインターフェース１０００において利用可能な入力、例えば、規定された論理への入力を表示する部分１００２を含んでいる。この例では、部分１００２は、米国特許出願第６２／２７０，２５７号において記述されているパレットを規定する。このパレットは、長大レコード（例えば、ＣＤＡシステムにより受信された収集レコードから生成されるレコード）に含まれているすべてのデータレコードを含んでいる。この例では、このパレットは、入力１０２６、１０５４（例えば、データレコード）及び補強された入力１０５２（例えば、補強されたデータレコード）を含んでいる。通常、補強された入力は、例えば、システムから外部的に受信されたデータではなく、データ記憶又はメモリ記憶から検索又は収集されたデータに基づく入力を含む。この例では、入力は、例えば、米国特許出願第６２／２７０，２５７号により記述されているあらかじめ計算された集約を含む。入力１０２６については、入力１０２８、１０３０、１０３２、１０３４、１０３６、１０３８、１０４０、１０４２、１０４４、１０４６、１０４８、１０５０を含む種々のタイプの入力がある。これらのタイプの入力のそれぞれは、長大レコードに含まれている。部分１００２に表示される入力のそれぞれは、例えば、論理を規定する際に使用するために部分１００４中のセルへの入力として選択可能である（例えば、ドラッグ及びドロップにより）。
【０１３５】
グラフィックユーザーインターフェース１０００は、検出モジュールにより実行されるべき論理（例えば、規則）の生成のための部分１００４も含んでいる。１つの例では、部分１００４は、ビジネス規則エディタを含んでいる。この例では、部分１００４は、１つ又は複数のパラメータ化アプリケーション、例えば、検出アプリケーション及び動作アプリケーションの視覚化を表示する。部分１００４は、パラメータ化アプリケーション中のパラメータの値を指定する編集可能なセルも表示する。１つの例では、ビジネス規則エディタ及び／又は部分１００４は、例えば、パラメータ化アプリケーションのパラメータの値の入力後に仕様を規定する際に使用される。すなわち、部分１００４への入力と部分１００４により指定される規則は、相まって仕様を形成する。
【０１３６】
この例では、部分１００４は、満たされた場合に１つ又は複数の動作の実行を引き起こす（例えば、出力の実行を引き起こすことにより）１つ又は複数のトリガー又は条件を指定する論理部分１００６を含む。論理部分１００８は、前記条件又はトリガーが満たされたときに開始及び／又は実行されるべき種々の出力を指定する。この例では、論理部分１００６は、１つ又は複数の状態トリガー、例えば、特定のキーの状態が状態の特定の値又はタイプに対応する場合に検出モジュールがその条件の対応動作を実行するべきことを指定する条件を指定する状態部分１００６ａを含んでいる。論理部分１００８は、例えば、対応するトリガーが満たされたときに当該論理が遷移する先である新しい状態を指定する状態部分１００８ａも含んでいる。
【０１３７】
この例では、論理部分１００６は、論理下位部分１０１０、１０１２、１０１４、１０１６を含んでおり、これらのそれぞれは１つ又は複数の条件を指定する。例えば、論理下位部分１０１０は、処理されるキー付きデータに関連付けられているユーザーの条件が新しいユーザーであることを指定する。論理下位部分１０１２は、“is_null”の“CampaignState.Eligible”という値を有するキー付きデータの状態の条件を指定する。論理下位部分１０１４は、処理されるキー付きデータが任意のデータレコードタイプであるとの条件を指定する。論理下位部分１０１６は、ＳＭＳ利用が５００を超えるとの条件を指定する。この例では、論理下位部分１０１０、１０１２、１０１４、１０１６の組み合わせは相まってトリガーを形成し、このトリガーの満足度は検出モジュールによる対応する出力の実行及び／又は実現を引き起こす。この例では、論理下位部分、１０１０、１０１２、１０１４、１０１６は、相まって特定出力を指定する論理下位部分１０１８、１０２０、１０２２、１０２４、１０２５に対応する。検出モジュールは、特定出力を示す命令群を作成し、且つこれらの命令群を動作モジュールに送ることにより、例えば、当該特定出力の実現を引き起こし、及び／又は当該出力のカスタマイズ及びそのカスタマイズされた出力を示すデータ（又はカスタマイズされた出力それ自体）を実行のために外部システムへ送信することを行う。この例では、論理下位部分１０１８は、実行論理の状態が“NewCampaignState.SendOffer”なる値に更新されることを指定する。論理下位部分１０２０は、ＳＭＳメッセージが送信されるという動作を指定する。論理下位部分１０２２は、メッセージの内容を指定する。論理下位部分１０２４は、満了日又はメッセージがアクティブである間の値を指定する。論理下位部分１０２５は、達成プランコードを指定する。この例では、論理下位部分１０１８、１０２０、１０２２、１０２４、１０２５の組み合わせは相まって、例えば、論理下位部分１０１０、１０１２、１０１４、１０１６において指定された条件を満たした後に実現される出力を形成する。
【０１３８】
１つの例では、部分１００２に表示されるパレットは、論理下位部分１０１２、１０１６、１０１８、１０２０、１０２２、１０２４に含まれる論理を生成する際に使用される。例えば、論理下位部分１０１６の論理は、データレコード１０４０を論理下位部分１０１６（それは、この例では編集可能なセルを含む）にドラッグし、ドロップすることにより生成される。ユーザーは、次に、“＞５００”のテキストを編集可能なセル（それは論理下位部分１０１６である）に入力することにより論理下位部分１０１６をさらに編集する。この例では、データレコード１０４０は、関連データフローグラフ又はアプリケーション中のパラメータに対応する。論理下位部分１０１６を編集するユーザーは、次にそのパラメータの値、すなわち、“＞５００”の値を入力する。部分１００４に表示される論理を使用して、ＣＤＡシステムは、例えば、パラメータ化論理中のパラメータの値を部分１００４に表示される値に設定することにより当該論理を実現するアプリケーション又はデータフローダイアグラムを作成する。一部の例では、この実行可能な論理は、テーブルにおいて指定されるのではなく、フローチャートとして指定され得る。
【０１３９】
図１０を参照する。仕様１１００は、ノード１１０２ａ〜１１０２ｇを含むフローチャート１１０２を含んでいる。通常、チャートは、データレコード処理のためのアプリケーション、例えば、パラメータ化アプリケーションを含んでいる。この例では、パラメータ化アプリケーションのパラメータの値の仕様（例えば、入力）は、その仕様を作成する。上述したように、仕様は、実行可能な論理を先行データ項目について実行したことから到達した状態に基づいて実行可能な論理を表し、且つ実行可能な論理の種々の状態を指定する。通常、実行可能な論理は、ソースコード及びその他のコンピュータ命令を含む。チャート中の各ノードは、実行可能な論理の１つ又は複数の部分を表す。例えば、ノードは、実行可能な論理を生成する１つ又は複数の論理式（以下、「論理」と称する）を含む。別の例では、ノードは、実行可能な論理が特定の状態にあるときに、実行可能な論理の１つ又は複数の特定の部分に対応する。この例では、チャート中の実行可能な論理は、例えば、チャートの１つ又は複数のノードに含めるための種々の入力を選択するために、パレット（上述した）を使用して生成される。
【０１４０】
（チャートにより示される）このアプリケーションは、入力データレコードに反応し、出力データレコード、例えば仕様内に含まれるロジックに基づいて生成されるデータレコードを作成するためのロジックのグラフィック単位を含む。概して、ロジックのグラフィック単位は、例えば、チャートを構築するためのウィンドウにアプリケーション（不図示）から様々なノードをドラッグアンドドロップすることによって少なくとも部分的にグラフィカルに生成されるロジックを含む。一例ではノードが、例えばロジックによって指定された条件を満たしたとき、入力データレコードをどのように処理するか、実行可能ロジックによって使用される変数の値をどのように設定するか、何れの出力データレコードを生成するのか等を指定するロジック（不図示）を含む。一例では、ノードは、ノードのロジック内で使用されるパラメータ及び／又は変数の値を利用者が入力することによってプログラム可能である。
【０１４１】
ノード内のロジックが実行可能ロジックへとコンパイルされ、各ノードがその実行可能ロジックの１つ又は複数の部分に対応するため、チャート自体が実行可能である。例えばシステムは、ノード内のロジックを実行可能ロジックへとコンパイルすることによって仕様（及び／又は仕様内のチャート）を変換する。チャート自体が実行可能であるため、チャート自体がデータレコードを処理することができ、停止され、開始され、休止され得る。システムは、例えばノード１１０２ａ〜１１０２ｇの何れが現在実行されているのかを追跡することによってフローチャート１１０２の状態も保つ。フローチャート１１０２の状態は、フローチャート１１０２によって表される実行ファイルの状態に対応する。例えばフローチャート１１０２内の各ノードは（実行可能ロジックの１つ又は複数の部分がその状態において実行可能である）実行可能ロジックの特定の状態を表す。フローチャート１１０２がキーの様々な値について実行される場合、システムは以下でより詳細に説明するように例えばインスタンスごとの状態を保つことによってキーの値ごとにフローチャート１１０２の状態を保つ。この例ではフローチャート１１０２が状態移行図を含み、その状態移行図では各入力データレコードがノード間の移行を駆動し、過去のデータレコードを処理することによって達する状態に基づいてデータレコードが評価される。フローチャート１１０２内のノード間のリンクはロジックの時間的なフローを表す。
【０１４２】
ノード１１０２ａは実行可能ロジックの開始を表す。ノード１１０２ａの完了後、フローチャート１１０２の状態は実行可能ロジックの１つ又は複数の他の部分を表すノード１１０２ｂに移行する。ノード１１０２ｂは待機ノード（以下、待機ノード１１０２ｂ）を含む。待機ノード１１０２ｂは、（待機ノード１１０２ｂに対応する）実行可能ロジックの一部が１つ又は複数の状態を満たす入力データレコードを待機する待機状態を表す。一例では、待機状態がフローチャート１１０２の別の状態の一部、例えばシステムが（待機状態を実装するために）待機ノードを実行し、次いで１つ又は複数の他のノードを実行する状態であり得る。待機ノード１１０２ｂによって表される実行可能ロジックの一部の完了後、システムは待機状態を終えて、決定を実施するための実行可能ロジックを表すノード１１０２ｃを実行する。この例ではノード１１０２ｃが決定ノードを含む。概して、決定ノードは決定を実行するためのロジック（例えば、ブール値について評価するロジック）を含むノードを含む。
【０１４３】
決定の結果に基づき、フローチャート１１０２の状態は（再びノード１１０２ａに状態を移行させる）ノード１１０２ｇ又は別の待機ノードであるノード１１０２ｄに移行する。待機ノード１１０２ｄによって表される実行可能ロジックの一部の完了後、フローチャート１１０２の状態は送信ノードを含むノード１１０２ｅに移行する。概して、送信ノードは別のシステムへのデータ伝送を引き起こすための実行可能ロジックを表すノードを含む。ノード１１０２ｅによって表される実行可能ロジックの一部の実行を完了した後、フローチャート１１０２の状態は終了ノードを含むノード１１０２ｆに移行する。概して、終了ノードは実行可能ロジックの実行が完了したことを表す。
【０１４４】
一例では待機ノードは、その始まりが待機ノードである状態間の移行、例えばある状態から別の状態への移行を表す。フローチャート１１０２内の全てのノードが状態移行を表す待機ノードを表す訳ではないため、この例ではフローチャート１１０２が状態移行図と異なる。むしろ一部のノードは、例えばフローチャート１１０２が既に特定の状態にあるとき実行されるアクションを表す。一部の例では、システムがフローチャート１１０２を処理して状態機械図又は状態機械命令を生成する。
【０１４５】
この例ではフローチャート１１０２が２つの状態、即ちノード１１０２ｂ、１１０２ｃ、１１０２ｇによって表される第１の状態とノード１１０２ｄ、１１０２ｅ、１１０２ｆによって表される第２の状態とを含む。この第１の状態では、システムが（ノード１１０２ｂによって表すように）特定のデータレコードを待機し、次いで（その始まりをノード１１０２ｄによって表す）第２の状態への（仕様１１００の及び／又はチャート１１０２の）移行又はノード１１０２ｇの実行を引き起こすノード１１０２ｃを実行する。第２の状態になると、システムは（ノード１１０２ｄによって表すように）特定のデータレコードを再び待機し、次いでノード１１０２ｅ、１１０２ｆを実行する。待機ノード以外のノードを含めることにより、フローチャート１１０２はデータレコードの時間的処理のロジックグラフを含む。この例ではチャート１１０２がリンク２ｉを含み、リンク２ｉは第１の状態から第２の状態へのチャート１１０２の移行を表し、ノード１１０２ｃからノード１１０２ｄへのデータのフローも表す。
【０１４６】
ノード１１０２ａ、１１０２ｂ、１１０２ｃに対応する第１の状態における実行可能ロジックの一部に関する利用者によって指定された実行順序を表すために、チャート１１０２はノード１１０２ａとノード１１０２ｂとの間のリンク１１０２ｊ及びノード１１０２ｂとノード１１０２ｃとの間のリンク１１０２ｋも含む。この例では、第１の状態における実行可能ロジックの一部（以下「第１の状態の実行可能ロジック」）がステートメント（例えば、ロジカルステートメントや命令等（本明細書では限定なしにまとめて「ステートメント」と呼ぶ））を含む。概して、実行順序は実行可能ロジック及び／又はステートメントが実行される順序を含む。ノード１１０２ａ、１１０２ｂ、１１０２ｃのそれぞれが、それらのステートメントの１つ又は複数に（例えば、第１の状態の実行可能ロジックの１つ又は複数の部分に）対応する。そのためリンク１１０２ｊは、ノード１１０２ａによって表される第１の状態の実行可能ロジック内のステートメントが、ノード１１０２ｂによって表される第１の状態の実行可能ロジック内の他のステートメントを実行する前にシステムによって実行されることを表すことにより、第１の状態の実行可能ロジックの実行順序を表す。リンク１１０２ｋも、ノード１１０２ｂによって表される第１の状態の実行可能ロジック内のステートメントが、ノード１１０２ｃによって表される第１の状態の実行可能ロジック内の他のステートメントを実行する前にシステムによって実行されることを表すことにより、第１の状態の実行可能ロジックの実行順序を表す。
【０１４７】
仕様１１００はキー１１０２ｈも含み、キー１１０２ｈはフローチャート１１０２がキー１１０２ｈを含む又はキー１１０２ｈに関連するデータレコードを処理することを識別する。この例ではキーとしてカスタム識別子（ＩＤ）が使用される。キー１１０２ｈは、例えばsubscriber_IDフィールド、customer_IDフィールド、session_IDフィールド等のデータレコードのフィールドの１つ（すなわち、データレコードフィールド）に対応し得る。この例ではcustomer_IDフィールドがキーフィールドである。特定のデータレコードについて、システムはそのデータレコードに関するキーフィールドの値を識別することによってそのデータレコードに関するキーの値を決定する。
【０１４８】
この例では、フローチャート１１０２が（例えば、フローチャート１１０２の構成時に指定される）指定の種類のデータレコードを受け入れる。この例では、フローチャート１１０２がキー１１０２ｈを含むデータレコードを受け入れる。この例では、フローチャート１１０２及びデータレコードがキーを共有する。概してフローチャートは、フローチャートのキーを含むデータレコードを処理するためのロジックを含むことによってそれらのデータレコードの種類を受け入れる。データレコードの処理が始まると、システムは例えばキーの新たな値ごとに（フローチャート内で表される）実行可能ロジックの状態を保つことにより、そのフローチャートに関するキーの新たな値ごとに新たなフローチャートインスタンスを開始する。システムは、特定のキー値に関してデータレコードに応答するようにフローチャートインスタンス（従って基礎を成す実行可能ロジック）を構成することによってデータレコードの処理を行う。一例では、フローチャートが顧客のショートメッセージサービス（ＳＭＳ）データレコードを受け入れる。特定の顧客ＩＤに関するフローチャートインスタンスがその顧客に関するデータレコードを管理する。入力データレコード内で遭遇する顧客ＩＤと同数のフローチャートインスタンスがあり得る。一部の例では、本明細書において記述されるシステムは、例えば、ユーザーがこのフローチャートの種々のコンポーネントに値を容易に入力することを可能にするために、フローチャート１１０２の構成のためのユーザーインターフェースを提供する。
【０１４９】
図１１を参照し、略図１１０７は例えばフローチャート１１０２（図１０）からシステムによって生成されるフローチャートインスタンス１１０３、１１０４、１１０５、及びデータレコード１１０６ａ、１１０６ｂ、１１０６ｃを含む。即ち、データレコード１１０６ａ、１１０６ｂ、及び１１０６ｃ内で検出される新たなキーごとにフローチャート１１０２の新たなコピー又はインスタンスが作成される。
【０１５０】
フローチャートインスタンス１１０３、１１０４、１１０５のそれぞれは「customer_id」キーに関連する。フローチャートインスタンス１１０３は、この例ではキーフィールドであるその「customer_id」フィールド内に「ＶＢＮ３４１９」の値を含むデータレコードを処理する。フローチャートインスタンス１１０４は、その「customer_id」フィールド内に「ＣＮＤ８９５４」の値を含むデータレコードを処理する。フローチャートインスタンス１１０５は、その「customer_id」フィールド内に「ＭＧＹ６２０３」の値を含むデータレコードを処理する。この例では、システムがフローチャートインスタンスごとに実行可能ロジックを再実行しない。むしろシステムは実行可能ロジックを実行し、次いでキーの個々の値に関する状態を保つことによってフローチャートインスタンスを実装する。従って、「フローチャートインスタンスがデータレコードを処理する」一例は、システムが（フローチャートによって表される）実行可能ロジックを実行し、キーの値ごとに状態を保ち、キーの特定の値に関連するデータレコードを（そのキーの特定の値に関する状態機械の状態に基づいて）処理することである。
【０１５１】
この例では、フローチャートインスタンス１１０３が図１０のノード１１０２ａ〜１１０２ｇにそれぞれ対応するノード１１０３ａ〜３ｇを含む。フローチャートインスタンス１１０４は、図１０のノード１１０２ａ〜１１０２ｇにそれぞれ対応するノード１１０４ａ〜４ｇを含む。フローチャートインスタンス１１０５は、図１０のノード１１０２ａ〜１１０２ｇにそれぞれ対応するノード１１０５ａ〜１１０５ｇを含む。
【０１５２】
フローチャートインスタンスはそれ自体が実行可能である。キーの特定の値に関連する入力データレコードをシステムが受信した後、そのキーの特定の値に関するフローチャートインスタンスが、例えばフローチャートインスタンス（又はフローチャートインスタンスの１つ又は複数のノード）に対応する実行可能ロジックの１つ又は複数の部分を実行するシステムによって入力データレコードを処理する。フローチャートインスタンスは、入力データレコードが終了ノード又は待機ノードに達するまで入力データレコードを処理し続ける。この例では、フローチャートインスタンスが、例えば終了ノード又は待機ノードに対応する実行可能ロジックの一部に達するまで入力データレコードを処理し続けるシステムによって入力データレコードを処理し続ける。入力データレコードが待機ノードに達する場合、フローチャートインスタンスは一定の時間が経過するまで又は適切な新たな入力データレコードが到着するまで一時停止する。概して、適切なデータレコードは（例えば、ノードのロジック内に含まれる）１つ又は複数の指定の条件又は基準を満たすデータレコードを含む。入力データレコードが終了ノードに達する場合、フローチャートインスタンスの実行が完了する。
【０１５３】
フローチャートインスタンスは独自のライフサイクルを有する。データレコードが到着すると、フローチャートインスタンスの現在の状態又はステータスが変化し、即ちデータレコードが決定をトリガーし、又はフローチャートインスタンスの始まりに戻り、又は顧客にメッセージが送信される。データレコードが終了ノードに達するとき、顧客のためのフローチャートインスタンスが終了する。
【０１５４】
この例では、システムがキーフィールドの「ＶＢＮ３４１９」の値（例えば、customer_id＝ＶＢＮ３４１９）についてフローチャートインスタンス１１０３を開始する。フローチャートインスタンス１１０３は、ＶＢＮ３４１９のcustomer_idを含むデータレコード１１０６ａ、１１０６ｂ、１１０６ｃのサブセットを処理する。この例では、フローチャートインスタンス１１０３がcustomer_idキーフィールド内で「ＶＢＮ３４１９」の値を有するデータレコード１１０６ａを処理する。フローチャートインスタンス１１０３のノード１１０３ａ、１１０３ｂ、１１０３ｃはデータレコード１１０６ａを処理する。フローチャートインスタンス１１０３の現在の状態は、ノード１１０３ｄの破線によって表されるようにデータレコードを待機する状態である。ノード１１０３ｄに達すると、フローチャートインスタンス１１０３はフローチャートインスタンス１１０３のノード１１０３ｄ、１１０３ｅ、１１０３ｆを通して処理するために顧客ＩＤ＝ＶＢＮ３４１９を有する別のデータレコードを待機する。
【０１５５】
システムは、キーの「ＣＮＤ８９５４」の値（例えば、customer_id＝ＣＮＤ８９５４）についてフローチャートインスタンス１１０４を開始する。フローチャートインスタンス１１０４は、ＣＮＤ８９５４のcustomer_idを含むデータレコード１１０６ａ、１１０６ｂ、１１０６ｃのサブセットを処理する。この例では、フローチャートインスタンス１１０４が待機ノード１１０４ｂ及び１１０４ｄを含む。各データレコードは、フローチャートインスタンスごとに１つの待機ノードの条件のみを満たすことができる。従って、フローチャートインスタンス１１０４はノード１１０４ｂからノード１１０４ｄまでcustomer_id＝ＣＮＤ８９５４を有するデータレコード１１０６ｂを処理し、次いでノード１１０４ｆに進む前に同じキーを有する第２のデータレコードを待機する。システムは、キーの「ＭＧＹ６２０３」の値（例えば、顧客ＩＤ＝ＭＧＹ６２０３）についてフローチャートインスタンス１１０５を開始する。フローチャートインスタンス１１０５は、ＭＧＹ６２０３のcustomer_idを含むデータレコード１１０６ａ、１１０６ｂ、１１０６ｃのサブセットを処理する。この例では、フローチャートインスタンス１１０５がノード１１０５ｂ〜１１０５ｄまでcustomer_id＝ＭＧＹ６２０３を有するデータレコード１１０６ｃを処理し、次いでメッセージが送信されるノード１１０５ｅに進む前に同じキーを有する第２のデータレコードを待機する。この例ではシステムが非待機ノードにおいて停止せず、従ってノード１１０５ｅで停止しないが、むしろメッセージを送信してノード１１０５ｆに進む。
【０１５６】
図１１の改変換態では、システムが単一のキー値について複数のフローチャートインスタンスを生成する。例えば、異なる開始日及び終了日を有する同じ顧客のための幾つかのフローチャートインスタンス又は様々なマーケティングキャンペーンについて同じ顧客のための幾つかのフローチャートインスタンスがあり得る。
【０１５７】
この例では、システムが状態データ、例えばインスタンスごとに何れのノードが現在実行されているのかを示すデータをデータリポジトリ又はメモリ内データグリッド内に記憶することによってインスタンスの状態を保つ。概して、状態データは状態を示すデータを含む。この例では、インスタンスがキーの値に関連する。データリポジトリ又はメモリ内データグリッドがキーの値を記憶する。システムは、キーの値ごとに状態データを記憶することによってインスタンスの状態を保つ。キーの特定の値に関するデータレコードの処理を完了すると、システムは（フローチャート１１０２内の）次のノードがそのキーの値に関する現在の状態を表すことを指定するためにデータリポジトリ内の状態データを更新する。次いで別のデータレコードが到着すると、システムはそのキーの値に関する現在の状態をデータリポジトリ内で探索し、そのキーの値に関する実行可能ロジックの現在の状態を表すノードに対応する実行可能ロジックの一部を実行する。
【０１５８】
図１２を参照する。論理フロー１１１２は、実行において上述の技術を使用して作成された長大レコードを使用する論理（例えば、上述のパレットを使用して生成された規則応用論理）の実行に基づいている。この例では、１つ又は複数の特定の加入者のデータレコードに含まれているデータレコードに基づいて、論理フロー１１１２は、種々のデータレコードトリガー及び動作を指定する。論理フロー１１１２は、種々の決定点（例えば、「加入者は５０通のＳＭＳメッセージを消費したか？」）を含んでいる。特定のキーについて、検出モジュールは、当該加入者のデータレコードに含まれているデータレコード（又はその欠如）に基づいて、且つ当該キーの実行可能論理の状態に基づいて、たどるべき論理フロー１１１２の分岐を決定する。通常、状態は、当該論理の実行中にその論理が遷移した先である特定のコンポーネント（例えば、特定のデータレコードトリガー又は特定動作）を指す。例えば、状態は、現在、特定のキーについて論理中のどのデータレコードトリガー又は動作が行われているかを示す。一部の例では、検出モジュールは、論理フロー１１１２中の分岐を選択する前に、指定時間にわたり待ち合わせる。この指定期間にわたり待ち合わせることにより、検出モジュールは、データレコードに挿入されている新しいデータレコードを分析する。
【０１５９】
この例では、論理フロー１１１２は、特定の加入者のサービスの起動後に動作モジュールがその後の２日間に当該特定加入者により消費されるＳＭＳメッセージの総数を監視する開始動作１１２０を行うことを指定するデータレコードトリガー１１１９を含んでいる。この例では、データレコード１１１９は、論理フロー１１１２により実行される規則に先行する条件である。データレコード１１１９を満たした後、動作モジュールは開始動作１１２０を実行する。検出モジュールは、長大レコード中の起動データレコードを検出することにより特定の加入者がデータレコードトリガー１１１９をいつ満たしたか決定し、且つ当該起動データレコードに関連付けられた加入者を決定する（加入者ＩＤにより）。
【０１６０】
この例では、加入者が最新２日間に少なくとも５０通のＳＭＳメッセージを消費した場合（例えば、データレコード中のＳＭＳ利用データレコード集約により示される）、データレコードトリガー１１１３が実行される。データレコードトリガー１１１３は提案された補充動作１１１４を実行する。後者は、動作モジュールにこの特定の加入者が補充することを促す。当該加入者が補充を行ったとき、その特定加入者のデータレコード中の入力が当該補充を表すデータレコードにより更新される。このデータレコードの更新は、論理フロー１１１２にデータレコードトリガー１１１５を実行させる。この実行は、正常補充後にパケット提案ＳＭＳを当該加入者に送る動作１１１６の実行を指定する。通常、パケット提案は、パッケージ又は一括サービスの購入提案である。
【０１６１】
ユーザーがパッケージ提案ＳＭＳに対する応答を送ったとき、データレコードは、その応答を表し、且つその応答が３時間未満後に受信されることを表すデータレコードにより更新される。検出モジュールは、データレコードの更新を検出し、且つデータレコードトリガー１１１７の実行を引き起こす。データレコードトリガー１１１７は、その応答が１０時間未満後に受信された場合に当該加入者がパッケージ購入を達成したときにキャンペーン（その特定加入者向けの）を終了する動作１１１８の実行を指定する。その特定加入者が動作１１１６に応答を送らなかったことを当該データレコード中のその特定加入者の入力が示す場合、論理フロー１１１２もその特定加入者向けのキャンペーンを終了する動作１１２５を指定する。
【０１６２】
１つの例では、データレコード中の特定加入者に関する入力は、例えば、再補充データレコードの欠如により又は補充の欠如を示す派生データレコードにより当該加入者が補充を行わなかったことを示す。この例では、論理フロー１１１２は、例えば、当該ユーザーが次の３時間以内に補充を行うか否か監視するために３時間待ち合わせるデータレコードトリガー１１２３を指定する。３時間後、データレコードトリガー１１２３は、補充リマインダＳＭＳを当該加入者に送るリマインダ動作１１２４の実行を引き起こす。この加入者がリマインダＳＭＳに応答しなかった場合、論理フロー１１１２は、その特定加入者向けのキャンペーンを終了する動作１１２６を指定する。
【０１６３】
動作１１２０に応じて、その特定加入者に関する入力は、当該加入者が最新２日中に少なくとも５０通のＳＭＳを消費しなかったことを表示することができる。この入力は、５０通のＳＭＳの消費の欠如を示す派生データレコードにより、又は当該消費が５０通のＳＭＳ未満であったことを示すＳＭＳ利用集約データレコードによりこれを示すことができる。この例では、論理フロー１１１２は、５日間待ち合わせ、次にリマインダＳＭＳを送る動作１１２２を実行するデータレコードトリガー１１２１を含む。リマインダを送った後に、当該加入者が次の５日以内にやはり５０通のＳＭＳを消費しなかった場合（例えば、データレコード中のその加入者のデータレコードにより示される）、論理フロー１１１２は、顧客リカバリチームにアラートを送り（例えば、消費者が当該サービスを利用していないことをチームに通知するために）、且つその特定加入者向けのキャンペーンを終了する動作１１２８を実行するデータレコードトリガー１１２７を指定する。
【０１６４】
図１３を参照する。システム（例えば、本明細書において記述されるＣＤＡシステム、例えば、システム１００）は、複数の相異なるデータストリーム中のデータ項目の処理においてプロセス１２００を実行する。作動中、このシステムは、第１、第２及び第３パラメータ化アプリケーション（例えば、パラメータ化アプリケーション）にアクセスする（１２０２）。この例では、パラメータ化アプリケーションのそれぞれは、そのパラメータ化アプリケーションの１つ又は複数の特性を規定する１つ又は複数のパラメータを含む。
【０１６５】
このシステム（又は上述のシステムの収集モジュール１１４）は、データレコードを処理する収集モジュール（例えば、上述のシステムの収集モジュール１１４）を実行するために第１パラメータ化アプリケーションの１つ又は複数のパラメータの１つ又は複数の指定された値により第１パラメータ化アプリケーションを実行する（１２０４）。１つの例では、第１パラメータ化アプリケーションは、データフローグラフ９１０（図９）を含む。この例では、データフローグラフ９１０の１つ又は複数のパラメータの値は、部分９０２、９０４、９０６、９０８の１つ又は複数への値の入力により指定される。この例では、部分９０２、９０４、９０６、９０８は、部分９０２、９０４、９０６、９０８の１つ又は複数の選択可能及び／又は編集可能領域への１つ又は複数の値の入力を与える。これらの選択可能及び／又は編集可能領域は、例えば、これらのパラメータの値の設定を可能にするためにデータフローグラフ９１０のパラメータにマッピングされるか又はその他の方法により関連付けられる。
【０１６６】
システム（又は上述のシステムの収集モジュール１１４）は、それぞれお互いに別々の（例えば、相異なる）複数のデータストリームからデータ項目（例えば、データレコード）を収集する（１２０６）ことにより処理を行う。この例では、１つのストリームから収集されたデータ項目の第１の部分のフォーマットは、異なるストリームから収集されたデータ項目の第２の部分のフォーマットとは異なる。さらに、データ項目はキーの値に関連付けられ、したがってキー付きデータとして呼称され得る。また、このシステム（又は上述のシステムの収集モジュール１１４）は、第１パラメータ化アプリケーションの１つ又は複数の仕様に従ってデータ項目の第１の部分及びデータ項目の第２の部分を変換する（１２０８）。１つの例では、このシステムは、データを収集モジュール、検出モジュール及び／又は動作モジュール（例えば、上述した収集モジュール１１４、検出モジュール１１６及び／又は動作モジュール１１８）に適するフォーマットにフォーマット化することによりデータ項目（又はその一部）を変換する。これを行うことにより、このシステムは、上述したように追加技術の必要なしにデータ統合及びデータレコード管理の準備の問題を解決する。この機能は、前述したようにエンドツーエンド統合を単純化し、且つ加速する。特に、受信したデータレコードはフォーマット化及び１回の検証（例えば、収集モジュール１１４による）のみを必要とし、次に収集モジュール、検出モジュール及び動作モジュール（例えば、上述した収集モジュール１１４、検出モジュール１１６及び／又は動作モジュール１１８）により処理され得る。従来の方法では、別々のシステムが収集、検出及び動作を行う。したがって、データは収集局面のためにフォーマット化される必要があり、次に検出局面に適するフォーマットに再びフォーマット化され、さらに動作局面に適するフォーマットに再びフォーマット化される。この繰り返されるフォーマット化及び再フォーマット化は、データレコードが受信されたときの収集、検出及び動作の実行及びリアルタイム（又は準リアルタイム）動作の記録に相当な遅延をもたらす。この繰り返されるフォーマット化及び再フォーマット化は、相当な帯域幅及びシステムメモリ資源も消費する。したがって従来の方法に対比して、本明細書において記述されるシステムは、帯域幅及びメモリ消費の低減並びにリアルタイム動作を実行する処理における待ち時間の低減をもたらす。
【０１６７】
収集モジュールは、よりゆっくり変化するデータ（例えば、データメモリからのプロフィールデータ）による受信したデータレコードの構文解析、検証及び補強（必要に応じて行われる）による変換も行う。前述したように、この補強は、論理実行のために必要なデータを取り出すデータベース検索を行う遅延なしに、受信したデータレコードに対する論理のリアルタイム実行を可能にするデータレコードパレットにおけるすべてのデータレコード（又はその部分集合）の生成を含む。このシステムは、例えばリアルタイム検出を可能にするためにこれらの検証され、且つ補強されたデータレコードをメモリに格納する。このシステムは、保管及び正常な回復を保証するためにこれらの検証され、且つ補強されたデータレコードをディスクにも格納する。収集モジュールは、複数のデータソース（及び／又はほとんどすべての種類のデータソース）を処理するように構成され、したがってＣＤＡシステムへの迅速且つ自律的統合を可能にしつつ、自由裁量により膨大なデータ量、低遅延、及び複数のデータフォーマットによる複雑性に対処する。収集されたデータの変換に続いて、収集モジュールは、変換されたデータ項目を表す入力をキューに追加する（１２１０）。次にこのキューは、このデータ項目を第２パラメータ化アプリケーション、例えば、検出モジュールに転送する。
【０１６８】
この例では、このシステムは、例えば、検出モジュール（例えば、上述した検出モジュール１１６）を実行するために、第２パラメータ化アプリケーションを実行する（１２１２）。特に、このシステムは、キュー中の変換されたデータを処理するために第２パラメータ化アプリケーションの１つ又は複数のパラメータの１つ又は複数の指定値により第２パラメータ化アプリケーションを実行する。この例では、第２パラメータ化アプリケーションは、規則及びこの規則のそれぞれの条件を含む仕様を表す。また、この仕様の状態は、当該キーのそれぞれの値について維持される。
【０１６９】
１つの例では、キュー中の変換されたデータ項目の処理は以下を含む。キーの特定の値に関連付けられた１つ又は複数の変換されたデータ項目について、このシステム（及び／又はこのシステムの検出モジュール）は、１つ又は複数の変換されたデータ項目の少なくとも１つが仕様の規則の少なくとも１つの１つ又は複数の条件を満たすことを検出する（１２１４）。検出に応じて、検出モジュールは、１つ又は複数の動作の実行を指定する出力を生成し、その出力をキューに追加する。例えば、この出力はメッセージ又はユーザーに対する申し入れである。１つの例では、この出力は、この出力に関する１つ又は複数のユーザー動作（又はその欠如）とともにＣＤＡシステムにより追跡される。これらのユーザー動作の追跡は、フィードバック検索をＣＤＡシステムに与える。その過程においてＣＤＡシステムは出力を追跡し、それに続いて出力の送付、出力との１つ又は複数のユーザー相互作用、出力に関する１つ又は複数の動作等を示すデータ（例えば、外部システムから、又はＣＤＡシステムそれ自体から）を受信する。検出モジュールは、キーの特定の値に関して、現状からそれに続く状態への仕様の遷移も引き起こす（１２１６）。例えば、図９の部分１００４は、実行可能な論理の現状を示す状態部分１００６ａを表示する。部分１００４は、実行可能な論理の次の状態又は遷移先の状態を示す状態部分１００８ａも表示する。
【０１７０】
この例では、このシステムは、また、第３パラメータ化アプリケーションの１つ又は複数のパラメータの１つ又は複数の指定値により第３パラメータ化アプリケーションを実行して（１２１８）、以下を含む作業を行う：もう１つの命令を送って１つ又は複数の動作の実行を引き起こすこと。この例では、第３パラメータ化アプリケーションは、動作モジュールを実行する。前述したように、この動作モジュールは出力をカスタマイズし、それをユーザーに送り、及び／又はカスタマイズされた出力を外部システムに転送する。
【０１７１】
上記の技法はコンピュータ上で実行するためのソフトウェアを使用して実装することができる。例えばソフトウェアは、（分散、クライアント／サーバ、グリッド等の様々なアーキテクチャのものとすることができる）１つ又は複数のプログラムされた又はプログラム可能なコンピュータシステム上で実行される１つ又は複数のコンピュータプログラムによって手続きを形成し、かかるコンピュータシステムは、少なくとも１つのプロセッサ、少なくとも１つのデータ記憶システム（揮発性及び不揮発性のメモリ及び／又は記憶素子を含む）、少なくとも１つの入力装置又はポート、及び少なくとも１つの出力装置又はポートをそれぞれ含む。ソフトウェアは、例えばチャート及びフローチャートの設計及び構成に関係する他のサービスを提供するより大きいプログラムの１つ又は複数のモジュールを形成し得る。チャートのノード、リンク、及び要素は、コンピュータ可読媒体内に記憶されるデータ構造又はデータリポジトリ内に記憶されるデータモデルに準拠する他の編成済みデータとして実装することができる。
【０１７２】
本明細書に記載した技法はデジタル電子回路、又はコンピュータハードウェア、ファームウェア、ソフトウェア、若しくはその組合せによって実装することができる。機器はプログラム可能なプロセッサによって実行するために機械可読記憶装置（例えば、非一時的機械可読記憶装置、機械可読ハードウェア記憶装置等）の中に有形に具体化され又は記憶されるコンピュータプログラム製品によって実装することができ、方法のアクションは、入力データに作用して出力を生成することによって機能を実行するために命令のプログラムを実行するプログラム可能なプロセッサによって実行され得る。本明細書に記載した実施形態及び特許請求の範囲に記載の他の実施形態並びに本明細書に記載した技法は、データ及び命令をデータ記憶システムとの間でやり取りするために結合される少なくとも１つのプログラム可能なプロセッサと、少なくとも１つの入力装置と、少なくとも１つの出力装置とを含むプログラム可能なシステム上で実行可能な１つ又は複数のコンピュータプログラムによって有利に実装することができる。各コンピュータプログラムは高水準手続き型プログラミング言語若しくはオブジェクト指向プログラミング言語、又は所望の場合はアセンブリ言語若しくは機械言語によって実装することができ、何れにしても言語はコンパイラ型言語又はインタープリタ型言語とすることができる。
【０１７３】
コンピュータプログラムを実行するのに適したプロセッサは、汎用マイクロプロセッサ及び専用マイクロプロセッサの両方、並びに任意の種類のデジタルコンピュータの１つ又は複数の任意のプロセッサを例として含む。概して、プロセッサは読取専用メモリ若しくはランダムアクセスメモリ又はその両方から命令及びデータを受信する。コンピュータの必須要素は、命令を実行するためのプロセッサ並びに命令及びデータを記憶するための１つ又は複数のメモリ装置である。概してコンピュータはデータを記憶するための１つ又は複数の大容量記憶装置、例えば磁気ディスク、光磁気ディスク、光ディスクも含み、又はそこからデータを受信するために、そこにデータを転送するために、若しくはその両方を行うためにそれらに動作可能に結合される。コンピュータプログラム命令及びデータを具体化するためのコンピュータ可読媒体は、半導体メモリ装置、例えばＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ装置、磁気ディスク、例えば内蔵ハードディスクやリムーバブルディスク、光磁気ディスク、及びＣＤ  ＲＯＭディスクやＤＶＤ−ＲＯＭディスクを例として含むあらゆる形式の不揮発性メモリを含む。プロセッサ及びメモリは専用論理回路によって補うことができ又は専用論理回路に組み込むことができる。上記のものの何れもＡＳＩＣ（特定用途向け集積回路）によって補うことができ又はＡＳＩＣに組み込むことができる。
【０１７４】
利用者との対話を可能にするために、利用者に情報を表示するためのディスプレイ装置、例えばＬＣＤ（液晶ディスプレイ）モニタ、並びに利用者がそれによりコンピュータに入力を与えることができるキーボード及びポインティング装置、例えばマウスやトラックボールを有するコンピュータ上で実施形態を実装することができる。利用者との対話を可能にするために他の種類の装置も使用することができ、例えば利用者に与えられるフィードバックは任意の形式の感覚フィードバック、例えば視覚フィードバック、聴覚フィードバック、触覚フィードバックとすることができ、利用者からの入力は音響入力、音声入力、又は触覚入力を含む任意の形式で受信することができる。
【０１７５】
実施形態は、例えばデータサーバとしてバックエンドコンポーネントを含む計算システムによって、ミドルウェアコンポーネント、例えばアプリケーションサーバを含む計算システムによって、フロントエンドコンポーネント、例えば利用者がそれにより実施形態の実装と対話することができるグラフィカルユーザインタフェースやウェブブラウザを有するクライアントコンピュータを含む計算システムによって、又はかかるバックエンドコンポーネント、ミドルウェアコンポーネント、若しくはフロントエンドコンポーネントの任意の組合せを含む計算システムによって実装することができる。システムのコンポーネントは、デジタルデータ通信の任意の形式又は媒体、例えば通信ネットワークによって相互接続され得る。通信ネットワークの例はローカルエリアネットワーク（ＬＡＮ）及び広域ネットワーク（ＷＡＮ）、例えばインターネットを含む。
【０１７６】
システム及び方法又はその一部は、ハイパーテキスト転送プロトコル（ＨＴＴＰ）を利用するインターネット上のサーバの集合である「ワールドワイドウェブ」（ウェブ又はＷＷＷ）を使用し得る。ＨＴＴＰは、テキスト、グラフィックス、画像、音声、ビデオ、ハイパーテキストマーク付け言語（ＨＴＭＬ）、プログラム等の様々な形式の情報であり得る資源へのアクセスを利用者に提供する既知のアプリケーションプロトコルである。利用者によってリンクが指定されると、クライアントコンピュータがウェブサーバにＴＣＰ／ＩＰリクエストを行い、ＨＴＭＬに従ってフォーマットされた別のウェブページであり得る情報を受信する。利用者は画面上の指示に従うことによって、特定のデータを入力することによって、又は選択されたアイコンをクリックすることによって同じサーバ又は他のサーバ上の他のページにアクセスすることもできる。所与のコンポーネントに関する選択肢を利用者が選択できるようにするために、ウェブページを使用する実施形態にはチェックボックスやドロップダウンボックス等、当業者に知られている任意の種類の選択デバイスを使用できることにも留意すべきである。UNIXマシンを含めサーバは様々なプラットフォーム上で実行されるが、Windows 2000/2003、Windows NT、Sun、Linux、Macintosh等の他のプラットフォームも使用され得る。コンピュータの利用者はFirefox、Netscape Navigator、Microsoft Internet Explorer、Mosaicブラウザ等のブラウジングソフトウェアを使用することによってウェブ上のサーバ又はネットワーク上で入手可能な情報を閲覧することができる。計算システムはクライアント及びサーバを含み得る。クライアントとサーバとは概して互いに離れており、典型的には通信ネットワークを介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され互いにクライアント−サーバ間の関係を有するコンピュータプログラムによって生じる。
【０１７７】
他の実施形態も本明細書及び特許請求の範囲の範囲及び趣旨に含まれる。例えばソフトウェアの性質により、上記の機能はソフトウェア、ハードウェア、ファームウェア、ハードワイヤリング、又はそれらのものの何れかの組合せを使用して実装することができる。機能の一部が様々な物理的位置に実装されるように、機能を実装する特徴は分散させることを含め様々な位置に物理的に配置することもできる。本明細書及び本願の全体を通して「１つの（a）」という語を使用することは限定的な意味で使用するのではなく、従って「１つの（a）」という語について複数の意味又は「１つ又は複数」の意味を排除することは意図しない。加えて、仮特許出願に対して優先権が主張される限りにおいて、仮特許出願は限定的ではなく本明細書に記載した技法をどのように実装し得るのかについての例を含むことを理解すべきである。
【０１７８】
本発明の幾つかの実施形態を説明してきた。それでもなお、特許請求の範囲及び本明細書に記載した技法の趣旨及び範囲から逸脱することなしに様々な修正を加えることができることを当業者なら理解されよう。
【図１】
2020514881.tif 000004
【図２Ａ】
2020514881.tif 000005
【図２Ｂ】
2020514881.tif 000006
【図２Ｃ】
2020514881.tif 000007
【図３Ａ】
2020514881.tif 000008
【図３Ｂ】
2020514881.tif 000009
【図３Ｃ】
2020514881.tif 000010
【図４】
2020514881.tif 000011
【図５Ａ】
2020514881.tif 000012
【図５Ｂ】
2020514881.tif 000013
【図６】
2020514881.tif 000014
【図７】
2020514881.tif 000015
【図８】
2020514881.tif 000016
【図９】
2020514881.tif 000017
【図１０】
2020514881.tif 000018
【図１１】
2020514881.tif 000019
【図１２】
2020514881.tif 000020
【図１３】
2020514881.tif 000021
【国際調査報告】
2020514881.tif 000022
2020514881.tif 000023