(57)【要約】  データ項目のストリームのデータ項目を処理するためのデータ処理システムによって実装される方法であって、実行可能ロジックを表す仕様にアクセスすることであって、キーの特定の値に関する仕様の状態は、その状態において実行可能な実行可能ロジックの１つ又は複数の部分を指定する、アクセスすることと、データのストリームのデータ項目を入力装置又はポート上で受信することと、ストリームのデータ項目の第１のものについて、そのデータ項目の第１のものに関連するキーの値に関する仕様の第１の状態を識別することと、第１の状態に関連するものとして仕様内で表される実行可能ロジックの１つ又は複数の部分に従ってデータ項目の第１のものをデータ処理システムによって処理することとを含む方法。
2019521421.tif 000002
【特許請求の範囲】
【請求項１】
キーに関連する仕様に従ってデータ項目のストリームのデータ項目を処理するためのデータ処理システムによって実装される方法であって、データ項目は、前記キーの値に関連し、前記仕様の状態は、前記キーのそれぞれの値について保たれ、前記仕様は、データ記憶システム内に記憶されている実行可能ロジックを表し、前記方法は、
前記実行可能ロジックを表す前記仕様にアクセスすることであって、前記キーの特定の値に関する前記仕様の状態は、前記状態において実行可能な前記実行可能ロジックの１つ又は複数の部分を指定する、アクセスすることと、
データのストリームのデータ項目を入力装置又はポート上で受信することと、
前記ストリームの前記データ項目の第１のものについて、前記データ項目の前記第１のものに関連する前記キーの値に関する前記仕様の第１の状態を識別することと、
前記第１の状態に関連するものとして前記仕様内で表される実行可能ロジックの１つ又は複数の部分に従って前記データ項目の前記第１のものを前記データ処理システムによって処理することであって、
前記仕様の１つ又は複数の部分を表示させること、
前記実行可能ロジックの前記１つ又は複数の部分を前記データ項目の前記第１のものに適用して結果データを得ること、
前記仕様の前記１つ又は複数の部分の少なくとも１つが表示された状態で前記結果データの少なくとも一部を表示させること、及び
前記データ項目の前記第１のものに関する前記キーの前記値に関して前記仕様を前記第１の状態から第２の状態に移行させること
を含む、処理することと
を含む、方法。
【請求項２】
前記実行可能ロジックを実行することを更に含む、請求項１に記載の方法。
【請求項３】
前記実行可能ロジックの前記１つ又は複数の部分は、前記実行可能ロジックの１つ又は複数の第１の部分を含み、前記仕様の前記１つ又は複数の部分は、前記仕様の第１の部分を含み、前記結果データは、第１の結果情報を含み、前記方法は、
前記実行可能ロジックを実行することと、
前記実行可能ロジックが実行され続けるとき、前記データ項目の前記第１のものよりも前記ストリーム内で後であり、且つ前記キーの前記値にも関連する前記データ項目の第２のものを受信することと、
前記第１の状態から前記第２の状態への前記移行に基づいて、前記第２の状態に関連する前記実行可能ロジックの１つ又は複数の第２の部分に従って前記データ項目の前記第２のものを処理することであって、前記実行可能ロジックの前記１つ又は複数の第２の部分は、前記仕様の第２の部分として表される、処理することと、
前記処理に基づいて、前記データ項目の前記第２のものを処理した１つ又は複数の結果を示す第２の結果データを得ることと、
前記仕様の前記第２の部分と共に前記第２の結果データの少なくとも一部を表示させることと
を含む、請求項１に記載の方法。
【請求項４】
検査データの項目の組にアクセスすることと、
前記組の選択されたものから、検査データの第２の項目の前に出現する検査データの第１の項目を有するほぼリアルタイムの検査データのストリームをシミュレートすることと
を含む、請求項１に記載の方法。
【請求項５】
データ項目の前記ストリームを受信することは、前記シミュレートされたストリームを受信することを含む、請求項４に記載の方法。
【請求項６】
前記実行可能ロジックの前記１つ又は複数の部分を前記データ項目の前記第１のものに適用することにより、前記仕様によって表される規則の実行の精度を検査することを含む、請求項１に記載の方法。
【請求項７】
規則の実行の精度の前記検査は、前記データ項目の前記第１のものの一部が前記データ処理システムによって処理されていないと判定すること、前記規則の部分間の競合が存在すると判定すること、前記規則の一部が、前記データ項目の前記第１のものについて満たされる可能性が低い条件を指定すると判定すること、及び前記規則の一部が、標的とする処理目標と異なる方法で前記データ項目の前記第１のものの一部を処理すると判定することの１つ又は複数を含む、請求項６に記載の方法。
【請求項８】
前記キーの前記値は、第１の値を含み、前記方法は、
検査データの前記組から、前記キーの第２の値に関連する組を選択することと、
前記第２のキーに関する前記組内の検査データを使用してシミュレートされているストリームに対して、前記キーの前記第２の値に関する前記実行可能ロジックのインスタンスを実行することと
を含む、請求項４に記載の方法。
【請求項９】
前記実行可能ロジックの前記第１の状態を表す前記仕様の前記部分から、前記第２の状態を表す前記仕様の他の部分への移行の視覚的表現を表示させることを含む、請求項１に記載の方法。
【請求項１０】
前記ストリームの前記データ項目の前記第１のもののユーザ選択を受信することと、
前記データ処理システムによって現在処理されている前記ストリームの前記データ項目の前記第１のものの指示を表示させることと、
前記結果データを得るために前記データ項目の前記第１のものに現在適用されている前記実行可能ロジックの前記１つ又は複数の部分の指示を表示させることと
を更に含む、請求項１に記載の方法。
【請求項１１】
前記結果データの前記一部を所定の参照データと比較することと、
前記結果データの前記一部と前記所定の参照データとの間にずれが存在するかどうか又は前記ずれが存在しないかどうかを判定することと、
前記結果データの前記一部と前記所定の参照データとの間にずれが存在するかどうか又は前記ずれが存在しないかどうかの前記判定に基づいて、前記結果データの前記一部が前記所定の参照データと合致するかどうかの指示を出力することと
を更に含む、請求項１に記載の方法。
【請求項１２】
前記データ処理システムによって現在処理されている前記ストリームの前記データ項目の前記第１のものを所定の参照データ項目と比較することと、
現在処理されている前記ストリームの前記データ項目の前記第１のものと前記所定の参照データ項目との間にずれが存在するかどうか又は前記ずれが存在しないかどうかを判定することと、
現在処理されている前記ストリームの前記データ項目の前記第１のものと前記所定の参照データ項目との間にずれが存在するかどうか又は前記ずれが存在しないかどうかの前記判定に基づいて、現在処理されている前記ストリームの前記データ項目の前記第１のものが前記所定の参照データ項目と合致するかどうかの指示を出力することと
を更に含む、請求項１０に記載の方法。
【請求項１３】
前記結果データを得るために前記データ項目の前記第１のものに現在適用されている前記実行可能ロジックの前記１つ又は複数の部分を所定の参照実行可能ロジックと比較することと、
前記データ項目の前記第１のものに現在適用されている前記実行可能ロジックの前記１つ又は複数の部分と前記所定の参照実行可能ロジックとの間にずれが存在するかどうか又は前記ずれが存在しないかどうかを判定することと、
前記データ項目の前記第１のものに現在適用されている前記実行可能ロジックの前記１つ又は複数の部分と前記所定の参照実行可能ロジックとの間にずれが存在するかどうか又は前記ずれが存在しないかどうかの前記判定に基づいて、前記結果データを得るために前記データ項目の前記第１のものに現在適用されている前記実行可能ロジックの前記又は複数の部分が前記所定の参照実行可能ロジックと合致するかどうかの指示を出力することと
を更に含む、請求項１０に記載の方法。
【請求項１４】
キーに関連する仕様に従ってデータ項目のストリームのデータ項目を処理するためのデータ処理システムによって実装される方法であって、データ項目は、前記キーの値に関連し、前記仕様の状態は、前記キーのそれぞれの値について保たれ、前記仕様は、データ記憶システム内に記憶されている実行可能ロジックを表し、前記方法は、
前記実行可能ロジックを表す前記仕様にアクセスすることであって、前記キーの特定の値に関する前記仕様の状態は、前記状態において実行可能な前記実行可能ロジックの１つ又は複数の部分を指定する、アクセスすることと、
データのストリームのデータ項目を入力装置又はポート上で受信することと、
前記ストリームの前記データ項目の第１のものについて、前記データ項目の前記第１のものに関連する前記キーの値を識別することと、
前記仕様が、前記キーの前記値に関する待機状態に関連すると識別することであって、前記待機状態は、前記実行可能ロジックが、１つ又は複数のデータ項目であって、前記キーの前記値に関連し、且つ前記ストリーム内の前記１つ又は複数のデータ項目の前に位置する１つ又は複数の他のデータ項目から時間において隔てられる１つ又は複数のデータ項目を待機するように構成される状態を含む、識別することと、
前記待機状態に関連するものとして前記仕様内で表される実行可能ロジックの１つ又は複数の部分に従って前記データ項目の前記第１のものを少なくとも１つのプロセッサで処理することと、
前記待機状態に関連する実行可能ロジックの１つ又は複数の部分に従った前記データ項目の前記第１のものの前記処理の結果を示すデータの少なくとも一部を表示させることと
を含む、方法。
【請求項１５】
前記仕様は、複数のノードを有するフローチャートを含み、前記ノードの少なくとも１つは、前記待機状態を表す待機ノードを含み、前記フローチャートは、前記ノードの第１のものと前記ノードの第２のものとの間のリンクを含み、前記リンクは、前記ノードの前記第１のものによって表される前記実行可能ロジックの１つ又は複数の第１の部分を実行することから、前記ノードの前記第２のものによって表される前記実行可能ロジックの１つ又は複数の第２の部分を実行することへの前記実行可能ロジックの移行を表す、請求項１４に記載の方法。
【請求項１６】
ディスプレイ装置上にレンダリングされるとき、前記フローチャートを実行するための開始コントロールを含み、且つ前記フローチャートも含むグラフィカルユーザインタフェースのためのデータを生成することと、
前記開始コントロールの選択を示すデータを受信することと、
前記受信されるデータに応答して、
前記データ項目の前記第１のものに対して、前記第１のノードによって表される前記実行可能ロジックの前記１つ又は複数の第１の部分を実行すること、及び
前記第１のノードによって表される前記実行可能ロジックの前記１つ又は複数の第１の部分で前記データ項目の前記第１のものを処理した結果を示す結果データを表示するように前記グラフィカルユーザインタフェースを更新させることであって、前記結果データは、前記フローチャート内の前記第１のノードと並べて表示される、更新させること
を含む操作を実行することによって前記フローチャートを実行することと
を含む、請求項１４に記載の方法。
【請求項１７】
前記グラフィカルユーザインタフェースのための前記データは、停止コントロールを表示するためのデータを含み、前記方法は、
前記停止コントロールの選択を示すデータを受信することと、
前記フローチャートの実行を一時停止することと
を含む、請求項１４に記載の方法。
【請求項１８】
状態機械を実装するためのデータ処理システムによって実行される方法であって、前記状態機械は、キーの各値について、前記値に関連するデータレコードを処理するように構成され、前記方法は、
（ｉ）ノードと１つ又は複数のリンクとを有するチャート、及び（ｉｉ）前記ノードの１つ又は複数に関して１つ又は複数の論理表現を入力又は編集するための１つ又は複数の部分を１つ又は複数のエディタインタフェース内に表示することであって、前記ノードの前記１つ又は複数は、前記状態機械の特定の状態に対応し、論理表現は、前記状態機械が前記特定の状態にある場合のデータレコードの少なくとも部分的な処理を表し、
前記ノードの１つと前記ノードの別のものとの間のリンクは、１つの状態から別の状態への前記状態機械の移行を表す、表示することと、
状態機械を実装するための実行可能ロジックへと前記１つ又は複数の論理表現及び前記チャートを変換することであって、前記状態機械は、データレコードが断続的に受信されるとき、
前記データレコード内の１つ又は複数のフィールドを評価して前記キーの値を識別することと、
前記キーの各値について、
前記キーの前記値が基づく１つ又は複数のフィールドを含む１つ又は複数の第１のデータレコードを処理することであって、前記キーの前記値に関する前記状態機械の現在の状態に対応する１つ又は複数のノードに関する１つ又は複数の論理表現に従う、処理することと、
前記チャートのリンクに従って、前記断続的に受信されるデータレコードの１つ又は複数の第２のデータレコードを処理するための別の状態に移行することであって、前記１つ又は複数の第２のデータレコードは、前記キーの前記値が基づく前記１つ又は複数のフィールドを含み、前記１つ又は複数の第２のデータレコードは、前記１つ又は複数の第１のデータレコードの後に受信される、移行することと
のためのものである、変換することと
を含む、方法。
【請求項１９】
データのストリームのデータ項目を処理するためのデータ処理システムによって実装される方法であって、前記処理は、
データのストリームのデータ項目を処理するための実行可能ロジックを表す仕様を受信することであって、前記仕様は、キーに関連し、データ項目は、前記キーの値に関連し、前記実行可能ロジックの状態は、前記キーのそれぞれの値について保たれ、
前記仕様は、ノード及び１つ又は複数のリンクを含み、１つ又は複数の第１のノードは、前記キーの値に関する前記実行可能ロジックの第１の状態を表し、前記第１の状態では、前記実行可能ロジックの第１の部分は、前記キーの値に関連する前記データ項目の第１のものに対して実行可能であり、
第２のノードは、前記キーの前記値に関する前記実行可能ロジックの第２の状態を表し、前記第２のノードの１つは、前記第２の状態において前記キーの前記値を有する前記データ項目の第２のものを待機するように構成される前記実行可能ロジックの一部を表し、前記データ項目の前記第２のものは、前記ストリーム内の前記データ項目の前記第１のものの後に配置されることによって前記データ項目の前記第１のものから時間において隔てられ、前記第２のノードの別のものは、前記第２の状態において１つ又は複数のアクションの実行を引き起こすように構成される前記実行可能ロジックの別の部分を表し、
前記１つ又は複数の第１のノードの１つと前記第２のノードの１つとの間のリンクは、前記第１の部分が実行可能である前記第１の状態から、前記実行可能ロジックが前記データ項目の前記第２のものを待機するように構成される前記第２の状態への、前記キーの前記値に関する前記実行可能ロジックの状態移行を表す、受信することと、
前記キーの各値について、前記値に関連し、且つデータのストリーム内で時間において隔てられるデータ項目を処理するための実行可能ロジックへと前記仕様を変換することと
を含む、方法。
【請求項２０】
キーに関連し、且つデータ項目を処理するための実行可能ロジックを表す仕様に従ってデータのストリームの前記データ項目を処理するためのデータ処理システムによって実装される方法であって、データ項目は、前記キーの値に関連し、前記仕様の状態は、前記キーの複数の値について保たれ、前記処理は、
前記仕様にアクセスすることであって、前記仕様の状態は、前記状態において実行可能な前記実行可能ロジックの１つ又は複数の部分を表す、アクセスすることと、
前記データ項目の第１のデータ項目を受信することであって、前記第１のデータ項目は、前記キーの特定の値に関連する、受信することと、
前記キーの前記特定の値に関する第１の状態を識別することと、
前記第１の状態において実行可能であるものとして前記仕様によって指定される前記実行可能ロジックの１つ又は複数の部分に従って前記第１のデータ項目を処理することと、
前記仕様の前記第１の状態から、前記実行可能ロジックの１つ又は複数の他の部分が実行可能である第２の状態への、前記キーの前記特定の値に関する移行を識別することと、
前記キーの前記特定の値と異なり、且つ前記キーの前記特定の値に関連しない前記キーの別の値に関連する介在データ項目を受信することと、
前記介在データ項目に関する前記キーの前記他の値に関連する前記仕様の所与の状態を識別することと、
前記所与の状態において実行可能であるものとして前記仕様によって指定される前記実行可能ロジックの１つ又は複数の部分に従って前記介在データ項目を処理することと、
前記第１のデータ項目及び前記介在データ項目よりも前記ストリーム内で後であり、且つ前記キーの前記特定の値にも関連する前記データ項目の第２のデータ項目を受信することと、
前記キーの前記特定の値に関する前記仕様の前記移行に基づいて、前記第２の状態において実行可能であるものとして前記仕様によって指定される前記実行可能ロジックの１つ又は複数の部分に従って前記第２のデータ項目を処理することであって、前記第２の状態において実行可能な前記実行可能ロジックの前記１つ又は複数の部分は、前記第１の状態において実行可能な前記実行可能ロジックの前記１つ又は複数の部分と異なる、処理することと
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
この説明は、データ項目のストリーム内の１つ又は複数のデータ項目、例えばネットワークドアプリケーションからネットワーク接続経由で入ってくるデータ項目に現在適用されている実行可能ロジックを動作させ且つ調節するための、コンピュータによって実装される方法、データ処理システム及び機械可読ハードウェア記憶装置に関する。
【０００２】
優先権の主張
本願は、参照によりその全内容が本明細書に援用される２０１６年５月２４日に出願された米国仮特許出願第６２／３４０，８２５号及び２０１６年１２月１２日に出願された米国特許出願公開第１５／３７６，１２９号に対する優先権を米国特許法第１１９条（ｅ）の下で主張する。
【背景技術】
【０００３】
背景
概して、システムは、レコードのストリームを受信し、１つ又は複数の規則を使用して各レコードを互いに独立に処理する。そのため、規則は、現在のレコードのみを入力として取り、そのレコードを処理することに関する結果を出力する。システムが規則を検査するとき、検査は、１つ又は複数の規則をレコードに適用することによって行われ、検査の結果は、そのレコードについてのみ表示される。通常、ソフトウェア開発者がアプリケーションを開発し、そのアプリケーションは、開発されたアプリケーションを検査する人に転送される。承認されたアプリケーションがエンドユーザにリリースされるまで、このやり取りが数回行われる場合がある。エンドユーザがアプリケーションを変更する要求を有する場合があり、エンドユーザは、その要求をプロバイダに提出する必要があり、プロバイダは、要求された変更を組み込むための解決策を見つけることを試みるソフトウェア開発者及び検査員を再び関与させる。しかし、この形態は、数回の往復を必要とする場合があり、エンドユーザがいかなる修正を行うことも全く認めない。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
この説明は、データ項目のストリーム内の１つ又は複数のデータ項目、例えばネットワークドアプリケーションからネットワーク接続経由で入ってくるデータ項目に現在適用されている実行可能ロジックをエンドユーザが迅速に（例えば、その場で）且つ適切に動作させ且つ調節するのを支援することを可能にする、コンピュータによって実装される方法、データ処理システム、及び機械可読ハードウェア記憶装置に関する。このように、エンドユーザは、実行可能ロジックを確認又は調節する際にアプリケーション開発者及び検査員を関与させる必要なしに、基礎を成す技術的システムを適切に動作させることを確実に支援される。これは、実行可能ロジックのこの確認及び調節を行うのにかかるコスト及び時間を減らすこともでき、それによりエンドユーザが柔軟性及び制御も得る。
【０００５】
全般的な態様１では、キーに関連する仕様に従ってデータ項目のストリームのデータ項目を処理するためのコンピュータによって実装される方法を記載し、データ項目は、キーの値に関連し、仕様の状態は、キーのそれぞれの値について保たれ、仕様は、データ記憶システム内に記憶されている実行可能ロジックを表し、この方法は、実行可能ロジックを表す仕様にアクセスすることであって、キーの特定の値に関する仕様の状態は、その状態において実行可能な実行可能ロジックの１つ又は複数の部分を指定する、アクセスすることと、データのストリームのデータ項目を入力装置又はポート上で受信することと、ストリームのデータ項目の第１のものについて、そのデータ項目の第１のものに関連するキーの値に関する仕様の第１の状態を識別することと、第１の状態に関連するものとして仕様内で表される実行可能ロジックの１つ又は複数の部分に従ってデータ項目の第１のものをデータ処理システムによって処理することであって、仕様の１つ又は複数の部分を表示させること、実行可能ロジックの１つ又は複数の部分をデータ項目の第１のものに適用して結果データを得ること、仕様の１つ又は複数の部分の少なくとも１つが表示された状態で結果データの少なくとも一部を表示させること、及びデータ項目の第１のものに関するキーの値に関して仕様を第１の状態から第２の状態に移行させることを含む、処理することとを含む。
【０００６】
態様１による態様２では、この方法は、実行可能ロジックを実行することを更に含む。
【０００７】
態様１〜２の何れか１つによる態様３では、実行可能ロジックの１つ又は複数の部分は、実行可能ロジックの１つ又は複数の第１の部分を含み、仕様の１つ又は複数の部分は、仕様の第１の部分を含み、結果データは、第１の結果情報を含み、この方法は、実行可能ロジックを実行することと、実行可能ロジックが実行され続けるとき、データ項目の第１のものよりもストリーム内で後であり、且つキーの値にも関連するデータ項目の第２のものを受信することと、第１の状態から第２の状態への移行に基づいて、第２の状態に関連する実行可能ロジックの１つ又は複数の第２の部分に従ってデータ項目の第２のものを処理することであって、実行可能ロジックの１つ又は複数の第２の部分は、仕様の第２の部分として表される、処理することと、処理に基づいて、データ項目の第２のものを処理した１つ又は複数の結果を示す第２の結果データを得ることと、仕様の第２の部分と共に第２の結果データの少なくとも一部を表示させることとを含む。
【０００８】
態様１〜３の何れか１つによる態様４では、この方法は、検査データの項目の組にアクセスすることと、それらの組の選択されたものから、検査データの第２の項目の前に出現する検査データの第１の項目を有するほぼリアルタイムの検査データのストリームをシミュレートすることとを更に含む。
【０００９】
態様１〜４の何れか１つによる態様５では、データ項目のストリームを受信することは、シミュレートされたストリームを受信することを含む。
【００１０】
態様１〜５の何れか１つによる態様６では、この方法は、実行可能ロジックの１つ又は複数の部分をデータ項目の第１のものに適用することにより、仕様によって表される規則の実行の精度を検査することを含む。
【００１１】
態様１〜６の何れか１つによる態様７では、規則の実行の精度の検査は、データ項目の第１のものの一部がデータ処理システムによって処理されていないと判定すること、規則の部分間の競合が存在すると判定すること、規則の一部が、データ項目の第１のものについて満たされる可能性が低い条件を指定すると判定すること、及び規則の一部が、標的とする処理目標と異なる方法でデータ項目の第１のものの一部を処理すると判定することの１つ又は複数を含む。
【００１２】
態様１〜７の何れか１つによる態様８では、キーの値は、第１の値を含み、この方法は、検査データの組から、キーの第２の値に関連する組を選択することと、第２のキーに関する組内の検査データを使用してシミュレートされているストリームに対して、キーの第２の値に関する実行可能ロジックのインスタンスを実行することとを含む。
【００１３】
態様１〜８の何れか１つによる態様９では、この方法は、実行可能ロジックの第１の状態を表す仕様の部分から、第２の状態を表す仕様の他の部分への移行の視覚的表現を表示させることを含む。
【００１４】
態様１〜９の何れか１つによる態様１０では、この方法は、ストリームのデータ項目の第１のもののユーザ選択を受信することと、データ処理システムによって現在処理されているストリームのデータ項目の第１のものの指示を表示させることと、結果データを得るためにデータ項目の第１のものに現在適用されている実行可能ロジックの１つ又は複数の部分の指示を表示させることとを含む。
【００１５】
態様１〜１０の何れか１つによる態様１１では、この方法は、結果データの一部を所定の参照データと比較することと、結果データの一部と所定の参照データとの間にずれが存在するかどうか又はかかるずれが存在しないかどうかを判定することと、結果データの一部と所定の参照データとの間にずれが存在するかどうか又はかかるずれが存在しないかどうかの判定に基づいて、結果データの一部が所定の参照データと合致するかどうかの指示を出力することとを含む。
【００１６】
態様１〜１１の何れか１つによる態様１２では、この方法は、データ処理システムによって現在処理されているストリームのデータ項目の第１のものを所定の参照データ項目と比較することと、現在処理されているストリームのデータ項目の第１のものと所定の参照データ項目との間にずれが存在するかどうか又はかかるずれが存在しないかどうかを判定することと、現在処理されているストリームのデータ項目の第１のものと所定の参照データ項目との間にずれが存在するかどうか又はかかるずれが存在しないかどうかの判定に基づいて、現在処理されているストリームのデータ項目の第１のものが所定の参照データ項目と合致するかどうかの指示を出力することとを含む。
【００１７】
態様１〜１２の何れか１つによる態様１３では、この方法は、結果データを得るためにデータ項目の第１のものに現在適用されている実行可能ロジックの１つ又は複数の部分を所定の参照実行可能ロジックと比較することと、データ項目の第１のものに現在適用されている実行可能ロジックの１つ又は複数の部分と所定の参照実行可能ロジックとの間にずれが存在するかどうか又はかかるずれが存在しないかどうかを判定することと、データ項目の第１のものに現在適用されている実行可能ロジックの１つ又は複数の部分と所定の参照実行可能ロジックとの間にずれが存在するかどうか又はかかるずれが存在しないかどうかの判定に基づいて、結果データを得るためにデータ項目の第１のものに現在適用されている実行可能ロジックのその又は複数の部分が所定の参照実行可能ロジックと合致するかどうかの指示を出力することとを含む。
【００１８】
全般的な態様１４では、キーに関連する仕様に従ってデータ項目のストリームのデータ項目を処理するためのデータ処理システムであって、データ項目は、キーの値に関連し、仕様の状態は、キーのそれぞれの値について保たれ、仕様は、データ記憶システム内に記憶されている実行可能ロジックを表し、このデータ処理システムは、１つ又は複数の処理装置と、１つ又は複数の機械可読ハードウェア記憶装置であって、実行可能ロジックを表す仕様にアクセスすることであって、キーの特定の値に関する仕様の状態は、その状態において実行可能な実行可能ロジックの１つ又は複数の部分を指定する、アクセスすることと、データのストリームのデータ項目を入力装置又はポート上で受信することと、ストリームのデータ項目の第１のものについて、そのデータ項目の第１のものに関連するキーの値に関する仕様の第１の状態を識別することと、第１の状態に関連するものとして仕様内で表される実行可能ロジックの１つ又は複数の部分に従ってデータ項目の第１のものをデータ処理システムによって処理することであって、仕様の１つ又は複数の部分を表示させることを含む、処理することと、実行可能ロジックの１つ又は複数の部分をデータ項目の第１のものに適用して結果データを得ることと、仕様の１つ又は複数の部分の少なくとも１つが表示された状態で結果データの少なくとも一部を表示させることと、データ項目の第１のものに関するキーの値に関して仕様を第１の状態から第２の状態に移行させることとを含む操作を実行するために１つ又は複数の処理装置によって実行可能な命令を記憶する１つ又は複数の機械可読ハードウェア記憶装置とを含む。
【００１９】
全般的な態様１５では、キーに関連する仕様に従ってデータ項目のストリームのデータ項目を処理するための命令を記憶する１つ又は複数の機械可読ハードウェア記憶装置であって、データ項目は、キーの値に関連し、仕様の状態は、キーのそれぞれの値について保たれ、仕様は、データ記憶システム内に記憶されている実行可能ロジックを表し、命令は、実行可能ロジックを表す仕様にアクセスすることであって、キーの特定の値に関する仕様の状態は、その状態において実行可能な実行可能ロジックの１つ又は複数の部分を指定する、アクセスすることと、データのストリームのデータ項目を入力装置又はポート上で受信することと、ストリームのデータ項目の第１のものについて、そのデータ項目の第１のものに関連するキーの値に関する仕様の第１の状態を識別することと、第１の状態に関連するものとして仕様内で表される実行可能ロジックの１つ又は複数の部分に従ってデータ項目の第１のものをデータ処理システムによって処理することであって、仕様の１つ又は複数の部分を表示させること、実行可能ロジックの１つ又は複数の部分をデータ項目の第１のものに適用して結果データを得ること、仕様の１つ又は複数の部分の少なくとも１つが表示された状態で結果データの少なくとも一部を表示させること、及びデータ項目の第１のものに関するキーの値に関して仕様を第１の状態から第２の状態に移行させることを含む、処理することとを含む操作を実行するために１つ又は複数の処理装置によって実行可能である。
【００２０】
全般的な態様１６では、キーに関連する仕様に従ってデータ項目のストリームのデータ項目を処理するためのデータ処理システムによって実装される方法であって、データ項目は、キーの値に関連し、仕様の状態は、キーのそれぞれの値について保たれ、仕様は、データ記憶システム内に記憶されている実行可能ロジックを表し、この方法は、実行可能ロジックを表す仕様にアクセスすることであって、キーの特定の値に関する仕様の状態は、その状態において実行可能な実行可能ロジックの１つ又は複数の部分を指定する、アクセスすることと、データのストリームのデータ項目を入力装置又はポート上で受信することと、ストリームのデータ項目の第１のものについて、そのデータ項目の第１のものに関連するキーの値を識別することと、仕様が、そのキーの値に関する待機状態に関連すると識別することであって、待機状態は、実行可能ロジックが、１つ又は複数のデータ項目であって、そのキーの値に関連し、且つストリーム内の１つ又は複数のデータ項目の前に位置する１つ又は複数の他のデータ項目から時間において隔てられる１つ又は複数のデータ項目を待機するように構成される状態を含む、識別することと、待機状態に関連するものとして仕様内で表される実行可能ロジックの１つ又は複数の部分に従ってデータ項目の第１のものを少なくとも１つのプロセッサで処理することと、待機状態に関連する実行可能ロジックの１つ又は複数の部分に従ったデータ項目の第１のものの処理の結果を示すデータの少なくとも一部を表示させることとを含む。
【００２１】
態様１６による態様１７では、仕様は、複数のノードを有するフローチャートを含み、ノードの少なくとも１つは、待機状態を表す待機ノードを含み、フローチャートは、ノードの第１のものとノードの第２のものとの間のリンクを含み、リンクは、ノードの第１のものによって表される実行可能ロジックの１つ又は複数の第１の部分を実行することから、ノードの第２のものによって表される実行可能ロジックの１つ又は複数の第２の部分を実行することへの実行可能ロジックの移行を表す。
【００２２】
態様１６〜１７の何れか１つによる態様１８では、この方法は、ディスプレイ装置上にレンダリングされるとき、フローチャートを実行するための開始コントロールを含み、且つフローチャートも含むグラフィカルユーザインタフェースのためのデータを生成することと、開始コントロールの選択を示すデータを受信することと、受信されるデータに応答して、データ項目の第１のものに対して、第１のノードによって表される実行可能ロジックの１つ又は複数の第１の部分を実行すること、及び第１のノードによって表される実行可能ロジックの１つ又は複数の第１の部分でデータ項目の第１のものを処理した結果を示す結果データを表示するようにグラフィカルユーザインタフェースを更新させることであって、結果データは、フローチャート内の第１のノードと並べて表示される、更新させることを含む操作を実行することによってフローチャートを実行することとを更に含む。
【００２３】
態様１６〜１８の何れか１つによる態様１９では、グラフィカルユーザインタフェースのためのデータは、停止コントロールを表示するためのデータを含み、この方法は、停止コントロールの選択を示すデータを受信することと、フローチャートの実行を一時停止することとを含む。
【００２４】
態様１６〜１９の何れか１つによる態様２０では、グラフィカルユーザインタフェースのためのデータは、検査コントロールを表示するためのデータを含み、この方法は、検査コントロールの選択を示すデータを受信すること、並びにストリームの何れのデータ項目及びキーの値に関連する何れのデータ項目が、そのノードによって表される実行可能ロジックの１つ又は複数の部分によって処理されるかを示すデータをフローチャート内でフローチャート内のノードごとに表示させることを含む操作を実行することによってフローチャートの性能を検査することを含む。
【００２５】
態様１６〜２０の何れか１つによる態様２１では、この方法は、ストリームの何れのデータ項目及びキーの値に関連する何れのデータ項目が、そのノードによって表される実行可能ロジックの１つ又は複数の部分によって処理されるかを示すデータを、キーの値に関連する各データ項目を受信することに対してフローチャート内でほぼリアルタイムで表示させることを含む。
【００２６】
全般的な態様２２では、キーに関連する仕様に従ってデータ項目のストリームのデータ項目を処理するためのデータ処理システムであって、データ項目は、キーの値に関連し、仕様の状態は、キーのそれぞれの値について保たれ、仕様は、データ記憶システム内に記憶されている実行可能ロジックを表し、このデータ処理システムは、１つ又は複数の処理装置と、１つ又は複数の機械可読ハードウェア記憶装置であって、実行可能ロジックを表す仕様にアクセスすることであって、キーの特定の値に関する仕様の状態は、その状態において実行可能な実行可能ロジックの１つ又は複数の部分を指定する、アクセスすることと、データのストリームのデータ項目を入力装置又はポート上で受信することと、ストリームのデータ項目の第１のものについて、そのデータ項目の第１のものに関連するキーの値を識別することと、仕様が、そのキーの値に関する待機状態に関連すると識別することであって、待機状態は、実行可能ロジックが、１つ又は複数のデータ項目であって、そのキーの値に関連し、且つストリーム内の１つ又は複数のデータ項目の前に位置する１つ又は複数の他のデータ項目から時間において隔てられる１つ又は複数のデータ項目を待機するように構成される状態を含む、識別することと、待機状態に関連するものとして仕様内で表される実行可能ロジックの１つ又は複数の部分に従ってデータ項目の第１のものを少なくとも１つのプロセッサで処理することと、待機状態に関連する実行可能ロジックの１つ又は複数の部分に従ってデータ項目の第１のものを処理した結果を示すデータの少なくとも一部を表示させることとを含む操作を実行するために１つ又は複数の処理装置によって実行可能な命令を記憶する１つ又は複数の機械可読ハードウェア記憶装置とを含む。
【００２７】
全般的な態様２３では、キーに関連する仕様に従ってデータ項目のストリームのデータ項目を処理するための命令を記憶する１つ又は複数の機械可読ハードウェア記憶装置であって、データ項目は、キーの値に関連し、仕様の状態は、キーのそれぞれの値について保たれ、仕様は、データ記憶システム内に記憶されている実行可能ロジックを表し、命令は、実行可能ロジックを表す仕様にアクセスすることであって、キーの特定の値に関する仕様の状態は、その状態において実行可能な実行可能ロジックの１つ又は複数の部分を指定する、アクセスすることと、データのストリームのデータ項目を入力装置又はポート上で受信することと、ストリームのデータ項目の第１のものについて、そのデータ項目の第１のものに関連するキーの値を識別することと、仕様が、そのキーの値に関する待機状態に関連すると識別することであって、待機状態は、実行可能ロジックが、１つ又は複数のデータ項目であって、そのキーの値に関連し、且つストリーム内の１つ又は複数のデータ項目の前に位置する１つ又は複数の他のデータ項目から時間において隔てられる１つ又は複数のデータ項目を待機するように構成される状態を含む、識別することと、待機状態に関連するものとして仕様内で表される実行可能ロジックの１つ又は複数の部分に従ってデータ項目の第１のものを少なくとも１つのプロセッサで処理することと、待機状態に関連する実行可能ロジックの１つ又は複数の部分に従ってデータ項目の第１のものを処理した結果を示すデータの少なくとも一部を表示させることとを含む操作を実行するために１つ又は複数の処理装置によって実行可能である。
【００２８】
全般的な態様２４では、状態機械を実装するためのデータ処理システムによって実行される方法であって、状態機械は、キーの各値について、その値に関連するデータレコードを処理するように構成され、この方法は、（ｉ）ノードと１つ又は複数のリンクとを有するチャート、及び（ｉｉ）ノードの１つ又は複数に関して１つ又は複数の論理表現を入力又は編集するための１つ又は複数の部分を１つ又は複数のエディタインタフェース内に表示することであって、ノードの１つ又は複数は、状態機械の特定の状態に対応し、論理表現は、状態機械が特定の状態にある場合のデータレコードの少なくとも部分的な処理を表し、ノードの１つとノードの別のものとの間のリンクは、１つの状態から別の状態への状態機械の移行を表す、表示することと、状態機械を実装するための実行可能ロジックへと１つ又は複数の論理表現及びチャートを変換することであって、状態機械は、データレコードが断続的に受信されるとき、データレコード内の１つ又は複数のフィールドを評価してキーの値を識別することと、キーの各値について、そのキーの値が基づく１つ又は複数のフィールドを含む１つ又は複数の第１のデータレコードを処理することであって、そのキーの値に関する状態機械の現在の状態に対応する１つ又は複数のノードに関連する１つ又は複数の論理表現に従う、処理することと、チャートのリンクに従って、断続的に受信されるデータレコードの１つ又は複数の第２のデータレコードを処理するための別の状態に移行することであって、１つ又は複数の第２のデータレコードは、そのキーの値が基づく１つ又は複数のフィールドを含み、１つ又は複数の第２のデータレコードは、１つ又は複数の第１のデータレコードの後に受信される、移行することとのためのものである、変換することとを含む。
【００２９】
態様２４による態様２５では、この方法は、データレコードを受信する前に実行可能ロジックを実行することを含む。
【００３０】
態様２４〜２５の何れか１つによる態様２６では、この方法は、キーの各値について、１つ又は複数の第１のデータレコードを処理することによって達する実行可能ロジックの状態を保存することと、そのキーの値に関連する１つ又は複数の他のデータ項目に対して実行可能ロジックを実行し続けることによって１つ又は複数の他のデータレコードを処理し続けることとを更に含む。
【００３１】
態様２４〜２６の何れか１つによる態様２７では、キーの値は、キーの第１の値を含み、この方法は、キーの第１の値に関する実行可能ロジックの第１の状態を保存することと、キーの第２の値に関連する１つ又は複数の第３のデータレコードを識別することと、キーの第２の値に関する状態機械の現在の状態に対応する１つ又は複数のノードに関連する１つ又は複数の論理表現に従って１つ又は複数の第３のデータレコードを処理することとを含む。
【００３２】
態様２４〜２７の何れか１つによる態様２８では、この方法は、キーの第２の値に関する実行可能ロジックの第２の状態をデータリポジトリ内に保存することと、キーの第１の値と第１の状態との間の関連及びキーの第２の値と第２の状態との間の関連をデータリポジトリ内で生成することとを含む。
【００３３】
態様２４〜２８の何れか１つによる態様２９では、１つ又は複数の論理表現は、実行可能ロジックが第１の状態にあるときに実行可能である実行可能ロジックの１つ又は複数の第１の部分に対応し、この方法は、１つ又は複数の第１の部分の実行後、キーの第１の値に関する実行可能ロジックの状態を第１の状態の後の別の状態に更新することを含む。
【００３４】
態様２４〜２９の何れか１つによる態様３０では、この方法は、実行可能ロジックの１つ又は複数の部分でデータレコードを処理することに基づいて、１つ又は複数のアクションを開始するためにデータ項目を待ち行列に発行することを含む。
【００３５】
態様２４〜３０の何れか１つによる態様３１では、この方法は、ノードに関連する１つ又は複数の論理表現に対する１つ又は複数の編集を示すデータを受信することを含む。
【００３６】
態様２４〜３１の何れか１つによる態様３２では、この方法は、１つ又は複数の論理表現及び受信される１つ又は複数の論理表現に何れのノードが関連するかを指定するデータをクライアント装置から受信することを含む。
【００３７】
態様２４〜３２の何れか１つによる態様３３では、ノードの少なくとも１つは、決定ノード、終了ノード、又は送信ノードを含み、ノードの少なくとも別のものは、待機ノードを含む。
【００３８】
態様２４〜３３の何れか１つによる態様３４では、表示することは、（ｉ）ノードと１つ又は複数のリンクとを有するチャート、及び（ｉｉ）ノードの１つ又は複数に関して１つ又は複数の論理表現を入力又は編集するための１つ又は複数の部分を１つ又は複数のエディタインタフェース内に表示させることを含む。
【００３９】
全般的な態様３５では、状態機械を実装するためのデータ処理システムであって、状態機械は、キーの各値について、その値に関連するデータレコードを処理するように構成され、このデータ処理システムは、１つ又は複数の処理装置と、１つ又は複数の機械可読ハードウェア記憶装置であって、（ｉ）ノードと１つ又は複数のリンクとを有するチャート、及び（ｉｉ）ノードの１つ又は複数に関して１つ又は複数の論理表現を入力又は編集するための１つ又は複数の部分を１つ又は複数のエディタインタフェース内に表示することであって、ノードの１つ又は複数は、状態機械の特定の状態に対応し、論理表現は、状態機械が特定の状態にある場合のデータレコードの少なくとも部分的な処理を表し、ノードの１つとノードの別のものとの間のリンクは、１つの状態から別の状態への状態機械の移行を表す、表示することと、状態機械を実装するための実行可能ロジックへと１つ又は複数の論理表現及びチャートを変換することであって、状態機械は、データレコードが断続的に受信されるとき、データレコード内の１つ又は複数のフィールドを評価してキーの値を識別することと、キーの各値について、そのキーの値が基づく１つ又は複数のフィールドを含む１つ又は複数の第１のデータレコードを処理することであって、そのキーの値に関する状態機械の現在の状態に対応する１つ又は複数のノードに関連する１つ又は複数の論理表現に従う、処理ことと、チャートのリンクに従って、断続的に受信されるデータレコードの１つ又は複数の第２のデータレコードを処理するための別の状態に移行することであって、１つ又は複数の第２のデータレコードは、そのキーの値が基づく１つ又は複数のフィールドを含み且つ、１つ又は複数の第２のデータレコードは、１つ又は複数の第１のデータレコードの後に受信される、移行することとのためのものである、変換することとを含む操作を実行するために１つ又は複数の処理装置によって実行可能な命令を記憶する１つ又は複数の機械可読ハードウェア記憶装置とを含む。
【００４０】
全般的な態様３６では、状態機械を実装するための命令を記憶する１つ又は複数の機械可読ハードウェア記憶装置であって、状態機械は、キーの各値について、その値に関連するデータレコードを処理するように構成され、命令は、（ｉ）ノードと１つ又は複数のリンクとを有するチャート、及び（ｉｉ）ノードの１つ又は複数に関して１つ又は複数の論理表現を入力又は編集するための１つ又は複数の部分を１つ又は複数のエディタインタフェース内に表示することであって、ノードの１つ又は複数は、状態機械の特定の状態に対応し、論理表現は、状態機械が特定の状態にある場合のデータレコードの少なくとも部分的な処理を表し、ノードの１つとノードの別のものとの間のリンクは、１つの状態から別の状態への状態機械の移行を表す、表示することと、状態機械を実装するための実行可能ロジックへと１つ又は複数の論理表現及びチャートを変換することとを含む操作を実行するために１つ又は複数の処理装置によって実行可能であり、状態機械は、データレコードが断続的に受信されるとき、データレコード内の１つ又は複数のフィールドを評価してキーの値を識別することと、キーの各値について、そのキーの値が基づく１つ又は複数のフィールドを含む１つ又は複数の第１のデータレコードを処理することであって、そのキーの値に関する状態機械の現在の状態に対応する１つ又は複数のノードに関連する１つ又は複数の論理表現に従う、処理することと、チャートのリンクに従って、断続的に受信されるデータレコードの１つ又は複数の第２のデータレコードを処理するための別の状態に移行することであって、１つ又は複数の第２のデータレコードは、そのキーの値が基づく１つ又は複数のフィールドを含み、１つ又は複数の第２のデータレコードは、１つ又は複数の第１のデータレコードの後に受信される、移行することとのためのものである。
【００４１】
全般的な態様３７では、データのストリームのデータ項目を処理するためのデータ処理システムによって方法が実装され、その処理は、データのストリームのデータ項目を処理するための実行可能ロジックを表す仕様を受信することであって、仕様は、キーに関連し、データ項目は、キーの値に関連し、実行可能ロジックの状態は、キーのそれぞれの値について保たれ、仕様は、ノード及び１つ又は複数のリンクを含み、１つ又は複数の第１のノードは、キーの値に関する実行可能ロジックの第１の状態を表し、第１の状態では、実行可能ロジックの第１の部分は、そのキーの値に関連するデータ項目の第１のものに対して実行可能であり、第２のノードは、そのキーの値に関する実行可能ロジックの第２の状態を表し、第２のノードの１つは、第２の状態においてそのキーの値を有するデータ項目の第２のものを待機するように構成される実行可能ロジックの一部を表し、データ項目の第２のものは、ストリーム内のデータ項目の第１のものの後に配置されることによってデータ項目の第１のものから時間において隔てられ、第２のノードの別のものは、第２の状態において１つ又は複数のアクションの実行を引き起こすように構成される実行可能ロジックの別の部分を表し、１つ又は複数の第１のノードの１つと第２のノードの１つとの間のリンクは、第１の部分が実行可能である第１の状態から、実行可能ロジックがデータ項目の第２のものを待機するように構成される第２の状態への、そのキーの値に関する実行可能ロジックの状態移行を表す、受信することと、キーの各値について、その値に関連し、且つデータのストリーム内で時間において隔てられるデータ項目を処理するための実行可能ロジックへと仕様を変換することとを含む。
【００４２】
態様３７による態様３８では、この方法は、データ項目の第１のものに対して実行可能ロジックの第１の部分を実行することによってデータ項目の第１のものを処理することと、実行可能ロジックの第１の部分の実行後に実行可能ロジックの状態を更新することとを含む。
【００４３】
態様３７〜３８の何れか１つによる態様３９では、この方法は、第２の状態にあるとき、１つ又は複数の基準を満たすデータ項目を待機するための実行可能ロジックの一部を実行することによってデータ項目の第２のものを待機することを含む。
【００４４】
態様３７〜３９の何れか１つによる態様４０では、この方法は、データ項目の第２のものを受信することと、１つ又は複数のアクションの実行を引き起こすように構成される実行可能ロジックの他の部分を実行することとを含む。
【００４５】
全般的な態様４１では、データのストリームのデータ項目を処理するためのデータ処理システムであって、１つ又は複数の処理装置と、１つ又は複数の機械可読ハードウェア記憶装置であって、データのストリームのデータ項目を処理するための実行可能ロジックを表す仕様を受信することであって、仕様は、キーに関連し、データ項目は、キーの値に関連し、実行可能ロジックの状態は、キーのそれぞれの値について保たれ、仕様は、ノード及び１つ又は複数のリンクを含み、１つ又は複数の第１のノードは、キーの値に関する実行可能ロジックの第１の状態を表し、第１の状態では、実行可能ロジックの第１の部分は、そのキーの値に関連するデータ項目の第１のものに対して実行可能であり、第２のノードは、そのキーの値に関する実行可能ロジックの第２の状態を表し、第２のノードの１つは、第２の状態においてそのキーの値を有するデータ項目の第２のものを待機するように構成される実行可能ロジックの一部を表し、データ項目の第２のものは、ストリーム内のデータ項目の第１のものの後に配置されることによってデータ項目の第１のものから時間において隔てられ、第２のノードの別のものは、第２の状態において１つ又は複数のアクションの実行を引き起こすように構成される実行可能ロジックの別の部分を表し、１つ又は複数の第１のノードの１つと第２のノードの１つとの間のリンクは、第１の部分が実行可能である第１の状態から、実行可能ロジックがデータ項目の第２のものを待機するように構成される第２の状態への、そのキーの値に関する実行可能ロジックの状態移行を表す、受信することと、キーの各値について、その値に関連し、且つデータのストリーム内で時間において隔てられるデータ項目を処理するための実行可能ロジックへと仕様を変換することとを含む操作を実行するために１つ又は複数の処理装置によって実行可能な命令を記憶する１つ又は複数の機械可読ハードウェア記憶装置とを含む。
【００４６】
全般的な態様４２では、データのストリームのデータ項目を処理するための命令を記憶する１つ又は複数の機械可読ハードウェア記憶装置であって、命令は、データのストリームのデータ項目を処理するための実行可能ロジックを表す仕様を受信することであって、仕様は、キーに関連し、データ項目は、キーの値に関連し、実行可能ロジックの状態は、キーのそれぞれの値について保たれ、仕様は、ノード及び１つ又は複数のリンクを含み、１つ又は複数の第１のノードは、キーの値に関する実行可能ロジックの第１の状態を表し、第１の状態では、実行可能ロジックの第１の部分は、そのキーの値に関連するデータ項目の第１のものに対して実行可能であり、第２のノードは、そのキーの値に関する実行可能ロジックの第２の状態を表し、第２のノードの１つは、第２の状態においてそのキーの値を有するデータ項目の第２のものを待機するように構成される実行可能ロジックの一部を表し、データ項目の第２のものは、ストリーム内のデータ項目の第１のものの後に配置されることによってデータ項目の第１のものから時間において隔てられ、第２のノードの別のものは、第２の状態において１つ又は複数のアクションの実行を引き起こすように構成される実行可能ロジックの別の部分を表し、１つ又は複数の第１のノードの１つと第２のノードの１つとの間のリンクは、第１の部分が実行可能である第１の状態から、実行可能ロジックがデータ項目の第２のものを待機するように構成される第２の状態への、そのキーの値に関する実行可能ロジックの状態移行を表す、受信することと、キーの各値について、その値に関連し、且つデータのストリーム内で時間において隔てられるデータ項目を処理するための実行可能ロジックへと仕様を変換することとを含む操作を実行するために１つ又は複数の処理装置によって実行可能である。
【００４７】
全般的な態様４３では、キーに関連し、且つデータ項目を処理するための実行可能ロジックを表す仕様に従ってデータのストリームのデータ項目を処理するためのデータ処理システムによって方法が実装され、データ項目は、キーの値に関連し、仕様の状態は、キーの複数の値について保たれ、処理は、仕様にアクセスすることであって、仕様の状態は、その状態において実行可能な実行可能ロジックの１つ又は複数の部分を表す、アクセスすることと、データ項目の第１のデータ項目を受信することであって、第１のデータ項目は、キーの特定の値に関連する、受信することと、キーの特定の値に関する第１の状態を識別することと、第１の状態において実行可能であるものとして仕様によって指定される実行可能ロジックの１つ又は複数の部分に従って第１のデータ項目を処理することと、仕様の第１の状態から、実行可能ロジックの１つ又は複数の他の部分が実行可能である第２の状態への、キーの特定の値に関する移行を識別することと、キーの特定の値と異なり、且つキーの特定の値に関連しないキーの別の値に関連する介在データ項目を受信することと、介在データ項目に関するキーの他の値に関連する仕様の所与の状態を識別することと、所与の状態において実行可能であるものとして仕様によって指定される実行可能ロジックの１つ又は複数の部分に従って介在データ項目を処理することと、第１のデータ項目及び介在データ項目よりもストリーム内で後であり、且つキーの特定の値にも関連するデータ項目の第２のデータ項目を受信することと、キーの特定の値に関する仕様の移行に基づいて、第２の状態において実行可能であるものとして仕様によって指定される実行可能ロジックの１つ又は複数の部分に従って第２のデータ項目を処理することであって、第２の状態において実行可能な実行可能ロジックの１つ又は複数の部分は、第１の状態において実行可能な実行可能ロジックの１つ又は複数の部分と異なる、処理することとを含む。
【００４８】
態様４３による態様４４では、仕様は、少なくとも第１のノード、第２のノード、及び第１のノードと第２のノードとの間のリンクを含み、第１のノードは、１つ又は複数のユーザ構成可能論理表現を含み、この方法は、仕様の１つ又は複数のユーザ構成可能論理表現を実行可能ロジックへと変換することと、実行可能ロジックの１つ又は複数の部分を実行することとを含む。
【００４９】
態様４３〜４４の何れか１つによる態様４５では、介在データ項目の所与の状態は、キーの値に関する第１の状態及び第２の状態のそれぞれと異なる。
【００５０】
態様４３〜４４の何れか１つによる態様４６では、介在データ項目の所与の状態は、第１の状態又は第２の状態の少なくとも１つと同じ状態である。
【００５１】
態様４３〜４６の何れか１つによる態様４７では、仕様は、実行可能ロジックの表示可能グラフィカル表現、フローチャート、状態移行図、及びチャートの１つ又は複数を含む。
【００５２】
態様４３〜４７の何れか１つによる態様４８では、この方法は、仕様の１つ又は複数の部分に対応する実行可能ロジックの１つ又は複数の部分をデータ処理システムによって実行することによって第１のデータ項目を処理することと、第１のデータ項目を処理することによって達する実行可能ロジックの状態を保存することと、仕様内で表される実行可能ロジックを実行し続けることによってストリームのデータ項目を処理し続けることと、キーの値に関連するストリームの第２のデータ項目を検出することとを含む。
【００５３】
態様４３〜４８の何れか１つによる態様４９では、この方法は、検出前にストリーム内の第２のデータ項目を待機することを含む。
【００５４】
態様４３〜４９の何れか１つによる態様５０では、この方法は、ストリームのデータ項目を断続的に受信することを含む。
【００５５】
態様４３〜５０の何れか１つによる態様５１では、この方法は、キーの値に関する仕様のインスタンスを開始することと、仕様のインスタンスを実行することとを含む。
【００５６】
態様４３〜５１の何れか１つによる態様５２では、キーの値は、キーの第１の値を含み、インスタンスは、第１のインスタンスを含み、この方法は、キーの第２の値に関連するストリームの１つ又は複数のデータ項目を識別することと、キーの第２の値に関する仕様の第２のインスタンスを開始することであって、第２のインスタンスは、第１のインスタンスと異なる、開始することとを含む。
【００５７】
態様４３〜５２の何れか１つによる態様５３では、仕様は、１つ又は複数の第１の部分及び１つ又は複数の第２の部分を有するフローチャートを含み、この方法は、フローチャートの１つ又は複数の第１の部分に対応する実行可能ロジックの１つ又は複数の第１の部分を使用して第１のデータ項目を処理することと、フローチャートの１つ又は複数の第２の部分に対応する実行可能ロジックの１つ又は複数の第２の部分を使用して第２のデータ項目を処理することとを含む。
【００５８】
態様４３〜５３の何れか１つによる態様５４では、この方法は、第２のデータ項目を処理することに基づいて、１つ又は複数のアクションを開始するためにデータ項目を待ち行列に発行することを含む。
【００５９】
態様４３〜５４の何れか１つによる態様５５では、第２のデータ項目は、データレコード又はデータレコードを含む。
【００６０】
態様４３〜５５の何れか１つによる態様５６では、仕様は、集約を含む規則を表し、この方法は、規則を実行することに基づいて集約を計算することと、集約を含む１つ又は複数の他の規則によって取り出すために計算済みの集約を保存することとを含む。
【００６１】
態様４３〜５６の何れか１つによる態様５７では、規則は、第１の規則を含み、この方法は、第１の規則と異なる第２の規則にアクセスすることであって、第２の規則は、集約を含む、アクセスすることと、第２の規則を実行して、過去に計算された集約を第２の規則内で使用するために取り出させることとを含む。
【００６２】
態様４３〜５７の何れか１つによる態様５８では、この方法は、実行可能ロジックの状態の回復性を得るために、実行されている実行可能ロジックの一部の状態を保存する操作を行うことを含む。
【００６３】
全般的な態様５９では、キーに関連し、且つデータ項目を処理するための実行可能ロジックを表す仕様に従ってデータのストリームのデータ項目を処理するためのデータ処理システムであって、データ項目は、キーの値に関連し、仕様の状態は、キーの複数の値について保たれ、１つ又は複数の処理装置と、１つ又は複数の機械可読ハードウェア記憶装置であって、仕様にアクセスすることであって、仕様の状態は、その状態において実行可能な実行可能ロジックの１つ又は複数の部分を表す、アクセスすることと、データ項目の第１のデータ項目を受信することであって、第１のデータ項目は、キーの特定の値に関連する、受信することと、キーの特定の値に関する第１の状態を識別することと、第１の状態において実行可能であるものとして仕様によって指定される実行可能ロジックの１つ又は複数の部分に従って第１のデータ項目を処理することと、仕様の第１の状態から、実行可能ロジックの１つ又は複数の他の部分が実行可能である第２の状態への、キーの特定の値に関する移行を識別することと、キーの特定の値と異なり、且つキーの特定の値に関連しないキーの別の値に関連する介在データ項目を受信することと、介在データ項目に関するキーの他の値に関連する仕様の所与の状態を識別することと、所与の状態において実行可能であるものとして仕様によって指定される実行可能ロジックの１つ又は複数の部分に従って介在データ項目を処理することと、第１のデータ項目及び介在データ項目よりもストリーム内で後であり、且つキーの特定の値にも関連するデータ項目の第２のデータ項目を受信することと、キーの特定の値に関する仕様の移行に基づいて、第２の状態において実行可能であるものとして仕様によって指定される実行可能ロジックの１つ又は複数の部分に従って第２のデータ項目を処理することであって、第２の状態において実行可能な実行可能ロジックの１つ又は複数の部分は、第１の状態において実行可能な実行可能ロジックの１つ又は複数の部分と異なる、処理することとを含む操作を実行するために１つ又は複数の処理装置によって実行可能な命令を記憶する１つ又は複数の機械可読ハードウェア記憶装置とを含む。
【００６４】
全般的な態様６０では、キーに関連し、且つデータ項目を処理するための実行可能ロジックを表す仕様に従ってデータのストリームのデータ項目を処理するための命令を記憶する１つ又は複数の機械可読ハードウェア記憶装置であって、データ項目は、キーの値に関連し、仕様の状態は、キーの複数の値について保たれ、命令は、仕様にアクセスすることであって、仕様の状態は、その状態において実行可能な実行可能ロジックの１つ又は複数の部分を表す、アクセスすることと、データ項目の第１のデータ項目を受信することであって、第１のデータ項目は、キーの特定の値に関連する、受信することと、キーの特定の値に関する第１の状態を識別することと、第１の状態において実行可能であるものとして仕様によって指定される実行可能ロジックの１つ又は複数の部分に従って第１のデータ項目を処理することと、仕様の第１の状態から、実行可能ロジックの１つ又は複数の他の部分が実行可能である第２の状態への、キーの特定の値に関する移行を識別することと、キーの特定の値と異なり、且つキーの特定の値に関連しないキーの別の値に関連する介在データ項目を受信することと、介在データ項目に関するキーの他の値に関連する仕様の所与の状態を識別することと、所与の状態において実行可能であるものとして仕様によって指定される実行可能ロジックの１つ又は複数の部分に従って介在データ項目を処理することと、第１のデータ項目及び介在データ項目よりもストリーム内で後であり、且つキーの特定の値にも関連するデータ項目の第２のデータ項目を受信することと、キーの特定の値に関する仕様の移行に基づいて、第２の状態において実行可能であるものとして仕様によって指定される実行可能ロジックの１つ又は複数の部分に従って第２のデータ項目を処理することであって、第２の状態において実行可能な実行可能ロジックの１つ又は複数の部分は、第１の状態において実行可能な実行可能ロジックの１つ又は複数の部分と異なる、処理することとを含む操作を実行するために１つ又は複数の処理装置によって実行可能である。
【００６５】
全般的な態様６１では、キーに関連する仕様に従ってデータ項目のストリームのデータ項目を処理するためのデータ処理システムによって実装される方法であって、データ項目は、キーの値に関連し、仕様の状態は、キーのそれぞれの値について保たれ、仕様は、データ記憶システム内に記憶されている実行可能ロジックを表し、この方法は、実行可能ロジックを表す仕様にアクセスすることであって、キーの特定の値に関する仕様の状態は、その状態において実行可能な実行可能ロジックの１つ又は複数の部分を指定する、アクセスすることと、データのストリームのデータ項目を入力装置又はポート上で受信することと、ストリームのデータ項目の第１のものについて、そのデータ項目の第１のものに関連するキーの値に関する仕様の第１の状態を識別することと、第１の状態に関連するものとして仕様内で表される実行可能ロジックの１つ又は複数の部分に従ってデータ項目の第１のものをデータ処理システムによって処理することであって、仕様の１つ又は複数の部分を表示させること、実行可能ロジックの１つ又は複数の部分をデータ項目の第１のものに適用して結果データを得ること、及び仕様の１つ又は複数の部分の少なくとも１つが表示された状態で結果データの少なくとも一部を表示させることを含む、処理することとを含む。
【図面の簡単な説明】
【００６６】
図面の説明
【図１Ａ】フローチャートの図である。
【図１Ｂ】フローチャートインスタンスの図である。
【図２】キー付きデータを処理するためのシステムの図である。
【図３】キー付きデータを処理するためのシステムの図である。
【図４】フローチャートの図である。
【図５】キー付きデータレコードを処理する図である。
【図６】グラフィカルユーザインタフェースの一例である。
【図７】グラフィカルユーザインタフェースの一例である。
【図８】グラフィカルユーザインタフェースの一例である。
【図９】グラフィカルユーザインタフェースの一例である。
【図１０】グラフィカルユーザインタフェースの一例である。
【図１１】プロセスの一例の図である。
【図１２】プロセスの一例の図である。
【図１３】プロセスの一例の図である。
【図１４】プロセスの一例の図である。
【図１５】プロセスの一例の図である。
【発明を実施するための形態】
【００６７】
詳細な説明
本開示によるシステムはデータ項目、例えばパケット化ネットワークのネットワーク接続経由で入ってくるデータ項目（例えば、パケット化データを含む）のストリーム内で互いに時間において隔てられるキー付きデータ項目を処理する。概して、キー付きデータ項目は、キー（例えば、識別子）に関連するデータ項目を含む。キーは、値を有し得る。キー付きデータ項目は、実行可能ロジックを表し、且つ過去のデータ項目に対して実行可能ロジックを実行することによって達する状態に基づいて実行可能ロジックの様々な状態を指定する仕様に従って処理される。概して、実行可能ロジックは、ソースコード及び他のコンピュータ命令を含む。
【００６８】
仕様は、キーも指定する。そのキーに関連するデータ項目が仕様に従って処理される。即ち、システムは、キーに基づいてキーベースの処理を行い、かかる処理では、キーのそれぞれの値に基づいてデータ項目がマッチされ評価される。キーの固有値ごとに、システムは、そのキーの値に関する仕様のインスタンスを開始する。そうすることにより、ストリーム内で互いに時間において隔てられ且つそのキーの値をそれぞれ含むデータ項目が、別のキーの値を含むデータ項目の処理と独立に処理される。例えば、データ項目に関連するキーと同じ値のキーに関連する仕様の実行可能ロジックが、結果データを得るためにデータ項目に対して実行可能ロジックを実行することによってデータ項目に適用される。概して、仕様のインスタンスは、例えば、仕様内で表される実行可能ロジックを実行しキーの固有値ごとに実行可能ロジックの状態を保つことによる、キーの固有値に関する仕様の具体的実現を含む。以下でより詳細に説明するように、システムは、例えば、メモリ内データグリッド（又は他のデータ構造）によってインスタンスごとに状態を保ち、かかるデータ構造では、キーの各値がそのキーの値に関するチャートの実行状態を示す関連データである。概して、メモリ内データグリッドは、ランダムアクセスメモリ（ＲＡＭ）内にあるデータ構造を含むことができ、複数のサーバ又はシステムに分散される。
【００６９】
例えば、イベントやレコード等を含む様々な種類のキー付きデータ項目がある。概して、イベントは、イベントの特定の発生又は欠如を表す（例えば、既定の形式の）データレコードを含む。本明細書に記載の技法は、データレコードを処理することに関するが、本技法は、イベントを処理することにも等しく適用することができる。データレコードは、複数のフィールドも含む。一例では、フィールドの１つが仕様に関するキーに対応し得る。この例では、仕様は、フィールドの何れがキー付きフィールド、例えば仕様のキーの値を含むフィールドかを指定する。別の例では、例えばデータレコード内の様々なフィールドの値やデータリポジトリ内に記憶され、且つデータレコードのフィールド内に含まれる特定の識別子に関連するデータ等を含む様々な異なるデータにキーが基づく。
【００７０】
一例では、時間において隔てられる複数のデータレコード（例えば、イベント）を入力として必要とする規則を含むことにより、仕様が複合イベント処理（ＣＥＰ）のための実行可能ロジックを表す。概して、複合イベント処理は、異なる時点において生じる複数のデータレコードを受信し、その複数のデータレコードからパターン、データレコード、又は状態を推論することを含む。この例では、仕様が複数のノードを有するチャート（例えば、フローチャートやデータフローグラフ）を含む。チャート内の各ノードは、仕様の１つ又は複数の部分に対応する実行可能ロジックの１つ又は複数の部分を表す。例えば、ノードは、実行可能ロジックの生成元である１つ又は複数の論理表現（以下「ロジック」）を含む。別の例では、実行可能ロジックが特定の状態にあるとき、ノードが実行可能ロジックの１つ又は複数の特定の部分に対応する。
【００７１】
概して、本明細書に記載の「チャート」は、データフローグラフとして実装することができ、本明細書に記載の方法又は処理は、計算システムによって実行することができ、計算システムは、データ記憶域に結合される開発環境であって、１つ又は複数の入力データセットから処理グラフコンポーネントのグラフを介して１つ又は複数の出力データセットに流れるデータ項目に対して実行されるグラフベースの計算を実装するデータフローグラフに関連するデータ処理アプリケーションを構築するように開発環境は構成され、データ記憶域内のデータ構造によってデータフローグラフは指定され、データ構造によって指定され且つデータ構造によって指定されグラフコンポーネント間のデータフローを表す１つ又は複数のリンクによって接続されるグラフコンポーネントを表す複数のノードをデータフローグラフは有する、開発環境と、データ記憶域に結合され１つ又は複数のコンピュータ上にホストされているランタイム環境であって、データフローグラフを指定する記憶済みのデータ構造を読み取り、実行時前モジュールによってデータフローグラフに割り当てられるグラフコンポーネントの計算を実行するために計算資源（プロセス等）を割り当て構成するように構成される実行時前モジュールを含み、本方法又は処理による以下に記載の操作の１つ又は複数が実行されるように割り当てられたプロセスの実行をスケジュールし制御するための実行モジュールを含む、ランタイム環境とを含む。
【００７２】
図１Ａを参照し、仕様１は、ノード２ａ〜２ｇを有するフローチャート２を含む。概して、チャートは、データレコードを処理するためのテンプレートを含む。このテンプレートは、入力データレコードに反応し、出力データレコード、例えば仕様内に含まれるロジックに基づいて生成されるデータレコードを作成するためのロジックのグラフィック単位を含む。概して、ロジックのグラフィック単位は、例えば、チャートを構築するためのウィンドウにテンプレート（不図示）から様々なノードをドラッグアンドドロップすることによって少なくとも部分的にグラフィカルに生成されるロジックを含む。一例ではノードが、例えばロジックによって指定された条件を満たしたとき、入力データレコードをどのように処理するか、実行可能ロジックによって使用される変数の値をどのように設定するか、何れの出力データレコードを生成するのか等を指定するロジック（不図示）を含む。一例では、ノードは、ノードのロジック内で使用されるパラメータ及び／又は変数の値を利用者が入力することによってプログラム可能である。
【００７３】
ノード内のロジックが実行可能ロジックへとコンパイルされ、各ノードがその実行可能ロジックの１つ又は複数の部分に対応するため、チャート自体が実行可能である。例えばシステムは、ノード内のロジックを実行可能ロジックへとコンパイルすることによって仕様（及び／又は仕様内のチャート）を変換する。チャート自体が実行可能であるため、チャート自体がデータレコードを処理することができ、停止され、開始され、休止され得る。システムは、例えばノード２ａ〜２ｇの何れが現在実行されているのかを追跡することによってフローチャート２の状態も保つ。フローチャート２の状態は、フローチャート２によって表される実行ファイルの状態に対応する。例えばフローチャート２内の各ノードは（実行可能ロジックの１つ又は複数の部分がその状態において実行可能である）実行可能ロジックの特定の状態を表す。フローチャート２がキーの様々な値について実行される場合、システムは以下でより詳細に説明するように例えばインスタンスごとの状態を保つことによってキーの値ごとにフローチャート２の状態を保つ。この例ではフローチャート２が状態移行図を含み、その状態移行図では各入力データレコードがノード間の移行を駆動し、過去のデータレコードを処理することによって達する状態に基づいてデータレコードが評価される。フローチャート２内のノード間のリンクはロジックの時間的なフローを表す。
【００７４】
ノード２ａは実行可能ロジックの開始を表す。ノード２ａの完了後、フローチャート２の状態は実行可能ロジックの１つ又は複数の他の部分を表すノード２ｂに移行する。ノード２ｂは待機ノード（以下、待機ノード２ｂ）を含む。待機ノード２ｂは、（待機ノード２ｂに対応する）実行可能ロジックの一部が１つ又は複数の状態を満たす入力データレコードを待機する待機状態を表す。一例では、待機状態がフローチャート２の別の状態の一部、例えばシステムが（待機状態を実装するために）待機ノードを実行し、次いで１つ又は複数の他のノードを実行する状態であり得る。待機ノード２ｂによって表される実行可能ロジックの一部の完了後、システムは待機状態を終えて、決定を実施するための実行可能ロジックを表すノード２ｃを実行する。この例ではノード２ｃが決定ノードを含む。概して、決定ノードは決定を実行するためのロジック（例えば、ブール値について評価するロジック）を含むノードを含む。
【００７５】
決定の結果に基づき、フローチャート２の状態は（再びノード２ａに状態を移行させる）ノード２ｇ又は別の待機ノードであるノード２ｄに移行する。待機ノード２ｄによって表される実行可能ロジックの一部の完了後、フローチャート２の状態は送信ノードを含むノード２ｅに移行する。概して、送信ノードは別のシステムへのデータ伝送を引き起こすための実行可能ロジックを表すノードを含む。ノード２ｅによって表される実行可能ロジックの一部の実行を完了した後、フローチャート２の状態は終了ノードを含むノード２ｆに移行する。概して、終了ノードは実行可能ロジックの実行が完了したことを表す。
【００７６】
一例では待機ノードは、その始まりが待機ノードである状態間の移行、例えばある状態から別の状態への移行を表す。フローチャート２内の全てのノードが状態移行を表す待機ノードを表す訳ではないため、この例ではフローチャート２が状態移行図と異なる。むしろ一部のノードは、例えばフローチャート２が既に特定の状態にあるとき実行されるアクションを表す。一部の例では、システムがフローチャート２を処理して状態機械図又は状態機械命令を生成する。
【００７７】
この例ではフローチャート２が２つの状態、即ちノード２ｂ、２ｃ、２ｇによって表される第１の状態とノード２ｄ、２ｅ、２ｆによって表される第２の状態とを含む。この第１の状態では、システムが（ノード２ｂによって表すように）特定のデータレコードを待機し、次いで（その始まりをノード２ｄによって表す）第２の状態への（仕様１の及び／又はチャート２の）移行又はノード２ｇの実行を引き起こすノード２ｃを実行する。第２の状態になると、システムは（ノード２ｄによって表すように）特定のデータレコードを再び待機し、次いでノード２ｅ、２ｆを実行する。待機ノード以外のノードを含めることにより、フローチャート２はデータレコードの時間的処理のロジックグラフを含む。この例ではチャート２がリンク２ｉを含み、リンク２ｉは第１の状態から第２の状態へのチャート２の移行を表し、ノード２ｃからノード２ｄへのデータのフローも表す。
【００７８】
ノード２ａ、２ｂ、２ｃに対応する第１の状態における実行可能ロジックの一部に関する利用者によって指定された実行順序を表すために、チャート２はノード２ａとノード２ｂとの間のリンク２ｊ及びノード２ｂとノード２ｃとの間のリンク２ｋも含む。この例では、第１の状態における実行可能ロジックの一部（以下「第１の状態の実行可能ロジック」）がステートメント（例えば、ロジカルステートメントや命令等（本明細書では限定なしにまとめて「ステートメント」と呼ぶ））を含む。概して、実行順序は実行可能ロジック及び／又はステートメントが実行される順序を含む。ノード２ａ、２ｂ、２ｃのそれぞれが、それらのステートメントの１つ又は複数に（例えば、第１の状態の実行可能ロジックの１つ又は複数の部分に）対応する。そのためリンク２ｊは、ノード２ａによって表される第１の状態の実行可能ロジック内のステートメントが、ノード２ｂによって表される第１の状態の実行可能ロジック内の他のステートメントを実行する前にシステムによって実行されることを表すことにより、第１の状態の実行可能ロジックの実行順序を表す。リンク２ｋも、ノード２ｂによって表される第１の状態の実行可能ロジック内のステートメントが、ノード２ｃによって表される第１の状態の実行可能ロジック内の他のステートメントを実行する前にシステムによって実行されることを表すことにより、第１の状態の実行可能ロジックの実行順序を表す。
【００７９】
仕様１はキー２ｈも含み、キー２ｈはフローチャート２がキー２ｈを含む又はキー２ｈに関連するデータレコードを処理することを識別する。この例ではキーとしてカスタム識別子（ＩＤ）が使用される。キー２ｈは、例えば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＝ＭＧＹ６２０３を有するデータレコード６ｃを処理し、次いでメッセージが送信されるノード５ｅに進む前に同じキーを有する第２のデータレコードを待機する。この例ではシステムが非待機ノードにおいて停止せず、従ってノード５ｅで停止しないが、むしろメッセージを送信してノード５ｆに進む。
【００８８】
図１Ｂの改変形態では、システムが単一のキー値について複数のフローチャートインスタンスを生成する。例えば、異なる開始日及び終了日を有する同じ顧客のための幾つかのフローチャートインスタンス又は様々なマーケティングキャンペーンについて同じ顧客のための幾つかのフローチャートインスタンスがあり得る。
【００８９】
この例では、システムが状態データ、例えばインスタンスごとに何れのノードが現在実行されているのかを示すデータをデータリポジトリ又はメモリ内データグリッド内に記憶することによってインスタンスの状態を保つ。概して、状態データは状態を示すデータを含む。この例では、インスタンスがキーの値に関連する。データリポジトリ又はメモリ内データグリッドがキーの値を記憶する。システムは、キーの値ごとに状態データを記憶することによってインスタンスの状態を保つ。キーの特定の値に関するデータレコードの処理を完了すると、システムは（フローチャート２内の）次のノードがそのキーの値に関する現在の状態を表すことを指定するためにデータリポジトリ内の状態データを更新する。次いで別のデータレコードが到着すると、システムはそのキーの値に関する現在の状態をデータリポジトリ内で探索し、そのキーの値に関する実行可能ロジックの現在の状態を表すノードに対応する実行可能ロジックの一部を実行する。
【００９０】
図２を参照し、ネットワーク化された環境１０は、過去のキー付きデータレコードを処理することによって達する状態に基づいてキー付きデータレコードを処理するための環境を含む。ネットワーク化された環境１０は、データレコードを処理するためのシステム１１、及びデータレコードがそこから受信されるデータソース２０を含む。データレコードの１つ又は複数がデータ項目の一部である場合があり、そのため受信される１つ又は複数のデータレコードは１つ又は複数のデータ項目の形式で受信される。この例では、データソース２０がリアルタイムデータストリーム１２のデータレコード１４、１６、１８を（１つ又は複数のネットワーク（不図示）上で）システム１１に伝送する。そのため、システム１１はデータレコード１４、１６、１８の１つ若しくは複数又は他のデータレコード（不図示）を断続的に受信する。例えばデータレコード１４がシステム１１に最初に到着し、データレコード１６が（例えば、リアルタイムデータストリーム１２内でデータレコード１４の後に配置されることにより）システム１１に次に到着し、データレコード１８が（例えば、リアルタイムデータストリーム１２内において、リアルタイムデータストリーム１２内でデータレコード１８の前且つデータレコード１４の後に配置されるデータレコード１６の後に配置されることにより）システム１１に次に到着するように、データレコード１４、１６、１８のそれぞれは互いに時間において隔てることができる。データレコード１４、１６、１８のそれぞれは１つ又は複数のフィールド（例えば、顧客ＩＤ用のフィールドやアカウントＩＤ用のフィールド等）を含む。この例では、データレコード１８が値２４を有するキーフィールド２２を含む。
【００９１】
システム１１は、データレコード及びデータレコードを検出するための検出エンジン２６、１つ又は複数のデータレコード及びデータレコードに対して実行可能ロジック４８を実行するための実行エンジン４４、データレコード及びデータレコードに対して実行可能ロジック４８を実行した結果に基づいて１つ又は複数のアクションを開始するためのアクションエンジン５３、並びに実行時のモニタリング及び制御のための制御エンジン５４を含む。実行可能ロジック４８は、例えばシステム１１等のデータ記憶システム内に記憶される。この例ではデータリポジトリ２８が、実行可能ロジック４８、実行可能ロジック４８の１つ又は複数の状態、及び実行可能ロジック４８の状態間の移行を表す仕様４５を含む。
【００９２】
仕様４５は、実行可能ロジック４８の表示可能グラフィカル表現を含む。例えばチャートやフローチャート等を含む様々な種類の表示可能グラフィカル表現がある。この例では、仕様４５がノード４７、４９、５１、５５を有するチャート４３を含む。ノードは、実行可能ロジック４８のその部分が仕様４５によって指定される特定の状態にあるとき実行可能である、実行可能ロジック４８の特定の部分を表す。従って、チャート４３は実行可能ロジック４８を実行するためのテンプレートを提供する。この例では、システム１１が仕様４５のチャート４３内のロジックを実行可能ロジック４８へとコンパイルし、実行可能ロジック４８を実行することはシステム１１が入力データレコードに反応し出力データレコードを作成することを引き起こす。
【００９３】
仕様４５は、チャート４３のためのキー（不図示）も指定する。この例では、キーフィールド２２がチャート４３のためのキーに対応する。キーフィールドの値ごとに、実行エンジン４４はキーフィールドの他の値に関するデータレコードと独立にそのキーフィールドの値に関するデータレコード又はデータ項目を処理する。それを行うために、実行エンジン４４はリアルタイムデータストリーム１２のデータレコード内に含まれる（キーフィールド２２の）固有値ごとにチャート４３のインスタンスを開始する。この例では、実行エンジン４４がデータレコード１４、１６、１８それぞれに含まれるキーの値についてインスタンス２３、２５、４６を開始する。チャート４３のインスタンスごとに、システム１１は実行されているそのインスタンス内のノードの現在位置を追跡することにより、そのインスタンスに関する実行可能ロジックの状態を保つ。現在位置は、チャート内の何れのノードが現在実行されているのかを指定する。システム１１は、ノードによって表される実行可能ロジックの１つ又は複数の部分を実行することによってそのノードを実行する。概して、現在位置は実行可能ロジックの現在の状態を表す。一例では、システムが待機ノードにおいてのみ停止し非待機ノードでは停止しないため、データレコード間の現在位置は待機ノードのみである。この例では、他の現在位置が過渡であり、それはデータレコードが入ってくるときシステムは次の待機ノード（又は終了ノード）まで全てのノードをチャート内で順に実行し、次いでその現在位置を示すデータを記憶することによってその現在位置を覚えておくからである。
【００９４】
システム１１は、値２４、３２、３６のそれぞれに関連するノードデータ項目３０、３８、４０をデータリポジトリ２８内に記憶することにより、チャート４３のインスタンス２３、２５、４６ごとに現在位置を追跡する。ノードデータ項目は（仕様４５のインスタンス内の）何れのノードが現在実行されているのかを指定し、例えばそれによりチャートのインスタンスの状態及び実行可能ロジックの状態を指定する。値２４、３２、３６のそれぞれはキーフィールド２２の固有値に対応する。従って値とノードデータ項目との間の関連付けは、その値について開始されるチャート４３のインスタンスの現在位置を指定する。この例では、データレコード１８内に含まれる値２４についてインスタンス４６が開始される。
【００９５】
データレコード１６はキーフィールド２２の値３２を含む。値３２についてインスタンス２３が開始される。値２４は、インスタンス４６の現在位置がノード４７であることを指定するためにデータリポジトリ２８内でノードデータ項目３０に関連付けられる。値３２は、インスタンス２３の現在位置がノード４９であることを指定するためにデータリポジトリ２８内でノードデータ項目３８に関連付けられる。この例では、データレコード１４がキーフィールド２２の値３６を含む。値３６についてインスタンス２５が開始される。値３６は、インスタンス２５の現在位置がノード４７であることを指定するためにデータリポジトリ２８内でノードデータ項目４０に関連付けられる。
【００９６】
この例では、システム１１がデータソース２０の１つ又は複数からデータレコード１８を入力装置又はポート（不図示）上で受信する。システム１１の検出エンジン２６はデータレコード１８を分析して、データレコード１８がキーフィールド２２の値２４に関連すると判定する。検出エンジン２６は、キーフィールド２２の値２４に関する仕様の状態をデータリポジトリ２８内（又はメモリ内データグリッド（不図示）内）で探索する。この例では、ノード４７が仕様４５のインスタンス４６に関する現在位置であることを指定するために、値２４がノードデータ項目３０に関連する。従って、キーフィールド２２の値２４に関する仕様４５の状態はノード４７である。検出エンジン２６は、データレコード１８及びノードデータ項目３０を実行エンジン４４に伝送する。ノードデータ項目３０に基づいて、実行エンジン４４は仕様４５のインスタンス４６に関する現在位置がノード４７であることを識別する。この例では、実行可能ロジック４８の特定の部分がノード４７に対応する。実行エンジン４４は、データレコード１８に対して（又は関して）実行可能ロジック４８の特定の部分を実行する（例えば、実行可能ロジック４８の特定の部分をデータレコード１８に適用する）ことによってデータレコード１８を処理する。
【００９７】
データレコード１８に対して実行可能ロジック４８の１つ又は複数の部分を実行することに基づいて実行エンジン４４がトリガ５２を生成する。概して、トリガは出力データレコードを含む。例えばトリガは、顧客に向けてＳＭＳメッセージを送信させるデータレコードを含む。それを行うために、実行エンジン４４は送信されるメッセージの詳細と共に出力データレコードを生成し、アクションエンジン５３がその出力データレコードをＳＭＳメッセージへと変化させる。この例では、アクションエンジン５３による処理及び実行のためにトリガ５２が待ち行列５０に発行される。
【００９８】
データレコード１８を処理することに基づき、実行エンジン４４は更にチャート４３のインスタンス４６に関する現在位置をノード４９に更新する。実行エンジン４４は、インスタンス４６の現在位置を指定する更新済みノードデータ５６を生成することによってそれを行う。更新済みノードデータ５６に基づき、実行エンジン４４はインスタンス４６内の現在位置がノード４９であることを指定するコンテンツでノードデータ項目３０を更新するためにデータリポジトリ２８に命令を伝送する。実行エンジン４４は、ノード４７によって表される実行可能ロジック４８の１つ又は複数の部分をデータレコード１８に対して実行した結果を示す結果データ５８も生成する。実行エンジン４４は、（値２４に関連する）更新済みノードデータ５６及び（同じく値２４に関連する）結果データ５８を制御エンジン５４に伝送する。
【００９９】
この例では、制御エンジン５４がキーフィールド２２の値２４を含むデータレコードを検査し、リアルタイムでモニタリングするためのチャート４３のインスタンス４６を表示するためのデータを生成する。この例では、ノード４９がインスタンス４６の現在位置を表すことを示すためにノード４９が視覚的に強調表示されている。制御エンジン５４は、インスタンス４６と共に結果データ５８を表示するためのデータも生成する。結果データ５８はインスタンス４６の１つ又は複数の部分上にオーバレイすることができる。別の例では、制御エンジン５４によって生成されるデータが、ノード４７と共に（例えば、ノード４７と並べて又はそのすぐ近くに）結果データ５８を表示するためのものである。この例では、制御エンジン５４がフローチャート４３のノードごとに（及び／又はフローチャート４３のインスタンスごとに）結果データを生成し、フローチャート４３（及び／又はフローチャート４３の各インスタンス）が表示されるとき、フローチャート４３内（及び／又はフローチャート４３の各インスタンス内）のそのノードと並べて結果データを表示する。この例では、結果データが各ノードを通して処理される幾つかのデータレコードを示す。別の例では、例えばキーフィールドの特定の値についてデータレコードが処理されるとき、結果データは何れの個々のデータレコードが特定のノードによって処理されるのかを示す。
【０１００】
データレコード１８の処理後、実行エンジン４４は同じくキーフィールド２２の値２４を含む１つ又は複数のその後のデータレコードを待機することができる。実行エンジン４４が値２４に関する各データレコードを処理するとき、実行可能ロジック４８は仕様４５によって定められるように状態間を移行する。これらのその後のデータレコードは、仕様４５によって定められるように実行可能ロジック４８の１つ又は複数の部分に従って処理される。
【０１０１】
改変形態では、システム１１が、例えば特定のデータレコードフィールド（キーフィールド）の値に対応するキーの値ではなく、受信データレコードの１つ又は複数のデータレコードフィールド内の１つ又は複数の値に基づいてチャート４３に関するキーの値を決定する。この例では、１つ又は複数のデータレコードフィールドの何れがキーの値に使用されるのかを指定する命令をシステム１１が受信する（又はかかる命令でシステム１１が構成される）。別の例では、システム１１がデータレコードを受信し、それらの指定されたフィールドの値についてデータレコードを構文解析する。それらの指定されたフィールドの値に基づき、システム１１は例えばそれらの指定されたフィールドの値を増大することによって、それらの指定されたフィールドの値を修正することによって、それらの指定されたフィールドの値の１つ又は複数に関連する別の値についてデータリポジトリを照会すること等によってキーの値を決定し又は生成する。
【０１０２】
一例では、チャートに関するキーが顧客アカウントＩＤである。この例では、データリポジトリ２８が顧客ＩＤ等の他のデータに関連して顧客の顧客アカウントＩＤを記憶する。この例では、データレコードが顧客アカウントＩＤのためのデータレコードフィールドを含まない。むしろデータレコードは、顧客ＩＤのためのデータレコードフィールド（「顧客ＩＤデータレコードフィールド」）を含む。この例では、システム１１が顧客ＩＤデータレコードフィールドに基づいて顧客アカウントＩＤを決定するための命令を実行する。システム１１は、顧客ＩＤデータレコードフィールドの値についてデータレコードを構文解析する。システム１１はその構文解析した値を使用して、その構文解析した値に関連する顧客アカウントＩＤについてデータリポジトリ２８を照会する。それに応答し、データリポジトリ２８が（構文解析された値に関連する）顧客アカウントＩＤに関する値を返す。システム１１は、顧客アカウントＩＤの値になるようにキーの値を設定する。
【０１０３】
別の例では、チャートに関するキーが複数のデータレコードフィールドからの値を含む。この例では、システム１１がそれらの値を連結してキーの値を作成する。更に別の例では、チャートに関するキーが、例えば顧客アカウントデータ、顧客プロファイルデータ、顧客購入データ等のデータリポジトリ内に記憶される他のデータと連結される１つ又は複数のデータレコードフィールドからの値を含む。更に別の例では、（例えば、データリポジトリ２８内に記憶される）キーの値が既定のビット数を含む。この例では、キーの値が指定のデータレコードフィールドの値に基づく。データレコードフィールドは、キーに必要なビット数と異なる幾つかのビットを保持する。この例では、システム１１が指定のデータレコードフィールドの値の前又は後に既定のビット数を挿入する（又は削除する）ことによってキーの値を生成する。このキーの生成値を使用し、システム１１は生成されたキーの値に対応する（キーの）値に関連する状態データ（例えば、ノードデータ項目）をデータリポジトリ２８内で識別する。
【０１０４】
図３を参照し、環境５９はＣＥＰ規則環境（ＣＲＥ）を実装するためのシステム６０を含む。一例では、システム６０がシステム１１（図２）を含み又はシステム１１に含まれる。一例では、システム６０がシステム１１と同じシステムである。別の例では、システム６０がシステム１１と異なる。この例では、システム６０がＣＲＥシステムを含む。
【０１０５】
環境５９は、例えば外部資源から１つ又は複数のデータレコード（不図示）を収集するための収集エンジン６１を含む。環境５９は、システム６０の１つ又は複数の出力データレコードによって指定される１つ又は複数のアクションを開始し又は実行するための作動エンジン７２も含む。一例では、システム６０、収集エンジン６１、及び作動エンジン７２が別のシステム、例えば親システム内に含まれる。別の例では、収集エンジン６１及び作動エンジン７２がそれぞれシステム６０と異なるシステム内に含まれ、かかるシステムによって実装される。更に別の例では、収集エンジン６１及び作動エンジン７２の１つ又は複数がシステム６０内に含まれる。
【０１０６】
この例では、収集エンジン６１が１つ又は複数のデータレコード（不図示）を入力データレコード待ち行列６２に伝送する。概して、入力データレコード待ち行列は入力データレコードを受信するための待ち行列である。概して、入力データレコードはシステム６０、収集エンジン６１、及び作動エンジン７２の外部で起こった特定の発生を表すデータレコードである。一例では、顧客が電話をかけたこと又は取引を送信したことを指定するデータを入力データレコードが含む。別の例では、入力データレコードが金銭取引の発生を指定するデータを含む。この例では、収集エンジン６１によって受信されるデータレコードごとに、実行エンジン７８による処理のために収集エンジン６１がそのデータレコードを入力データレコード待ち行列６２に発行する。そうすることにより、システム６０はデータレコード自体に関するデータベースの照会及び探索と独立にデータレコードを処理する。データレコードがデータリポジトリ内に記憶され、システム６０がデータベースの照会又は探索を行ってデータレコードを取り出すデータレコードの処理に関連するレイテンシと比較し、このようにデータレコードを待ち行列に発行することはデータレコードの処理に関連するレイテンシを減らす。
【０１０７】
入力データレコード待ち行列６２は、１つ又は複数のデータレコードを実行エンジン７８に伝送する。この例では、実行エンジン７８が入力データレコード待ち行列６２から受信されるデータレコード６３を選択する。この例では、実行エンジン７８がチャート（不図示）のインスタンス６４、６５、６６を実行する。以下、インスタンス６４、６５、６６を限定なしに及び便宜上チャートインスタンス６４、６５、６６と呼ぶ。チャートインスタンス６４、６５、６６のそれぞれは、入力データレコード待ち行列６２内に含まれるデータレコードの（キーの）固有値に対応する。
【０１０８】
この例では、実行エンジン７８がデータレコード６３内に含まれるキーの値について開始されるチャートインスタンス６４、６５、６６の１つを選択する。実行エンジン７８は、本明細書に記載の技法を使用してチャートインスタンス６４、６５、６６の選択されたものに従ってデータレコード６３を処理する。実行エンジン７８は内部データレコード及びアラーム６７を含む。概して、内部データレコードはあるチャートから別のチャートに送信されるデータレコードを含む。例えばチャート（又はチャートインスタンス）は、作動エンジン７２に送信されないが代わりに別のチャート（又はチャートインスタンス）に送信される内部データレコードを生成し得る。一例では、各チャートがスレッドプロセス内のスレッドを表す。この例では、内部データレコードがスレッド間でデータを送信する方法を表す。概して、アラームは将来の予め計算された時点において到着する（例えば、チャートが自らに送信する）既定の種類のデータレコードを含む。システムは待機状態を実行するためのアラームを生成する。例えばチャート（又はチャートインスタンス）は、内部データ構造内に保存され、且つ後の時点においてチャートに提示されるアラームとして実装される期間にわたって待機するように構成され得る。
【０１０９】
チャートインスタンス６４、６５、６６の１つ又は複数を実行することに基づいて実行エンジン７８が１つ又は複数の出力データレコードを生成し、それらの出力データレコードを出力データレコード待ち行列７１、例えば出力データレコードを保持するための待ち行列に発行する。システム６０は、出力データレコード待ち行列７１内に含まれる出力データレコードを作動エンジン７２に伝送する。作動エンジン７２が出力データレコードを受信すると、作動エンジン７２は１つ又は複数のアクションを実行し、又は出力データレコードのコンテンツに従って実行するための１つ又は複数のアクションを生成する。
【０１１０】
実行エンジン７８はグローバルチャート６９を含む。概して、グローバルチャートはインスタンスが１つあるチャートを含む。グローバルチャートは、グローバル変数（例えば、リアルタイムデータストリーム内で受信されるデータレコード内で見られる幾つかの異なるアカウントを示す変数）を操作するために使用される。概してチャートはキーの脈絡で実行され得るが、厳密に１つのインスタンスを実行する幾らかのチャート、即ちグローバルチャートがある。グローバルチャートは、例えば要求／応答同期サービスとして実行エンジン７８内で内部的に使用される。概して、要求／応答同期サービスは要求に対する即座の応答を提供するサービスを含む。
【０１１１】
実行エンジン７８は、例えば以下でより詳細に説明するように利用者から受信される１つ又は複数の命令に基づいて及び／又は手動状態操作データ７４に基づいてチャート（及び／又はチャートインスタンス）を開始し、停止し、又は調節するためのチャートサブエンジン６８を含む。一例では、実行エンジン７８が１つ又は複数のデータリポジトリ、例えば環境５９の外部の又は環境５９に含まれるデータリポジトリから参照データ７０も取り出す。概して、参照データは特定のキー又は特定のキーの値に関連するデータを含む。例えば顧客アカウントはキーである。この例では、参照データが顧客アカウントに関するアカウント詳細を含む。
【０１１２】
システム６０は、チャートインスタンス及びチャートの実行時のモニタリング（及び／又は検査）及び制御のための制御エンジン７９も含む。この例では、制御エンジン７９がシステム６０の実行時環境を表す。実行時のモニタリング及び／又は検査のために、実行エンジン７８内の活動を示すデータがトレースされ制御エンジン７９に送信される。このトレースデータはデータベース（不図示）内に又は例えば（データベース内に記憶される）メトリク記憶データ７５等のデータセット内に記憶される。制御エンジン７９は、チャートインスタンスの実行の実時間の視覚化をディスプレイ装置上にレンダリングし、且つ実行エンジン７８を実行することの現在の統計を表示するための動作表示データ８０を生成する。制御エンジン７９はこのトレースデータを使用して、例えばチャートインスタンス６４、６５、６６の挙動を要約する様々な表形式のレポートを含むレポートデータ７６を生成する。
【０１１３】
制御エンジン７９は、例えばチャート及びチャートのインスタンスを停止し、開始し、又は休止するコントロール（又はコントロール用のデータ）を利用者に提供することによってチャート及び／又はチャートインスタンス６４、６５、６６の１つ若しくは複数の実行も制御する。これらのコントロールの１つ又は複数を選択することは、制御エンジン７９に手動状態操作データ７４を生成させる。概して、手動状態操作データ７４はチャートインスタンスの状態を手動で操作する（例えば、変更する）ためのデータを含む。例えばチャートインスタンスの状態は、チャートを再開し、チャートを一時停止し、又はチャートを停止することによって手動で変更することができる。別の例では、利用者が（例えば、チャートの現在の状態を指定することによって）キーのサブセットについてチャートを選択し、それらのキーについてチャートの状態を変更することができる。この例では、手動状態操作データ７４に従ってチャートを制御するために、制御エンジン７９が手動状態操作データ７４をチャートサブエンジン６８に伝送する。実行中のチャートインスタンスの状態をどのように操作するのかを指定する命令としてチャートサブエンジン６８が手動状態操作データ７４を処理する。
【０１１４】
制御エンジン７９は制御点７３も含む。概して、制御点は（チャートを生成する）利用者によって定められる実行時パラメータを含み、実行時における１つ又は複数のチャート（又はチャートインスタンス）の挙動を変更するために使用される。実行エンジン７８は、制御点を読取専用変数として更にはグローバル変数として読み取る。一例では、制御点７３がチャートを定め構成するためのユーザインタフェース内で定められ、（例えば、動作表示データ８０から生成される）実行時インタフェースによって明らかにされる。実行エンジン７８は制御点７３をグローバル変数として読み取るため、チャートの挙動を変えるために制御点７３の１つ又は複数をチャートの実行中に変更することができる。例えば制御点を使用し、個々のチャートを開始し又は停止することができ、閾値を変更することができ、任意選択的なロジックを有効又は無効にすること等ができる。制御点に基づき、チャートを停止することなしにこの実時間の構成が実行される。
【０１１５】
この例では、例えば実行可能ロジックの状態の回復性を得るために、実行されている実行可能ロジックの一部の状態を保存する１つ又は複数の操作を実行することによってシステム６０が回復性を得るためにも構成される。例えばチャートのノードの少なくとも一部は、実行可能ロジックの状態の回復性を有効にするために（例えば、フローチャート内の現在位置を示すデータを保存することによって）実行可能ロジックの状態を（例えば、システム６０の）バッファ内に保存するチェックポイント操作をシステム６０に実行させるロジックを含む。
【０１１６】
図４を参照し、仕様１００はチャート１０２を含む。概して、チャート１０２は以下のシナリオのためのロジックを表す：顧客がテキストメッセージを送信するとき、その顧客が「ペイパーテキスト」プランを引き続き使用しているが、無制限テキストプランを魅力的なものにするのにその顧客のその月のテキストメッセージの送信量が十分である場合、システムはその顧客が無制限プランにアップグレードすることを提案するＳＭＳメッセージをその顧客に送信する。加えて、システムがオファーを送信する場合、顧客が１時間以内にＳＭＳメッセージに返信することによってアップグレードする場合はその顧客に＄１０のボーナスクレジットも与えられる。さもなければ、その顧客はウェブ上でアップグレードするように指示される。
【０１１７】
この例では、チャート１０２が上記のロジックを実装するためのノード１０４〜１３６を含む。システムはチャート１０２に関する現在位置を保つ。先に説明したように、現在位置は何れのノードが現在実行されているのかを示す。この例では、システムはノードによって表される実行可能ロジックの１つ又は複数の部分を実行することによってそのノードを実行する。システムは、チャート１０２に関する現在位置データを保つことによって実行可能ロジック及びチャート１０２の状態を保つ。
【０１１８】
開始ノード１０４は、チャート１０２内への入口及びロジックの開始位置を指定する。開始ノード１０４によって表される実行可能ロジックの１つ又は複数の部分の完了後、システムはチャート１０２の現在位置を待機ノード１０６になるように更新する。この例では、待機ノード１０６が部分１０６ａ、１０６ｂ、１０６ｃ、及び１０６ｄを含む。待機ノード１０６によって使用される様々なロジックを利用者が入力又は修正するために部分１０６ａ、１０６ｂ、１０６ｃのそれぞれが編集可能である。部分１０６、１０６ｂ、１０６ｃ内に含まれるロジックは、システムによって実行可能ロジックへとコンパイルされる。部分１０６ａは、（待機ノード１０６によって表される）実行可能ロジックの一部が待機するデータレコードの名称又は種類を指定する。この例では、「ＡＳ」がアカウント活動ストリームデータレコードを表す。部分１０６ｂは、適切な種類のデータレコードが受信されるときに満たされる必要がある条件を指定する。部分１０６ｃはタイムアウト、例えばシステムが指定の種類のデータレコードを待機する時間を指定し得る。この例では、待機ノード１０６がタイムアウトを含まない。
【０１１９】
チャート１０２によれば、待機ノード１０６の一番下のデータレコードの略記１０６ｄによって指定されるように、ＡＳデータレコードは受信されると次のノード（即ち決定ノード１０８）のロジックに従って処理される。
【０１２０】
チャート１０２は、決定ノード１０８のロジックに従ってＡＳデータレコードを処理した結果に基づいて、実行可能ロジックが、終了ノード１１０によって表されるデータレコードの処理を終了した状態に移行すること、又は決定ノード１１２によって表されるＡＳデータレコードの更なる評価が行われる別の状態に移行することを指定する。決定ノード１１２のロジックに従ってＡＳデータレコードを処理することに基づき、実行可能ロジックは、ノード１１４によって指定される実行可能ロジックの開始状態に戻る状態に移行し、又はノード１１６によって指定されるチャートインスタンス変数の値が設定される状態に移行する。概して、チャートインスタンス変数はチャートのインスタンスごとに１つの値を有する変数を含む。
【０１２１】
チャートインスタンスの値の設定後、システムはチャート１０２の現在位置をトリガノード１１８になるように更新し、トリガノード１１８は、出力データレコードに作用するために出力データレコードがシステムの一部に送信される実行可能ロジックの状態を表す。出力データレコードを送信するためのロジックでチャート１０２をプログラミングする場合、利用者は何れの出力データレコードの種類が送信されているのかを識別し、その種類のデータレコードについてトリガノード１１８のフィールド１１８ａ、１１８ｂ、１１８ｃにデータ投入する必要がある。この例では、利用者はＳＭＳタイプの出力データレコードを送信したい。それを行うために、利用者はフィールド１１８ａについて「ＳＭＳ」の値を選択する。フィールド１１８ｂ、１１８ｃの値も利用者によって与えられる。この例では、フィールド１１８ｂがＳＭＳメッセージを送信するときに使用する電話番号を指定し、フィールド１１８ｃが送信するメッセージのコンテンツを指定する。
【０１２２】
トリガノード１１８の完了後、システムがチャート１０２の現在位置を待機ノード１２０になるように更新し、待機ノード１２０は実行可能ロジックが（例えば、待機ノード１０６に従って過去に待機された１つ又は複数のデータレコードから時間において隔てられた）１つ又は複数の追加のデータレコードを待機する状態を表す。
【０１２３】
この例では、待機ノード１２０が部分１２０ａ、１２０ｂ、１２０ｃを含む。部分１２０ａは、待機ノード１２０によって表される実行ファイルの一部が待機するデータレコードの名称又は種類を指定する。この例では、待機ノード１２０がＡＳデータレコードの待機を表す。部分１２０ｂはＡＳデータレコードが受信されるときに満たされる必要がある条件を指定し、１つ又は複数の論理表現（又は論理表現に基づく視覚化）を表示する。部分１２０ｃはタイムアウト、例えばシステムが指定の種類のデータレコードを待機する時間を指定する。部分１２０ｃによって指定される時間中に適切なデータレコードが受信されない場合は待機がタイムアウトになり、チャート１０２の現在位置が待機ブロック１２０を離れるタイムアウト矢印１２９に接続される待機ノード１２８に移る。この例では、待機ノード１２８は１日待機して、その後決定ノード１３０によって表される状態に移行するための実行可能ロジックを表す。決定ノード１３０のロジックによるアカウント詳細の評価結果に基づき、チャート１０２の現在位置は実行が完了した状態を表す終了ノード１３４又はＳＭＳメッセージを送信するトリガを実行する状態を表すトリガノード１３２に更新される。トリガノード１３２によって指定されるトリガの完了後、システムは実行が完了した状態を表す終了ノード１３６になるように現在位置を更新する。
【０１２４】
部分１２０ｃによって指定される時間内に別のＡＳデータレコードが受信される場合、チャート１０２の現在位置をトリガノード１２２になるように更新し、実行可能ロジックは利用者のアカウントにクレジットが適用されるトリガノード１２２によって表される状態に移行する。トリガノード１２２によって指定されるトリガの完了後、チャート１０２の現在位置をトリガノード１２４になるように更新し、実行可能ロジックが顧客にありがとうのＳＭＳを送信するためのトリガノード１２４によって表される状態に移行する。トリガノード１２４によって指定されるトリガの完了後、チャート１０２の現在位置を実行が完了する実行可能ロジックの状態を表すノード１２６になるように更新する。
【０１２５】
仕様１００はキャプション部分１４０も含む。この例では、キャプション部分１４０が仕様１００及びチャート１０２に関するキーを指定するキー部分１４２を含む。この例では顧客アカウントＩＤがキーである。キーの固有値（例えば、顧客アカウントＩＤの固有値）ごとにシステムはチャート１０２のインスタンスを生成し、それにより顧客ごとにチャート１０２の１つのインスタンスを生成する。この例では、システムが全ての実行中のチャートインスタンスについて現在位置を保つ。そのため、システムは各顧客をチャート１０２のインスタンスに関連付け、例えばインスタンスごとに現在位置を追跡することによってそれらのインスタンスのそれぞれについて状態を保つ。
【０１２６】
キャプション部分１４０は外部入力データレコード部分１４４も含み、この部分はチャート１０２のロジックによって処理される入力データレコードであるデータレコードの種類を指定する。概して、外部入力データレコードとは、チャートによって表される実行可能ロジックへの入力である外部ソースから受信されるデータレコードである。この例では、アカウント活動ストリームデータレコードが外部入力データレコードであることを外部入力データレコード部分１４４が指定する。キャプション部分は、何れの種類のデータレコードがチャート１０２のロジックから生成され、かかるロジックによって出力されるのかを指定する外部出力データレコード部分１４６、１４８も含む。この例では、ＳＭＳ及びアカウント修正出力データレコードがそれぞれあることを外部出力データレコード部分１４６、１４８が指定する。
【０１２７】
キャプション部分１４０は、制御点を示す制御点部分１５０を含む。制御点に関する新たな値を読み込むために、チャート１０２によって表される実行可能ロジックの実行を停止する必要はない。この例では、決定ノード１１２が制御点部分１５０によって表される制御点に基づくロジックを含む。制御点部分１５０によって表される制御点は、決定ノード１１２のロジック内に含まれるテキストオファー閾値と呼ばれる数値を含む。この制御点は、オファーが与えられるまでに顧客が送信しなければならないテキストメッセージ数を含む。オファーが与えられるまでに顧客が送信しなければならないテキストメッセージ数は、チャート１０２を変更し又は再開することなしに閾値（例えば、テキストオファー閾値）を変更できるようにするために制御点内に記憶される。
【０１２８】
キャプション部分１４０は集約を示す集約部分１５２を含む。集約は、ある期間にわたる複数のデータレコードからの値を結合することによって計算される値を含む。集約はキーに関連する。一部の例では、チャートのためのキーが集約のキーとマッチする。集約部分１５２によって参照される特定の集約は今月の合計テキストと呼ばれる。アカウント（即ちキーの値）ごとにこの集約の異なる値があり、対応するアカウントについてテキストメッセージが送信される度に集約が自動でインクリメントされる。集約については以下でより詳細に論じる。
【０１２９】
キャプション部分１４０は、参照データを表す参照部分１５４も含む。概して、参照データはチャート１０２及び／又はチャート１０２によって表される実行可能ロジックの外部のデータを含み、探索操作によってアクセスされる。参照データは、チャートと同じキーであり得るキーに関連する。一部の参照データはグローバルであり、キーを必要としないかキー（例えば、状態探索のためのジップコード）を明示的に供給することによって参照される。
【０１３０】
図５を参照し、略図５００は時点Ｔ１、Ｔ２、Ｔ３にわたる実行可能ロジックの状態５０８、５１０、５１２を示す。実行可能ロジックはチャート１０２（図４）によって表される。この例では、実行可能ロジックの状態がチャート１０２のキーの値ごとに保たれる。実行可能ロジックは状態５０８、５１０、５１２を含み、その始まりは（図４内の）待機ノード１０６、１２０、１２８によってそれぞれ表される。この例では、状態５０８、５１０、５１２のそれぞれが待機状態を含む。システムは、例えばキーの固有値ごとに状態を保つことによってチャート１０２のインスタンスごとに実行可能ロジックの状態を保つ。
【０１３１】
この例では、第１の時点Ｔ１においてシステムがデータレコード５０２を受信する。データレコード５０２は、キーの「４２３−ｅ５ｆ」の値に関連する。システムは、そのキーの値に関するチャートインスタンスに従ってデータレコード５０２を処理する。待機ノード１０６（図４）に達すると、システムは「４２３−ｅ５ｆ」の値に関連するチャートインスタンスの現在の状態を状態５０８になるように更新する。この例では、システムが状態５０８を示すデータと４２３−ｅ５ｆに等しいキーの値を表すデータ５１４との間の関連付けを（例えば、データリポジトリ内で）生成する。この関連付けにより、システムは時点Ｔ１において値＝４２３−ｅ５ｆに関するチャートインスタンスの現在の状態が状態５０８だと指定する。この例では、データレコード５０２が状態５０８に関連することをリンク５１６が視覚的に示す。この例では、仕様は実行可能ロジックが状態５０８にあるとき実行可能である実行可能ロジックの１つ又は複数の部分を指定する。例えば仕様は、実行可能ロジックが状態５０８にあるとき実行可能である実行可能ロジックの１つ又は複数の部分に対応するノードを含む。
【０１３２】
システムは第２の時点Ｔ２においてデータレコード５０４を受信する。データレコード５０４は、データレコード５０２の後で且つデータレコード５０６の前にシステムによって受信される介在データレコードである。データレコード５０４は、キーの「４５３−０ｒｆ」の値に関連する。システムは、そのキーの値に関するチャートインスタンスに従ってデータレコード５０４を処理する。待機ノード１０６（図４）に達すると、システムは「４５３−０ｒｆ」の値に関連するチャートインスタンスの現在の状態を状態５０８になるように更新する。この例では、システムが状態５０８を示すデータと４２３−ｅ５ｆに等しいキーの値及び４５３−０ｒｆに等しい別のキーの値を表すデータ５１８との間の関連付けを（例えば、データリポジトリ内で）生成する。この関連付けにより、システムは時点Ｔ２において値＝４２３−ｅ５ｆ及び値＝４５３−０ｒｆに関するチャートインスタンスのそれぞれの現在の状態が状態５０８だと指定する。この例では、データレコード５０４が状態５０８に関連することをリンク５２０が視覚的に示す。
【０１３３】
システムは第３の時点Ｔ３においてデータレコード５０６を受信する。データレコード５０６は、キーの「４２３−ｅ５ｆ」の値に関連する。システムは、そのキーの値に関するチャートインスタンスに従ってデータレコード５０６を処理する。待機ノード１２０（図４）に達すると、システムは「４２３−ｅ５ｆ」の値に関連するチャートインスタンスの現在の状態を状態５１０になるように更新する。この例では、システムが状態５１０を示すデータと４２３−ｅ５ｆに等しいキーの値を表すデータ５２２との間の関連付けを（例えば、データリポジトリ内で）生成する。この関連付けにより、システムは時点Ｔ３において値＝４２３−ｅ５ｆに関するチャートインスタンスの現在の状態が状態５１０だと指定する。この例では、データレコード５０６が状態５１０に関連することをリンク５２４が視覚的に示す。システムは、時点Ｔ３において値＝４５３−０ｒｆを有するチャートインスタンスのみが状態５０８にあることを表す、状態５０８を表すデータとデータ５２６との間の関連付けも生成する。
【０１３４】
図６を参照し、グラフィカルユーザインタフェース６００はタブ６０２、６０４、６０６を含む。概して、タブはグラフィカルユーザインタフェースの選択可能部分を含み、タブを選択することで選択されるタブに関連するデータが表示される。この例ではタブ６０２が選択されており、グラフィカルユーザインタフェース６００が特定のラッフル、即ち「ラッフル」に関するデータを表示している。この例では、グラフィカルユーザインタフェース６００がチャート６２２に関するデータを表示するための部分６０８を含む。部分６０８は、チャート６２２の名称を示すデータを入力し表示するための名称フィールド６１０を含む。部分６０８は、チャート６２２に関するチャートの種類を示すデータを入力し表示するための種類フィールド６１２も含む。例えばグローバルチャートを含む様々な種類のチャートがある。概して、グローバルチャートは顧客のプロセス、例えば単一のマーケティングキャンペーンを記述するチャートを含み、利用者のＣＥＰプロセスを論理的に表す最上位チャートである。部分６０８は、チャート６２２を非公開にするか公開するか、チャート６２２が非待機かどうか（例えば、チャート６２２が待機ノードを含むかどうか）、及びチャート６２２がグローバルチャートかどうかを指定するためのコントロールを有する制御部分６１４も含む。部分６０８は、何れの種類のキーがチャート６２２に使用されるのかを入力し表示するためのキーの種類フィールド６１６も含む。この例では、キーがアカウント識別子（例えば、アカウント番号やアカウント番号等）である。部分６０８は、例えば（キーの特定の値に関する）個々のデータレコードがステップ実行される（例えば、処理される）検査モードでチャートが実行されているとき、キーの何れの特定の値（_keyValue）が現在処理されているデータレコードに関連するのかを示すデータを表示するための組込値コントロール６１８も含む。概して、データレコードをステップ実行することは、例えば各データレコードを処理した結果がシーケンス内の次のデータレコードを処理する前に表示されるように、順に配置されるデータレコードを逐次的に処理することを含む。概して、検査モードはチャートを検査データ、例えば１組の既定のデータを用いて実行する動作モードを含む。チャートを検査モードで実行することにより、システムは例えばチャートとして表される規則又は決定表を検査する時系列の検査を実行し、検査は、時間において隔てられたデータレコードを用いてある期間にわたって行われる。組込値コントロール６１８は、例えばチャートが検査モードで実行されているときキーの特定の値について現在実行されているチャートのインスタンスに関するＩＤ（_ChartID）を示すデータも表示する。この例では、例えば（キーの特定の値に関する）個々のデータレコードがステップ実行される（例えば、処理される）検査モードではなく、チャートがリアルタイムで実行されていることを示すために組込値コントロール６１８が「実行中」のステータスを表示している。チャートに関する引数がある場合、部分６０８はチャートに関する引数を表示するための引数部分６２０も含む。概して引数はパラメータを含む。例えばチャートは���その値が別個のファイル内で指定されチャート内に読み込まれるパラメータを含み得る。例えばチャート内の論理表現は１つ又は複数のパラメータを含み得る。実行時にシステムはそれらのパラメータの値を指定するファイルにアクセスし、その値を論理表現に含める。そうすることによりシステムはチャート及び論理表現の再利用を促し、それはこれらのチャート及び論理表現が指定の値を含まないからである。むしろこれらのチャート及び論理表現は、チャート及び論理表現とは独立にその値を指定することができるパラメータを含む。
【０１３５】
チャート６２２は、規則の視覚的表現及び規則の部分間の時間的な関係を含む。この例では、チャート６２２がノード６２４、６２６、６２８、６３０、６３２、６３４を含む。各ノードは規則の１つ又は複数の部分を表す。システムは、例えばデータ項目又はデータレコードに対する規則の実行の精度を検査するためにチャート６２２を実行する。例えばチャート６２２を実行することにより、システムは（もしある場合）何れのノードがデータレコードの処理に失敗するのかを突き止める。かかる失敗は規則の部分間の競合を示す可能性があり、又は満たされる可能性が低い条件を指定する規則の一部を示し得る。そのため、この失敗はデータレコードを正確に処理することができない、又は標的とする処理様式や目標と異なる方法でデータレコードを処理する規則を示し得る。
【０１３６】
ノード６２４、６２６はサブチャートノードである。概して、サブチャートノードはサブチャートを呼び出し実行するための実行可能ロジックを表すノードを含む。サブチャートは、例えばチャートのセクションをコピーアンドペーストする必要性を回避するために他のチャートとの間でロジックを共有するためのチャートを含む。サブチャートは、複雑さの抽象化及び曖昧化を可能にする。例えばサブチャートは専門的な利用者によって作成され、その後、実装のより複雑な詳細に触れさせる必要のない非専門的な利用者によって使用され（呼び出され）得る。サブチャートは呼出チャートから呼び出され、呼出チャートはサブチャートを呼び出す（例えば、サブチャートに制御を移す）チャートを含む。呼出チャートは、例えばゴールチャートや別のサブチャートを含む様々な種類のチャートを含む。
【０１３７】
この例では、ノード６２８が待機ノード（以下、待機ノード６２８）であり、ノード６３２、６３４が終了ノードである。待機ノード６２８は、３つの条件６２８ａ、６２８ｂ、６２８ｃの少なくとも１つを満たす任意の種類のデータレコードを待機するように構成される。条件６２８ａは、データレコードが＄２５００を上回る取引を示す金銭取引（ＭＴ）外部入力データレコードであることを要求する。条件６２８ｂは、データレコードが電子明細書式の内部（ｉｎｔｒ）データレコードであることを要求する。条件６２８ｃは、データレコードが請求書の支払式の内部データレコードであることを要求する。
【０１３８】
チャート６２２は、リンク６４５、６４７、６４９、６５９、及び関連するラベル６５１、６５３、６５５、６５７のそれぞれを含む。概して、ラベルは満たされる条件の視覚的表現を含む。この例では、条件６２８ａを満たすデータレコードが待機ノード６２８からノード６３０にラベル６５１を有するリンク６４５を介して横断する。システムは、（例えば、実行可能ロジックの待機状態を表す）待機ノード６２８から（例えば、実行可能ロジックの別の状態又は実行可能ロジックの１つ若しくは複数の部分を表す）ノード６３０への移行の視覚的表現をグラフィカルユーザインタフェース６００内に表示させる。システムは、リンク６４５を視覚的に強調表示することによって移行の視覚的表現を表示する（又は表示させる）ことができる。
【０１３９】
この例では、条件６２８ｂを満たすデータレコードが待機ノード６２８からノード６３０にラベル６５３を有するリンク６４７を介して横断する。この例では、条件６２８ｃを満たすデータレコードが待機ノード６２８からノード６３０にラベル６５５を有するリンク６４９を介して横断する。待機ノード６２８がタイムアウトを理由に終了する場合、システムはチャート６２２の現在位置を、ラベル６５７を有する経路（即ちリンク６５９）によって待機ノード６２８に接続される終了ノード６３２に更新する。
【０１４０】
チャート６２２は、チャート６２２の何れのノードがデータレコードを現在処理しているのかを明示するためのステータスインジケータ６２９を含む。この例では、待機ノード６２８と並べて（例えば、その隣に）表示されているステータスインジケータ６２９によって明示されているように、待機ノード６２８がシステムによって現在実行されている。チャート６２２は、モニタリング点６３６、６３８、６４０、６４２、６４４、６４６、６４８、６５０、６５２、６５４を含む。概してモニタリング点は、例えば実行時やシミュレーション中及び検査中に自動で収集される特定のメトリクを計算するための命令を表す。モニタリング点は利用者によって定められ、利用者によってチャート内に挿入される。モニタリング点は名称を有し、名称はチャート内で固有である。一例では、例えば何個のデータレコードが特定のノードを通過するのかをモニタすることによって規則の精度を検査するために、システムがモニタリング点を使用する。データレコードがノードを通過しない場合、システムはそのノードに含まれるロジックの潜在的問題を識別し、そのロジックを精査しことによると調節するように利用者を促すことができる。この例では、例えばモニタリングされているノードを検査した結果の視覚的指示を与えるために、そのノードと並べてモニタリング点がチャート６２２内に表示されている。
【０１４１】
一例では、モニタリング点は実行時に入手可能なデータに対して利用者が計算を行うことを可能にし、そのため実行時データをメトリク内に含めることができる。例えば利用者は、（全ての顧客ではなく）重要度の高い顧客が何人特定の決定ノードの決まった分岐に進んだのかを知りたい場合がある。このメトリクを計算するために、警告点（monitory point）はチャートの実行時に顧客の重要度が高いかどうかを計算し、顧客の重要度が高いかどうかを示すモニタリング点のデータを返信するようにシステムに命令する。モニタリング点がサブチャート内で定められる場合、そのモニタリング点は呼出チャートに関連付けられる。
【０１４２】
モニタリング点は、チャート６２２内の２つのノードをつなぐ矢印に付加され又は待機ノードに付加される。例えば以下で説明するように、例えばリンク６４５を横断するデータレコードの数を追跡することにより条件６２８ａを満たすデータレコードの数を追跡するためにモニタリング点６４６がリンク６４５に関連付けられる。リンク６４７、６４９を横断するデータレコードの数を追跡するためにモニタリング点６４８、６５０がリンク６４７、６４９にそれぞれ関連付けられる。
【０１４３】
グラフィカルユーザインタフェース６００は、タブ６６２、６６４、６６６を有する部分６６０も含む。タブ６６２は、以下でより詳細に説明するようにチャート６２２の制御に関するデータを表示させる。タブ６６４は、以下でより詳細に説明するようにチャート６２２内の様々なオブジェクトの使用に関するデータを表示させる。タブ６６６は、モニタリング点に関するデータを表示させる。タブ６６６は、表現式の情報を表示するための部分６６８、矢印に関連する（例えば、付加される）モニタリング点に関するデータを表示するための部分６７０、待機ノードに関連するモニタリング点に関するデータを表示するための部分６７４、並びにチャート及び／又はチャートインスタンスの１つ又は複数の実行結果を示すメトリクデータを表示するための部分６７４を含む。
【０１４４】
部分６６８は、利用者によって定められる表現式６６８ａ、６６８ｂを表示する。表現式は、名称（例えば、「Total Qual」）、表現式の値がどのようにシステムによって計算されるのかを指定する定義、及び計算され出力される値に関連する。一例では、表現式が１組のパラメータ、１つ若しくは複数のローカル変数、及び／又はモニタリング点をどのように集約し報告するのかを規定するための定義を指定する。
【０１４５】
部分６７０、６７４は、利用者が例えば表現式６６８ａ、６６８ｂに基づいてモニタリング点を定義することを可能にする。この例では、部分６７０が矢印に関連するモニタリング点の定義を指定することを可能にする。部分６７０は、モニタリング点６４６の定義を指定するためのモニタリング点定義６７２を含む。従って、（モニタリング点定義６７２から生成される）モニタリング点６４６は、モニタリング点６４６が矢印（「Ａ」）に関連するモニタリング点であり、且つこの種類の８番目のモニタリング点であることを明示するためのテキスト「Ａ８」を含む。モニタリング点定義６７２は、モニタリング点６４６の名称（即ち「Qual by Pchs」）を指定し、モニタリング点６４６によって追跡される様々な値６７２ｉ〜６７２ｌ及び関連する定義６７２ｅ〜６７２ｈのそれぞれ、並びにそれらの値６７２ｉ〜６７２ｌの名称６７２ａ〜６７２ｄもそれぞれ指定する。値６７２ｉは、待機ノード６２８とノード６３０との間の矢印６４５を何個のデータレコードが横断したのかを明示する。この例では、例えばモニタリング点６４６内に何れの値を表示するのかについての部分６７０内の利用者の指定に基づき、値６７２ｉがモニタリング点６４６内に表示されている。この例では、部分６７０が新たなモニタリング点を定義するための１つ又は複数のフィールドを含む。
【０１４６】
部分６７４は、モニタリング点６４２内の「Ｗ」によって明示されているように待機ノード６２８に関連するモニタリング点６４２の定義を指定するためのモニタリング点定義を含む。この例では、部分６７４内のモニタリング点定義が保留の待機ブロックカウント６７４ａ、待機ブロックのレイテンシカウント６７４ｂ、及び待機ブロックのレイテンシ平均６７４ｃを明示する。この例では、保留の待機ブロックカウント６７４ａはその現在位置が待機ノード６２８に対応するチャートの数を明示する。概して、ノードはブロックを含む。この例では、待機ブロックのレイテンシカウント６７４ｂが、指定の時間又は報告間隔中に待機ノード６２８が満たされる（タイムアウトしない）インスタンスの数を明示する。この例では、待機ブロックのレイテンシ平均６７４ｃは待機ノード６２８に関する平均データレコード処理レイテンシを明示する。概して、待機ノードに関する平均データレコード処理レイテンシは、待機ノード６２８が条件６２８ａ、６２８ｂ、６２８ｃの１つ又は複数を満たすデータレコードを待機し、条件６２８ａ、６２８ｂ、６２８ｃの１つ又は複数を満たすデータレコードを処理する平均時間を示す値を含む。この例では、例えば部分６７４内のモニタリング点６４２のユーザ構成に基づき、モニタリング点６４２が保留の待機ブロック６７４ａの値（即ち３１７３）を表示する。具体的には、部分６７４はモニタリング点６４２内に何れの値を表示させるのかを利用者が指定するための１つ又は複数のコントロール又は入力フィールド（不図示）を含む。
【０１４７】
部分６７６は、アクティブチャートメトリクや終了チャートメトリク等のメトリクを表示する。概して、アクティブチャートメトリクは特定のチャートの現在アクティブな（例えば、実行中の）インスタンスの数を明示する。概して、終了チャートメトリクは過去にアクティブだったがもはやアクティブではないチャートのインスタンスの数を明示する。
【０１４８】
改変形態では、部分６７６は、データレコードが入力待ち行列内に入れられるときとそれらが処理されるときとの間の処理レイテンシを示す他のメトリクも表示する。それを行うために、システムは入力データレコードに採集時間、例えば入力待ち行列にデータレコードが（例えば、処理のために）追加される時間を割り当てる。システムが入力待ち行列からデータレコードを読み取るとき、システムは現在時間から採集時間を引くことによって処理レイテンシを計算する。システムは、処理レイテンシを示すメトリクの平均値を計算することによって平均データレコード処理レイテンシも追跡する。一例では、上記のメトリクが（１組の又は複数のチャートによって処理されるデータレコードに関する）グローバルメトリク及びチャートごとのメトリクを含む。
【０１４９】
一部の例では、システムが例えばデータリポジトリ内に記憶される検査データの項目の組に対してチャート６２２を実行する。この例では、システムが組の１つを選択し、選択した組を使用してほぼリアルタイムの検査データのストリームをシミュレートする。システムは、シミュレートされるストリーム内の検査データの項目に対してチャート６６２等のチャートを適用する。別の例では検査データの項目が、例えば１つ又は複数の外部ソースからシステムによって受信されるデータの項目である。
【０１５０】
図７を参照し、グラフィカルユーザインタフェース７００は（例えば、タブ６６２に対応し得る）タブ７０１のコンテンツを表示する。この例では、グラフィカルユーザインタフェース７００がチャート、例えば図６のチャート６２２の実行を制御するためのリセットコントロール７０２、停止コントロール７０３、ステップコントロール７０４、解放コントロール７０６、次のノードコントロール７０８、及び実行コントロール７１０を表示する。リセットコントロール７０２は、例えばリセットコントロール７０２の選択時にチャートをリセットさせる。概して、チャートは現在実行されているチャートのインスタンスを終了し、初期値（例えば、ゼロ値）を有するようにチャートによって使用される全ての変数を設定することによってリセットされる。停止コントロール７０３は、例えば少なくとも利用者がチャートの再実行を指定するまでチャートの実行を停止させる。
【０１５１】
ステップ７０４は、（例えば、キーの特定の値に関する）データレコードがチャートによってどのように処理されるのかを見るために利用者がそれらのデータレコードをステップ実行することを可能にすることにより、時間的に焦点を絞った検査を可能にする。システムがデータレコードをステップ実行するとき、システムは何れのノードが何れのデータレコードを処理するのか及びそのデータレコードの値（又はコンテンツ）についての視覚的指示によってチャートを更新する。例えば、（例えば、規則を具体化する）チャートのロジックは多数のデータレコードを処理する。検査中、利用者はキーの所与の値に関する決定（例えば、チャート内で横断される経路）に関連するレコードを見る必要がある。ステップコントロール７０４を使用することによってシステムは（キーの特定の値に関する）各データレコードをステップ実行し、以下でより詳細に説明するように、チャートの何れのノードが１つ又は複数のデータレコードを現在処理しているのか並びに処理されているデータレコード（並びに過去に処理されたデータレコード）の値及びコンテンツを視覚的に強調表示する。解放コントロール７０６はシステムにデータレコードを解放させる。概して、データレコードを解放することはデータレコードを処理すること及び／又は評価することを含み、そのため例えばチャートは新たなデータレコード又は入力データレコードを処理し続けることができる。次のノードコントロール７０８は、チャート内の次のノードに状態が進むようにチャートの状態をシステムに変更させる。この次のノードコントロール７０８を選択することは、以下で説明するように例えば検査中にチャートの現在の状態をオーバライドしチャートを次のノードに強制的に進めるための命令をシステムに送信する。実行コントロール７１０は、チャートを開始させ又は実行を再開させる。
【０１５２】
グラフィカルユーザインタフェース７００は、停止中インジケータ７１６、ステップ検査インジケータ７１４、実行中インジケータ７１２等のステータスインジケータも表示する。この例では、例えばグラフィカルユーザインタフェース７００内で停止中インジケータ７１６が視覚的に強調表示されている場合、停止中インジケータ７１６はチャートの実行が現在停止していることを明示する。グラフィカルユーザインタフェース７００内で視覚的に強調表示されている場合、ステップ検査インジケータ７１４はチャートが例えばステップコントロール７０４の選択に基づいて検査のために現在ステップ実行されていることを明示する。例えばグラフィカルユーザインタフェース７００内で実行中インジケータ７１２が視覚的に強調表示されている場合、実行中インジケータ７１２はチャートが現在実行されていることを明示する。
【０１５３】
グラフィカルユーザインタフェース７００は、チャートの実行中に経過した時間を視覚的に明示するための時間バー７１８ａを含む経過時間部分７１８も含む。グラフィカルユーザインタフェース７００は、システムによって何れのチャートが現在実行されているのかを明示する実行中チャート部分７２０も含む。この例では、実行中チャート部分７２０はチャート７２０ａが実行中であることを明示する。チャート７２０ａについて、実行中チャート部分７２０はコントロール７２０ｂを含み、その選択はチャート７２０ａの何れのノードが現在実行されているのかを明示するステータスインジケータをシステムに識別させ表示させる。グラフィカルユーザインタフェース７００は、様々な入力データレコードに関するラベルをそれらのデータレコードの処理時間（例えば、実行中のチャート内のノードがデータレコードを処理するのにかかる時間）と共に表示し、且つ関連する入力データレコードに関する出力トリガを表示する部分７２２も含む。
【０１５４】
図８を参照し、グラフィカルユーザインタフェース８００は（例えば、図６のタブ６６４に対応し得る）タブ８０２のコンテンツを表示する。グラフィカルユーザインタフェース８００は、１つ又は複数のチャート（例えば、図６のチャート６２２）によって使用される制御点（及び関連する値）を明示するための部分８０４を含む。グラフィカルユーザインタフェース８００は、チャートによって使用される変数（及び関連する値）を明示する部分８０６を含む。変数は、表現式、規則、サブチャート等を使用して計算され得る割当値である。
【０１５５】
グラフィカルユーザインタフェース８００は、例えば特定のチャートと共に使用される共同チャートを表示するための部分８０８も含む。概して共同チャートは、別のチャートによって開始されその後その独自の現在位置と共に独立に実行されるチャートを含む。例えば単一のチャートが単一の現在位置を有することを許可されるという制約に基づき、システムは共同チャートを使用することができる。例えば独自の現在位置を有し且つゴールチャートと並列に実行される追加のチャートを開始するようにゴールチャートを構成することができる。この例では追加のチャートが共同チャートであり、共同チャートは内部データレコードを使用して他のチャート（そのチャートを開始したゴールチャート等）と通信する。グラフィカルユーザインタフェース８００は、チャートによって使用される内部データレコードを指定するための部分８１０、チャートによって使用されるグローバル変数を指定するための部分８１２、チャートによって使用される参照データを指定するための部分８１４、及びチャートによって使用される外部入力データレコードを指定するための部分８１６も含む。
【０１５６】
本明細書に記載のチャートは窓集約を行うように構成可能である。概して、窓集約とは指定の期間又は窓にわたるデータ（例えば、特定の種類のデータ）の集約である。例えば窓集約は、データレコードのサブセットについて計算される集約を含む。サブセットは最近のデータレコード（例えば、昨日のデータレコード）を含み、時間が進むにつれて集約されるデータレコードの組も変化する。多くのＣＥＰ規則が様々な種類の窓集約を使用する（例えば、過去２４時間のＡＴＭの引出し回数）。従って、システムは窓集約を生成し、集約を行うための規則を生成し、それらの集約を定め且つ検査中にその挙動を観察するためのコントロールを利用者に提供する。一例では、実行可能ロジックが集約を含み又は表す。この例では、システムが実行可能ロジックを表す規則を実行することによって集約を計算する。集約の計算を完了すると、システムは同じく集約を含む１つ又は複数の他の規則によって後で取り出されるようにその集約を記憶し、それにより過去に計算された集約の共有を促す。
【０１５７】
一例では、チャートを生成する際に利用者が選択し使用することができる予め指定された様々な集約（例えば、今月使用されたテキスト数）をシステムが提供する。この例では、例えばチャートを定めるためのインタフェースの部分内に様々なノード、アイコン、及びリンクを「ドラッグアンドドロップ」することによって利用者がチャートを定めることができるインタフェース（又はインタフェース用のデータ）をシステムが提供する。ノードは編集可能なロジックを含み表示する。利用者は、ノードによって表される実行可能ロジックによって使用される集約を指定するために又は（実行可能ロジックをコンパイルする際に使用される）他のロジックを指定するためにロジックを編集することができる。利用者は、例えば集約を指定するロジックを入力することによって、（例えば、複数の既定の集約の中から）既定の集約を選択することによって、既定の集約を示すアイコン又はノードを選択し、それをチャートに追加する又はチャート内のノードに関連付けること等によって集約を指定することができる。システムは（例えば、キーの特定の値に関する）データレコードをステップ実行することによってこれらの集約の挙動を検査して、何れのノードが何れのデータレコードを処理するのか及びデータレコードが処理されるときのデータレコードの値（及び／又はデータレコード内のコンテンツ）を識別する。この検査に基づき、データレコードが集約を含むノードを通過しないことをシステムは識別し得る。そのため、システムはそのノード内のロジックを誤り（例えば、決して満たされることがない条件）に関して分析することができ、及び／又はより容易に若しくは頻繁に満たされる条件にノードのロジックを変えるように利用者を促すことができる。
【０１５８】
再び図２を参照し、収集エンジン６１は窓集約を計算し、それらを参照データとして記憶し又は補強としてデータレコードに追加する。概して、補強はデータレコードがシステムによって受信された後でデータレコードに追加されるデータを含む。システムはこのデータを使ってデータレコードを「補強」する。別の例では、システム６０が例えばチャート（又はチャートによって具体化される規則）の作者によって指定される定義に基づいて集約を生成し、それらの集約をチャート実行プロセスの一部として実装する。
【０１５９】
システム６０は、例えばチャート内やプロジェクト内の変数として集約を定める。概して、プロジェクトはチャートの集まり、例えばキャンペーンを実行するためのチャートの集まりを含む。チャート間で集約の共有を可能にするために、システム６０はプロジェクトのための集約を定める。そうすることにより、例えばシステム６０がチャートごとの集約を互いに独立に計算する場合に集約を計算する際に実行しなければならない計算数と比較して、システム６０が集約を計算する際に実行する計算数が減ることによってシステムの性能及び個々のチャートの性能が改善する。
【０１６０】
一例では、システム６０が（例えば、キーの特定の値や特定のキーに関連することによって）キー付きである集約を計算する。システム６０はキーにわたる集約にアクセスするための規則を生成し、それによりチャートはチャートのキーと同じであるキーの集約にアクセスすることができる。この例では、システム６０が窓集約、移動窓集約（例えば、過去１５分間にわたる集約）、期間集約（例えば、一連の定義済時間間隔にわたる集約）、相関集約（例えば、別のフィールドの最小値又は最大値に基づいて１つのフィールドの値を返す集約）等を計算する。
【０１６１】
一例では、移動窓集約に関する集約の定義（以下、集約定義）が以下のようにテキストで表される：
各顧客について、trade.action＝「buy」である場合は取引の種類のデータレコードごとに、過去１５分間にわたるtrade.amountの平均を計算する。
【０１６２】
上記のテキスト表現の下線部はシステム６０によって生成される集約定義内のパラメータに対応する。この例では、システム６０が以下の表１内に示すパラメータを有する集約を生成する。
【０１６３】
【表１】
2019521421.tif 000003
2019521421.tif 000004
【０１６４】
上記の表１では、集約を生成する際にシステム６０によって使用される様々なパラメータを集約定義が含む。パラメータ及び／又はパラメータの値の１つ又は複数は、例えばチャートの生成中に利用者によって構成され得る。例えばシステム６０は、上記の表１内に示すパラメータの１つ又は複数の値を利用者が指定するユーザインタフェースを提供する。指定の値及びパラメータの種類に基づき、システム６０は集約定義を生成し、その集約定義に関する集約を計算する際にその集約定義を使用する。
【０１６５】
システム６０は、例えば一連の定義済時間間隔にわたる集約を含む期間集約も計算する。期間集約のテキスト表現を以下に示す：
各顧客について、trade.action＝「buy」である場合は取引の種類のデータレコードごとに、過去１０分間のうちの３０秒の期間ごとにtrade.amountの和を計算する。
【０１６６】
上記のテキスト表現の下線部はシステム６０によって生成されるこの期間集約に関する集約定義内のパラメータに対応する。期間集約について、システム６０は表１に関して先に説明したように集約名パラメータ、データレコードの種類パラメータ、キーパラメータ、フィルタ表現パラメータ、集約関数パラメータ、フィールド又は表現パラメータを有する集約定義を生成する。加えて、この集約定義は以下の表２内に示す下記のパラメータも含む：
【０１６７】
【表２】
2019521421.tif 000005
【０１６８】
上記の表２内に示したパラメータは、例えばシステム６０のユーザインタフェースを介して利用者によって構成され得る。加えて、システム６０は返される値と集約値との間に相関が存在する相関集約を計算する。相関集約の一例を以下に示す：
各顧客について、trade.action＝「buy」である場合は取引の種類のデータレコードごとに、過去２０分間のうちで認められた最大trade.amountのシンボルを計算する。
【０１６９】
この例では、システム６０が指定の時間窓（即ち２０分間）の中の適切なデータレコードを選択し、集約によって指定される基準（例えば、最大trade.amount）を満たすシンボル（例えば、＾ＧＳＰＣ）を返す。システム６０は多期間集約も計算し、多期間集約ではシステム６０が期間集約、次いでその期間集約の結果の集約を計算する。期間集約の一例は以下の集約を含む：各顧客について、trade.action＝「buy」である場合は取引の種類のデータレコードごとに、１日ごとのtrade.amountの和をまず計算し、次いで過去７日間にわたる最大の和を計算する。
【０１７０】
システム６０は、データレコードが受信されるとき、例えばデータレコードが到着するとき全てのデータレコードについて集約を計算する。これらの集約は、データレコードが受信されるときにほぼリアルタイムで計算されるため、ほぼリアルタイムの集約である。一例では、集約に関する値をチャートが検査するかどうか又は使用するかどうかに関係なくシステム６０が集約を計算する。別の例では、システム６０がオンデマンドで、例えばシステム６０がデータレコードのストリームをアーカイブするとき集約を計算する。概して、オンデマンドの集約は要求に応じて行われる集約を含む。この例では、システム６０が例えばデータレコード又はデータレコードを示すデータをデータリポジトリ内に記憶することによってデータレコードのストリームをアーカイブする。集約をオンデマンドで計算する際、システム６０は適切なデータレコードの種類を求めてデータリポジトリを照会し、適切なデータレコードを読み出し、適切なデータレコードの何れが所要のデータ範囲にマッチするのかを識別し、データレコードがあたかも生で到着しているかのように集約を計算する。概して、適切なデータレコードは１つ又は複数の基準又は条件を満たすデータレコードを含む。一例では、一定の集約が稀にのみ使用される。この例では、それらの一定の集約を全ての入力データレコードについて計算するのではなく、システム６０はそれらの特定の集約についてオンデマンドの集約を計算してシステム資源を節約し、データレコードの受信時にそれらの集約をリアルタイムで計算するための処理速度と比較して処理速度を高める。加えて、システム６０は短い時間尺度で実行される（例えば、数日間にわたって実行される）チャートについてオンデマンドの集約を実装するが、ロジックの一部は長い時間尺度（例えば、過去数カ月）の集約を使用する。そうすることにより、システム６０は（データレコードの到着時のリアルタイムでのそれらの集約の計算量と比較して）長い時間尺度にわたる高コストの継続的な集約の計算量を減らす。集約がオンデマンドの集約かほぼリアルタイムの集約かを集約定義が指定する。一部の例では、集約がほぼリアルタイムの集約かオンデマンドの集約かを利用者が（例えば、集約を定義するときにユーザインタフェース内で）指定する。
【０１７１】
一例では、システム６０が共有された規則及び集約を可能にする（例えば、ロジックがＣＥＰシステム内の複数の規則にわたって共有される）。規則及び集約を共有することにより、システム６０は、規則及び集約を共有することと独立に入力データレコードを処理する速度と比較し、自らが入力データレコードを処理することができる速度を例えば同じ集約を複数回計算することの消費がないことによって高める。例えば、システム６０は複数の規則によって必要とされる集約を１回計算し、それらの集約の値をデータリポジトリ又はメモリキャッシュ内に記憶する。別の例では、システム６０がノードのロジック（例えば、ノード内の決定ロジック）をデータリポジトリ内に記憶する。このロジックは、例えば他のノードによって指定される別々に保たれる他の複数の決定を計算する際に再利用することができる。
【０１７２】
図９を参照し、グラフィカルユーザインタフェース９００（例えば、編集インタフェース）はチャートを作成するための「ドラッグアンドドロップ」インタフェースを提供する。この例ではシステムが、検査又は規則（例えば、時間において隔てられたデータレコードを処理するための規則）の時系列を記述し、且つ規則又は検査の何れの部分が何れのデータレコードを処理するのかを視覚的に示すチャートを生成するためのグラフィカルプログラミングモデルを提供するためのグラフィカルユーザインタフェース９００を生成する（又はグラフィカルユーザインタフェース９００用のデータを提供する）。グラフィカルユーザインタフェース９００を使用して利用者はフローチャート式の規則を定めることができる。
【０１７３】
グラフィカルユーザインタフェース９００は、作成されているチャートに関するデータを表示する部分９０２を含む。部分９０２は、チャートの名称を指定するための名称フィールド９３８、チャートの種類を指定するための種類フィールド９４０、並びにチャートを公に見ることができるのか私的に見ることができるのか、チャートが非待機かどうか、及びチャートがグローバルチャートかどうかを指定するための可視性コントロール９４２を含む。部分９０２は、チャートに関するキーの種類を指定するためのキーの種類フィールド９４４も含む。部分９０２は、チャートの生成又は構築対象であるキーのサンプル値を指定するための_keyValueフィールド９４６を含む。例えば利用者は_keyValueフィールド９４６を使用してキーの特定の値を選択し、そのキーの値についてチャートを（その構築時に）例えばステップコントロール（図７のステップコントロール７０４等）を使用することによって検査することができる。部分９０２は、_keyValueフィールド９４６内で指定されているそのキーの特定の値について実行されているチャートのインスタンスのＩＤを指定するためのchartIDフィールド９４８も含む。引数がある場合、部分９０２は引数フィールド９５０も含む。
【０１７４】
グラフィカルユーザインタフェース９００は、選択可能ノード９０６、９０８、９１０、９１２、９１４、９１６、９１８、９２０、９２１、９２２、９２４を含む部分９０４、及びフローチャートを作成するための編集ペイン９５２も含む。この例では、編集ペインが１つ又は複数の論理表現をノードに関連付けるための、又はノード若しくは仕様に関連する１つ又は複数の論理表現を編集するための仕様の編集可能な表示を含む。この例では、システムがグラフィカルユーザインタフェース９００用のデータを生成する。
【０１７５】
これらの選択可能ノードのそれぞれは、フローチャートにノードを追加するための編集ペイン９５２内に「ドラッグアンドドロップ」されるように構成される。この例では、編集ペイン９５２がノード９２６、９２８、９３０、９３２、９３４、９３６を含み、そのそれぞれは適切な選択可能ノードを選択し、その選択可能ノードを編集ペイン９５２内にドラッグアンドドロップすることによって編集ペイン９５２に追加される。一例では、ノードが１つ又は複数の論理表現を入力するための１つ又は複数の編集可能な部分を含む。別の例では、ノードの１つ又は複数の部分を選択することが、１つ又は複数の論理表現を入力したり１つ又は複数の論理表現を編集したりするためのグラフィカルユーザインタフェース（例えば、プロンプトボックス）を表示させる。この例では、（ノードの１つ又は複数の部分を選択することに基づいて表示される）グラフィカルユーザインタフェースがグラフィカルユーザインタフェース９００に対するオーバレイとして表示される。（ノードの１つ又は複数の部分を選択することに基づいて表示される）グラフィカルユーザインタフェース内で指定される１つ又は複数の論理表現に基づき、ノードが１つ若しくは複数の論理表現及び／又はそれらの１つ若しくは複数の論理表現の視覚化を含む。別の例では、例えば１つ又は複数の論理表現を説明する文を表示することにより、ノードがもう１つの論理表現に基づく他のデータを表示する。
【０１７６】
例えば、選択可能ノード９０６を選択し、矢印９５４によって明示するドラッグアンドドロップの横断に従って選択可能ノード９０６を編集ペイン９５２内にドラッグアンドドロップすることによってノード９３６が編集ペイン９５２に追加される。選択可能ノード９０６が編集ペイン９５２内にあると、利用者はチャートによって使用されるノード、例えばノード９３６へと変換するために選択可能ノード９０６を構成することができる。この例では、選択可能ノード９０６が選択可能部分９０６ａ、９０６ｂ、９０６ｃを含み、そのそれぞれは実装される待機の種類を指定する。選択可能部分９０６ａは、特定のデータレコードを待機する待機の種類を指定する。選択可能部分９０６ｂは、（複数の異なる基準の中から）少なくとも１つの基準を満たす任意のデータレコードを待機する待機の種類を指定する。選択可能部分９０６ｃは、指定の基準を共に満たす複数のデータレコードを待機する待機の種類を指定する。
【０１７７】
この例では利用者が選択可能部分９０６ａを選択して、ノード９３６が１つ又は複数の指定の基準を満たす任意のデータレコードを待機することを指定する。選択可能ノード９０６は、待機ノードが待機するように構成されるデータレコードの種類を示す１つ又は複数の基準を指定するデータを利用者が入力するための他の編集可能フィールド（不図示）も含む。この例では、（選択可能ノード９０６内に入力される）利用者によって指定される基準がノード９３６の部分９３６ａ、９３６ｂ、９３６ｃ内に表示される。（この例では部分９２９ｄが部分９３６ａ、９３６ｂ、９３６ｃを含む）。この例では、利用者がノード９２６、９２８、９３０、９３２、９３４、９３６を編集ペイン９５２に追加して実行のためのチャートを定める。ノード９２６、９２８、９３０、９３２、９３４、９３６は、例えばノード内のロジックを編集することによって編集ペイン９５２内で編集することができる。一例では、システムがノード９２６、９２８、９３０、９３２、９３４、９３６の１つ又は複数の１つ又は複数の論理表現に対する１つ又は複数の編集を示すデータと、受信される１つ又は複数の論理表現にノード９２６、９２８、９３０、９３２、９３４、９３６の何れが関連するのかを指定するデータとを受信する。
【０１７８】
この例では、エディタインタフェース９００が、ノード９２６、９２８、９３０、９３２、９３４、９３６及びリンク９２７ａ〜９２７ｅを有するチャート９５１を表示する。エディタインタフェース９００は、ノード９２６、９２８、９３０、９３２、９３４、９３６の１つ又は複数に関して１つ又は複数の論理表現を入力又は編集するための部分９２９ａ〜９２９ｄを含む。例えばエディタインタフェース９００は、ノード９２８に関して１つ又は複数の論理表現を入力又は編集するための部分９２９ａを含む。改変形態では、論理表現を入力又は編集するための１つ又は複数の部分がノードの外側に位置し、ノードのすぐ近くに位置し、ノードと並べられ、ノードの隣にあり、（例えば、ノードの選択及び／又はクリック後に）別のユーザインタフェース内に表示等される。この例では、ノード９２６、９２８、９３０、９３２、９３４、９３６の１つ又は複数が状態機械の特定の状態に対応する。状態機械が特定の状態にある場合のデータレコードの少なくとも部分的な処理を論理表現（例えば、「共同チャートを開始する：電子明細書の確認」及び「SendSMS_DailyLimitを呼び出す、電話：Account Details.Phone、メッセージ：「新しい電話を当てよう！YourBank.com/raffleで基準を満たした最初の１０００人が特別なラッフルにエントリーされます」）が表す。特に、論理表現は、状態機械が特定の状態にある場合にデータレコードがどのように処理されるか（例えば、どのような操作が実施されるか）を表す。
【０１７９】
この例では、ノードの１つとノードの別のものとの間のリンク（例えば、リンク９２７ａ〜９２７ｄの１つ）がある状態から別の状態への状態機械の移行を表す。この例では、データレコードが断続的に受信されるときデータレコード内の１つ又は複数のフィールドを評価してキーの値を識別するための状態機械を実装するための実行可能ロジックへと、システム１１（図２）が１つ又は複数の論理表現及びチャート９５１を変換する。例えばシステム１１はフィールドの値を連結してキーの値を作成し、フィールドの値の形式を修正してキーの値を作成し、フィールドの値にデータを付加してキーの値を作成し、フィールドの値を選択等してキーの値を作成する。キーの値ごとに、システム１１はそのキーの値が基づく１つ又は複数のフィールドを含む１つ又は複数の第１のデータレコードを処理するための状態機械を実装し、その処理はそのキーの値に関する状態機械の現在の状態に対応する１つ又は複数のノードに関連する１つ又は複数の論理表現に従う。例えば状態機械がノード９２８に対応する状態にある場合、システムはノード９２８に関連する論理表現（即ち「SendSMS_DailyLimitを呼び出す、電話：Account Details.Phone、メッセージ：「新しい電話を当てよう！YourBank.com/raffleで基準を満たした最初の１０００人が特別なラッフルにエントリーされます」）に対応する（又は基づく）実行可能ロジックの１つ又は複数の部分を受信したレコードに適用する。ノード９２６、９２８、９３０、９３２、９３４、９３６、リンク９２７ａ〜９２７ｅ、及び論理表現から生成される状態機械も、断続的に受信されるデータレコードの１つ又は複数の第２のデータレコードを処理するための別の状態へとチャート９５１のリンクに従って移行する。この例では、１つ又は複数の第２のデータレコードはそのキーの値が基づく１つ又は複数のフィールドを含み且つ１つ又は複数の第１のデータレコードの後に受信される。
【０１８０】
図１０を参照し、グラフィカルユーザインタフェース１０００は、チャート１０３４を表示するための部分１０３２と、例えばキーの特定の値に関する１組のレコードを用いてチャート１０３４を検査することの詳細を表示するための、及びチャート１０３４を検査するためのコントロールを表示するための部分１００２とを含む。部分１００２は、検査に使用されるチャートの名称を選択するための選択コントロール１００４を含む。部分１００２は、チャート１０３４を検査する際に使用される１組の検査データを選択するための選択コントロール１００６も含む。この例では、１組の検査データがキーの特定の値に関連し、且つ検査に使用される一連のデータレコード（例えば、「キャンペーンサンドボックスデータレコード」）を含む。本明細書ではこの一連のデータレコード内のデータレコードを検査データレコードと呼ぶ。一例では検査データレコードが、システムによって過去に受信されたデータレコードを含む。別の例では、例えば検査データレコードを生成するために受信データレコードのコンテンツを曖昧化し又は修正することにより、検査データレコードがシステムによって受信されるデータレコードに基づく。この例では、チャート１０３４のキーがアカウントＩＤである。選択コントロール１００６によって指定されるデータレコードは、部分１０２８内に示されている「１００００００１１７」のアカウントＩＤに関連するデータレコードである。
【０１８１】
部分１００２は戻るコントロール１００８も含み、その選択は例えば前のノードに戻って検査することによって検査を「戻す」ようにシステムに命令する。例えば、戻るコントロール１００８を選択することは、検査されている現在のノードの直前のノードに戻って検査するようにシステムに命令する。部分１００２は後退コントロール１０１０も含み、その選択は過去に検査されたデータレコードを用いてチャート１０３４を戻って検査するようにシステムに命令する。部分１００２は実行コントロール１０１２も含み、その選択は選択コントロール１００６によって指定されたデータレコードを用いて、例えばそれらのデータレコードにチャート１０３４を適用することによってチャート１０３４を検査し始めるようにシステムに命令する。部分１００２は前進コントロール１０１４を含み、その選択は検査されているデータレコード内に含まれる次のデータレコードを用いてチャート１０３４を検査するようにシステムに命令する。この例ではデータレコードが一連のデータレコードを含む。そのため、前進コントロール１０１４を選択することは、検査のためにシーケンス内の次のデータレコードにチャート１０３４を適用させる。部分１００２はノード先送りコントロール１０１６を含み、その選択はチャート１０３４内の次のノードの検査に進むようにシステムに命令する。部分１００２は、チャート１０３４の検査の進捗状況を表すための時間尺度１０１８も含む。
【０１８２】
部分１００２は、部分１０２０、１０２２、１０２４、１０２６、１０２８、１０３０も含む。この例では部分１０２０が、チャート１０３４によって現在処理されている外部データレコードを示す現在の外部データレコードのデータを表示する。以下、部分１０２０を現在の外部データレコード部分１０２０と呼ぶ。この例では、現在処理されている外部データレコードが活動ストリーム（「ＡＳ」）待ち行列（例えば、チャート１０３４による処理のためにＡＳ外部データレコードを受け入れる待ち行列）内で受信され、１００００００１１７のアカウントＩＤに関連する。加えて、外部データレコードはテキストメッセージを含む、テキストによって送信されるデータレコードである。部分１０２２は、もしある場合は何れの出力データレコードが実行され又は処理されているのかを表示する。部分１０２４は、チャート１０３４によって何れの変数（例えば、検査されるデータレコード又はデータ項目の第１のものに関連する変数）が使用されるのか、及び関連する変数の値を表示する。部分１０２６は、システムが計算しチャート１０３４内で使用される集約を指定する。この例では、システムが「今月の合計テキスト」の集約を計算する。部分１０２８はチャート１０３４によって使用される参照データを表示する。チャート１０３４を実行することによって出力される結果データと参照データを比較して、それらの間の任意の潜在的なずれを識別することができる。部分１０３０はチャート１０３４によって使用される制御点を表示する。
【０１８３】
チャート１０３４は、ノード１０３６、１０３８、１０４０、１０４２、１０４４、１０４８、１０５０、１０５２、及びチャート１０３４の何れのノードが（又は実行可能ロジックの何れの部分が）現在検査されているのかを明示するためのステータスインジケータ１０４６を含む。この例では、ノード１０４４のすぐ近くにあるステータスインジケータ１０４６によって明示されているように、システムがノード１０４４を現在検査している。システムは、現在の外部データレコード部分１０２０内で表されるデータレコードを用いてノード１０４４を検査している。この例では、ノード１０４４が決定ノードを含み、部分１０２６内で表される集約及び部分１０３０内で表される制御点に基づく論理表現を含む（又は表示する）。戻るコントロール１００８を選択することは、１つ又は複数の過去に処理されたデータレコードを用いてノード１０４０を検査することにシステムを戻す。ノード先送りコントロール１０１６を選択することは、システムにノード１０５０又はノード１０４８及び関係するデータレコードを検査させる。コントロール１００８、１０１６により、利用者はチャート１０３４の何れのノードが検査されるのかを指定することができる。
【０１８４】
後退コントロール１０１０を選択することは、システムに（キーの特定の値に関連する）データレコードを後退してステップ実行させ、（検査されている一連のデータレコード内の）過去のデータレコードを検査させる。前進コントロール１０１４を選択することは、システムにデータレコードを前進してステップ実行させ、（例えば、１つ又は複数の適切なノードを用いて次のデータレコードを処理することによって）シーケンス内の次のデータレコードを検査させる。コントロール１００８及び１０１４を使用し、利用者はデータレコードをステップ実行して何れのノードが何れのデータレコードに適用されるのかを識別する。利用者がデータレコードをステップ実行するとき、チャート１０３４を用いて特定のデータレコードを処理した結果がチャート１０３４と共に例えば部分１００２内で表示される。例えば結果は、（部分１０２２内にデータが表示される）出力データレコードを生成すること、（その結果が部分１０２６内に表示される）集約を計算すること、（部分１０２４内に表示されている）変数（例えば、検査されるデータレコード又はデータ項目の第１のものに関連する変数）の値を設定すること等を含み得る。例えばデータレコードを処理することが現在のノードの変更をもたらすのかどうかを表すステータスインジケータ１０４６を表示することにより、部分１０３２はデータレコードを処理した結果も表示する。
【０１８５】
この例では、ステータスインジケータ１０４６は、何れのノード（又は何れの実行可能ロジック）が実行されているのか及びデータレコードがどのように（例えば、どのような順序で、何れの実行可能ロジックと共に、及び／又は何れの結果データをレンダリングして）処理されているのかについての視覚的指示を提供することにより利用者がチャート１０３４を検査することを可能にする。グラフィカルユーザインタフェース１０００は、現在処理されているデータ項目又はデータレコード、データ項目又はデータレコードに現在適用されている実行可能ロジック、及び／又はデータ項目若しくはデータレコードに実行可能ロジックを適用することによってレンダリングされる結果データについてのインジケータを提供する。それにより結果データは、適用される実行可能ロジック内で指定されるプログラム命令に従ってデータ項目又はデータレコードを処理することの出力としてレンダリングされ得る。本明細書に記載の１つ又は複数のフィードバック手段は、基礎を成すシステムを適切に動作させる際に又は基礎を成すシステムが適切に動作しているかどうかを評価する際に利用者を直接サポートする。
【０１８６】
例えば、ストリームのデータ項目の第１のもののユーザ選択（１００６）を受信することができ、データ処理システムによって現在処理されているストリームのデータ項目の第１のものの指示を表示させることができ、結果データを得るためにデータ項目の第１のものに現在適用されている実行可能ロジックの１つ又は複数の部分の指示を表示させることができる。
【０１８７】
例えば、結果データの一部を所定の参照データ（１０２２又は１０２８）と比較することができる。結果データの一部と所定の参照データとの間にずれが存在するかどうか又はかかるずれが存在しないかどうかを判定することができ、結果データの一部と所定の参照データとの間にずれが存在するかどうか又はかかるずれが存在しないかどうかを判定することに基づいて結果データの一部が所定の参照データと合致するかどうかの指示を出力することができる。
【０１８８】
例えば、データ処理システムによって現在処理されているストリームのデータ項目の第１のものを所定の参照データ項目（１００６又は１０２８）と比較することができ、現在処理されているストリームのデータ項目の第１のものと所定の参照データ項目との間にずれが存在するかどうか又はかかるずれが存在しないかどうかを判定することができ、現在処理されているストリームのデータ項目の第１のものと所定の参照データ項目との間にずれが存在するかどうか又はかかるずれが存在しないかどうかを判定することに基づいて現在処理されているストリームのデータ項目の第１のものが所定の参照データ項目と合致するかどうかの指示を出力することができる。
【０１８９】
例えば、結果データを得るためにデータ項目の第１のものに現在適用されている実行可能ロジックの１つ又は複数の部分を所定の参照実行可能ロジックと比較することができ、データ項目の第１のものに現在適用されている実行可能ロジックの１つ又は複数の部分と所定の参照実行可能ロジックとの間にずれが存在するかどうか又はかかるずれが存在しないかどうかを判定することができ、データ項目の第１のものに現在適用されている実行可能ロジックの１つ又は複数の部分と所定の参照実行可能ロジックとの間にずれが存在するかどうか又はかかるずれが存在しないかどうかを判定することに基づき、結果データを得るためにデータ項目の第１のものに現在適用されている実行可能ロジックのその又は複数の部分が所定の参照実行可能ロジックと合致するかどうかの指示を出力することができる。
【０１９０】
本明細書で「ずれ」という表現を使用する場合、それぞれの参照に対する準拠又は合致を判定するために一定の許容差の範囲内にあるずれを認めることができる。或いは、それぞれの参照に対する準拠又は合致を判定するために、それぞれの参照に対する厳密な一致が要求される場合がある。
【０１９１】
例えばステータスインジケータ１０４６が特定のノードに全く関連しない場合、そのノードが論理的に矛盾した表現を含み得るか、又はノードが実行されることを妨げる基準に関連することを利用者が警告される。加えて、ステータスインジケータ１０４６はデータレコードがどのようにフローチャート１０３４の全体を通して処理されるのかを明示する。この例では、データレコードがある方法で（例えば、グラフを通る特定の経路を横断することによって）処理されることを利用者が期待するが、データレコードが異なる方法で処理されることをステータスインジケータ１０４６が明示する場合、利用者はチャート１０３４の全体を通してデータレコードを処理する所望の方法を実現するために、チャート１０３４内の１つ又は複数のノードを修正することができ又は（例えば、実行可能ロジック内の）ノードに関連する論理表現を修正することができる。要約すれば、基礎を成すシステムを適切に動作させる際に利用者を支援するために、（ｉ）正しい実行可能ロジックが（ｉｉ）正しいデータ項目又はデータレコードに（ｉｉｉ）正しく適用されたかどうかのフィードバックが例えば部分１０２２、１０２４、１０２６、１０２８、１０３０、及びインジケータ１０４６によって提供される。
【０１９２】
図１１を参照し、システムはキーに関連する仕様に従ってデータ項目のストリームのデータ項目（例えば、データレコード）を処理するためのプロセス１１００を実行する。データ項目は、例えばデータ項目に含まれるコンテンツがデータリポジトリ内でキーの値に関連することによってキーの値に関連する。この例では、システムがキーのそれぞれの値について仕様の状態を保つ。仕様は実行可能ロジックを表し、システムによってデータ記憶システム内に記憶される。
【０１９３】
動作面では、システムが実行可能ロジックを表す仕様にアクセスする（１１０２）。この例では、キーの特定の値に関する仕様の状態がその状態において実行可能な実行可能ロジックの１つ又は複数の部分を指定する。システムは、データのストリームのデータ項目、例えばネットワーク接続経由のデータ項目を入力装置又はポート上で受信する（１１０４）。ストリームのデータ項目の第１のものについて、システムはそのデータ項目の第１のものに関連するキーの値に関する仕様の第１の状態を識別する（１１０６）。システムは、第１の状態に関連するものとして仕様内で表される実行可能ロジックの１つ又は複数の部分に従ってデータ項目の第１のものを処理する（１１０８）。システムは、仕様の１つ又は複数の部分を例えばグラフィカルユーザインタフェース内に表示させる（１１１０）。システムは、実行可能ロジックの１つ又は複数の部分をデータ項目の第１のものに適用して結果データを取得し（１１１２）、例えば結果データを得るために実行可能ロジックの入力としてデータ項目の第１のものを使用して実行される実行可能ロジックの１つ又は複数の部分は、実行後の実行可能ロジックの出力である。システムは、例えば仕様内のノードと並べて結果データを表示することによって、グラフィカルユーザインタフェースの結果を表示するための部分内に結果データを（グラフィカルユーザインタフェースの別の部分が仕様の１つ又は複数の部分を表示した状態で）表示することによって等、仕様の１つ又は複数の部分の少なくとも１つを表示した状態で結果データの少なくとも一部を表示させる（１１１４）。システムは、データ項目の第１のものに関するキーの値に関して（例えば、このキーの値に関してのみ）、例えば（そのキーの値に関する状態を記憶するための）メモリ内データグリッドの一部、例えば揮発性メモリ内に記憶されるデータ構造をそのキーの値に関するチャートの現在位置を示すデータで更新することにより、仕様を第１の状態から第２の状態に移行させることも行う。データがハードディスク等の電気機械的大容量記憶媒体に記憶される場合のシステムの処理速度と比較し、メモリ内データグリッドを使用することによってシステムの処理速度が高まる。メモリ内データグリッドを使用することにより、システムはハードディスクとの間でデータを読み書きするよりも迅速にメモリとの間でデータを読み書きする。加えて、メモリ内データグリッドのキー／値データ構造は、例えば関係データ構造（例えば、ストリングや有向グラフ等）に関する取り出し時間と比較して一層速いデータ取り出し時間を可能にする。概して、キー−値構造はアレイを有するデータ構造を含み、アレイはキー及びそのキーの値（又はキーのハッシュ値）を含む。
【０１９４】
図１２を参照し、システムはキーに関連する仕様に従ってデータ項目のストリームのデータ項目を処理する際にプロセス１２００を実装する。この例では、データ項目は、キーの値に関連する。システムはキーのそれぞれの値について仕様の状態を保つ。加えて、仕様はデータ記憶システム内に記憶されている実行可能ロジックを表す。
【０１９５】
動作面では、システムが実行可能ロジックを表す仕様にアクセスする（１２０２）。この例では、キーの特定の値に関する仕様の状態がその状態において実行可能な実行可能ロジックの１つ又は複数の部分を指定する。システムがデータのストリームのデータ項目を入力装置又はポート上で受信する（１２０４）。ストリームのデータ項目の第１のものについて、システムはそのデータ項目の第１のものに関連するキーの値を例えば先に説明したようにデータレコードのコンテンツに基づいて又はデータレコード内に含まれる値に基づいて識別する（１２０６）。システムは、仕様がそのキーの値に関する待機状態に関連することも識別する（１２０８）。待機状態では、実行可能ロジックはそのキーの値に関連し、且つストリーム内の１つ又は複数のデータ項目の前に位置する１つ又は複数の他のデータ項目から時間において隔てられる１つ又は複数のデータ項目を待機する。この例では、システムはキーの値に関連する状態データを（例えば、メモリ内データグリッド内で）探索することによって仕様が待機状態にあることを識別する。この例では、状態データは現在のノードが待機ノードであることを指定し、或いは現在の状態が待機状態であることを指定する。
【０１９６】
システムは、待機状態に関連するものとして仕様内で表される実行可能ロジックの１つ又は複数の部分に従ってデータ項目の第１のものを処理する（１２１０）。システムは、待機状態に関連する実行可能ロジックの１つ又は複数の部分に従ってデータ項目の第１のものを処理した結果を示すデータの少なくとも一部（例えば、ステータスインジケータや出力データレコードを示すデータ等）を表示させる（１２１２）。
【０１９７】
図１３を参照し、システムは、キーに関連し、且つ実行可能ロジックを表す仕様に従ってデータのストリームのデータ項目を処理するためのプロセス１３００を実装する。この例では、データ項目は、キーの値に関連する。システムはキーのそれぞれの値について仕様の状態を保つ。
【０１９８】
動作面では、システムが実行可能ロジックを表す仕様にアクセスする（１３０２）。この例では、キーの特定の値に関する仕様の状態がその状態において実行可能な実行可能ロジックの１つ又は複数の部分を指定する。この例では、仕様が論理表現、ノード、及び１つ又は複数のリンクを含む。第１のノード（例えば、図１Ａのノード２ａ、２ｂ、２ｃ）はキーの値に関する仕様（又は実行可能ロジック）の第１の状態を表し、第１の状態では実行可能ロジックの第１の部分がそのキーの値に関連するデータ項目の第１のものに対して実行可能である。第１のノードの少なくとも１つは、実行可能ロジックの第１の部分に少なくとも部分的に対応する１つ又は複数の第１の論理表現（例えば、図４の部分１２０ｂ内の論理表現）に基づく第１の視覚化を含む。
【０１９９】
１つ又は複数の第２のノード（例えば、ノード２ｄ、２ｅ、２ｆ）はキーの値に関する仕様（又は実行可能ロジック）の第２の状態を表し、第２の状態では実行可能ロジックの第２の部分がそのキーの値に関連し、且つストリーム内のデータ項目の第１のものの後に配置されるデータ項目の第２のものに対して実行可能である。この例では、第１のノードの１つと１つ又は複数の第２のノードの１つとの間のリンク（例えば、図１Ａのリンク２ｉ）が、そのキーの値に関する第１の状態から第２の状態への仕様（又は実行可能ロジック）の移行を表す。
【０２００】
システムは、仕様内の論理表現を実行可能ロジックに変換する（１３０４）。例えばデータフローグラフ又はチャートは、頂点間の有向リンク（作業要素、即ちデータのフローを表す）によってつながれる頂点（データ処理コンポーネント又はデータセットを表す）を含む。かかるデータフローグラフを実行するためのシステムは、参照によりその全内容を本明細書に援用する「グラフとして表現される計算の実行（Executing Computations Expressed as Graphs）」と題された米国特許第５，９６６，０７２号に記載されている。このシステムに従って作成されるデータフローグラフは、グラフコンポーネントによって表される個々のプロセスの内外にデータを出し入れするための、プロセス間でデータを移動するための、及びプロセスの実行順序を定めるための方法を提供する。このシステムは、プロセス間の通信方法を利用可能な任意の方法から選択するアルゴリズムを含む（例えば、グラフのリンクによる通信経路はＴＣＰ／ＩＰ若しくはUNIXドメインソケットを使用することができ又はプロセス間でデータを移すために共用メモリを使用することができる）。
【０２０１】
キーの値ごとに、そのキーの値に関する状態が第１の状態を含む場合、第１の状態に関連する第１のノード（例えば、図１Ａのノード２ａ、２ｂ、２ｃ）によって表される実行可能ロジックの第１の部分をそのキーの値を有する第１のデータ項目に対して実行可能である。実行可能ロジックは、第１の部分の実行後に第１の状態から第２の状態へのリンク（例えば、図１Ａのリンク２ｉ）によって表される移行を行うように構成される。そのキーの値に関する状態が第２の状態を含む場合、１つ又は複数の第２のノード（例えば、図１Ａのノード２ｄ、２ｅ、２ｆ）によって表される実行可能ロジックの第２の部分をそのキーの値を有する第２のデータ項目に対して実行可能である。この例では、システムがデータのストリームのデータ項目を受信する（１３０６）。キーの特定の値について、システムはそのキーに関連する状態を識別する。この例では、キーがノード２ａ、２ｂ、２ｃを含む第１の状態に関連する。システムは現在位置を更に探索し、ノード２ａ、２ｂ、２ｃの何れが現在のノードなのかを識別する。この例ではノード２ｃが現在のノードである。
【０２０２】
システムは、そのキーの値に関する状態が（例えば、メモリ内データグリッド内のそのキーの値に関するデータ構造において表されたように）実行可能ロジックの第１の部分に関連する第１の状態を含む場合、そのキーの値を有する第１のデータ項目に対して第１の部分を実行する（１３０８）。この例では、そのキーの値に関する状態が（ノード２ｃによって表される実行可能ロジックの１つ又は複数の部分に関連する）第１の状態であり、現在位置がノード２ｃであるため、システムはノード２ｃによって表される実行可能ロジックの一部を実行する。
【０２０３】
一例では、第２のノードの１つが、そのキーの値を有するデータ項目の第２のものを待機するように構成される実行可能ロジックの一部を表す待機ノードを含む。この例では、第２のノードの別のもの（例えば、図１Ａの送信ノード２ｅ）が、例えばメッセージの送信等の１つ又は複数のアクションの実行を引き起こすように構成される実行可能ロジックの別の部分を表す。この例でリンク２ｉは、第１の部分が実行可能である第１の状態から、データ項目の第２のものを待機するように実行可能ロジックが構成される第２の状態へのそのキーの値に関する仕様の状態移行を表す。
【０２０４】
図１４を参照し、システムは、キーに関連し、且つデータ項目を処理するための実行可能ロジックを表す仕様に従ってデータのストリームのデータ項目を処理する際にプロセス１４００を実装する。この例では、データ項目は、キーの値に関連する。システムはキーの複数の値について状態を（例えば、メモリ内データグリッド内に）保つ。
【０２０５】
動作面では、システムが仕様にアクセスする（１４０２）。仕様の状態は、その状態において実行可能な実行可能ロジックの１つ又は複数の部分を表す。システムは、データ項目の第１のデータ項目を受信する（１４０４）。データ項目は入力データストリームの一部、例えばネットワーク接続経由で受信されるデータ項目であり得る。この第１のデータ項目はキーの特定の値に関連する。システムは、キーの特定の値に関する第１の状態を識別する（１４０６）。システムは、第１の状態において実行可能であるものとして仕様によって指定される実行可能ロジックの１つ又は複数の部分に従って（例えば、それを実行することによって）第１のデータ項目を処理する（１４０８）。システムは、仕様の第１の状態から実行可能ロジックの１つ又は複数の他の部分が実行可能である第２の状態へのキーの特定の値に関する移行を識別する（１４１０）。システムは、キーの特定の値と異なり且つキーの特定の値に関連しないキーの別の値に関連する介在データ項目を受信する（１４１２）。システムは、介在データ項目に関するキーの他の値に関連する仕様の所与の状態を識別する（１４１４）。システムは、所与の状態において実行可能であるものとして仕様によって指定される実行可能ロジックの１つ又は複数の部分に従って介在データ項目を処理する（１４１６）。システムは、第１のデータ項目及び介在データ項目よりもストリーム内で後の且つキーの特定の値にも関連するデータ項目の第２のデータ項目を受信する（１４１８）。キーの特定の値に関する仕様の移行に基づき、システムは第２の状態において実行可能であるものとして仕様によって指定される実行可能ロジックの１つ又は複数の部分に従って第２のデータ項目を処理する（１４２０）。第２の状態において実行可能な実行可能ロジックの１つ又は複数の部分は、第１の状態において実行可能な実行可能ロジックの１つ又は複数の部分と異なる。例えば、ノード２ｄ、２ｅ、２ｆ（図１Ａ）によって表される第２の状態において実行可能な実行可能ロジックの１つ又は複数の部分は、ノード２ａ、２ｂ、２ｃ（図１Ａ）によって表される第１の状態において実行可能な実行可能ロジックの１つ又は複数の部分と異なる。
【０２０６】
図１５を参照し、システムは、キーの値ごとにその値に関連するデータレコードを処理するように構成される状態機械を実装するためのプロセス１５００を実装する。動作面では、システムは（ｉ）ノードと１つ又は複数のリンクとを有するチャート、及び（ｉｉ）ノードの１つ又は複数に関して１つ又は複数の論理表現を入力又は編集するための１つ又は複数の部分を１つ又は複数のエディタインタフェース内に表示する（１５０２）。この例では、ノードの１つ又は複数が状態機械の特定の状態に対応する。例えば決定ノードは、実行可能ロジックが決定を実施する特定の状態を表す。別の例では、待機ノード及び待機後に行うための１つ又は複数のアクションを指定する別のノードが状態機械の別の状態を表す。この例では、状態機械が特定の状態にある場合のデータレコードの少なくとも部分的な処理を論理表現が表す。例えばシステムが待機すべきデータレコードの種類及びシステムが待機しているデータレコードの検出時に実行すべき１つ又は複数のアクションを指定する表現を含め、様々な種類の論理表現がある。この例では、ノードの１つとノードの別のものとの間のリンクがある状態から別の状態への状態機械の移行を表す。
【０２０７】
システムは、状態機械を実装するための実行可能ロジックへと１つ又は複数の論理表現及びチャートを変換する（１５０４）。状態機械を実装するための実行可能ロジックを実行することに基づいて及びデータレコードが断続的に受信されるとき、システムはデータレコード内の１つ又は複数のフィールドを評価してキーの値を識別する（１５０６）。キーの値ごとに、システムはそのキーの値が基づく１つ又は複数のフィールドを含む１つ又は複数の第１のデータレコードを処理し（１５０８）、その処理はそのキーの値に関する状態機械の現在の状態に対応する１つ又は複数のノードに関連する１つ又は複数の論理表現に従う。一部の例では、システムはデータレコードが断続的に受信されるときこの処理を実行する。キーの値ごとに、システムは断続的に受信されるデータレコードの１つ又は複数の第２のデータレコードを処理するための別の状態にチャートのリンクに従って更に移行し（１５１０）、１つ又は複数の第２のデータレコードはそのキーの値が基づく１つ又は複数のフィールドを含み且つ１つ又は複数の第１のデータレコードの後に受信される。一部の例では、システムはデータレコードが断続的に受信されるときこの移行を実行する。
【０２０８】
一部の例では、システムが実行可能ロジックの状態を示すデータをキーの値ごとにデータリポジトリ内に保存し記憶する。次いで、システムが同じキーの値に関連する追加のデータレコードを検出すると、システムはデータベースの探索を行ってそのキーの値に関する実行可能ロジックの状態を識別する。そのキーの値に関する実行可能ロジックの状態に基づき、システムはその状態においてデータレコードに対して実行すべき更なる処理があるかどうか、又は新たな次の状態に移行するかどうかを決定する。キーの値ごとに実行可能ロジックを実行するのではなくキーの値ごとに状態を保つことにより、システムはシステム資源（例えば、メモリや処理能力等）を節約する。加えて、実行可能ロジックがキーの特定の値に関する新たな状態に移行すると、システムは古い状態の値をメモリから削除し、それにより状態機械の実行及び実装に必要なメモリの総量を減らす。
【０２０９】
加えて、ノードの１つ又は複数に関して１つ又は複数の論理表現を入力又は編集するための１つ又は複数の部分は、入力又は編集するための部分とは独立に又はかかる部分なしに状態機械を編集する柔軟性と比較し、例えばキー付き状態機械等の状態機械を構成し編集する際の柔軟性を一層高めることを可能にする。状態機械を起動する前に様々な状態及び状態間の関係を広範にモデリングし構成するのではなく、本明細書に記載の編集インタフェースはそのような事前の作業なしに起動することができ、且つ代わりにその場で構成することができる状態機械の実装を可能にする。
【０２１０】
本明細書に記載の技法を使用し、システムは、時間において隔てられたデータレコードをほぼリアルタイムで処理するためのグラフィカルプログラミングモデルを提供する。データレコードをキーに基づいて処理するため、この処理はキーベースの処理である。一例では、キーの特定の値に関連するデータレコードが一緒に分析され処理される。加えてシステムは、システムによって受信されるデータレコードに対してチャート内で定められる実行可能ロジックを適用した結果を示す結果データを表示することにより、時間的に焦点を絞った検査を可能にする。この結果データは、結果データが生成されるチャート内のノードに対して結果データの各項目を並べて表示しながらチャート内に表示することができる。加えてシステムは、チャートのキーの値に関する検査結果を利用者がステップ実行できるようにすることによってより粒度の細かいビューも利用者に提供する。この例では、システムがキーの特定の値に関連するデータレコードに対して実行可能ロジックを実行した結果を例えばチャートに対するオーバレイとして提供する。
【０２１１】
上記の技法はコンピュータ上で実行するためのソフトウェアを使用して実装することができる。例えばソフトウェアは、（分散、クライアント／サーバ、グリッド等の様々なアーキテクチャのものとすることができる）１つ又は複数のプログラムされた又はプログラム可能なコンピュータシステム上で実行される１つ又は複数のコンピュータプログラムによって手続きを形成し、かかるコンピュータシステムは、少なくとも１つのプロセッサ、少なくとも１つのデータ記憶システム（揮発性及び不揮発性のメモリ及び／又は記憶素子を含む）、少なくとも１つの入力装置又はポート、及び少なくとも１つの出力装置又はポートをそれぞれ含む。ソフトウェアは、例えばチャート及びフローチャートの設計及び構成に関係する他のサービスを提供するより大きいプログラムの１つ又は複数のモジュールを形成し得る。チャートのノード、リンク、及び要素は、コンピュータ可読媒体内に記憶されるデータ構造又はデータリポジトリ内に記憶されるデータモデルに準拠する他の編成済みデータとして実装することができる。
【０２１２】
本明細書に記載した技法はデジタル電子回路、又はコンピュータハードウェア、ファームウェア、ソフトウェア、若しくはその組合せによって実装することができる。機器はプログラム可能なプロセッサによって実行するために機械可読記憶装置（例えば、非一時的機械可読記憶装置、機械可読ハードウェア記憶装置等）の中に有形に具体化され又は記憶されるコンピュータプログラム製品によって実装することができ、方法のアクションは、入力データに作用して出力を生成することによって機能を実行するために命令のプログラムを実行するプログラム可能なプロセッサによって実行され得る。本明細書に記載した実施形態及び特許請求の範囲に記載の他の実施形態並びに本明細書に記載した技法は、データ及び命令をデータ記憶システムとの間でやり取りするために結合される少なくとも１つのプログラム可能なプロセッサと、少なくとも１つの入力装置と、少なくとも１つの出力装置とを含むプログラム可能なシステム上で実行可能な１つ又は複数のコンピュータプログラムによって有利に実装することができる。各コンピュータプログラムは高水準手続き型プログラミング言語若しくはオブジェクト指向プログラミング言語、又は所望の場合はアセンブリ言語若しくは機械言語によって実装することができ、何れにしても言語はコンパイラ型言語又はインタープリタ型言語とすることができる。
【０２１３】
コンピュータプログラムを実行するのに適したプロセッサは、汎用マイクロプロセッサ及び専用マイクロプロセッサの両方、並びに任意の種類のデジタルコンピュータの１つ又は複数の任意のプロセッサを例として含む。概して、プロセッサは読取専用メモリ若しくはランダムアクセスメモリ又はその両方から命令及びデータを受信する。コンピュータの必須要素は、命令を実行するためのプロセッサ並びに命令及びデータを記憶するための１つ又は複数のメモリ装置である。概してコンピュータはデータを記憶するための１つ又は複数の大容量記憶装置、例えば磁気ディスク、光磁気ディスク、光ディスクも含み、又はそこからデータを受信するために、そこにデータを転送するために、若しくはその両方を行うためにそれらに動作可能に結合される。コンピュータプログラム命令及びデータを具体化するためのコンピュータ可読媒体は、半導体メモリ装置、例えばＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ装置、磁気ディスク、例えば内蔵ハードディスクやリムーバブルディスク、光磁気ディスク、及びＣＤ  ＲＯＭディスクやＤＶＤ−ＲＯＭディスクを例として含むあらゆる形式の不揮発性メモリを含む。プロセッサ及びメモリは専用論理回路によって補うことができ又は専用論理回路に組み込むことができる。上記のものの何れもＡＳＩＣ（特定用途向け集積回路）によって補うことができ又はＡＳＩＣに組み込むことができる。
【０２１４】
利用者との対話を可能にするために、利用者に情報を表示するためのディスプレイ装置、例えばＬＣＤ（液晶ディスプレイ）モニタ、並びに利用者がそれによりコンピュータに入力を与えることができるキーボード及びポインティング装置、例えばマウスやトラックボールを有するコンピュータ上で実施形態を実装することができる。利用者との対話を可能にするために他の種類の装置も使用することができ、例えば利用者に与えられるフィードバックは任意の形式の感覚フィードバック、例えば視覚フィードバック、聴覚フィードバック、触覚フィードバックとすることができ、利用者からの入力は音響入力、音声入力、又は触覚入力を含む任意の形式で受信することができる。
【０２１５】
実施形態は、例えばデータサーバとしてバックエンドコンポーネントを含む計算システムによって、ミドルウェアコンポーネント、例えばアプリケーションサーバを含む計算システムによって、フロントエンドコンポーネント、例えば利用者がそれにより実施形態の実装と対話することができるグラフィカルユーザインタフェースやウェブブラウザを有するクライアントコンピュータを含む計算システムによって、又はかかるバックエンドコンポーネント、ミドルウェアコンポーネント、若しくはフロントエンドコンポーネントの任意の組合せを含む計算システムによって実装することができる。システムのコンポーネントは、デジタルデータ通信の任意の形式又は媒体、例えば通信ネットワークによって相互接続され得る。通信ネットワークの例はローカルエリアネットワーク（ＬＡＮ）及び広域ネットワーク（ＷＡＮ）、例えばインターネットを含む。
【０２１６】
システム及び方法又はその一部は、ハイパーテキスト転送プロトコル（ＨＴＴＰ）を利用するインターネット上のサーバの集合である「ワールドワイドウェブ」（ウェブ又はＷＷＷ）を使用し得る。ＨＴＴＰは、テキスト、グラフィックス、画像、音声、ビデオ、ハイパーテキストマーク付け言語（ＨＴＭＬ）、プログラム等の様々な形式の情報であり得る資源へのアクセスを利用者に提供する既知のアプリケーションプロトコルである。利用者によってリンクが指定されると、クライアントコンピュータがウェブサーバにＴＣＰ／ＩＰリクエストを行い、ＨＴＭＬに従ってフォーマットされた別のウェブページであり得る情報を受信する。利用者は画面上の指示に従うことによって、特定のデータを入力することによって、又は選択されたアイコンをクリックすることによって同じサーバ又は他のサーバ上の他のページにアクセスすることもできる。所与のコンポーネントに関する選択肢を利用者が選択できるようにするために、ウェブページを使用する実施形態にはチェックボックスやドロップダウンボックス等、当業者に知られている任意の種類の選択デバイスを使用できることにも留意すべきである。UNIXマシンを含めサーバは様々なプラットフォーム上で実行されるが、Windows 2000/2003、Windows NT、Sun、Linux、Macintosh等の他のプラットフォームも使用され得る。コンピュータの利用者はFirefox、Netscape Navigator、Microsoft Internet Explorer、Mosaicブラウザ等のブラウジングソフトウェアを使用することによってウェブ上のサーバ又はネットワーク上で入手可能な情報を閲覧することができる。計算システムはクライアント及びサーバを含み得る。クライアントとサーバとは概して互いに離れており、典型的には通信ネットワークを介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され互いにクライアント−サーバ間の関係を有するコンピュータプログラムによって生じる。
【０２１７】
他の実施形態も本明細書及び特許請求の範囲の範囲及び趣旨に含まれる。例えばソフトウェアの性質により、上記の機能はソフトウェア、ハードウェア、ファームウェア、ハードワイヤリング、又はそれらのものの何れかの組合せを使用して実装することができる。機能の一部が様々な物理的位置に実装されるように、機能を実装する特徴は分散させることを含め様々な位置に物理的に配置することもできる。本明細書及び本願の全体を通して「１つの（a）」という語を使用することは限定的な意味で使用するのではなく、従って「１つの（a）」という語について複数の意味又は「１つ又は複数」の意味を排除することは意図しない。加えて、仮特許出願に対して優先権が主張される限りにおいて、仮特許出願は限定的ではなく本明細書に記載した技法をどのように実装し得るのかについての例を含むことを理解すべきである。
【０２１８】
本発明の幾つかの実施形態を説明してきた。それでもなお、特許請求の範囲及び本明細書に記載した技法の趣旨及び範囲から逸脱することなしに様々な修正を加えることができることを当業者なら理解されよう。
【図１Ａ】
2019521421.tif 000006
【図１Ｂ】
2019521421.tif 000007
【図２】
2019521421.tif 000008
【図３】
2019521421.tif 000009
【図４】
2019521421.tif 000010
【図５】
2019521421.tif 000011
【図６】
2019521421.tif 000012
【図６ＣＮＴ】
2019521421.tif 000013
【図７】
2019521421.tif 000014
【図８】
2019521421.tif 000015
【図９】
2019521421.tif 000016
【図１０】
2019521421.tif 000017
【図１１】
2019521421.tif 000018
【図１２】
2019521421.tif 000019
【図１３】
2019521421.tif 000020
【図１４】
2019521421.tif 000021
【図１５】
2019521421.tif 000022
【国際調査報告】
2019521421.tif 000023
2019521421.tif 000024
2019521421.tif 000025