DE112017002645T5 - Ausführbare Logik zur Verarbeitung verschlüsselter Daten in Netzen - Google Patents

Ausführbare Logik zur Verarbeitung verschlüsselter Daten in Netzen Download PDF

Info

Publication number
DE112017002645T5
DE112017002645T5 DE112017002645.8T DE112017002645T DE112017002645T5 DE 112017002645 T5 DE112017002645 T5 DE 112017002645T5 DE 112017002645 T DE112017002645 T DE 112017002645T DE 112017002645 T5 DE112017002645 T5 DE 112017002645T5
Authority
DE
Germany
Prior art keywords
data
key
state
value
executable logic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112017002645.8T
Other languages
English (en)
Inventor
Joel Gould
Scott Studer
Craig W. Stanfill
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ab Initio Technology LLC
Original Assignee
Ab Initio Technology LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ab Initio Technology LLC filed Critical Ab Initio Technology LLC
Publication of DE112017002645T5 publication Critical patent/DE112017002645T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24565Triggers; Constraints
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Communication Control (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Other Investigation Or Analysis Of Materials By Electrical Means (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

Verfahren, welches von einem Datenverarbeitungssystem zur Verarbeitung von Datenelementen eines Stroms von Datenelementen implementiert wird, umfassend: Zugreifen auf eine Spezifikation, welche die ausführbare Logik repräsentiert, wobei ein Zustand der Spezifikation für einen bestimmten Wert des Schlüssels einen oder mehrere Abschnitte der ausführbaren Logik spezifiziert, die in diesem Zustand ausführbar sind; Empfangen, über eine Eingabevorrichtung oder einen Eingabeport, von Datenelementen eines Datenstroms; für ein erstes der Datenelemente des Stroms, Identifizieren eines ersten Zustands der Spezifikation für einen Wert des Schlüssels, der mit diesem ersten der Datenelemente assoziiert ist; Verarbeiten, durch das Datenverarbeitungssystem, des ersten der Datenelemente gemäß einem oder mehreren Abschnitten ausführbarer Logik, die in der Spezifikation als mit dem ersten Zustand assoziiert repräsentiert sind.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Beschreibung betrifft computerimplementierte Verfahren, Datenverarbeitungssysteme und maschinenlesbare Speichervorrichtungen zum Betreiben und Einstellen ausführbarer Logik, die aktuell auf ein oder mehrere Datenelemente in einem Strom von Datenelementen angewendet wird, z.B. Datenelementen, die über eine Netzverbindung von vernetzten Anwendungen kommen.
  • PRIORITÄTSANSPRUCH
  • Diese Anmeldung beansprucht Priorität gemäß 35 U.S.C. §119(e) gegenüber der provisorischen US-Patentanmeldung Nr. 62/340,825 , eingereicht am 24. Mai 2016, und US-Patentanmeldung Nr. 15/376,129 , eingereicht am 12. Dezember 2016, deren gesamter Inhalt hier durch Bezugnahme eingeschlossen wird.
  • HINTERGRUND
  • Allgemein empfängt ein System einen Strom von Datensätzen und verwendet eine oder mehrere Regeln, um jeden Datensatz unabhängig voneinander zu verarbeiten. An sich nehmen die Regeln nur den aktuellen Datensatz als Eingang und geben Ergebnisse zur Verarbeitung dieses Datensatzes aus. Wenn das System die Regeln testet, wird das Testen vorgenommen, indem eine oder mehrere Regeln auf einen Datensatz angewendet werden, und die Testergebnisse werden nur für diesen Datensatz gezeigt. Üblicherweise entwickelt ein Software-Entwickler eine Anwendung, die dann an eine Person weitergeleitet wird, welche die entwickelte Anwendung testet. Dies kann einige Male hin- und hergehen, bis die genehmigte Anwendung für den Endverbraucher freigegeben wird. Der Endverbraucher kann eine Anforderung für eine Änderung der Anwendung haben, und der Endverbraucher muss diese Anforderung dem Dienstanbieter vorlegen, der dann wiederum den Software-Entwickler und die Testperson einbindet, welcher dann versucht, eine Lösung zu finden, um die angeforderte Änderung zu verwirklichen. Dies kann jedoch einige Runden erfordern und gestattet es in keiner Weise, dass der Endverbraucher irgendwelche Modifikationen vornimmt.
  • ZUSAMMENFASSUNG
  • Die vorliegende Erfindung betrifft computerimplementierte Verfahren, Datenverarbeitungssysteme und maschinenlesbare Hardware-Speichervorrichtungen, die es ermöglichen, einen Endverbraucher beim raschen (z.B. fliegenden) und geeigneten Betreiben und Einstellen ausführbarer Logik zu unterstützen, die aktuell auf ein oder mehrere Datenelemente in einem Strom von Datenelementen angewendet wird, z.B. Datenelementen, die über eine Netzverbindung von vernetzten Anwendungen kommen. Auf diese Weise wird der Endverbraucher glaubhaft beim geeigneten Betreiben des zugrundeliegenden technischen Systems unterstützt, ohne die Notwendigkeit, Anwendungsentwickler und Testpersonen in das Prüfen oder das Einstellen der ausführbaren Logik zu involvieren. Dies kann auch die Kosten und die Zeit reduzieren, die erforderlich sind, um dieses Prüfen und Einstellen der ausführbaren Logik vorzunehmen, und der Endverbraucher gewinnt dadurch auch an Flexibilität und Kontrolle.
  • In einem allgemeinen Aspekt 1 wird ein computerimplementiertes Verfahren zur Verarbeitung von Datenelementen eines Stroms von Datenelementen gemäß einer Spezifikation beschrieben, die mit einem Schlüssel assoziiert ist, wobei ein Datenelement mit einem Wert des Schlüssels assoziiert ist, wobei Zustände der Spezifikation für jeweilige Werte des Schlüssels aufrechterhalten werden, wobei die Spezifikation ausführbare Logik repräsentiert, die in einem Datenspeichersystem gespeichert ist, wobei das Verfahren umfasst: Zugreifen auf die Spezifikation, welche die ausführbare Logik repräsentiert, wobei ein Zustand der Spezifikation für einen bestimmten Wert des Schlüssels einen oder mehrere Abschnitte der ausführbaren Logik spezifiziert, die in diesem Zustand ausführbar sind; Empfangen, über eine Eingabevorrichtung oder einen Eingabeport, von Datenelementen eines Datenstroms; für ein erstes der Datenelemente des Stroms, Identifizieren eines ersten Zustands der Spezifikation für einen Wert des Schlüssels, der mit diesem ersten der Datenelemente assoziiert ist; Verarbeiten, durch ein Datenverarbeitungssystem, des ersten der Datenelemente gemäß einem oder mehreren Abschnitten ausführbarer Logik, die in der Spezifikation als mit dem ersten Zustand assoziiert repräsentiert sind, wobei die Verarbeitung umfasst: Bewirken einer Anzeige eines oder mehrerer Abschnitte der Spezifikation; Anwenden des einen oder der mehreren Abschnitte der ausführbaren Logik auf das erste der Datenelemente, um Ergebnisdaten zu erhalten; Bewirken einer Anzeige mindestens eines Abschnitts der Ergebnisdaten mit mindestens einem von dem einen oder den mehreren angezeigten Abschnitten der Spezifikation; und Bewirken, dass die Spezifikation, in Bezug auf den Wert des Schlüssels für das erste der Datenelemente, von dem ersten Zustand in einen zweiten Zustand übergeht.
  • In einem Aspekt 2 gemäß Aspekt 1 umfasst das Verfahren ferner: Ausführen der ausführbaren Logik.
  • Im Aspekt 3 gemäß einem der Aspekte 1 bis 2 umfassen der eine oder die mehreren Abschnitte der ausführbaren Logik einen oder mehrere erste Abschnitte der ausführbaren Logik, wobei der eine oder die mehreren Abschnitte der Spezifikation einen ersten Abschnitt der Spezifikation umfassen, wobei die Ergebnisdaten erste Ergebnisinformationen umfassen, wobei das Verfahren umfasst: Ausführen der ausführbaren Logik; wenn die ausführbare Logik weiterhin ausgeführt wird, Empfangen eines zweiten der Datenelemente, das später in dem Strom ist als das erste der Datenelemente und auch mit dem Wert des Schlüssels assoziiert ist; auf der Basis des Übergangs von dem ersten Zustand in den zweiten Zustand, Verarbeiten des zweiten der Datenelemente gemäß einem oder mehreren zweiten Abschnitten der ausführbaren Logik, die mit dem zweiten Zustand assoziiert sind, wobei der eine oder die mehreren zweiten Abschnitte der ausführbaren Logik als zweiter Abschnitt der Spezifikation ausgedrückt werden; auf der Basis der Verarbeitung, Erhalten zweiter Ergebnisdaten, die ein oder mehrere Ergebnisse der Verarbeitung des zweiten der Datenelemente anzeigen; und Bewirken einer Anzeige mindestens eines Abschnitts der zweiten Ergebnisdaten mit dem zweiten Abschnitt der Spezifikation.
  • In einem Aspekt 4 gemäß einem der Aspekte 1 bis 3 umfasst das Verfahren ferner: Zugreifen auf Sätze von Elementen von Testdaten; und aus einem ausgewählten der Sätze, Simulieren eines Stroms von nahezu Echtzeit-Testdaten, die ein erstes Element von Testdaten aufweisen, das vor einem zweiten Element von Testdaten auftritt.
  • In einem Aspekt 5 gemäß einem der Aspekte 1 bis 4, wobei das Empfangen des Stroms von Datenelementen ein Empfangen des simulierten Stroms umfasst.
  • In einem Aspekt 6 gemäß einem der Aspekte 1 bis 5 umfasst das Verfahren: Testen eines Genauigkeitsgrads der Ausführung einer Regel, die durch die Spezifikation ausgedrückt wird, durch Anwenden des einen oder der mehreren Abschnitte der ausführbaren Logik auf das erste der Datenelemente.
  • In einem Aspekt 7 gemäß einem der Aspekte 1 bis 6 umfasst das Testen eines Genauigkeitsgrads der Ausführung einer Regel eines oder mehrere von: Bestimmen, dass ein Abschnitt des ersten der Datenelemente von dem Datenverarbeitungssystem nicht verarbeitet wird, Bestimmen, dass ein Konflikt zwischen Abschnitten der Regel vorliegt, Bestimmen, dass ein Abschnitt der Regel eine Bedingung spezifiziert, von der es unwahrscheinlich ist, dass sie für das erste der Datenelemente erfüllt wird, und Bestimmen, dass ein Abschnitt der Regel einen Abschnitt des ersten der Datenelemente auf eine Weise verarbeitet, die von einem gesetzten Verarbeitungsziel verschieden ist.
  • In einem Aspekt 8 gemäß einem der Aspekte 1 bis 7 weist der Wert des Schlüssels einen ersten Wert auf, und das Verfahren umfasst: Auswählen, aus den Sätzen von Testdaten, eines Satzes, der mit einem zweiten Wert des Schlüssels assoziiert ist; und Ausführen, an einem Strom, der unter Verwendung von Testdaten in dem Satz für den zweiten Schlüssel simuliert wird, eines Falls der ausführbaren Logik für den zweiten Wert des Schlüssels.
  • In einem Aspekt 9 gemäß einem der Aspekte 1 bis 8 umfasst das Verfahren: Bewirken einer Anzeige einer visuellen Darstellung eines Übergangs von dem Abschnitt der Spezifikation, der den ersten Zustand der ausführbaren Logik repräsentiert, in den anderen Abschnitt der Spezifikation, der den zweiten Zustand repräsentiert.
  • In einem Aspekt 10 gemäß einem der Aspekte 1 bis 9 umfasst das Verfahren: Empfangen einer Benutzerauswahl des ersten der Datenelemente des Stroms; Bewirken einer Anzeige einer Indikation des ersten der Datenelemente des Stroms, der aktuell von dem Datenverarbeitungssystem verarbeitet wird; und Bewirken einer Anzeige einer Indikation des einen oder der mehreren Abschnitte der ausführbaren Logik, der aktuell auf das erste der Datenelemente angewendet wird, um die Ergebnisdaten zu erhalten.
  • In einem Aspekt 11 gemäß einem der Aspekte 1 bis 10 umfasst das Verfahren: Vergleichen des Abschnitts der Ergebnisdaten mit vorherbestimmten Referenzdaten; Bestimmen, ob eine Abweichung zwischen dem Abschnitt der Ergebnisdaten und den vorherbestimmten Referenzdaten vorliegt, oder ob eine solche Abweichung nicht vorliegt; und Ausgeben einer Indikation, ob der Abschnitt der Ergebnisdaten mit den vorherbestimmten Referenzdaten übereinstimmt, auf der Basis der Bestimmung, ob eine Abweichung zwischen dem Abschnitt der Ergebnisdaten und den vorherbestimmten Referenzdaten vorliegt, oder ob eine solche Abweichung nicht vorliegt.
  • In einem Aspekt 12 gemäß einem der Aspekte 1 bis 11 umfasst das Verfahren: Vergleichen des ersten der Datenelemente des Stroms, der aktuell von dem Datenverarbeitungssystem verarbeitet wird, mit einem vorherbestimmten Referenzdatenelement; Bestimmen, ob eine Abweichung zwischen dem ersten der Datenelemente des Stroms, der aktuell verarbeitet wird, und dem vorherbestimmten Referenzdatenelement vorliegt, oder ob eine solche Abweichung nicht vorliegt; und Ausgeben einer Indikation, ob das erste der Datenelemente des Stroms, der aktuell verarbeitet wird, mit dem vorherbestimmten Referenzdatenelement übereinstimmt, auf der Basis der Bestimmung, ob eine Abweichung zwischen dem ersten der Datenelemente des Stroms, der aktuell verarbeitet wird, und dem vorherbestimmten Referenzdatenelement vorliegt, oder ob eine solche Abweichung nicht vorliegt.
  • In einem Aspekt 13 gemäß einem der Aspekte 1 bis 12 umfasst das Verfahren: Vergleichen des einen oder der mehreren Abschnitte der ausführbaren Logik, die aktuell auf das erste der Datenelemente angewendet wird, um die Ergebnisdaten zu erhalten, mit einer vorherbestimmten ausführbaren Referenzlogik; Bestimmen, ob eine Abweichung zwischen dem einen oder den mehreren Abschnitten der ausführbaren Logik, die aktuell auf das erste der Datenelemente angewendet wird, und der vorherbestimmten ausführbaren Referenzlogik vorliegt, oder ob eine solche Abweichung nicht vorliegt; und Ausgeben einer Indikation, ob der eine oder die mehreren Abschnitte der ausführbaren Logik, die aktuell auf das erste der Datenelemente angewendet wird, um die Ergebnisdaten zu erhalten, mit einer vorherbestimmten ausführbaren Referenzlogik übereinstimmt, auf der Basis der Bestimmung, ob eine Abweichung zwischen dem einen oder den mehreren Abschnitten der ausführbaren Logik, die aktuell auf das erste der Datenelemente angewendet wird, und der vorherbestimmten ausführbaren Referenzlogik vorliegt, oder ob eine solche Abweichung nicht vorliegt.
  • In einem allgemeinen Aspekt 14, ein Datenverarbeitungssystem zur Verarbeitung von Datenelementen eines Stroms von Datenelementen gemäß einer Spezifikation, die mit einem Schlüssel assoziiert ist, wobei ein Datenelement mit einem Wert des Schlüssels assoziiert ist, wobei Zustände der Spezifikation für jeweilige Werte des Schlüssels aufrechterhalten werden, und wobei die Spezifikation ausführbare Logik repräsentiert, die in einem Datenspeichersystem gespeichert ist, wobei das Datenverarbeitungssystem umfasst: eine oder mehrere Verarbeitungsvorrichtungen, und eine oder mehrere maschinenlesbare Hardware-Speichervorrichtungen, welche Instruktionen speichern, die von der einen oder den mehreren Verarbeitungsvorrichtungen ausgeführt werden können, um Operationen vorzunehmen, umfassend: Zugreifen auf die Spezifikation, welche die ausführbare Logik repräsentiert, wobei ein Zustand der Spezifikation für einen bestimmten Wert des Schlüssels einen oder mehrere Abschnitte der ausführbaren Logik spezifiziert, die in diesem Zustand ausführbar sind; Empfangen, über eine Eingabevorrichtung oder einen Eingabeport, von Datenelementen eines Datenstroms; für ein erstes der Datenelemente des Stroms, Identifizieren eines ersten Zustands der Spezifikation für einen Wert des Schlüssels, der mit diesem ersten der Datenelemente assoziiert ist; Verarbeiten, durch ein Datenverarbeitungssystem, des ersten der Datenelemente gemäß einem oder mehreren Abschnitten ausführbarer Logik, die in der Spezifikation als mit dem ersten Zustand assoziiert repräsentiert sind; wobei die Verarbeitung umfasst: Bewirken einer Anzeige eines oder mehrerer Abschnitte der Spezifikation; Anwenden des einen oder der mehreren Abschnitte der ausführbaren Logik auf das erste der Datenelemente, um Ergebnisdaten zu erhalten; und Bewirken einer Anzeige mindestens eines Abschnitts der Ergebnisdaten mit mindestens einem von dem einen oder den mehreren angezeigten Abschnitten der Spezifikation; Bewirken, dass die Spezifikation, in Bezug auf den Wert des Schlüssels für das erste der Datenelemente, von dem ersten Zustand in einen zweiten Zustand übergeht.
  • In einem allgemeinen Aspekt 15, eine oder mehrere maschinenlesbare Hardware-Speichervorrichtungen, die Instruktion zur Verarbeitung von Datenelementen eines Stroms von Datenelementen gemäß einer Spezifikation speichern, die mit einem Schlüssel assoziiert ist, wobei ein Datenelement mit einem Wert des Schlüssels assoziiert ist, wobei Zustände der Spezifikation für jeweilige Werte des Schlüssels aufrechterhalten werden, wobei die Spezifikation ausführbare Logik repräsentiert, die in einem Datenspeichersystem gespeichert ist, wobei die Instruktionen von einer oder mehreren Verarbeitungsvorrichtungen ausgeführt werden können, um Operationen vorzunehmen, umfassend: Zugreifen auf die Spezifikation, welche die ausführbare Logik repräsentiert, wobei ein Zustand der Spezifikation für einen bestimmten Wert des Schlüssels einen oder mehrere Abschnitte der ausführbaren Logik spezifiziert, die in diesem Zustand ausführbar sind; Empfangen, über eine Eingabevorrichtung oder einen Eingabeport, von Datenelementen eines Datenstroms; für ein erstes der Datenelemente des Stroms, Identifizieren eines ersten Zustands der Spezifikation für einen Wert des Schlüssels, der mit diesem ersten der Datenelemente assoziiert ist; Verarbeiten, durch ein Datenverarbeitungssystem, des ersten der Datenelemente gemäß einem oder mehreren Abschnitten ausführbarer Logik, die in der Spezifikation als mit dem ersten Zustand assoziiert repräsentiert sind; wobei die Verarbeitung umfasst: Bewirken einer Anzeige eines oder mehrerer Abschnitte der Spezifikation; Anwenden des einen oder der mehreren Abschnitte der ausführbaren Logik auf das erste der Datenelemente, um Ergebnisdaten zu erhalten; und Bewirken einer Anzeige mindestens eines Abschnitts der Ergebnisdaten mit mindestens einem von dem einen oder den mehreren angezeigten Abschnitten der Spezifikation; Bewirken, dass die Spezifikation, in Bezug auf den Wert des Schlüssels für das erste der Datenelemente, von dem ersten Zustand in einen zweiten Zustand übergeht.
  • In einem allgemeinen Aspekt 16, ein Verfahren, welches von einem Datenverarbeitungssystem zur Verarbeitung von Datenelementen eines Stroms von Datenelementen gemäß einer Spezifikation implementiert wird, die mit einem Schlüssel assoziiert ist, wobei ein Datenelement mit einem Wert des Schlüssels assoziiert ist, wobei Zustände der Spezifikation für jeweilige Werte des Schlüssels aufrechterhalten werden, und wobei die Spezifikation ausführbare Logik repräsentiert, die in einem Datenspeichersystem gespeichert ist, wobei das Verfahren umfasst: Zugreifen auf die Spezifikation, welche die ausführbare Logik repräsentiert, wobei ein Zustand der Spezifikation für einen bestimmten Wert des Schlüssels einen oder mehrere Abschnitte der ausführbaren Logik spezifiziert, die in diesem Zustand ausführbar sind; Empfangen, über eine Eingabevorrichtung oder einen Eingabeport, von Datenelementen eines Datenstroms; für ein erstes der Datenelemente des Stroms, Identifizieren eines Werts des Schlüssels, der mit diesem ersten der Datenelemente assoziiert ist; Identifizieren, dass die Spezifikation mit einem Wartezustand für diesen Wert des Schlüssels assoziiert ist, wobei der Wartezustand einen Zustand umfasst, in dem die ausführbare Logik ausgelegt ist, auf ein oder mehrere Datenelemente zu warten, die mit diesem Wert des Schlüssels assoziiert sind, und die zeitlich von einem oder mehreren anderen Datenelementen getrennt sind, welche vor dem einen oder den mehreren Datenelementen in dem Strom angeordnet sind; Verarbeiten, mit mindestens einem Prozessor, des ersten der Datenelemente gemäß einem oder mehreren Abschnitten ausführbarer Logik, die in der Spezifikation als mit dem Wartezustand assoziiert repräsentiert sind; und Bewirken einer Anzeige mindestens eines Abschnitts von Daten, die ein Ergebnis der Verarbeitung des ersten der Datenelemente gemäß einem oder mehreren Abschnitten ausführbarer Logik anzeigen, welche mit dem Wartezustand assoziiert sind.
  • In einem Aspekt 17 gemäß dem Aspekt 16 umfasst die Spezifikation ein Flussdiagramm mit einer Vielzahl von Knoten, wobei mindestens einer der Knoten einen Warteknoten aufweist, der den Wartezustand repräsentiert, und wobei das Flussdiagramm eine Verbindung zwischen einem ersten der Knoten und einem zweiten der Knoten aufweist, wobei die Verbindung repräsentiert: einen Übergang der ausführbaren Logik von der Ausführung eines oder mehrerer erster Abschnitte der ausführbaren Logik, die von dem ersten der Knoten repräsentiert werden, zur Ausführung eines oder mehrerer zweiter Abschnitte der ausführbaren Logik, die von dem zweiten der Knoten repräsentiert werden
  • In einem Aspekt 18 gemäß einem der Aspekte 16 bis 17 umfasst das Verfahren ferner: Generieren von Daten für eine grafische Benutzerschnittstelle, die, wenn sie auf einer Anzeigevorrichtung gerendert werden, eine Startsteuerung zur Ausführung des Flussdiagramms umfassen und auch das Flussdiagramm umfassen; Empfangen von Daten, die eine Auswahl der Startsteuerung anzeigen; ansprechend auf die empfangenen Daten, Ausführen des Flussdiagramms durch Vornehmen von Operationen, umfassend: Ausführen des einen oder der mehreren Abschnitte der ausführbaren Logik, die von dem ersten Knoten an dem ersten der Datenelemente repräsentiert werden; und Bewirken, dass die grafische Benutzerschnittstelle aktualisiert wird, um Ergebnisdaten anzuzeigen, die ein Ergebnis der Verarbeitung des ersten der Datenelemente mit dem einen oder den mehreren ersten Abschnitten der ausführbaren Logik anzeigen, welche von dem ersten Knoten repräsentiert werden, wobei die Ergebnisdaten neben dem ersten Knoten in dem Flussdiagramm angezeigt werden.
  • In einem Aspekt 19 gemäß einem der Aspekte 16 bis 18 umfassen die Daten für die grafische Benutzerschnittstelle Daten zum Anzeigen einer Stoppsteuerung, und das Verfahren umfasst: Empfangen von Daten, die eine Auswahl der Stoppsteuerung anzeigen; und Pausieren der Ausführung des Flussdiagramms.
  • In einem Aspekt 20 gemäß einem der Aspekte 16 bis 19 umfassen die Daten für die grafische Benutzerschnittstelle Daten zum Anzeigen einer Teststeuerung, wobei das Verfahren umfasst: Empfangen von Daten, die eine Auswahl der Teststeuerung anzeigen; und Testen der Leistung des Flussdiagramms, indem Operationen vorgenommen werden, umfassend: für jeden Knoten in dem Flussdiagramm, Bewirken einer Anzeige von Daten in dem Flussdiagramm, die anzeigen, welche Datenelemente des Stroms und assoziiert mit dem Wert des Schlüssels von einem oder mehreren Abschnitten ausführbarer Logik verarbeitet werden, die von diesem Knoten repräsentiert werden.
  • In einem Aspekt 21 gemäß einem der Aspekte 16 bis 20 umfasst das Verfahren: Bewirken nahezu in Echtzeit, in Bezug auf den Empfang jedes Datenelements, das mit dem Wert des Schlüssels assoziiert ist, der Anzeige von Daten in dem Flussdiagramm, die anzeigen, welche Datenelemente des Stroms und assoziiert mit dem Wert des Schlüssels von einem oder mehreren Abschnitten ausführbarer Logik verarbeitet werden, die von diesem Knoten repräsentiert werden.
  • In einem allgemeinen Aspekt 22, ein Datenverarbeitungssystem zur Verarbeitung von Datenelementen eines Stroms von Datenelementen gemäß einer Spezifikation, die mit einem Schlüssel assoziiert ist, wobei ein Datenelement mit einem Wert des Schlüssels assoziiert ist, wobei Zustände der Spezifikation für jeweilige Werte des Schlüssels aufrechterhalten werden, und wobei die Spezifikation ausführbare Logik repräsentiert, die in einem Datenspeichersystem gespeichert ist, wobei das Datenverarbeitungssystem umfasst: eine oder mehrere Verarbeitungsvorrichtungen, und eine oder mehrere maschinenlesbare Hardware-Speichervorrichtungen, welche Instruktionen speichern, die von der einen oder den mehreren Verarbeitungsvorrichtungen ausgeführt werden können, um Operationen vorzunehmen, umfassend: Zugreifen auf die Spezifikation, welche die ausführbare Logik repräsentiert, wobei ein Zustand der Spezifikation für einen bestimmten Wert des Schlüssels einen oder mehrere Abschnitte der ausführbaren Logik spezifiziert, die in diesem Zustand ausführbar sind; Empfangen, über eine Eingabevorrichtung oder einen Eingabeport, von Datenelementen eines Datenstroms; für ein erstes der Datenelemente des Stroms, Identifizieren eines Werts des Schlüssels, der mit diesem ersten der Datenelemente assoziiert ist; Identifizieren, dass die Spezifikation mit einem Wartezustand für diesen Wert des Schlüssels assoziiert ist, wobei der Wartezustand einen Zustand umfasst, in dem die ausführbare Logik ausgelegt ist, auf ein oder mehrere Datenelemente zu warten, die mit diesem Wert des Schlüssels assoziiert sind, und die zeitlich von einem oder mehreren anderen Datenelementen getrennt sind, welche vor dem einen oder den mehreren Datenelementen in dem Strom angeordnet sind; Verarbeiten, mit mindestens einem Prozessor, des ersten der Datenelemente gemäß einem oder mehreren Abschnitten ausführbarer Logik, die in der Spezifikation als mit dem Wartezustand assoziiert repräsentiert sind; und Bewirken einer Anzeige mindestens eines Abschnitts von Daten, welche ein Ergebnis der Verarbeitung des ersten der Datenelemente gemäß einem oder mehreren Abschnitten ausführbarer Logik anzeigen, die mit dem Wartezustand assoziiert sind.
  • In einem allgemeinen Aspekt 23, eine oder mehrere maschinenlesbare Hardware-Speichervorrichtungen, die Instruktionen zur Verarbeitung von Datenelementen eines Stroms von Datenelementen gemäß einer Spezifikation speichern, die mit einem Schlüssel assoziiert ist, wobei ein Datenelement mit einem Wert des Schlüssels assoziiert ist, wobei Zustände der Spezifikation für jeweilige Werte des Schlüssels aufrechterhalten werden, und wobei die Spezifikation ausführbare Logik repräsentiert, die in einem Datenspeichersystem gespeichert ist, wobei die Instruktionen von einer oder mehreren Verarbeitungsvorrichtungen ausgeführt werden können, um Operationen vorzunehmen, umfassend: Zugreifen auf die Spezifikation, welche die ausführbare Logik repräsentiert, wobei ein Zustand der Spezifikation für einen bestimmten Wert des Schlüssels einen oder mehrere Abschnitte der ausführbaren Logik spezifiziert, die in diesem Zustand ausführbar sind; Empfangen, über eine Eingabevorrichtung oder einen Eingabeport, von Datenelementen eines Datenstroms; für ein erstes der Datenelemente des Stroms, Identifizieren eines Werts des Schlüssels, der mit diesem ersten der Datenelemente assoziiert ist; Identifizieren, dass die Spezifikation mit einem Wartezustand für diesen Wert des Schlüssels assoziiert ist, wobei der Wartezustand einen Zustand umfasst, in dem die ausführbare Logik ausgelegt ist, auf ein oder mehrere Datenelemente zu warten, die mit diesem Wert des Schlüssels assoziiert sind, und die zeitlich von einem oder mehreren anderen Datenelementen getrennt sind, welche vor dem einen oder den mehreren Datenelementen in dem Strom angeordnet sind; Verarbeiten, mit mindestens einem Prozessor, des ersten der Datenelemente gemäß einem oder mehreren Abschnitten ausführbarer Logik, die in der Spezifikation als mit dem Wartezustand assoziiert repräsentiert sind; und Bewirken einer Anzeige mindestens eines Abschnitts von Daten, welche ein Ergebnis der Verarbeitung des ersten der Datenelemente gemäß einem oder mehreren Abschnitten ausführbarer Logik anzeigen, die mit dem Wartezustand assoziiert sind.
  • In einem allgemeinen Aspekt 24 umfasst ein Verfahren, welches von einem Datenverarbeitungssystem zur Implementierung einer Zustandsmaschine vorgenommen wird, wobei die Zustandsmaschine ausgelegt ist, für jeden Wert eines Schlüssels Datensätze zu verarbeiten, die mit diesem Wert assoziiert sind: Anzeigen, in einer oder mehreren Editorschnittstellen, (i) eines Diagramms mit Knoten und einer oder mehreren Verbindungen, und (ii) eines oder mehrerer Abschnitte zum Eingeben oder Editieren eines oder mehrerer logischer Ausdrücke in Bezug auf einen oder mehrere der Knoten, wobei der eine oder die mehreren der Knoten einem bestimmten Zustand der Zustandsmaschine entsprechen, und wobei ein logischer Ausdruck mindestens eine teilweise Verarbeitung eines Datensatzes repräsentiert, wenn sich die Zustandsmaschine in dem bestimmten Zustand befindet; wobei eine Verbindung zwischen einem der Knoten und einem anderen der Knoten einen Übergang der Zustandsmaschine von einem Zustand in einen anderen Zustand repräsentiert; Transformieren des einen oder der mehreren logischen Ausdrücke und des Diagramms in ausführbare Logik zur Implementierung einer Zustandsmaschine zum: während Datensätze intermittierend empfangen werden, Evaluieren eines oder mehrerer Felder in den Datensätzen, um Werte des Schlüssels zu identifizieren; und für jeden Wert des Schlüssels, Verarbeiten eines oder mehrerer erster Datensätze, die ein oder mehrere Felder umfassen, auf denen der Wert des Schlüssels basiert, wobei die Verarbeitung mit einem oder mehreren logischen Ausdrücken übereinstimmt, die mit einem oder mehreren Knoten entsprechend einem aktuellen Zustand der Zustandsmaschine in Zusammenhang stehen, in Bezug auf diesen Wert des Schlüssels; und Übergehen, gemäß einer Verbindung des Diagramms, in einen anderen Zustand zur Verarbeitung eines oder mehrerer zweiter Datensätze der intermittierend empfangenen Datensätze, wobei der eine oder die mehreren zweiten Datensätze das eine oder die mehreren Felder umfassen, auf denen der Wert des Schlüssels basiert, und wobei der eine oder die mehreren zweiten Datensätze nach dem einen oder den mehreren ersten Datensätzen empfangen werden.
  • In einem Aspekt 25 gemäß dem Aspekt 24 umfasst das Verfahren vor dem Empfang von Datensätzen: Ausführen der ausführbaren Logik.
  • In einem Aspekt 26 gemäß einem der Aspekte 24 bis 25 umfasst das Verfahren ferner: für jeden Wert des Schlüssels, Sichern eines Zustands der ausführbaren Logik, der durch die Verarbeitung des einen oder der mehreren ersten Datensätze erreicht wird; und Fortsetzen der Verarbeitung eines oder mehrerer anderer Datensätze durch Fortsetzen der Ausführung der ausführbaren Logik an dem einen oder den mehreren anderen Datenelementen, die mit diesem Wert des Schlüssels assoziiert sind.
  • In einem Aspekt 27 gemäß einem der Aspekte 24 bis 26 umfasst ein Wert des Schlüssels einen ersten Wert des Schlüssels, und wobei das Verfahren umfasst: Sichern eines ersten Zustands der ausführbaren Logik für den ersten Wert des Schlüssels; Identifizieren eines oder mehrerer dritter Datensätze, die mit einem zweiten Wert des Schlüssels assoziiert sind; und Verarbeiten des einen oder der mehreren dritten Datensätze gemäß einem oder mehreren logischen Ausdrücken, die mit einem oder mehreren Knoten entsprechend einem aktuellen Zustand der Zustandsmaschine in Bezug auf den zweiten Wert des Schlüssels zusammenhängen.
  • In einem Aspekt 28 gemäß einem der Aspekte 24 bis 27 umfasst das Verfahren: Sichern, in einem Datenarchiv, eines zweiten Zustands für die ausführbare Logik in Bezug auf den zweiten Wert des Schlüssels; und Generieren, in dem Datenarchiv, einer Assoziation zwischen dem ersten Wert des Schlüssels und dem ersten Zustand und dem zweiten Wert des Schlüssels und dem zweiten Zustand.
  • In einem Aspekt 29 gemäß einem der Aspekte 24 bis 28 entsprechen der eine oder die mehreren logischen Ausdrücke einem oder mehreren ersten Abschnitten der ausführbaren Logik, die ausgeführt werden können, wenn sich die ausführbare Logik in einem ersten Zustand befindet, wobei das Verfahren umfasst: nach der Ausführung des einen oder der mehreren ersten Abschnitte, Aktualisieren eines Zustands der ausführbaren Logik für einen ersten Wert des Schlüssels, um ein anderer Zustand zu sein, der dem ersten Zustand folgt.
  • In einem Aspekt 30 gemäß einem der Aspekte 24 bis 29 umfasst das Verfahren, auf der Basis der Verarbeitung eines Datensatzes mit einem oder mehreren Abschnitten der ausführbaren Logik, Veröffentlichen eines Datenelements in einer Warteschlange zur Initiierung einer oder mehrerer Aktionen.
  • In einem Aspekt 31 gemäß einem der Aspekte 24 bis 30 umfasst das Verfahren: Empfangen von Daten, welche eine oder mehrere Editierungen an einem oder mehreren logischen Ausdrücken anzeigen, die mit einem Knoten zusammenhängen.
  • In einem Aspekt 32 gemäß einem der Aspekte 24 bis 31 umfasst das Verfahren: Empfangen, von einer Client-Vorrichtung, eines oder mehrerer logischer Ausdrücke und von Daten, die spezifizieren, welcher Knoten mit dem einen oder den mehreren empfangenen logischen Ausdrücken assoziiert ist.
  • In einem Aspekt 33 gemäß einem der Aspekte 24 bis 32 umfasst mindestens einer der Knoten einen Entscheidungsknoten, einen Erledigt-Knoten oder einen SendeKnoten, und wobei mindestens ein anderer der Knoten einen Warteknoten umfasst.
  • In einem Aspekt 34 gemäß einem der Aspekte 24 bis 33 umfasst das Anzeigen: Bewirken einer Anzeige, in einer oder mehreren Editorschnittstellen, (i) eines Diagramms mit Knoten und einer oder mehreren Verbindungen, und (ii) eines oder mehrerer Abschnitte zum Eingeben oder Editieren eines oder mehrerer logischer Ausdrücke im Zusammenhang mit einem oder mehreren der Knoten.
  • In einem allgemeinen Aspekt 35, ein Datenverarbeitungssystem zur Implementierung einer Zustandsmaschine, wobei die Zustandsmaschine ausgelegt ist, für jeden Wert eines Schlüssels Datensätze zu verarbeiten, die mit diesem Wert assoziiert sind, wobei das Datenverarbeitungssystem umfasst: eine oder mehrere Verarbeitungsvorrichtungen, und eine oder mehrere maschinenlesbare Hardware-Speichervorrichtungen, welche Instruktionen speichern, die von der einen oder den mehreren Verarbeitungsvorrichtungen ausgeführt werden können, um Operationen vorzunehmen, umfassend: Anzeigen, in einer oder mehreren Editorschnittstellen, (i) eines Diagramms mit Knoten und einer oder mehreren Verbindungen, und (ii) eines oder mehrerer Abschnitte zum Eingeben oder Editieren eines oder mehrerer logischer Ausdrücke in Bezug auf einen oder mehrere der Knoten, wobei der eine oder die mehreren der Knoten einem bestimmten Zustand der Zustandsmaschine entsprechen, und wobei ein logischer Ausdruck mindestens eine teilweise Verarbeitung eines Datensatzes repräsentiert, wenn sich die Zustandsmaschine in dem bestimmten Zustand befindet; wobei eine Verbindung zwischen einem der Knoten und einem anderen der Knoten einen Übergang der Zustandsmaschine von einem Zustand in einen anderen Zustand repräsentiert; Transformieren des einen oder der mehreren logischen Ausdrücke und des Diagramms in ausführbare Logik zur Implementierung einer Zustandsmaschine zum: während Datensätze intermittierend empfangen werden, Evaluieren eines oder mehrerer Felder in den Datensätzen, um Werte des Schlüssels zu identifizieren; und für jeden Wert des Schlüssels, Verarbeiten eines oder mehrerer erster Datensätze, die ein oder mehrere Felder umfassen, auf denen der Wert des Schlüssels basiert, wobei die Verarbeitung mit einem oder mehreren logischen Ausdrücken übereinstimmt, die mit einem oder mehreren Knoten entsprechend einem aktuellen Zustand der Zustandsmaschine in Zusammenhang stehen, in Bezug auf diesen Wert des Schlüssels; und Übergehen, gemäß einer Verbindung des Diagramms, in einen anderen Zustand zur Verarbeitung eines oder mehrerer zweiter Datensätze der intermittierend empfangenen Datensätze, wobei der eine oder die mehreren zweiten Datensätze das eine oder die mehreren Felder umfassen, auf denen der Wert des Schlüssels basiert, und wobei der eine oder die mehreren zweiten Datensätze nach dem einen oder den mehreren ersten Datensätzen empfangen werden.
  • In einem allgemeinen Aspekt 36, eine oder mehrere maschinenlesbare Hardware-Speichervorrichtungen, welche Instruktionen zur Implementierung einer Zustandsmaschine speichern, wobei die Zustandsmaschine ausgelegt ist, für jeden Wert eines Schlüssels Datensätze zu verarbeiten, die mit diesem Wert assoziiert sind, wobei die Instruktionen von einer oder mehreren Verarbeitungsvorrichtungen ausgeführt werden können, um Operationen vorzunehmen, umfassend: Anzeigen, in einer oder mehreren Editorschnittstellen, (i) eines Diagramms mit Knoten und einer oder mehreren Verbindungen, und (ii) eines oder mehrerer Abschnitte zum Eingeben oder Editieren eines oder mehrerer logischer Ausdrücke in Bezug auf einen oder mehrere der Knoten, wobei der eine oder die mehreren der Knoten einem bestimmten Zustand der Zustandsmaschine entsprechen, und wobei ein logischer Ausdruck mindestens eine teilweise Verarbeitung eines Datensatzes repräsentiert, wenn sich die Zustandsmaschine in dem bestimmten Zustand befindet; wobei eine Verbindung zwischen einem der Knoten und einem anderen der Knoten einen Übergang der Zustandsmaschine von einem Zustand in einen anderen Zustand repräsentiert; Transformieren des einen oder der mehreren logischen Ausdrücke und des Diagramms in ausführbare Logik zur Implementierung einer Zustandsmaschine zum: während Datensätze intermittierend empfangen werden, Evaluieren eines oder mehrerer Felder in den Datensätzen, um Werte des Schlüssels zu identifizieren; und für jeden Wert des Schlüssels, Verarbeiten eines oder mehrerer erster Datensätze, die ein oder mehrere Felder umfassen, auf denen der Wert des Schlüssels basiert, wobei die Verarbeitung mit einem oder mehreren logischen Ausdrücken übereinstimmt, die mit einem oder mehreren Knoten entsprechend einem aktuellen Zustand der Zustandsmaschine in Zusammenhang stehen, in Bezug auf diesen Wert des Schlüssels; und Übergehen, gemäß einer Verbindung des Diagramms, in einen anderen Zustand zur Verarbeitung eines oder mehrerer zweiter Datensätze der intermittierend empfangenen Datensätze, wobei der eine oder die mehreren zweiten Datensätze das eine oder die mehreren Felder umfassen, auf denen der Wert des Schlüssels basiert, und wobei der eine oder die mehreren zweiten Datensätze nach dem einen oder den mehreren ersten Datensätzen empfangen werden
  • In einem allgemeinen Aspekt 37 wird ein Verfahren durch ein Datenverarbeitungssystem implementiert, um Datenelemente eines Datenstroms zu verarbeiten, wobei die Verarbeitung umfasst: Empfangen einer Spezifikation, die ausführbare Logik zur Verarbeitung von Datenelementen eines Datenstroms repräsentiert, wobei die Spezifikation mit einem Schlüssel assoziiert ist, wobei ein Datenelement mit einem Wert des Schlüssels assoziiert ist, und wobei Zustände der ausführbaren Logik für jeweilige Werte des Schlüssels aufrechterhalten werden; wobei die Spezifikation Knoten und eine oder mehrere Verbindungen umfasst, einer oder mehrere erste Knoten einen ersten Zustand der ausführbaren Logik repräsentieren, in Bezug auf einen Wert des Schlüssels, wobei ein erster Abschnitt der ausführbaren Logik an einem ersten der Datenelemente ausführbar ist, das mit diesem Wert des Schlüssels assoziiert ist; wobei zweite Knoten einen zweiten Zustand der ausführbaren Logik repräsentieren, in Bezug auf diesen Wert des Schlüssels, wobei einer der zweiten Knoten einen Abschnitt der ausführbaren Logik repräsentiert, der ausgelegt ist, auf ein zweites der Datenelemente mit diesem Wert des Schlüssels in dem zweiten Zustand zu warten, wobei das zweite der Datenelemente zeitlich von dem ersten der Datenelemente getrennt ist, indem es nach dem ersten der Datenelemente in dem Strom angeordnet ist, wobei ein anderer der zweiten Knoten einen anderen Abschnitt der ausführbaren Logik repräsentiert, der ausgelegt ist, die Ausführung einer oder mehrerer Aktionen in dem zweiten Zustand zu bewirken; wobei eine Verbindung zwischen einem von dem einen oder den mehreren ersten Knoten und einem der zweiten Knoten einen Zustandsübergang der ausführbaren Logik, in Bezug auf diesen Wert des Schlüssels, von dem ersten Zustand, in dem der erste Abschnitt ausführbar ist, in den zweiten Zustand, in dem die ausführbare Logik ausgelegt ist, auf das zweite der Datenelemente zu warten, repräsentiert; und Transformieren der Spezifikation in ausführbare Logik zur Verarbeitung, für jeden Wert des Schlüssels, von Datenelementen, die mit diesem Wert assoziiert sind, und die zeitlich in einem Datenstrom getrennt sind.
  • In einem Aspekt 38 gemäß dem Aspekt 37 umfasst das Verfahren: Verarbeiten eines ersten der Datenelemente durch Ausführen des ersten Abschnitts der ausführbaren Logik an dem ersten der Datenelemente, und nach der Ausführung des ersten Abschnitts der ausführbaren Logik, Aktualisieren eines Zustands der ausführbaren Logik.
  • In einem Aspekt 39 gemäß einem der Aspekte 37 bis 38 umfasst das Verfahren, wenn in dem zweiten Zustand: Warten auf das zweite der Datenelemente durch Ausführen des Abschnitts der ausführbaren Logik zum Warten auf ein Datenelement, das ein oder mehrere Kriterien erfüllt.
  • In dem Aspekt 40 gemäß einem der Aspekte 37 bis 39 umfasst das Verfahren: Empfangen des zweiten der Datenelemente; und Ausführen des anderen Abschnitts der ausführbaren Logik, der ausgelegt ist, die Ausführung der einen oder mehreren Aktionen zu bewirken.
  • In einem allgemeinen Aspekt 41, ein Datenverarbeitungssystem zur Verarbeitung von Datenelementen eines Datenstroms, wobei das Datenverarbeitungssystem umfasst: eine oder mehrere Verarbeitungsvorrichtungen, und eine oder mehrere maschinenlesbare Hardware-Speichervorrichtungen, welche Instruktionen speichern, die von der einen oder den mehreren Verarbeitungsvorrichtungen ausgeführt werden können, um Operationen vorzunehmen, umfassend: Empfangen einer Spezifikation, die ausführbare Logik zur Verarbeitung von Datenelementen eines Datenstroms repräsentiert, wobei die Spezifikation mit einem Schlüssel assoziiert ist, wobei ein Datenelement mit einem Wert des Schlüssels assoziiert ist, und wobei Zustände der ausführbaren Logik für jeweilige Werte des Schlüssels aufrechterhalten werden; wobei die Spezifikation Knoten und eine oder mehrere Verbindungen umfasst, einer oder mehrere erste Knoten einen ersten Zustand der ausführbaren Logik repräsentieren, in Bezug auf einen Wert des Schlüssels, wobei ein erster Abschnitt der ausführbaren Logik an einem ersten der Datenelemente ausführbar ist, das mit diesem Wert des Schlüssels assoziiert ist; wobei zweite Knoten einen zweiten Zustand der ausführbaren Logik repräsentieren, in Bezug auf diesen Wert des Schlüssels, wobei einer der zweiten Knoten einen Abschnitt der ausführbaren Logik repräsentiert, der ausgelegt ist, auf ein zweites der Datenelemente mit diesem Wert des Schlüssels in dem zweiten Zustand zu warten, wobei das zweite der Datenelemente zeitlich von dem ersten der Datenelemente getrennt ist, indem es nach dem ersten der Datenelemente in dem Strom angeordnet ist, wobei ein anderer der zweiten Knoten einen anderen Abschnitt der ausführbaren Logik repräsentiert, der ausgelegt ist, die Ausführung einer oder mehrerer Aktionen in dem zweiten Zustand zu bewirken; wobei eine Verbindung zwischen einem von dem einen oder den mehreren Knoten und einem der zweiten Knoten einen Zustandsübergang der ausführbaren Logik, in Bezug auf diesen Wert des Schlüssels, von dem ersten Zustand, in dem der erste Abschnitt ausführbar ist, in den zweiten Zustand, in dem die ausführbare Logik ausgelegt ist, auf das zweite der Datenelemente zu warten, repräsentiert; und Transformieren der Spezifikation in ausführbare Logik zur Verarbeitung, für jeden Wert des Schlüssels, von Datenelementen, die mit diesem Wert assoziiert sind, und die zeitlich in einem Datenstrom getrennt sind.
  • In einem allgemeinen Aspekt 42, eine oder mehrere maschinenlesbare Hardware-Speichervorrichtungen zur Verarbeitung von Datenelementen eines Datenstroms, wobei die Instruktionen von einer oder mehreren Verarbeitungsvorrichtungen ausgeführt werden können, um Operationen vorzunehmen, umfassend: Empfangen einer Spezifikation, die ausführbare Logik zur Verarbeitung von Datenelementen eines Datenstroms repräsentiert, wobei die Spezifikation mit einem Schlüssel assoziiert ist, wobei ein Datenelement mit einem Wert des Schlüssels assoziiert ist, und wobei Zustände der ausführbaren Logik für jeweilige Werte des Schlüssels aufrechterhalten werden; wobei die Spezifikation Knoten und eine oder mehrere Verbindungen umfasst, einer oder mehrere erste Knoten einen ersten Zustand der ausführbaren Logik repräsentieren, in Bezug auf einen Wert des Schlüssels, wobei ein erster Abschnitt der ausführbaren Logik an einem ersten der Datenelemente ausführbar ist, das mit diesem Wert des Schlüssels assoziiert ist; wobei zweite Knoten einen zweiten Zustand der ausführbaren Logik repräsentieren, in Bezug auf diesen Wert des Schlüssels, wobei einer der zweiten Knoten einen Abschnitt der ausführbaren Logik repräsentiert, der ausgelegt ist, auf ein zweites der Datenelemente mit diesem Wert des Schlüssels in dem zweiten Zustand zu warten, wobei das zweite der Datenelemente zeitlich von dem ersten der Datenelemente getrennt ist, indem es nach dem ersten der Datenelemente in dem Strom angeordnet ist, wobei ein anderer der zweiten Knoten einen anderen Abschnitt der ausführbaren Logik repräsentiert, der ausgelegt ist, die Ausführung einer oder mehrerer Aktionen in dem zweiten Zustand zu bewirken; wobei eine Verbindung zwischen einem von dem einen oder den mehreren Knoten und einem der zweiten Knoten einen Zustandsübergang der ausführbaren Logik, in Bezug auf diesen Wert des Schlüssels, von dem ersten Zustand, in dem der erste Abschnitt ausführbar ist, in den zweiten Zustand, in dem die ausführbare Logik ausgelegt ist, auf das zweite der Datenelemente zu warten, repräsentiert; und Transformieren der Spezifikation in ausführbare Logik zur Verarbeitung, für jeden Wert des Schlüssels, von Datenelementen, die mit diesem Wert assoziiert sind, und die zeitlich in einem Datenstrom getrennt sind.
  • In einem allgemeinen Aspekt 43 wird ein Verfahren von einem Datenverarbeitungssystem zur Verarbeitung von Datenelementen eines Datenstroms gemäß einer Spezifikation implementiert, die mit einem Schlüssel assoziiert ist, und die ausführbare Logik zur Verarbeitung der Datenelemente repräsentiert, wobei ein Datenelement mit einem Wert des Schlüssels assoziiert ist, wobei Zustände der Spezifikation für eine Vielzahl von Werten des Schlüssels aufrechterhalten werden, wobei das Verfahren umfasst: Zugreifen auf die Spezifikation, wobei ein Zustand der Spezifikation einen oder mehrere Abschnitte der ausführbaren Logik repräsentiert, die in diesem Zustand ausführbar sind; Empfangen eines ersten Datenelements der Datenelemente, wobei das erste Datenelement mit einem bestimmten Wert des Schlüssels assoziiert ist; Identifizieren eines ersten Zustands für den bestimmten Wert des Schlüssels; Verarbeiten des ersten Datenelements gemäß einem oder mehreren Abschnitten der ausführbaren Logik, die von der Spezifikation als in dem ersten Zustand ausführbar spezifiziert sind; Identifizieren eines Übergangs, in Bezug auf den bestimmten Wert des Schlüssels, von dem ersten Zustand der Spezifikation in einen zweiten Zustand, in dem ein oder mehrere andere Abschnitte der ausführbaren Logik ausführbar sind; Empfangen eines intervenierenden Datenelements, das mit einem anderen Wert des Schlüssels assoziiert ist, der von dem bestimmten Wert des Schlüssels verschieden ist und nicht mit dem bestimmten Wert des Schlüssels assoziiert ist; Identifizieren eines gegebenen Zustands der Spezifikation, der mit dem anderen Wert des Schlüssels für das intervenierende Datenelement assoziiert ist; Verarbeiten des intervenierenden Datenelements gemäß einem oder mehreren Abschnitten der ausführbaren Logik, die von der Spezifikation als in dem gegebenen Zustand ausführbar spezifiziert sind; Empfangen eines zweiten Datenelements der Datenelemente, das später in dem Strom ist als das erste Datenelement und das intervenierende Datenelement, und das auch mit dem bestimmten Wert des Schlüssels assoziiert ist; und auf der Basis des Übergangs der Spezifikation in Bezug auf den bestimmten Wert des Schlüssels, Verarbeiten des zweiten Datenelements gemäß einem oder mehreren Abschnitten der ausführbaren Logik, die von der Spezifikation als in dem zweiten Zustand ausführbar spezifiziert sind, wobei der eine oder die mehreren Abschnitte der ausführbaren Logik, die in dem zweiten Zustand ausführbar sind, von dem einen oder den mehreren Abschnitten der ausführbaren Logik verschieden sind, die in dem ersten Zustand ausführbar sind.
  • In dem Aspekt 44 gemäß dem Aspekt 43 umfasst die Spezifikation mindestens einen ersten Knoten, einen zweiten Knoten und eine Verbindung zwischen dem ersten Knoten und dem zweiten Knoten; wobei der erste Knoten einen oder mehrere benutzerauslegbare logische Ausdrücke umfasst, wobei das Verfahren umfasst: Transformieren eines oder mehrerer benutzerauslegbarer logischer Ausdrücke der Spezifikation in die ausführbare Logik; und Ausführen eines oder mehrerer Abschnitt der ausführbaren Logik.
  • Im Aspekt 45 gemäß einem der Aspekte 43 bis 44 ist der gegebene Zustand für das intervenierende Datenelement von jedem von dem ersten und zweiten Zustand für den Wert des Schlüssels verschieden.
  • Im Aspekt 46 gemäß einem der Aspekte 43 bis 44 ist der gegebene Zustand für das intervenierende Datenelement derselbe Zustand wie mindestens einer von dem ersten oder dem zweiten Zustand.
  • Im Aspekt 47 gemäß einem der Aspekte 43 bis 46 umfasst die Spezifikation eines oder mehrere von einer anzeigbaren grafischen Darstellung der ausführbaren Logik, einem Flussdiagramm, einem Zustandsübergangsdiagramm und einem Diagramm.
  • In einem Aspekt 48 gemäß einem der Aspekte 43 bis 47 umfasst das Verfahren: Verarbeiten des ersten Datenelements durch Ausführen, durch das Datenverarbeitungssystem, eines oder mehrerer Abschnitte der ausführbaren Logik entsprechend einem oder mehreren Abschnitten der Spezifikation; Sichern eines Zustands der ausführbaren Logik, der durch die Verarbeitung des ersten Datenelements erreicht wird; Fortsetzen der Verarbeitung von Datenelementen des Stroms durch Fortsetzen der Ausführung der ausführbaren Logik, die in der Spezifikation repräsentiert ist; und Detektieren des zweiten Datenelements des Stroms, das mit dem Wert des Schlüssels assoziiert ist.
  • In dem Aspekt 49 gemäß einem der Aspekte 43 bis 48 umfasst das Verfahren: Warten auf das zweite Datenelement in dem Strom, vor dem Detektieren.
  • In dem Aspekt 50 gemäß einem der Aspekte 43 bis 49 umfasst das Verfahren: intermittierendes Empfangen von Datenelementen des Stroms.
  • In dem Aspekt 51 gemäß einem der Aspekte 43 bis 50 umfasst das Verfahren: Initiieren eines Falls der Spezifikation für den Wert des Schlüssels; und Ausführen des Falls der Spezifikation.
  • In dem Aspekt 52 gemäß einem der Aspekte 43 bis 51 umfasst der Wert des Schlüssels einen ersten Wert des Schlüssels, und der Fall umfasst einen ersten Fall, und das Verfahren umfasst: Identifizieren eines oder mehrerer Datenelemente des Stroms, die mit einem zweiten Wert des Schlüssels assoziiert sind; und Initiieren eines zweiten Falls der Spezifikation für den zweiten Wert des Schlüssels, wobei der zweite Fall von dem ersten Fall verschieden ist.
  • In dem Aspekt 53 gemäß einem der Aspekte 43 bis 52 umfasst die Spezifikation ein Flussdiagramm mit einem oder mehreren ersten Abschnitten und einem oder mehreren zweiten Abschnitten, und das Verfahren umfasst: Verarbeiten des ersten Datenelements unter Verwendung des einen oder der mehreren ersten Abschnitte der ausführbaren Logik entsprechend dem einen oder den mehreren ersten Abschnitten des Flussdiagramms; und Verarbeiten des zweiten Datenelements unter Verwendung des einen oder der mehreren zweiten Abschnitte der ausführbaren Logik entsprechend dem einen oder den mehreren Abschnitten des Flussdiagramms.
  • In dem Aspekt 54 gemäß einem der Aspekte 43 bis 53 umfasst das Verfahren: auf der Basis der Verarbeitung des zweiten Datenelements, Veröffentlichen eines Datenelements in einer Warteschlange zum Initiieren einer oder mehrerer Aktionen.
  • In dem Aspekt 55 gemäß einem der Aspekte 43 bis 54 umfasst das zweite Datenelement einen Datensatz oder einen Datensatz.
  • In dem Aspekt 56 gemäß einem der Aspekte 43 bis 55 repräsentiert die Spezifikation eine Regel, die eine Aggregation umfasst, wobei das Verfahren umfasst: Berechnen der Aggregation, auf der Basis der Ausführung der Regel; und Sichern der berechneten Aggregation für einen Abruf durch eine oder mehrere andere Regeln, welche die Aggregation umfassen.
  • In dem Aspekt 57 gemäß einem der Aspekte 43 bis 56 umfasst die Regel eine erste Regel, und das Verfahren umfasst: Zugreifen auf eine zweite Regel, die von der ersten Regel verschieden ist, wobei die zweite Regel die Aggregation umfasst; und Ausführen der zweiten Regel, um den Abruf der zuvor berechneten Aggregation zur Verwendung in der zweiten Regel zu bewirken.
  • In dem Aspekt 58 gemäß einem der Aspekte 43 bis 57 umfasst das Verfahren: Vornehmen einer Operation, die einen Zustand eines Abschnitts der ausführbaren Logik sichert, der für eine Wiederherstellbarkeit des Zustands der ausführbaren Logik ausgeführt wird.
  • In einem allgemeinen Aspekt 59, ein Datenverarbeitungssystem zur Verarbeitung von Datenelementen eines Datenstroms gemäß einer Spezifikation, die mit einem Schlüssel assoziiert ist, und die ausführbare Logik zur Verarbeitung der Datenelemente repräsentiert, wobei ein Datenelement mit einem Wert des Schlüssels assoziiert ist, wobei Zustände der Spezifikation für eine Vielzahl von Werten des Schlüssels aufrechterhalten werden, wobei das Datenverarbeitungssystem umfasst: eine oder mehrere Verarbeitungsvorrichtungen, und eine oder mehrere maschinenlesbare Hardware-Speichervorrichtungen, welche Instruktionen speichern, die von der einen oder den mehreren Verarbeitungsvorrichtungen ausgeführt werden können, um Operationen vorzunehmen, umfassend: Zugreifen auf die Spezifikation, wobei ein Zustand der Spezifikation einen oder mehrere Abschnitte der ausführbaren Logik repräsentiert, die in diesem Zustand ausführbar sind; Empfangen eines ersten Datenelements der Datenelemente, wobei das erste Datenelement mit einem bestimmten Wert des Schlüssels assoziiert ist; Identifizieren eines ersten Zustands für den bestimmten Wert des Schlüssels; Verarbeiten des ersten Datenelements gemäß einem oder mehreren Abschnitten der ausführbaren Logik, die von der Spezifikation als in dem ersten Zustand ausführbar spezifiziert sind; Identifizieren eines Übergangs, in Bezug auf den bestimmten Wert des Schlüssels, von dem ersten Zustand der Spezifikation in einen zweiten Zustand, in dem ein oder mehrere andere Abschnitte der ausführbaren Logik ausführbar sind; Empfangen eines intervenierenden Datenelements, das mit einem anderen Wert des Schlüssels assoziiert ist, der von dem bestimmten Wert des Schlüssels verschieden ist und nicht mit dem bestimmten Wert des Schlüssels assoziiert ist; Identifizieren eines gegebenen Zustands der Spezifikation, der mit dem anderen Wert des Schlüssels für das intervenierende Datenelement assoziiert ist; Verarbeiten des intervenierenden Datenelements gemäß einem oder mehreren Abschnitten der ausführbaren Logik, die von der Spezifikation als in dem gegebenen Zustand ausführbar spezifiziert sind; Empfangen eines zweiten Datenelements der Datenelemente, das später in dem Strom ist als das erste Datenelement und das intervenierende Datenelement, und das auch mit dem bestimmten Wert des Schlüssels assoziiert ist; und auf der Basis des Übergangs der Spezifikation in Bezug auf den bestimmten Wert des Schlüssels, Verarbeiten des zweiten Datenelements gemäß einem oder mehreren Abschnitten der ausführbaren Logik, die von der Spezifikation als in dem zweiten Zustand ausführbar spezifiziert sind, wobei der eine oder die mehreren Abschnitte der ausführbaren Logik, die in dem zweiten Zustand ausführbar sind, von dem einen oder den mehreren Abschnitten der ausführbaren Logik verschieden sind, die in dem ersten Zustand ausführbar sind.
  • In einem allgemeinen Aspekt 60, eine oder mehrere maschinenlesbare Hardware-Speichervorrichtungen, welche Instruktionen zur Verarbeitung von Datenelementen eines Datenstroms gemäß einer Spezifikation speichern, die mit einem Schlüssel assoziiert ist, und die ausführbare Logik zur Verarbeitung der Datenelemente repräsentiert, wobei ein Datenelement mit einem Wert des Schlüssels assoziiert ist, wobei Zustände der Spezifikation für eine Vielzahl von Werten des Schlüssels aufrechterhalten werden, wobei die Instruktionen von einer oder mehreren Verarbeitungsvorrichtungen ausgeführt werden können, um Operationen vorzunehmen, umfassend: Zugreifen auf die Spezifikation, wobei ein Zustand der Spezifikation einen oder mehrere Abschnitte der ausführbaren Logik repräsentiert, die in diesem Zustand ausführbar sind; Empfangen eines ersten Datenelements der Datenelemente, wobei das erste Datenelement mit einem bestimmten Wert des Schlüssels assoziiert ist; Identifizieren eines ersten Zustands für den bestimmten Wert des Schlüssels; Verarbeiten des ersten Datenelements gemäß einem oder mehreren Abschnitten der ausführbaren Logik, die von der Spezifikation als in dem ersten Zustand ausführbar spezifiziert sind; Identifizieren eines Übergangs, in Bezug auf den bestimmten Wert des Schlüssels, von dem ersten Zustand der Spezifikation in einen zweiten Zustand, in dem ein oder mehrere andere Abschnitte der ausführbaren Logik ausführbar sind; Empfangen eines intervenierenden Datenelements, das mit einem anderen Wert des Schlüssels assoziiert ist, der von dem bestimmten Wert des Schlüssels verschieden ist und nicht mit dem bestimmten Wert des Schlüssels assoziiert ist; Identifizieren eines gegebenen Zustands der Spezifikation, der mit dem anderen Wert des Schlüssels für das intervenierende Datenelement assoziiert ist; Verarbeiten des intervenierenden Datenelements gemäß einem oder mehreren Abschnitten der ausführbaren Logik, die von der Spezifikation als in dem gegebenen Zustand ausführbar spezifiziert sind; Empfangen eines zweiten Datenelements der Datenelemente, das später in dem Strom ist als das erste Datenelement und das intervenierende Datenelement, und das auch mit dem bestimmten Wert des Schlüssels assoziiert ist; und auf der Basis des Übergangs der Spezifikation in Bezug auf den bestimmten Wert des Schlüssels, Verarbeiten des zweiten Datenelements gemäß einem oder mehreren Abschnitten der ausführbaren Logik, die von der Spezifikation als in dem zweiten Zustand ausführbar spezifiziert sind, wobei der eine oder die mehreren Abschnitte der ausführbaren Logik, die in dem zweiten Zustand ausführbar sind, von dem einen oder den mehreren Abschnitten der ausführbaren Logik verschieden sind, die in dem ersten Zustand ausführbar sind.
  • In einem allgemeinen Aspekt 61 umfasst ein Verfahren, das durch ein Verarbeitungssystem zur Verarbeitung von Datenelementen eines Stroms von Datenelementen gemäß einer Spezifikation implementiert wird, die mit einem Schlüssel assoziiert ist, wobei ein Datenelement mit einem Wert des Schlüssels assoziiert ist, wobei Zustände der Spezifikation für jeweilige Werte des Schlüssels aufrechterhalten werden, wobei die Spezifikation ausführbare Logik repräsentiert, die in einem Datenspeichersystem gespeichert ist: Zugreifen auf die Spezifikation, welche die ausführbare Logik repräsentiert, wobei ein Zustand der Spezifikation für einen bestimmten Wert des Schlüssels einen oder mehrere Abschnitte der ausführbaren Logik spezifiziert, die in diesem Zustand ausführbar sind; Empfangen, über eine Eingabevorrichtung oder einen Eingabeport, von Datenelementen eines Datenstroms; für ein erstes der Datenelemente des Stroms, Identifizieren eines ersten Zustands der Spezifikation für einen Wert des Schlüssels, der mit diesem ersten der Datenelemente assoziiert ist; Verarbeiten, durch das Datenverarbeitungssystem, des ersten der Datenelemente gemäß einem oder mehreren Abschnitten ausführbarer Logik, die in der Spezifikation als mit dem ersten Zustand assoziiert repräsentiert sind, wobei die Verarbeitung umfasst: Bewirken einer Anzeige eines oder mehrerer Abschnitte der Spezifikation; Anwenden des einen oder der mehreren Abschnitte der ausführbaren Logik auf das erste der Datenelemente, um Ergebnisdaten zu erhalten; und Bewirken einer Anzeige mindestens eines Abschnitts der Ergebnisdaten mit mindestens einem von dem einen oder den mehreren angezeigten Abschnitten der Spezifikation.
  • Figurenliste
    • 1A und 4 sind Darstellungen von Flussdiagrammen.
    • 1B ist eine Darstellung von Flussdiagrammfällen.
    • 2 und 3 sind Darstellungen von Systemen zur Verarbeitung verschlüsselter Daten.
    • 5 ist eine Darstellung, die verschlüsselte Datensätze verarbeitet.
    • 6 bis 10 sind Beispiele von grafischen Benutzerschnittstellen.
    • 11 bis 15 sind Darstellungen von Beispielen von Verfahren.
  • DETAILLIERTE BESCHREIBUNG
  • Ein System gemäß dieser Offenbarung verarbeitet verschlüsselte Datenelemente, die zeitlich voneinander in einem Strom von Datenelementen getrennt sind, z.B. Datenelemente (umfassend z.B. gepackte Daten), die über eine Netzverbindung eines Paketnetzes kommen. Allgemein umfasst ein verschlüsseltes Datenelement ein Datenelement, das mit einem Schlüssel assoziiert ist (z.B. einem Identifikator). Der Schlüssel kann einen Wert haben. Die verschlüsselten Datenelemente werden gemäß einer Spezifikation verarbeitet, die ausführbare Logik repräsentiert und verschiedene Zustände der ausführbaren Logik spezifiziert, auf der Basis eines Zustands, der aus der Ausführung der ausführbaren Logik an vorherigen Datenelementen erreicht wird. Allgemein umfasst ausführbare Logik Quellcode und andere Computerinstruktionen.
  • Die Spezifikation spezifiziert auch einen Schlüssel. Datenelemente, die mit diesem Schlüssel assoziiert sind, werden gemäß der Spezifikation verarbeitet. Das heißt, auf der Basis des Schlüssels, nimmt das System eine schlüsselbasierte Verarbeitung vor, bei der Datenelemente übereingestimmt und evaluiert werden, auf der Basis jeweiliger Werte für den Schlüssel. Für jeden einzigartigen Wert des Schlüssels initiiert das System einen Fall der Spezifikation für diesen Wert des Schlüssels. Dadurch werden Datenelemente, die zeitlich voneinander in dem Strom getrennt sind, und die jeweils diesen Wert des Schlüssels umfassen, unabhängig von der Verarbeitung von Datenelementen verarbeitet, die einen anderen Wert des Schlüssels umfassen. Beispielsweise wird ausführbare Logik einer Spezifikation, die mit einem Schlüssel mit demselben Wert wie der Schlüssel assoziiert ist, der mit dem Datenelement assoziiert ist, auf das Datenelement durch die Ausführung der ausführbaren Logik an dem Datenelement angewendet, um Ergebnisdaten zu erhalten. Allgemein umfasst ein Fall der Spezifikation eine spezifische Realisierung der Spezifikation für einen einzigartigen Wert eines Schlüssels, z.B. durch das Ausführen ausführbarer Logik, die in der Spezifikation repräsentiert ist, und Aufrechterhalten eines Zustands der ausführbaren Logik für jeden einzigartigen Wert des Schlüssels. Das System hält einen Zustand für jeden Fall aufrecht, z.B. durch einen speicherresidenten Datenraster (oder eine andere Datenstruktur), in dem jeder Wert des Schlüssels mit Daten assoziiert ist, die einen Zustand der Ausführung der Diagramme für diesen Wert des Schlüssels anzeigen, wie im Nachstehenden detaillierter beschrieben. Allgemein kann ein speicherresidenter Datenraster eine Datenstruktur umfassen, die in einem Speicher mit wahlfreiem Zugriff (RAM) residiert und unter mehreren Servern oder Systemen verteilt wird.
  • Es gibt verschiedene Typen verschlüsselter Datenelemente, die z.B. ein Ereignis, einen Datensatz usw. umfassen. Allgemein umfasst ein Ereignis einen Datensatz (z.B. in einem vordefinierten Format), der ein bestimmtes Auftreten oder Fehlen davon repräsentiert. Obwohl sich die hier beschriebenen Techniken auf eine Verarbeitung von Datensätzen beziehen, sind die Techniken auch gleichermaßen auf die Verarbeitung von Ereignissen anwendbar. Ein Datensatz umfasst auch eine Vielzahl von Feldern. In einem Beispiel kann ein Feld dem Schlüssel für die Spezifikation entsprechen. In diesem Beispiel spezifiziert die Spezifikation, welches der Felder ein Schlüsselfeld ist, z.B. ein Feld, das einen Wert für den Schlüssel der Spezifikation umfasst. In einem anderen Beispiel basiert der Schlüssel auf verschiedenen unterschiedlichen Daten, die z.B. Werte zahlreicher Felder in einem Datensatz, Daten, die in einem Datenarchiv gespeichert sind, und die mit einem bestimmten Identifikator assoziiert sind, der in einem Feld eines Datensatzes enthalten ist, usw. umfassen.
  • In einem Beispiel repräsentiert die Spezifikation ausführbare Logik für eine komplexe Ereignisverarbeitung (CEP) durch das Einschließen von Regeln, die mehrere Datensätze (z.B. Ereignisse), die zeitlich getrennt sind, als Eingabe erfordern. Allgemein umfasst die komplexe Ereignisverarbeitung das Empfangen von mehreren Datensätzen, die zu verschiedenen Zeitpunkten auftreten und ein Muster, einen Datensatz oder Zustand von den mehreren Datensätzen verleihen. In diesem Beispiel umfasst die Spezifikation ein Diagramm (z.B. ein Flussdiagramm oder einen Datenflussgraphen) mit mehreren Knoten. Jeder Knoten in dem Diagramm repräsentiert einen oder mehrere Abschnitte der ausführbaren Logik, die ihrerseits einem oder mehreren Abschnitten einer Spezifikation entsprechen. Beispielsweise umfasst ein Knoten einen oder mehrere logische Ausdrücke (hier im Nachstehenden „Logik“), aus dem die ausführbare Logik generiert wird. In einem anderen Beispiel entspricht ein Knoten einem oder mehreren bestimmten Abschnitten ausführbarer Logik, wenn sich die ausführbare Logik in einem bestimmten Zustand befindet.
  • Im Allgemeinen kann das hier beschriebene „Diagramm“ als Datenflussgraph implementiert werden, und die hier beschriebenen Verfahren oder die Verarbeitung können von einem Rechnersystem ausgeführt werden, wobei das Rechnersystem umfasst: eine Entwicklungsumgebung, die mit einem Datenspeicher gekoppelt ist, wobei die Entwicklungsumgebung ausgelegt ist, eine Datenverarbeitungsanwendung aufzubauen, die mit dem Datenflussgraphen assoziiert ist, der eine graphenbasierte Berechnung an Datenelementen vornimmt, die von einem oder mehreren Eingabedatensätzen durch einen Graphen von Verarbeitungsgraphenkomponenten zu einem oder mehreren Ausgabedatensätzen fließen, wobei der Datenflussgraph von Datenstrukturen in dem Datenspeicher spezifiziert wird, wobei der Datenflussgraph eine Vielzahl von Knoten aufweist, die von den Datenstrukturen spezifiziert werden und die Graphenkomponenten durch eine oder mehrere Verbindungen verbunden repräsentieren, wobei die Verbindungen von den Datenstrukturen spezifiziert werden und Datenflüsse zwischen den Graphenkomponenten repräsentieren; eine Laufzeitumgebung, die mit dem Datenspeicher gekoppelt ist und auf einem oder mehreren Computern gehostet wird, wobei die Laufzeitumgebung ein Prä-Ausführungsmodul umfasst, das ausgelegt ist, die gespeicherten Datenstrukturen zu lesen, welche den Datenflussgraphen spezifizieren, und Rechnerressourcen (wie Prozesse) zuordnen und auslegen, um die Berechnung der Graphenkomponenten vorzunehmen, die dem Datenflussgraphen von dem Prä-Ausführungsmodul zugewiesen werden, wobei die Laufzeitumgebung ein Ausführungsmodul umfasst, um die Ausführung der zugewiesenen Prozesse zu planen und zu steuern, so dass eine oder mehrere der im Nachstehenden beschriebenen Operationen gemäß dem Verfahren oder der Verarbeitung ausgeführt werden.
  • Mit Bezugnahme auf 1A umfasst die Spezifikation 1 das Flussdiagramm 2 mit den Knoten 2a bis 2g. Allgemein umfasst ein Diagramm eine Schablone zur Verarbeitung von Datensätzen. Diese Schablone umfasst eine Grafiklogikeinheit für die Reaktion, Datensätze einzugeben und Ausgabedatensätze zu erzeugen, z.B. einen Datensatz, der auf der Basis von Logik generiert wird, die in einer Spezifikation enthalten ist. Allgemein umfasst eine Grafiklogikeinheit Logik, die mindestens teilweise grafisch generiert wird, z.B. durch Ziehen und Ablegen verschiedener Knoten aus einer Schablone (nicht gezeigt) in einem Fenster für den Aufbau eines Diagramms. In einem Beispiel umfasst ein Knoten Logik (nicht gezeigt), die spezifiziert, wie Eingabedatensätze verarbeitet werden, wie Werte für Variablen gesetzt werden, die von der ausführbaren Logik verwendet werden, welche Ausgabedatensätze zu generieren sind, z.B. wenn Bedingungen erfüllt sind, die von der Logik spezifiziert werden, usw. In einem Beispiel ist ein Knoten von einem Benutzer programmierbar, der Werte von Parametern und/oder von Variablen eingibt, die in der Logik eines Knotens verwendet werden.
  • Das Diagramm selbst ist ausführbar, da die Logik in den Knoten in ausführbare Logik kompiliert wird, und da jeder Knoten einem oder mehreren Abschnitten dieser ausführbaren Logik entspricht. Beispielsweise transformiert das System die Spezifikation (und/oder ein Diagramm in der Spezifikation) durch Kompilieren der Logik in den Knoten in ausführbare Logik. Da das Diagramm selbst ausführbar ist, ist das Diagramm selbst in der Lage, Datensätze zu verarbeiten und gestoppt, gestartet und angehalten zu werden. Das System hält auch einen Zustand für das Flussdiagramm 2 aufrecht, z.B. durch Verfolgen, welcher der Knoten 2a bis 2g aktuell ausgeführt wird. Ein Zustand des Flussdiagramms 2 entspricht einem Zustand ausführbarer Logik, der von dem Flussdiagramm 2 repräsentiert wird. Beispielsweise repräsentiert jeder Knoten in dem Flussdiagramm 2 einen bestimmten Zustand der ausführbaren Logik (in dem ein oder mehrere Abschnitte der ausführbaren Logik in diesem Zustand ausführbar sind). Wenn das Flussdiagramm 2 für zahlreiche Werte eines Schlüssels ausgeführt wird, hält das System einen Zustand des Flussdiagramms 2 für jeden Wert des Schlüssels aufrecht, z.B. durch das Aufrechterhalten eines Zustands für jeden Fall - wie im Nachstehenden detaillierter beschrieben. In diesem Beispiel umfasst das Flussdiagramm 2 ein Zustandsübergangsdiagramm, in dem jeder ankommende Datensatz Übergänge zwischen Knoten und Datensätzen treibt, die auf der Basis eines Zustands evaluiert werden, der aus der Verarbeitung vorhergehender Datensätze erreicht wird. Die Verbindungen zwischen Knoten in dem Flussdiagramm 2 repräsentieren den zeitlichen Fluss der Logik.
  • Der Knoten 2a repräsentiert einen Start der ausführbaren Logik. Nach der Vollendung des Knotens 2a geht der Zustand des Flussdiagramms 2a zu dem Knoten 2b über, der einen oder mehrere andere Abschnitte der ausführbaren Logik repräsentiert. Der Knoten 2b umfasst einen Warteknoten (hier im Nachstehenden Warteknoten 2b). Der Warteknoten 2b repräsentiert einen Wartezustand, in dem ein Abschnitt der ausführbaren Logik (entsprechend dem Warteknoten 2b) auf einen Eingabedatensatz wartet, der eine oder mehrere Bedingungen erfüllt. In einem Beispiel kann ein Wartezustand ein Teil eines anderen Zustands des Flussdiagramms 2 sein, z.B. ein Zustand, in dem das System einen Warteknoten ausführt (um einen Wartezustand zu implementieren), und dann einen oder mehrere andere Knoten ausführt. Nach der Vollendung des Abschnitts der ausführbaren Logik, der von dem Warteknoten 2b repräsentiert wird, verlässt das System den Wartezustand und führt den Knoten 2c aus, der ausführbare Logik zur Implementierung einer Entscheidung repräsentiert. In diesem Beispiel umfasst der Knoten 2c einen Entscheidungsknoten. Allgemein umfasst ein Entscheidungsknoten einen Knoten, der Logik zur Ausführung einer Entscheidung umfasst (z.B. Logik, die einen Booleschen Wert evaluiert).
  • Auf der Basis eines Ergebnisses der Entscheidung geht der Zustand des Flussdiagramms 2 zu einem Knoten 2g (der bewirkt, dass der Zustand zurück zu dem Knoten 2a übergeht) oder einem Knoten 2d über, der ein weiterer Warteknoten ist. Nach der Vollendung des Abschnitts der ausführbaren Logik, der von dem Warteknoten 2d repräsentiert wird, geht der Zustand des Flussdiagramms 2 zu dem Knoten 2e über, der einen Sendeknoten umfasst. Allgemein umfasst ein Sendeknoten einen Knoten, der ausführbare Logik repräsentiert, um die Datenübertragung zu einem anderen System zu bewirken. Nach der Vollendung der Ausführung des Abschnitts der ausführbaren Logik, der von dem Knoten 2e repräsentiert wird, geht der Zustand des Flussdiagramms 2 zu dem Knoten 2f über, der einen Erledigt-Knoten repräsentiert. Allgemein repräsentiert ein Erledigt-Knoten, dass die Ausführung der ausführbaren Logik vollendet ist.
  • In einem Beispiel repräsentiert ein Warteknoten einen Übergang zwischen Zuständen, z.B. einen Übergang von einem Zustand in einen anderen Zustand, dessen Start der Warteknoten ist. In diesem Beispiel unterscheidet sich das Flussdiagramm 2 von einem Zustandsübergangsdiagramm, da nicht jeder Knoten in dem Flussdiagramm 2 einen Warteknoten repräsentiert, der einen Zustandsübergang repräsentiert. Stattdessen repräsentieren einige Knoten Aktionen, die vorzunehmen sind, z.B. wenn sich das Flussdiagramm 2 bereits in einem bestimmten Zustand befindet. In einigen Beispielen verarbeitet das System das Flussdiagramm 2, um ein Zustandsmaschinendiagramm oder Zustandsmaschineninstruktionen zu generieren.
  • In diesem Beispiel umfasst das Flussdiagramm 2 zwei Zustände, einen ersten Zustand, der von den Knoten 2b, 2c, 2g repräsentiert wird, und einen zweiten Zustand, der von den Knoten 2d, 2e, 2f repräsentiert wird. In diesem ersten Zustand wartet das System auf bestimme Datensätze (wie durch den Knoten 2b repräsentiert) und führt dann den Knoten 2c aus, der seinerseits einen Übergang (der Spezifikation 1 und/oder des Diagramms 2) in den zweiten Zustand (dessen Start durch den Knoten 2d repräsentiert wird) bewirkt, oder die Ausführung des Knotens 2g bewirkt. Sobald der zweite Zustand erreicht ist, wartet das System erneut auf bestimmte Datensätze (wie durch den Knoten 2d repräsentiert) und führt dann die Knoten 2e, 2f aus. Durch das Einschließen anderer Knoten als der Warteknoten umfasst das Flussdiagramm 2 einen logischen Graphen einer zeitlichen Verarbeitung von Datensätzen. In diesem Beispiel umfasst das Diagramm 2 eine Verbindung 2i, die einen Übergang des Diagramms 2 von dem ersten Zustand in den zweiten Zustand repräsentiert und auch einen Datenfluss von dem Knoten 2c zu dem Knoten 2d repräsentiert.
  • Das Diagramm 2 umfasst auch die Verbindung 2j zwischen den Knoten 2a, 2b und die Verbindung 2k zwischen den Knoten 2b, 2c, um einen benutzerspezifizierte Ausführungsreihenfolge für einen Abschnitt ausführbarer Logik in dem ersten Zustand zu repräsentieren, die den Knoten 2a, 2b, 2c entspricht. In diesem Beispiel umfasst der Abschnitt ausführbarer Logik in dem ersten Zustand (hier im Nachstehenden „ausführbare Logik im ersten Zustand“) Anweisungen (z.B. logische Anweisungen, Instruktionen, usw. (hier kollektiv als „Anweisungen“ ohne Einschränkung bezeichnet)). Allgemein umfasst eine Ausführungsreihenfolge eine Reihenfolge, in der ausführbare Logik und/oder Anweisungen ausgeführt werden. Jeder der Knoten 2a, 2b, 2c entspricht einer oder mehreren dieser Anweisungen (z.B. einem oder mehreren Abschnitten der ausführbaren Logik im ersten Zustand). Als solche repräsentiert die Verbindung 2j eine Ausführungsreihenfolge der ausführbaren Logik im ersten Zustand, indem repräsentiert wird, dass die Anweisungen in der ausführbaren Logik im ersten Zustand, die von dem Knoten 2a repräsentiert werden, von dem System ausgeführt werden, vor der Ausführung anderer Anweisungen in der ausführbaren Logik im ersten Zustand, die von dem Knoten 2b repräsentiert werden. Die Verbindung 2k repräsentiert auch eine Ausführungsreihenfolge der ausführbaren Logik im ersten Zustand, indem repräsentiert wird, dass die Anweisungen in der ausführbaren Logik im ersten Zustand, die von dem Knoten 2b repräsentiert werden, von dem System ausgeführt werden, vor der Ausführung anderer Anweisungen in der ausführbaren Logik im ersten Zustand, die von dem Knoten 2c repräsentiert werden.
  • Die Spezifikation 1 umfasst auch einen Schlüssel 2h, der identifiziert, dass das Flussdiagramm 2 Datensätze verarbeitet, die den Schlüssel 2h umfassen oder mit dem Schlüssel 2h assoziiert sind. In diesem Beispiel wird ein benutzerdefinierter Identifikator (ID) als Schlüssel verwendet. Der Schlüssel 2h kann einem der Felder eines Datensatzes entsprechen, z.B. wie einem subscriber_ID-Feld, einem customer _ID-Feld, einem session _ID-Feld usw. in diesem Beispiel ist das customer _ID-Feld ein Schlüsselfeld. Für einen bestimmten Datensatz bestimmt das System einen Wert eines Schlüssels für diesen Datensatz durch Identifizieren des Werts des Schlüsselfelds für diesen Datensatz.
  • In diesem Beispiel subskribiert das Flussdiagramm 2 Datensätze, die einen spezifizierten Typ aufweisen (z.B. spezifiziert, wenn das Flussdiagramm 2 ausgelegt wird). In diesem Beispiel subskribiert das Flussdiagramm Datensätze, die den Schlüssel 2h umfassen. In diesem Beispiel nutzen das Flussdiagramm 2 und die Datensätze einen Schlüssel gemeinsam. Allgemein subskribiert ein Flussdiagramm Typen von Datensätzen durch das Einschließen von Logik, um diese Datensätze zu verarbeiten, die den Schlüssel des Flussdiagramms umfassen. Wenn eine Datensatzverarbeitung beginnt, startet das System neue Flussdiagrammfälle für jeden neuen Wert des Schlüssels für dieses Flussdiagramm, z.B. durch Aufrechterhalten eines Zustand der ausführbaren Logik (in dem Flussdiagramm repräsentiert) für jeden neuen Wert des Schlüssels. Das System nimmt eine Datensatzverarbeitung vor, indem die Flussdiagrammfälle ausgelegt werden (und somit die zugrundeliegende ausführbare Logik), um auf Datensätze für einen bestimmten Schlüsselwert zu antworten. In einem Beispiel subskribiert ein Flussdiagramm Customer Short Message Service- (SMS-) Datensätze. Der Flussdiagrammfall für einen bestimmten Kunden-ID verwaltet Datensätze für diesen Kunden. Es kann so viele Flussdiagrammfälle geben, wie es Kunden-IDs gibt, die in den ankommenden Datensätzen vorkommen.
  • Mit Bezugnahme auf 1B veranschaulicht das Diagramm 7 z.B. Flussdiagrammfälle 3, 4, 5, die von dem System aus dem Flussdiagramm 2 generiert werden ( 1A), und Datensätze 6a, 6b, 6c. Das heißt, eine neue Kopie oder ein neuer Fall des Flussdiagramms 2 wird für jeden neuen Schlüssel erzeugt, der in den Datensätzen 6a, 6b und 6c detektiert wird.
  • Jeder der Flussdiagrammfälle 3, 4, 5 ist mit einem „customer_id“-Schlüssel assoziiert. Der Flussdiagrammfall 3 verarbeitet Datensätze, die einen Wert „VBN3419“ in ihrem „customer_id“-Feld aufweisen, das in diesem Beispiel das Schlüsselfeld ist. Der Flussdiagrammfall 4 verarbeitet Datensätze, die einen Wert „CND8954“ in ihrem „customer_id“-Feld aufweisen. Der Flussdiagrammfall 5 verarbeitet Datensätze, die einen Wert „MGY6203“ in ihrem „customer_id“-Feld aufweisen. In diesem Beispiel führt ein System nicht erneut die ausführbare Logik für jeden Flussdiagrammfall aus. Stattdessen führt das System die ausführbare Logik aus und implementiert dann die Flussdiagrammfälle durch Aufrechterhalten eines Zustands für jeweilige Werte der Schlüssel. Demgemäß ist ein Beispiel eines „Flussdiagrammfalls, der Datensätze verarbeitet“, dass das System die ausführbare Logik ausführt (die von einem Flussdiagramm repräsentiert wird), einen Zustand für jeden Wert eines Schlüssels aufrechterhält, und Datensätze verarbeitet, die mit einem bestimmten Wert des Schlüssels assoziiert sind (auf der Basis eines Zustands der Zustandsmaschine für diesen bestimmten Wert des Schlüssels).
  • In diesem Beispiel umfasst der Flussdiagrammfall 3 Knoten 3a bis 3g, die jeweils den Knoten 2a bis 2g in 1A entsprechen. Der Flussdiagrammfall 4 umfasst die Knoten 4a bis 4g, die jeweils den Knoten 2a bis 2g in 1A entsprechen. Der Flussdiagrammfall 5 umfasst die Knoten 5a bis 5g, die jeweils den Knoten 2a bis 2g in 1A entsprechen.
  • Die Flussdiagrammfälle sind selbst ausführbar. Nachdem das System einen Eingabedatensatz empfängt, der mit einem bestimmten Wert eines Schlüssels assoziiert ist, verarbeitet ein Flussdiagrammfall für diesen bestimmten Wert des Schlüssels den Eingabedatensatz, z.B. durch ein System, das einen oder mehrere Abschnitte ausführbarer Logik entsprechend einem Flussdiagrammfall ausführt (oder einem oder mehreren Knoten des Flussdiagrammfalls). Der Flussdiagrammfall setzt die Verarbeitung des Eingabedatensatzes fort, bis der Eingabedatensatz einen Erledigt-Knoten oder einen Warteknoten erreicht. In diesem Beispiel setzt der Flussdiagrammfall die Verarbeitung des Eingabedatensatzes fort, z.B. dadurch, dass das System die Verarbeitung des Eingabedatensatzes fortsetzt, bis ein Abschnitt der ausführbaren Logik entsprechend einem Erledigt-Knoten oder einem Warteknoten erreicht ist. Wenn ein Eingabedatensatz einen Warteknoten erreicht, pausiert der Flussdiagrammfall, bis eine bestimmte Zeitdauer verstreicht oder ein geeigneter neuer Eingabedatensatz ankommt. Allgemein umfasst ein geeigneter Datensatz einen Datensatz, der eine oder mehrere spezifizierte Bedingungen oder Kriterien erfüllt (die z.B. in der Logik eines Knotens enthalten sind). Wenn ein Eingabedatensatz einen Erledigt-Knoten erreicht, ist die Ausführung des Flussdiagrammfalls vollendet.
  • Ein Flussdiagrammfall hat seinen eigenen Lebenszyklus. Wenn Datensätze ankommen, ändert sich ein aktueller Zustand oder Status des Flussdiagrammfalls: Datensätze lösen Entscheidungen aus, oder einen Rücksprung zu einem Start des Flussdiagrammfalls, oder eine Nachricht, die an einen Kunden gesendet wird. Der Flussdiagrammfall für den Kunden endet, wenn ein Datensatz einen Erledigt-Knoten erreicht.
  • In diesem Beispiel startet das System den Flussdiagrammfall 3 für einen Wert „VBN3419“ des Schlüsselfelds (z.B. customer_id = VBN3419). Der Flussdiagrammfall 3 verarbeitet einen Subsatz der Datensätze 6a, 6b, 6c, der eine customer_id VBN3419 umfasst. In diesem Beispiel verarbeitet der Flussdiagrammfall 3 den Datensatz 6a mit einem Wert „VBN3419“ in dem customer_id-Schlüsselfeld. Die Knoten 3a, 3b, 3c des Flussdiagrammfalls 3 verarbeiten den Datensatz 6a. Ein aktueller Zustand des Flussdiagrammfalls 3 ist jener des Wartens auf einen Datensatz, wie durch die gestrichelte Linie des Knotens 3d repräsentiert. Beim Erreichen des Knotens 3d wartet der Flussdiagrammfall 3 auf einen weiteren Datensatz mit dem customer ID = VBN3419, um diesen durch die Knoten 3d, 3e, 3f des Flussdiagrammfalls 3 zu verarbeiten.
  • Das System startet den Flussdiagrammfall 4 für einen Wert „CDN8954“ des Schlüssels (z.B. customer_id = CND8954). Der Flussdiagrammfall 4 verarbeitet einen Subsatz der Datensätze 6a, 6b, 6c, der eine customer_id CDN8954 umfasst. In diesem Beispiel umfasst der Flussdiagrammfall 4 die Warteknoten 4b und 4d. Jeder Datensatz kann nur die Bedingung eines Warteknotens pro Flussdiagrammfall erfüllen. Demgemäß verarbeitet der Flussdiagrammfall 4 den Datensatz 6b mit einer customer_id CDN8954 durch den Knoten 4b zu dem Knoten 4d und wartet dann auf einen zweiten Datensatz mit demselben Schlüssel, bevor zu dem Knoten 4f weitergegangen wird. Das System startet den Flussdiagrammfall 5 für einen Wert „MGY6203“ des Schlüssels (z.B. customer ID = MGY6203). Der Flussdiagrammfall 5 verarbeitet einen Subsatz der Datensätze 6a, 6b, 6c, der eine customer_id MGY6203 umfasst. In diesem Beispiel verarbeitet der Flussdiagrammfall 5 den Datensatz 6c mit einer customer_id MGY6203 durch die Knoten 5b bis 5d und wartet dann auf einen zweiten Datensatz mit demselben Schlüssel, bevor zu dem Knoten 5e weitergegangen wird, in dem eine Nachricht gesendet wird. In diesem Beispiel stoppt das System nicht an einem Warteknoten und stoppt somit nicht an dem Knoten 5e, sondern sendet stattdessen die Nachricht und geht dann zu dem Knoten 5f weiter.
  • In einer Variation von 1B generiert das System mehr als einen Flussdiagrammfall für einen einzelnen Schlüsselwert. Beispielsweise kann es eine Anzahl von Flussdiagrammfällen für denselben Kunden geben, die verschiedene Start- und Enddaten aufweisen, oder eine Anzahl von Flussdiagrammfällen für denselben Kunden für verschiedene Marketing-Kampagnen.
  • In diesem Beispiel hält das System Zustände für die Fälle aufrecht, indem, in einem Datenarchiv oder einem speicherresidenten Datenraster Zustandsdaten, z.B. Daten, die anzeigen, welcher Knoten aktuell für jeden Fall ausgeführt wird, gespeichert werden. Allgemein umfassen die Zustandsdaten Daten, die einen Zustand anzeigen. In diesem Beispiel ist ein Fall mit einem Wert des Schlüssels assoziiert. Das Datenarchiv oder der speicherresidente Datenraster speichert die Werte des Schlüssels. Das System hält einen Zustand für die Fälle aufrecht, indem Zustandsdaten für jeden Wert des Schlüssels gespeichert werden. Bei der Vollendung der Verarbeitung eines Datensatzes für einen bestimmten Wert des Schlüssels aktualisiert das System die Zustandsdaten in dem Datenarchiv, um zu spezifizieren, dass der nächste Knoten (in dem Flussdiagramm 2) einen aktuellen Zustand für diesen Wert des Schlüssels repräsentiert. Dann, wenn ein weiterer Datensatz ankommt, schlägt das System in dem Datenarchiv den aktuellen Zustand für diesen Wert des Schlüssels nach und führt Abschnitte ausführbarer Logik entsprechend einem Knoten aus, der den aktuellen Zustand der ausführbaren Logik für diesen Wert des Schlüssels repräsentiert.
  • Mit Bezugnahme auf 2 umfasst eine vernetzte Umgebung 10 eine Umgebung zur Verarbeitung verschlüsselter Datensätze auf der Basis eines Zustands, der aus der Verarbeitung vorhergehender, verschlüsselter Datensätze erreicht wird. Die vernetzte Umgebung 10 umfasst ein System 11 zur Verarbeitung der Datensätze und Datenquellen 20, aus denen die Datensätze empfangen werden. Ein oder mehrere der Datensätze können ein Teil eines Datenelements ein, so dass der empfangene eine oder die mehreren Datensätze in der Form eines oder mehrerer Datenelemente empfangen werden. In diesem Beispiel übertragen die Datenquellen 20 (über ein oder mehrere Netze (nicht gezeigt)) die Datensätze 14, 16, 18 eines Echtzeit-Datenstroms 12 an das System 11. Als solches empfängt das System 11 intermittierend einen oder mehrere der Datensätze 14, 16, 18 oder andere Datensätze (nicht gezeigt). Jeder der Datensätze 14, 16, 18 kann zeitlich voneinander getrennt sein, so dass z.B. der Datensatz 14 zuerst an dem System 11 ankommt, der Datensatz 16 als nächster an dem System 11 ankommt (z.B. indem er in dem Echtzeit-Datenstrom 12 nach dem Datensatz 14 angeordnet ist), und der Datensatz 18 als nächster an dem System 11 ankommt (z.B. indem er in dem Echtzeit-Datenstrom 12 nach dem Datensatz 16 angeordnet ist, der seinerseits in dem Echtzeit-Datenstrom 12 vor dem Datensatz 18 und nach dem Datensatz 14 angeordnet ist). Jeder der Datensätze 14, 16, 18 umfasst ein oder mehrere Felder (z.B. ein Feld für einen customer ID, ein Feld für einen account ID usw.). In diesem Beispiel umfasst der Datensatz 18 ein Schlüsselfeld 22 mit dem Wert 24.
  • Das System 11 umfasst eine Detektionsmaschine 26 zum Detektieren von Datensätzen, eine Ausführungsmaschine 44 zum Ausführen von ausführbarer Logik 48 gegenüber einem oder mehreren Datensätzen und Datensätzen, eine Aktionsmaschine 53 zum Initiieren einer oder mehrerer Aktionen auf der Basis von Ergebnissen der Ausführung der ausführbaren Logik 48 an den Datensätzen und Datensätze und eine Steuermaschine 54 für eine Laufzeit-Überwachung und Steuerung. Die ausführbare Logik 48 ist in einem Datenspeichersystem, wie z.B. dem System 11, gespeichert. In diesem Beispiel umfasst das Datenarchiv 28 die Spezifikation 45, welche die ausführbare Logik 48 repräsentiert, einen oder mehrere Zustände ausführbarer Logik 48 und geht zwischen Zuständen der ausführbaren Logik 48 hin und her.
  • Die Spezifikation 45 umfasst eine anzeigbare grafische Darstellung der ausführbaren Logik 48. Es gibt verschiedene Typen anzeigbarer grafischer Darstellungen, die z.B. ein Diagramm, ein Flussdiagramm usw. umfassen. In diesem Beispiel umfasst die Spezifikation 45 ein Diagramm 43 mit den Knoten 47, 49, 51, 55. Ein Knoten repräsentiert einen bestimmten Abschnitt der ausführbaren Logik 48, der ausführbar ist, wenn sich dieser Abschnitt der ausführbaren Logik 48 in einem bestimmten Zustand befindet, der von der Spezifikation 45 spezifiziert wird. Demgemäß liefert das Diagramm 43 eine Schablone zur Ausführung der ausführbaren Logik 48. In diesem Beispiel kompiliert das System 11 die Logik in dem Diagramm 43 der Spezifikation 45 in ausführbare Logik 48, deren Ausführung das System 11 veranlasst zu reagieren, um Datensätze einzugeben und um Ausgabedatensätze zu erzeugen.
  • Die Spezifikation 45 spezifiziert auch einen Schlüssel (nicht gezeigt) für das Diagramm 43. In diesem Beispiel entspricht das Schlüsselfeld 22 dem Schlüssel für das Diagramm 43. Für jeden Wert des Schlüsselfelds verarbeitet die Ausführungsmaschine 44 Datensätze oder Datenelemente für diesen Wert des Schlüsselfelds unabhängig von Datensätzen für andere Werte des Schlüsselfelds. Zu diesem Zweck initiiert die Ausführungsmaschine 44 einen Fall des Diagramms 43 für jeden einzigartigen Wert (des Schlüsselfelds 22), der in Datensätzen des Echtzeit-Datenstroms 12 enthalten ist. In diesem Beispiel initiiert die Ausführungsmaschine 44 die Fälle 23, 25, 46 für Werte des Schlüssels, die jeweils in den Datensätzen 14, 16, 18 enthalten sind. Für jeden Fall des Diagramms 43 hält das System 11 einen Zustand der ausführbaren Logik für diesen Fall aufrecht, indem eine aktuelle Position des Knotens in diesem Fall verfolgt wird, der ausgeführt wird. Eine aktuelle Position spezifiziert, welcher Knoten in einem Diagramm aktuell ausgeführt wird. Das System 11 führt einen Knoten aus, indem ein oder mehrere Abschnitte der ausführbaren Logik ausgeführt werden, die von diesem Knoten repräsentiert werden. Allgemein repräsentiert die aktuelle Position einen aktuellen Zustand der ausführbaren Logik. In einem Beispiel ist eine aktuelle Position zwischen Datensätzen nur ein Warteknoten, da das System nur an Warteknoten stoppt und nicht an Nicht-Warteknoten stoppt. In diesem Beispiel sind andere aktuelle Position transient, da, wenn ein Datensatz ankommt, das System alle Knoten sequentiell in einem Diagramm bis zu dem nächsten Warteknoten (oder Erledigt-Knoten) laufen lässt und sich dann an die aktuelle Position erinnert, indem Daten gespeichert werden, die diese aktuelle Position anzeigen.
  • Das System 11 verfolgt eine aktuelle Position für jeden Fall 23, 25, 46 des Diagramms 43, indem in einem Datenarchiv 28 Knotendatenelemente 30, 38, 40 jeweils in Assoziation mit Werten 24, 32, 36 gespeichert werden. Ein Knotendatenelement spezifiziert, welcher Knoten (in einem Fall der Spezifikation 45) aktuell ausgeführt wird, wodurch z.B. ein Zustand eines Falls eines Diagramms und ein Zustand der ausführbaren Logik spezifiziert werden. Jeder der Werte 24, 32, 36 entspricht einem einzigarten Wert des Schlüsselfelds 22. Demgemäß spezifiziert eine Assoziation zwischen einem Wert und einem Knotendatenelement eine aktuelle Position eines Falls des Diagramms 43, der für diesen Wert initiiert wird. In diesem Beispiel wird der Fall 46 für den Wert 24 initiiert, der in dem Datensatz 18 enthalten ist.
  • Der Datensatz 16 umfasst den Wert 32 des Schlüsselfelds 22. Der Fall 23 wird für den Wert 32 initiiert. Der Wert 24 ist in dem Datenarchiv 28 mit dem Knotendatenelement 30 assoziiert, um zu spezifizieren, dass die aktuelle Position des Falls 46 der Knoten 47 ist. Der Wert 32 ist in dem Datenarchiv 28 mit dem Knotendatenelement 38 assoziiert, um zu spezifizieren, dass die aktuelle Position des Falls 23 der Knoten 49 ist. In diesem Beispiel umfasst der Datensatz 14 den Wert 36 des Schlüsselfelds 22. Der Fall 25 wird für den Wert 36 initiiert. Der Wert 36 ist in dem Datenarchiv 28 mit dem Knotendatenelement 40 assoziiert, um zu spezifizieren, dass die aktuelle Position des Falls 25 der Knoten 47 ist.
  • In diesem Beispiel empfängt das System 11 über eine Eingabevorrichtung oder einen Eingabeport (nicht gezeigt) den Datensatz 18 von einer oder mehreren Datenquellen 20. Die Detektionsmaschine 26 des Systems 11 analysiert den Datensatz 18, um zu bestimmen, dass der Datensatz 18 mit dem Wert 24 des Schlüsselfelds 22 assoziiert ist. Die Detektionsmaschine 26 schlägt in dem Datenarchiv 28 (oder in einem speicherresidenten Datenraster - nicht gezeigt) einen Zustand der Spezifikation für den Wert 24 des Schlüsselfelds 22 nach. In diesem Beispiel ist der Wert 24 mit dem Knotendatenelement 30 assoziiert, um zu spezifizieren, dass der Knoten 47 die aktuelle Position für den Fall 46 der Spezifikation 45 ist. Somit ist ein Zustand der Spezifikation 45 für den Wert 24 des Schlüsselfelds 22 der Knoten 47. Die Detektionsmaschine 26 überträgt, an die Ausführungsmaschine 44, den Datensatz 18 und das Knotendatenelement 30. Auf der Basis des Knotendatenelements 30 identifiziert die Ausführungsmaschine 44, dass eine aktuelle Position für den Fall 46 der Spezifikation 45 der Knoten 47 ist. In diesem Beispiel entspricht ein bestimmter Abschnitt der ausführbaren Logik 48 dem Knoten 47. Die Ausführungsmaschine 44 verarbeitet den Datensatz 18 durch Ausführen des bestimmten Abschnitts der ausführbaren Logik 48 an dem (oder in Bezug auf den) Datensatz 18 (z.B. durch Anwenden des bestimmten Abschnitts der ausführbaren Logik 48 auf den Datensatz 18).
  • Auf der Basis der Ausführung eines oder mehrerer Abschnitte der ausführbaren Logik 48 an dem Datensatz 18 generiert die Ausführungsmaschine 44 den Auslöser 52. Allgemein umfasst ein Auslöser einen Ausgabedatensatz. Beispielsweise umfasst ein Auslöser einen Datensatz, der bewirkt, dass eine SMS-Nachricht an einen Kunden gesendet wird. Zu diesem Zweck generiert die Ausführungsmaschine 44 einen Ausgabedatensatz mit den Details der Nachricht, die zu senden ist, und die Aktionsmaschine 53 bewirkt, dass der Ausgabedatensatz in eine SMS-Nachricht umgewandelt wird. In diesem Beispiel wird der Auslöser 52 in der Warteschlange 50 zur Verarbeitung und Ausführung durch die Aktionsmaschine 53 veröffentlicht.
  • Auf der Basis der Verarbeitung des Datensatzes 18 aktualisiert die Ausführungsmaschine 44 auch die aktuelle Position für den Fall 46 des Diagramms 43, um der Knoten 49 zu sein. Die Ausführungsmaschine 44 tut dies, indem aktualisierte Knotendaten 56 generiert werden, die eine aktuelle Position des Falls 46 spezifizieren. Auf der Basis der aktualisierten Knotendaten 56 überträgt die Ausführungsmaschine 44 Instruktionen an das Datenarchiv 28, um das Knotendatenelement 30 mit Inhalten zu aktualisieren, die spezifizieren, dass die aktuelle Position in dem Fall 46 der Knoten 49 ist. Die Ausführungsmaschine 44 generiert auch Ergebnisdaten 58, die ein Ergebnis der Ausführung, an dem Datensatz 18, eines oder mehrerer Abschnitte der ausführbaren Logik 48 anzeigen, welche von dem Knoten 47 repräsentiert werden. Die Ausführungsmaschine 44 überträgt, an die Steuermaschine 54, aktualisierte Knotendaten 56 (in Assoziation mit dem Wert 24) und Ergebnisdaten 58 (auch in Assoziation mit dem Wert 24) .
  • In diesem Beispiel generiert die Steuermaschine 54 Daten zum Anzeigen des Falls 46 des Diagramms 43, um Datensätze, die den Wert 24 des Schlüsselfelds 22 umfassen, zu testen und in Echtzeit zu überwachen. In diesem Beispiel ist der Knoten 49 visuell hervorgehoben, um anzuzeigen, dass der Knoten 49 die aktuelle Position des Falls 46 repräsentiert. Die Steuermaschine 54 generiert auch Daten, um Ergebnisdaten 58 mit dem Fall 46 anzuzeigen. Die Ergebnisdaten 58 können auf einem oder mehreren Abschnitten des Falls 46 überlagert werden. In einem anderen Beispiel dienen die Daten, die von der Steuermaschine 54 generiert werden, zum Anzeigen der Ergebnisdaten 58 mit (z.B. neben oder in der Nähe von) dem Knoten 47. In diesem Beispiel generiert die Steuermaschine 54 Ergebnisdaten für jeden Knoten des Flussdiagramms 43 (und/oder für jeden Fall des Flussdiagramms 43) und zeigt die Ergebnisdaten neben diesem Knoten in dem Flussdiagramm 43 (und/oder in jedem Fall des Flussdiagramms 43) an, wenn das Flussdiagramm 43 (und/oder jeder Fall des Flussdiagramms 43) angezeigt wird. In diesem Beispiel zeigen die Ergebnisdaten eine Anzahl von Datensätzen an, die durch jeden Knoten verarbeitet werden. In einem anderen Beispiel zeigen die Ergebnisdaten an, welche einzelnen Datensätze von einem bestimmten Knoten verarbeitet werden, z.B. wenn Datensätze für einen bestimmten Wert eines Schlüsselfelds verarbeitet werden.
  • Nach der Verarbeitung des Datensatzes 18 kann die Ausführungsmaschine 44 auf einen oder mehrere nachfolgende Datensätze warten, die auch den Wert 24 für das Schlüsselfeld 22 umfassen. Während die Ausführungsmaschine 44 jeden Datensatz für den Wert 24 verarbeitet, geht die ausführbare Logik 48 unter Zuständen hin und her, wie durch die Spezifikation 45 spezifiziert. Diese nachfolgenden Datensätze werden gemäß einem oder mehreren Abschnitten der ausführbaren Logik 48 verarbeitet, wie durch die Spezifikation 45 spezifiziert.
  • In einer Variation bestimmt das System 11 einen Wert des Schlüssels für jedes Diagramm 43 auf der Basis eines oder mehrerer Werte in einem oder mehreren Datensatzfeldern empfangener Datensätze, z.B. anstatt des Werts des Schlüssels entsprechend einem Wert eines bestimmten Datensatzfelds - eines Schlüsselfelds. In diesem Beispiel empfängt das System 11 (oder ist ausgelegt mit) Instruktionen, die spezifizieren, welches von dem einen oder den mehreren Datensatzfeldern in einem Wert des Schlüssels verwendet werden. In einem anderen Beispiel empfängt das System 11 einen Datensatz und zergliedert den Datensatz nach Werten dieser spezifizierten Felder. Auf der Basis der Werte dieser spezifizierten Felder bestimmt oder generiert das System 11 einen Wert für den Schlüssel, z.B. durch Erhöhen der Werte dieser spezifizierten Felder, durch Modifizieren der Werte dieser spezifizierten Felder, durch Abfragen eines Datenarchivs nach einem anderen Wert, der mit einem oder mehreren der Werte dieser spezifizierten Felder assoziiert ist, usw.
  • In einem Beispiel ist der Schlüssel für ein Diagramm ein customer account ID. In diesem Beispiel speichert das Datenarchiv 28 customer account IDs für Kunden in Assoziation mit anderen Daten, wie customer IDs. In diesem Beispiel umfassen die Datensätze kein Datensatzfeld für customer account IDs. Stattdessen umfassen die Datensätze ein Datensatzfeld für einen customer ID („customer ID-Datensatzfeld“). In diesem Beispiel führt das System 11 Instruktionen aus, um den customer account ID auf der Basis des customer ID-Datensatzfelds zu bestimmen. Das System 11 zergliedert den Datensatz nach einem Wert des customer ID-Datensatzfelds. Das System 11 verwendet diesen zergliederten Wert, um das Datenarchiv 28 nach einem customer account ID abzufragen, der mit dem zergliederten Wert assoziiert ist. Ansprechend darauf führt das Datenarchiv 28 einen Wert für einen customer account ID zurück (der mit dem zergliederten Wert assoziiert ist) . Das System 11 setzt den Wert des Schlüssels, um der Wert für den customer account ID zu sein.
  • In einem anderen Beispiel umfasst der Schlüssel für ein Diagramm Werte von mehreren Datensatzfeldern. In diesem Beispiel konkateniert das System 11 diese Werte miteinander, um einen Wert des Schlüssels zu erzeugen. In noch einem weiteren Beispiel umfasst der Schlüssel für ein Diagramm Werte von einem oder mehreren Datensatzfeldern, konkateniert mit anderen Daten, die in dem Datenarchiv gespeichert sind, z.B. wie Kundenkontodaten, Kundenprofildaten, Kundeneinkaufsdaten usw. In noch einem weiteren Beispiel umfasst ein Wert eines Schlüssels (z.B. wie in dem Datenarchiv 28 gespeichert) eine vordefinierte Anzahl von Bits. In diesem Beispiel basiert der Wert des Schlüssels auf einem Wert eines spezifizierten Datensatzfeld. Das Datensatzfeld hält eine Anzahl von Bits, die sich von der für den Schlüssel erforderlichen Anzahl von Bits unterscheidet. In diesem Beispiel generiert das System 11 einen Wert für den Schlüssel durch Einsetzen (oder Löschen) einer vordefinierten Anzahl von Bits vor oder nach dem Wert des spezifizierten Datensatzfelds. Unter Verwendung dieses generierten Werts des Schlüssels identifiziert das System 11 in dem Datenarchiv 28 Zustandsdaten (z.B. ein Knotendatenelement), die mit einem Wert (für den Schlüssel) entsprechend dem generierten Wert des Schlüssels assoziiert sind.
  • Mit Bezugnahme auf 3 umfasst die Umgebung 59 ein System 60 zur Implementierung einer CEP-Regelumgebung (CRE). In einem Beispiel umfasst das System 60 das System 11 oder ist darin enthalten (2). In einem Beispiel ist das System 60 das gleiche System wie das System 11. In einem anderen Beispiel ist das System 60 von dem System 11 verschieden. In diesem Beispiel umfasst das System 60 ein CRE-System.
  • Die Umgebung 59 umfasst eine Sammelmaschine 61 zum Sammeln eines oder mehrerer Datensätze (nicht gezeigt), z.B. von einer externen Ressource. Die Umgebung 59 umfasst auch eine Aktionsmaschine 72 zum Initiieren oder Vornehmen einer oder mehrerer Aktionen, die von einem oder mehreren Ausgabedatensätzen des Systems 60 spezifiziert werden. In einem Beispiel sind das System 60, die Sammelmaschine 61 und die Aktionsmaschine 72 in einem anderen System eingeschlossen, z.B. einem Stammsystem. In einem anderen Beispiel sind die Sammelmaschine 61 und die Aktionsmaschine 72 jeweils in Systemen enthalten und werden von diesen implementiert, die sich von dem System 60 unterscheiden. In noch einem weiteren Beispiel sind eine oder mehrere von der Sammelmaschine 61 und der Aktionsmaschine 72 in dem System 60 enthalten.
  • In diesem Beispiel überträgt die Sammelmaschine 61 einen oder mehrere Datensätze (nicht gezeigt) an die Eingabedatensatz-Warteschlange 62. Allgemein ist eine Eingabedatensatz-Warteschlange eine Warteschlange zum Empfangen von Eingabedatensätzen. Allgemein ist ein Eingabedatensatz ein Datensatz, der ein bestimmtes Auftreten repräsentiert, das außerhalb des Systems 60, der Sammelmaschine 61 und der Aktionsmaschine 72 geschehen ist. In einem Beispiel umfasst ein Eingabedatensatz Daten, die spezifizieren, dass ein Kunde einen Telefonanruf getätigt hat oder eine Transaktion gesendet hat. In einem anderen Beispiel umfasst ein Eingabedatensatz Daten, die ein Auftreten einer Geldtransaktion spezifizieren. In diesem Beispiel veröffentlicht die Sammelmaschine 61 für jeden Datensatz, der von der Sammelmaschine 61 empfangen wird, jenen Datensatz in der Eingabedatensatz-Warteschlange 62 zur Verarbeitung durch die Ausführungsmaschine 78. Dadurch verarbeitet das System 60 Datensätze unabhängig von Datenbankabfragen und einem Nachschlagen in Bezug auf die Datensätze selbst. Diese Veröffentlichung von Datensätzen in einer Warteschlange verringert eine Latenz, die mit der Datensatzverarbeitung assoziiert ist, relativ zu einer Latenz, die mit einer Datensatzverarbeitung assoziiert ist, wenn Datensätze in dem Datenarchiv gespeichert werden, und das System 60 dann eine Datenbankabfrage oder ein Nachschlagen vornimmt, um den Datensatz abzurufen.
  • Die Eingabedatensatz-Warteschlange 62 überträgt einen oder mehrere Datensätze an die Ausführungsmaschine 78. In diesem Beispiel wählt die Ausführungsmaschine 78 den Datensatz 63 aus, der von der Eingabedatensatz-Warteschlange 62 empfangen wird. In diesem Beispiel führt die Ausführungsmaschine 78 die Fälle 64, 65, 66 eines Diagramms (nicht gezeigt) aus. Hier im Nachstehenden werden die Fälle 64, 65, 66 als Diagrammfälle 64, 65, 66 ohne Einschränkung und der Zweckmäßigkeit halber bezeichnet. Jeder der Diagrammfälle 64, 65, 66 entspricht einem einzigartigen Wert (eines Schlüssels) von Datensätzen, die in der Eingabedatensatz-Warteschlange 62 enthalten sind.
  • In diesem Beispiel wählt die Ausführungsmaschine 78 einen der Diagrammfälle 64, 65, 66 aus, welcher für einen Wert des Schlüssels initiiert wird, der in dem Datensatz 63 enthalten ist. Die Ausführungsmaschine 78 verarbeitet den Datensatz 63 gemäß dem ausgewählten der Diagrammfälle 64, 65, 66 unter Verwendung der hier beschriebenen Techniken. Die Ausführungsmaschine 78 umfasst interne Datensätze und Alarme 67. Allgemein umfasst ein interner Datensatz einen Datensatz, der von einem Diagramm zu einem anderen gesendet wird. Beispielsweise kann ein Diagramm (oder ein Diagrammfall) einen internen Datensatz generieren, der nicht an die Aktionsmaschine 72 gesendet wird, sondern stattdessen in ein anderes Diagramm (oder einen Diagrammfall) gesendet wird. In einem Beispiel repräsentiert jedes Diagramm einen Strang in einem Strangprozess. In diesem Beispiel repräsentiert ein interner Datensatz einen Weg, auf dem Daten zwischen Strängen zu senden sind. Allgemein umfasst ein Alarm einen vordefinierten Typ eines Datensatzes (z.B. den ein Diagramm selbst sendet), der zu einer vorberechneten Zeit in der Zukunft ankommt. Das System generiert Alarme, um Wartezustände auszuführen. Beispielsweise kann ein Diagramm (oder ein Diagrammfall) ausgelegt sein, während einer Zeitperiode zu warten, die als Alarm implementiert ist, der in einer internen Datenstruktur gesichert und dem Diagramm zu einer späteren Zeit präsentiert wird.
  • Auf der Basis der Ausführung eines oder mehrerer der Diagrammfälle 64, 65, 66 generiert die Ausführungsmaschine 78 einen oder mehrere Ausgabedatensätze und veröffentlicht diese Ausgabedatensätze in der Ausgabedatensatz-Warteschlange 71, z.B. einer Warteschlange zum Halten von Ausgabedatensätzen. Das System 60 überträgt an die Aktionsmaschine 72 die Ausgabedatensätze, die in der Ausgabedatensatz-Warteschlange 71 enthalten sind. Sobald die Aktionsmaschine 72 einen Ausgabedatensatz empfängt, nimmt die Aktionsmaschine 72 eine oder mehrere Aktionen vor oder generiert eine oder mehrere Aktionen für ein Verhalten gemäß Inhalten des Ausgabedatensatzes.
  • Die Ausführungsmaschine 78 umfasst ein globales Diagramm 69. Allgemein umfasst ein globales Diagramm ein Diagramm, für das es keinen Fall gibt. Globale Diagramme werden verwendet, um globale Variablen zu manipulieren (z.B. eine Variable, die eine Anzahl von verschiedenen Konten anzeigt, gesehen in Datensätzen, die in einem Echtzeit-Datenstrom empfangen werden). Allgemein können Diagramme im Kontext eines Schlüssels laufen, es gibt jedoch einige Diagramme, die genau einen Fall laufen lassen, d.h. globale Diagramme. Globale Diagramme werden intern in der Ausführungsmaschine 78 verwendet, z.B. als Anforderungs/Antwort-Synchrondienst. Allgemein umfasst ein Anforderungs/Antwort-Synchrondienst einen Dienst, der eine sofortige Antwort auf eine Anforderung liefert.
  • Die Ausführungsmaschine 78 umfasst eine Diagramm-Submaschine 68 zum Starten, Stoppen oder Einstellen von Diagrammen (und/oder Diagrammfällen), z.B. auf der Basis einer oder mehrerer Instruktionen, die von einem Benutzer empfangen werden, und/oder auf der Basis von Manipulationsdaten 74 eines manuellen Zustands, wie nachstehend detaillierter beschrieben. In einem Beispiel ruft die Ausführungsmaschine 78 auch Referenzdaten 70 aus einem oder mehreren Datenarchiven ab, z.B. Datenarchiven, die extern von der Umgebung 59 sind, oder die in der Umgebung 59 enthalten sind. Allgemein umfassen Referenzdaten Daten, die mit einem bestimmten Schlüssel oder einem bestimmten Wert des Schlüssels assoziiert sind. Beispielsweise ist ein Kundenkonto ein Schlüssel. In diesem Beispiel umfassen die Referenzdaten Kontodetails für das Kundenkonto.
  • Das System 60 umfasst auch die Steuermaschine 79 für eine Laufzeit-Überwachung (und/oder zum Testen) und für die Steuerung von Diagrammfällen und Diagrammen. In diesem Beispiel repräsentiert die Steuermaschine 79 die Laufzeit-Umgebung des Systems 60. Daten, die eine Aktivität innerhalb der Ausführungsmaschine 78 anzeigen, werden verfolgt und an die Steuermaschine 79 für die Laufzeit-Überwachung und/oder zum Testen gesendet. Diese verfolgten Daten werden in einer Datenbank (nicht gezeigt) oder in einem Datensatz gespeichert, z.B. wie metrische Speicherdaten 75 (die in einer Datenbank gespeichert werden). Die Steuermaschine 79 generiert operationale Anzeigedaten 80, um auf einer Anzeigevorrichtung eine Echtzeit-Visualisierung der Ausführung eines Diagrammfalls zu rendern und aktuelle Statistiken des Laufs der Ausführungsmaschine 78 zu zeigen. Die Steuermaschine 79 verwendet diese verfolgten Daten, um Berichtsdaten 76 zu generieren, die z.B. verschiedene tabellarische Berichte umfassen, welche das Verhalten der Diagrammfälle 654, 65, 66 zusammenfassen.
  • Die Steuermaschine 79 umfasst auch den Lauf der Diagramme und/oder eines oder mehrerer Diagrammfälle 64, 65, 66, z.B. indem einem Benutzer Steuerungen (oder Daten für Steuerungen) geliefert werden, die Diagramme und ihre Fälle stoppen, starten oder halten. Die Auswahl einer oder mehrerer dieser Steuerungen veranlasst die Steuermaschine 79, Manipulationsdaten 74 eines manuellen Zustands zu generieren. Allgemein umfassen Manipulationsdaten 74 eines manuellen Zustands Daten zur manuellen Manipulation (z.B. Änderung) eines Zustands eines Diagrammfalls. Beispielsweise kann ein Zustand eines Diagrammfalls manuell geändert werden, indem das Diagramm neu gestartet wird, das Diagramm pausiert wird oder das Diagramm gestoppt wird. In einem anderen Beispiel kann ein Benutzer ein Diagramm für einen Subsatz von Schlüsseln auswählen (z.B. durch Spezifizieren des aktuellen Zustands dieses Diagramms), und dann den Zustand des Diagramms für diese Schlüssel ändern. In diesem Beispiel überträgt die Steuermaschine 79 Manipulationsdaten 74 eines manuellen Zustands an die Diagramm-Submaschine 68 zum Steuern des Diagramms gemäß den Zustandsmanipulationsdaten 74. Die Diagramm-Submaschine 68 verarbeitet Manipulationsdaten 74 eines manuellen Zustands als Instruktionen, die spezifizieren, wie ein Zustand eines Laufs eines Diagrammfalls zu manipulieren ist.
  • Die Steuermaschine 79 umfasst auch Steuerpunkte 73. Allgemein umfasst ein Steuerpunkt einen Laufzeit-Parameter, der von einem Benutzer definiert wird (der ein Diagramm generiert), und wird verwendet, um das Verhalten eines oder mehrerer Diagramme (oder Diagrammfälle) während der Laufzeit zu ändern. Die Ausführungsmaschine 78 liest einen Steuerpunkt als Nurlese-Variable und auch als globale Variable. In einem Beispiel sind die Steuerpunkte 73 in einer Benutzerschnittstelle definiert, um ein Diagramm zu definieren und auszulegen, und werden durch eine Laufzeit-Schnittstelle exponiert (z.B. aus operationalen Anzeigedaten 80 generiert). Da die Ausführungsmaschine 78 die Steuerpunkte 73 als globale Variablen liest, können ein oder mehrere Steuerpunkte 73 geändert werden, während ein Diagramm läuft, um das Verhalten dieses Diagramms zu ändern. Beispielsweise können unter Verwendung von Steuerpunkten einzelne Diagramme gestartet oder gestoppt werden, Schwellen können geändert werden, optionale Logik kann aktiviert oder deaktiviert werden, usw. Auf der Basis der Steuerpunkte wird diese Echtzeit-Auslegung ohne Stoppen der Diagramme vorgenommen.
  • In diesem Beispiel ist das System 60 auch für eine Wiederherstellbarkeit ausgelegt, z.B. durch Vornehmen einer oder mehrerer Operationen, die einen Zustand eines Abschnitts der ausführbaren Logik sichern, der für die Wiederherstellbarkeit des Zustands der ausführbaren Logik ausgeführt wird. Beispielsweise umfassen mindestens einige der Knoten eines Diagramms Logik, die bewirkt, dass das System 60 eine Prüfpunktoperation vornimmt, welche in einem Puffer (z.B. des Systems 60) einen Zustand der ausführbaren Logik sichert (z.B. durch Sichern von Daten, die eine aktuelle Position in dem Flussdiagramm anzeigen), um die Wiederherstellbarkeit eines Zustands der ausführbaren Logik zu ermöglichen.
  • Mit Bezugnahme auf 4 umfasst eine Spezifikation 100 ein Diagramm 102. Allgemein repräsentiert das Diagramm 102 Logik für das folgende Szenario: wenn ein Kunde eine Textnachricht sendet, falls dieser Kunde weiterhin einen „Pay-per-Text“-Plan nutzt, der Kunde jedoch genügend Textnachrichten in einem aktuellen Monat gesendet hat, um einen Plan für unbegrenzte Textnachrichten attraktiv zu machen, sendet das System dann eine SMS-Nachricht an den Kunden, die vorschlägt, dass der Kunde ein Upgrade auf den unbegrenzten Plan vornimmt. Wenn das System das Angebot sendet, wird dem Kunden zusätzlich auch ein Bonus eines $ 10 Guthabens gutgeschrieben, falls der Kunde ein Upgrade vornimmt, indem er auf die SMS-Nachricht innerhalb einer Stunde antwortet. Ansonsten wird der Kunde angewiesen, auf dem Web das Upgrade vorzunehmen.
  • In diesem Beispiel umfasst das Diagramm 102 die Knoten 104 bis 136 zur Implementierung der oben beschriebenen Logik. Das System hält eine aktuelle Position für das Diagramm 102 aufrecht. Wie zuvor beschrieben, spezifiziert die aktuelle Position, welcher Knoten aktuell ausgeführt wird. In diesem Beispiel führt das System einen Knoten aus, indem ein oder mehrere Abschnitte ausführbarer Logik ausgeführt werden, die von diesem Knoten repräsentiert werden. Das System hält eine Zustand der ausführbaren Logik und des Diagramms 102 aufrecht, indem die aktuellen Positionsdaten für das Diagramm 102 aufrechterhalten werden.
  • Der Startknoten 104 spezifiziert einen Eintrag in das Diagramm 102 und einen Startort der Logik. Nach der Vollendung eines oder mehrerer Abschnitte ausführbarer Logik, die durch den Startknoten 104 repräsentiert werden, aktualisiert das System die aktuelle Position des Diagramms 102, um der Warteknoten 106 zu sein. In diesem Beispiel umfasst der Warteknoten 106 die Abschnitte 106a, 106b, 106c und 106d. Jeder der Abschnitte 106a, 106b, 106c ist für einen Benutzer editierbar, um verschiedene Logik einzutragen oder zu modifizieren, die von dem Warteknoten 106 verwendet wird. Die in den Abschnitten 106, 106b, 106c enthaltene Logik wird von dem System in ausführbare Logik kompiliert. Der Abschnitt 106a spezifiziert den Namen oder Typ des Datensatzes, auf den der Abschnitt ausführbarer Logik (repräsentiert durch den Warteknoten 106) wartet. In diesem Beispiel repräsentiert „AS“ einen Kontoaktivitätsstrom-Datensatz. Der Abschnitt 106b spezifiziert eine Bedingung, die erfüllt werden muss, sobald ein Datensatz des geeigneten Typs empfangen wird. Der Abschnitt 106c kann ein Timeout spezifizieren, z.B. eine Zeitdauer, während welcher das System auf den spezifizierten Typ des Datensatzes wartet. In diesem Beispiel umfasst der Knoten 106 kein Timeout.
  • Gemäß dem Diagramm 102 wird der AS-Datensatz, sobald er empfangen wird, gemäß der Logik des nächsten Knotens (d.h. Entscheidungsknotens 108) verarbeitet, wie von der Datensatzabkürzung 106d unten an dem Warteknoten 106 spezifiziert.
  • Das Diagramm 102 spezifiziert, dass, auf der Basis des Ergebnisses der Verarbeitung des AS-Datensatzes gemäß der Logik des Entscheidungsknotens 108, die ausführbare Logik in einen Zustand übergeht, in dem die ausführbare Logik mit der Verarbeitung von Datensätzen fertig ist, wie durch den Erledigt-Knoten 110 repräsentiert, oder in einen anderen Zustand übergeht, in dem eine weitere Evaluierung des AS-Datensatzes vorgenommen wird, wie durch den Entscheidungsknoten 112 repräsentiert. Auf der Basis der Verarbeitung des AS-Datensatzes gemäß der Logik des Entscheidungsknotens 112 geht die ausführbare Logik entweder in einen Zustand über, in dem sie zu einem Startzustand der ausführbaren Logik zurückkehrt, wie durch den Knoten 114 spezifiziert, oder geht in einen Zustand über, in dem ein Wert einer Diagrammfallvariablen gesetzt wird, wie durch den Knoten 116 spezifiziert. Allgemein umfasst eine Diagrammfallvariable eine Variable, die einen Wert für jeden Fall des Diagramms umfasst.
  • Nach dem Setzen des Werts des Diagrammfalls aktualisiert das System die aktuelle Position des Diagramms 102, um der Auslöseknoten 118 zu sein, der einen Zustand der ausführbaren Logik repräsentiert, in dem ein Ausgabedatensatz an einen Abschnitt des Systems gesendet wird, um auf den Ausgangsdatensatz zu wirken. Wenn das Diagramm 102 mit Logik programmiert wird, um einen Ausgabedatensatz zu senden, muss ein Benutzer identifizieren, welcher Typ eines Ausgangsdatensatzes gesendet wird, und die Felder 118a, 118b, 118c des Auslöseknotens 118 für diesen Datensatztyp populieren. In diesem Beispiel möchte der Benutzer einen Ausgabedatensatz eines SMS-Typs senden. Zu diesem Zweck wählt der Benutzer einen Wert „SMS“ für das Feld 118a aus. Der Wert der Felder 118b, 118c wird auch von einem Benutzer geliefert. In diesem Beispiel spezifiziert das Feld 118b eine Telefonnummer, die zu verwenden ist, wenn die SMS-Nachricht gesendet wird, und das Feld 118c spezifiziert Inhalte der zu sendenden Nachricht.
  • Nach der Vollendung des Auslöseknotens 118 aktualisiert das System die aktuelle Position des Diagramms 102, um der Warteknoten 120 zu sein, der einen Zustand repräsentiert, in dem die ausführbare Logik auf einen oder mehrere zusätzliche Datensätze wartet (die z.B. zeitlich von einem oder mehreren Datensätzen getrennt sind, auf die zuvor gemäß dem Warteknoten 106 gewartet wurde).
  • In diesem Beispiel umfasst der Warteknoten 120 Abschnitte 120a, 120b, 120c. Der Abschnitt 120a spezifiziert den Namen oder Typ des Datensatzes, auf den der Abschnitt der ausführbaren Logik wartet, der durch den Warteknoten 120 repräsentiert wird. In diesem Beispiel repräsentiert der Warteknoten 120 ein Warten auf einen AS-Datensatz. Der Abschnitt 120b spezifiziert eine Bedingung, die erfüllt werden muss, sobald ein AS-Datensatz empfangen wird, und zeigt einen oder mehrere logische Ausdrücke an (oder eine Visualisierung, die auf logischen Ausdrücken basiert). Der Abschnitt 120c spezifiziert ein Timeout, z.B. eine Zeitdauer, während welcher das System auf den spezifizierten Typ eines Datensatzes wartet. Wenn kein geeigneter Datensatz während der Zeitdauer empfangen wird, die von dem Abschnitt 120c spezifiziert wird, geht dann das Warten in ein Timeout, und eine aktuelle Position des Diagramms 102 bewegt sich zu dem Warteknoten 128, der mit einem Timeout-Pfeil 129 verbunden ist, welcher den Warteblock 120 verlässt. In diesem Beispiel repräsentiert der Warteknoten 128 ausführbare Logik, um einen Tag zu warten und dann in einen Zustand überzugehen, der von dem Entscheidungsknoten 130 repräsentiert wird. Auf der Basis eines Ergebnisses der Evaluierung von Kontodetails gemäß der Logik des Entscheidungsknotens 130 wird die aktuelle Position des Diagramms 102 aktualisiert, um entweder der Erledigt-Knoten 134 zu sein, der einen Zustand repräsentiert, in dem die Ausführung vollendet ist, oder der Auslöseknoten 132, der einen Zustand der Vornahme eines Auslösers zum Senden einer SMS-Nachricht repräsentiert. Nach der Vollendung des von dem Auslöseknoten 132 spezifizierten Auslösers aktualisiert das System die aktuelle Position, um der Erledigt-Knoten 136 zu sein, der einen Zustand repräsentiert, in dem die Ausführung vollendet ist.
  • Wenn ein weiterer AS-Datensatz innerhalb der von dem Abschnitt 120c spezifizierten Zeit empfangen wird, wird die aktuelle Position des Diagramms 102 aktualisiert, um der Auslöseknoten 122 zu sein, und die ausführbare Logik geht in einen Zustand über, der von dem Auslöseknoten 122 repräsentiert wird, in dem ein Guthaben auf das Konto des Benutzers gutgeschrieben wird. Nach der Vollendung des von dem Auslöseknoten 122 spezifizierten Auslösers wird die aktuelle Position des Diagramms 102 aktualisiert, um der Auslöseknoten 124 zu sein, und die ausführbare Logik geht in einen Zustand über, der von dem Auslöseknoten 124 repräsentiert wird, um ein Danke-SMS an einen Kunden zu senden. Nach der Vollendung des von dem Auslöseknoten 124 spezifizierten Auslösers wird die aktuelle Position des Diagramms 102 aktualisiert, um der Knoten 126 zu sein, der einen Zustand der ausführbaren Logik repräsentiert, in dem die Ausführung vollendet ist.
  • Die Spezifikation 100 umfasst auch einen Legendenabschnitt 140. In diesem Beispiel umfasst der Legendenabschnitt 140 den Schlüsselabschnitt 142, der einen Schlüssel für die Spezifikation 100 und für das Diagramm 102 spezifiziert. In diesem Beispiel ist ein customer account ID der Schlüssel. Für jeden einzigartigen Wert des Schlüssels (z.B. jeden einzigartigen Wert eines customer account ID) generiert das System einen Fall des Diagramms 102, wodurch ein Fall des Diagramms 102 für jeden Kunden generiert wird. In diesem Beispiel hält das System eine aktuelle Position für jeden Lauf eines Diagrammfalls aufrecht. Als solches assoziiert das System jeden Kunden mit einem Fall des Diagramms 102 und hält den Zustand für jeden dieser Fälle aufrecht, z.B. durch Verfolgen einer aktuellen Position für jeden Fall.
  • Der Legendenabschnitt 140 umfasst auch einen externen Eingabedatensatz-Abschnitt 144, der Typen von Datensätzen spezifiziert, die Eingabedatensätze sind, welche von der Logik des Diagramms 102 verarbeitet werden. Allgemein ist ein externer Eingabedatensatz ein Datensatz, der von einer externen Quelle empfangen wird, die ein Eingang für ausführbare Logik ist, welche von einem Diagramm repräsentiert wird. In diesem Beispiel spezifiziert der externe Eingabedatensatz-Abschnitt 144, dass Kontoaktivitätsstrom-Datensätze die externen Eingabedatensätze sind. Der Legendenabschnitt umfasst auch den externen Ausgabedatensatz-Abschnitt 146, 148, der spezifiziert, welche Typen von Datensätzen von der Logik des Diagramms 102 generiert und ausgegeben werden. In diesem Beispiel spezifiziert der externe Ausgabedatensatz-Abschnitt 146, 148, dass es SMS- bzw. Kontomodifikations-Ausgabedatensätze gibt.
  • Der Legendenabschnitt 140 umfasst den Steuerpunktabschnitt 150, der einen Steuerpunkt anzeigt. Die Ausführung von ausführbarer Logik, die durch das Diagramm 102 repräsentiert wird, muss nicht gestoppt werden, um neue Werte für Steuerpunkte einzulesen. In diesem Beispiel umfasst der Entscheidungsknoten 112 Logik, die auf einem Steuerpunkt basiert, der von dem Steuerpunktabschnitt 150 repräsentiert wird. Der Steuerpunkt, der von dem Steuerpunktabschnitt 150 repräsentiert wird, umfasst einen numerischen Wert, der als Textangebot-Schwelle bezeichnet wird, und der in der Logik des Entscheidungsknotens 112 enthalten ist. Dieser Steuerpunkt umfasst die Anzahl von Textnachrichten, die ein Kunde senden muss, bevor ihm das Angebot gemacht wird. Die Anzahl von Textnachrichten, die ein Kunden senden muss, bevor ihm das Angebot gemacht wird, wird in einem Steuerpunkt gespeichert, um zu gestatten, dass eine Schwelle (z.B. die Textangebot-Schwelle) geändert wird, ohne das Diagramm 102 zu ändern oder neu zu starten.
  • Der Legendenabschnitt 140 umfasst den Aggregationsabschnitt 152, der Aggregationen anzeigt. Eine Aggregation umfasst einen Wert, der berechnet wird, indem Werte von mehreren Datensätzen über die Zeit kombiniert werden. Aggregationen sind mit einem Schlüssel assoziiert. In einem Beispiel stimmt der Schlüssel für das Diagramm mit dem Schlüssel der Aggregation überein. Die bestimmte Aggregation, die der Aggregationsabschnitt 152 referenziert, wird als Gesamtanzahl Textnachrichten diesen Monat bezeichnet. Es gibt einen anderen Wert dieser Aggregation für jedes Konto (d.h. jeden Wert des Schlüssels), und die Aggregation wird automatisch inkrementiert, wenn eine Textnachricht für das entsprechende Konto gesendet wird. Aggregationen werden im Nachstehenden detaillierter diskutiert.
  • Der Legendenabschnitt 140 umfasst auch den Referenzabschnitt 154, der Referenzdaten repräsentiert. Allgemein umfassen Referenzdaten Daten, die extern von dem Diagramm 102 sind, und/oder der ausführbaren Logik, die von dem Diagramm 102 repräsentiert wird, und auf die durch eine Nachschlagoperation zugegriffen wird. Referenzdaten sind mit einem Schlüssel assoziiert, der derselbe Schlüssel sein kann wie das Diagramm. Einige Referenzdaten sind global und müssen entweder kein Schlüssel sein, oder werden referenziert, indem ausdrücklich ein Schlüssel geliefert wird (z.B. ein Zip-Code für ein Nachschlagen des Zustands).
  • Mit Bezugnahme auf 5 veranschaulicht ein Diagramm 500 die Zustände 508, 510, 512 ausführbarer Logik über die Zeiten T1, T2, T3. Die ausführbare Logik wird durch das Diagramm 102 repräsentiert (4). In diesem Beispiel wird ein Zustand der ausführbaren Logik für jeden Wert des Schlüssels für das Diagramm 102 aufrechterhalten. Die ausführbare Logik umfasst die Zustände 508, 510, 512, deren Start jeweils durch die Warteknoten 106, 120, 128 repräsentiert wird (in 4). In diesem Beispiel umfasst jeder der Zustände 508, 510, 512 einen Wartezustand. Das System hält einen Zustand der ausführbaren Logik für jeden Fall des Diagramms 102 aufrecht, z.B. durch das Aufrechterhalten eines Zustands für jeden einzigartigen Wert des Schlüssels.
  • In diesem Beispiel empfängt das System den Datensatz 502 zu einer ersten Zeit T1. Der Datensatz 502 ist mit einem Wert „423-e5f“ für den Schlüssel assoziiert. Das System verarbeitet den Datensatz 502 gemäß einem Diagrammfall für diesen Wert des Schlüssels. Beim Erreichen des Warteknotens 106 (4) aktualisiert das System einen aktuellen Zustand des Diagrammfalls, der mit dem Wert „423-e5f“ assoziiert ist, um der Zustand 508 zu sein. In diesem Beispiel generiert das System eine Assoziation (z.B. ein einem Datenarchiv) zwischen Daten, die den Zustand 508 anzeigen, und Daten 514, die einen Wert des Schlüssels gleich 423-e5f repräsentieren. Durch diese Assoziation spezifiziert das System, dass zur Zeit T1 ein aktueller Zustand des Diagrammfalls für den Wert = 423-e5f der Zustand 508 ist. In diesem Beispiel zeigt die Verbindung 516 visuell an, dass der Datensatz 502 mit dem Zustand 508 assoziiert ist. In diesem Beispiel spezifiziert die Spezifikation einen oder mehrere Abschnitte der ausführbaren Logik, die ausführbar sind, wenn sich die ausführbare Logik in dem Zustand 508 befindet. Beispielsweise umfasst die Spezifikation einen Knoten, der einem oder mehreren Abschnitten der ausführbaren Logik entspricht, die ausführbar sind, wenn sich die ausführbare Logik in dem Zustand 508 befindet.
  • Das System empfängt den Datensatz 504 zu einer zweiten Zeit T2. Der Datensatz 504 ist ein intervenierender Datensatz, der von dem System nach dem Datensatz 502 und vor dem Datensatz 506 empfangen wird. Der Datensatz 504 ist mit einem Wert „453-0rf“ für den Schlüssel assoziiert. Das System verarbeitet den Datensatz 504 gemäß einem Diagrammfall für diesen Wert des Schlüssels. Beim Erreichen des Warteknotens 506 ( 4) aktualisiert das System einen aktuellen Zustand des Diagrammfalls, der mit dem Wert „453-0rf“ assoziiert ist, um der Zustand 508 zu sein. In diesem Beispiel generiert das System eine Assoziation (z.B. in einem Datenarchiv) zwischen Daten, die den Zustand 508 anzeigen, und Daten 518, die einen Wert des Schlüssels gleich 423-e5f und einen anderen Wert des Schlüssels gleich 453-0rf anzeigen. Durch diese Assoziation spezifiziert das System, dass zur Zeit T2 ein aktueller Zustand jedes der Diagrammfälle für den Wert „423-e5f“ und den Wert „453-0rf“ der Zustand 508 ist. In diesem Beispiel zeigt die Verbindung 520 visuell an, dass der Datensatz 504 mit dem Zustand 508 assoziiert ist.
  • Das System empfängt den Datensatz 506 zu einer dritten Zeit T3. Der Datensatz 506 ist mit dem Wert „423-e5f“ für den Schlüssel assoziiert. Das System verarbeitet den Datensatz 506 gemäß dem Diagrammfall für diesen Wert des Schlüssels. Beim Erreichen des Warteknotenn 120 (4) aktualisiert das System einen aktuellen Zustand des Diagrammfalls, der mit dem Wert „423-e5f“ assoziiert ist, um der Zustand 510 zu sein. In diesem Beispiel generiert das System eine Assoziation (z.B. in einem Datenarchiv) zwischen Daten, die den Zustand 510 anzeigen, und Daten 522, die einen Wert des Schlüssels gleich 423-e5f repräsentieren. Durch diese Assoziation spezifiziert das System, dass zur Zeit T3 ein aktueller Zustand des Diagrammfalls für den Wert = 423-e5f der Zustand 510 ist. In diesem Beispiel zeigt die Verbindung 524 visuell an, dass der Datensatz 506 mit dem Zustand 510 assoziiert ist. Das System generiert auch eine Assoziation zwischen Daten, die den Zustand 508 repräsentieren, und Daten 526, die repräsentieren, dass sich zur Zeit T3 nur der Diagrammfall mit dem Wert = 453-0rf in dem Zustand 508 befindet.
  • Mit Bezugnahme auf 6 umfasst die grafische Benutzerschnittstelle 600 Reiter 602, 604, 606. Allgemein umfasst ein Reiter einen auswählbaren Abschnitt einer grafischen Benutzerschnittstelle, dessen Auswahl Daten anzeigt, die mit dem ausgewählten Reiter assoziiert sind. In diesem Beispiel wird der Reiter 602 ausgewählt, und die grafische Benutzerschnittstelle 600 zeigt Daten an, die zu einem bestimmten Gewinnspiel gehören, d.h. „Raffle“. In diesem Beispiel umfasst die grafische Benutzerschnittstelle 600 einen Abschnitt 608 zum Anzeigen von Daten, die zu dem Diagramm 622 gehören. Der Abschnitt 608 umfasst ein Namensfeld 610 zum Eingeben und Anzeigen von Daten, die einen Namen des Diagramms 622 anzeigen. Der Abschnitt 608 umfasst auch ein Typenfeld 612 zum Eingeben und Anzeigen von Daten, die einen Diagrammtyp für das Diagramm 622 anzeigen. Es gibt verschiedene Typen von Diagrammen, die z.B. ein Zieldiagramm umfassen. Allgemein umfasst ein Zieldiagramm ein Diagramm, das einen Prozess eines Kunden beschreibt, beispielsweise eine einzelne Marketing-Kampagne, und ist ein Diagramm auf der obersten Ebene, das logisch einen CEP-Prozess des Benutzers repräsentiert. Der Abschnitt 608 umfasst auch einen Steuerabschnitt 614 mit Steuerungen, um zu spezifizieren, ob das Diagramm 622 privat oder öffentlich sichtbar ist, ob das Diagramm 622 ohne Warten ist (z.B. ob das Diagramm 622 einen Warteknoten umfasst), und ob das Diagramm 622 ein globales Diagramm ist. Der Abschnitt 608 umfasst auch ein Schlüsseltypenfeld 616 zum Eingeben und Anzeigen, welcher Schlüsseltyp für das Diagramm 622 verwendet wird. In diesem Beispiel ist der Schlüssel ein Kontoidentifikator (z.B. eine Kontonummer, eine Kontonummer usw.). Der Abschnitt 608 umfasst auch eingebaute Wertsteuerungen 618 zum Anzeigen von Daten, die anzeigen, welcher bestimmte Wert eines Schlüssels (_keyValue) mit Datensätzen assoziiert ist, die aktuell verarbeitet werden, z.B. wenn ein Diagramm in einem Testmodus ausgeführt wird, in dem einzelne Datensätze (für einen bestimmten Wert eines Schlüssels) durchlaufen gelassen (z.B. verarbeitet) werden. Allgemein umfasst das Durchlaufen von Datensätzen eine sequentielle Verarbeitung von Datensätzen, die in einer Sequenz angeordnet sind, z.B. so dass Ergebnisse der Verarbeitung jedes Datensatzes vor der Verarbeitung eines nächsten Datensatzes in der Sequenz angezeigt werden. Allgemein umfasst ein Testmodus einen Betriebsmodus, in dem ein Diagramm mit Testdaten ausgeführt wird, z.B. einem vordefinierten Datensatz. Durch die Ausführung eines Diagramms im Testmodus nimmt das System eine Zeitserie von Tests vor, z.B. das Testen einer Regel oder einer Entscheidungstabelle, die als Diagramm ausgedrückt wird, wobei das Testen über eine Zeitperiode mit Datensätzen vorgenommen wird, die zeitlich getrennt sind. Eingebaute Wertsteuerungen 618 zeigen auch Daten an, die einen ID für einen Fall eines Diagramms anzeigen (_ChartID), der aktuell für einen bestimmten Wert eines Schlüssels ausgeführt wird, z.B. wenn ein Diagramm im Testmodus laufen gelassen wird. In diesem Beispiel zeigen die eingebauten Wertsteuerungen 618 einen „Lauf“-Status an, der anzeigt, dass ein Diagramm in Echtzeit laufen gelassen wird, z.B. anstatt in einem Testmodus, in dem einzelne Datensätze (für einen bestimmten Wert eines Schlüssels) durchlaufen gelassen (z.B. verarbeitet) werden. Der Abschnitt 608 umfasst auch einen Argumentabschnitt 620 zum Anzeigen von Argumenten für ein Diagramm, wenn es Argumente für das Diagramm gibt. Allgemein umfasst ein Argument einen Parameter. Beispielsweise kann ein Diagramm Parameter umfassen, deren Werte in einer getrennten Datei spezifiziert werden und in das Diagramm gelesen werden. Beispielsweise können logische Ausdrücke in einem Diagramm einen oder mehrere Parameter umfassen. Zur Laufzeit greift das System auf eine Datei zu, die Werte für diese Parameter spezifiziert und die Werte in den logischen Ausdrücken umfasst. Dadurch fördert das System die Wiederverwendung von Diagrammen und logischen Ausdrücken, da diese Diagramme und logischen Ausdrücke keine spezifizierten Werte umfassen. Stattdessen umfassen diese Diagramme und logischen Ausdrücke Parameter, deren Werte unabhängig von dem Diagramm und den logischen Ausdrücken spezifiziert werden können.
  • Das Diagramm 622 umfasst eine visuelle Darstellung einer Regel und zeitlicher Beziehungen zwischen Abschnitten der Regel. In diesem Beispiel umfasst das Diagramm 622 Knoten 624, 626, 628, 630, 632, 634. Jeder Knoten repräsentiert einen oder mehrere Abschnitte der Regel. Das System führt das Diagramm 622 aus, um einen Genauigkeitsgrad der Ausführung der Regel zu testen, z.B. gegenüber Datenelementen oder Datensätzen. Beispielsweise bestimmt das System durch die Ausführung des Diagramms 622, welche Knoten (so vorhanden) keine Datensätze verarbeiten. Ein solcher Ausfall kann einen Konflikt zwischen Abschnitten der Regel anzeigen oder kann einen Abschnitt der Regel anzeigen, der eine Bedingung spezifiziert, von der es unwahrscheinlich ist, dass sie erfüllt wird. Als solcher kann dieser Ausfall eine Regel anzeigen, die nicht in der Lage ist, Datensätze genau zu verarbeiten, oder die Datensätze in einer Weise verarbeitet, die von einem beabsichtigen Verarbeitungsstil oder -ziel verschieden ist.
  • Die Knoten 624, 626 sind Subdiagrammknoten. Allgemein umfasst ein Subdiagrammknoten einen Knoten, der ausführbare Logik zum Aufrufen und Ausführen eines Subdiagramms repräsentiert. Ein Subdiagramm umfasst ein Diagramm zur gemeinsamen Nutzung von Logik unter anderen Diagrammen, z.B. um zu vermeiden, Sektion von Diagrammen kopieren und einfügen zu müssen. Ein Subdiagramm liefert Komplexitätsabstraktion und Verschleierung. Beispielsweise könnte ein Subdiagramm durch einen technischeren Benutzer erzeugt werden, jedoch dann von einem weniger technischen Benutzer verwendet (aufgerufen) werden, der nicht den komplexeren Details der Implementierung ausgesetzt werden muss. Ein Subdiagramm wird von einem Aufrufdiagramm aufgerufen, das ein Diagramm umfasst, welches ein Subdiagramm aufruft (z.B. zu diesem die Steuerung transferiert). Ein Aufrufdiagramm umfasst verschiedene Typen von Diagrammen, die z.B. ein Zieldiagramm oder ein anderes Subdiagramm umfassen.
  • In diesem Beispiel ist der Knoten 628 ein Warteknoten (hier im Nachstehenden Warteknoten 628), und die Knoten 632, 634 sind Erledigt-Knoten. Der Warteknoten 628 ist ausgelegt, auf irgendeinen Typ eines Datensatzes zu warten, der mindestens eine von drei Bedingungen 628a, 628b, 628c erfüllt. Die Bedingung 628a erfordert, dass ein Datensatz ein externer Geldtransaktions- (MT-) Eingabedatensatz ist, der eine Transaktion anzeigt, die größer ist als $ 2500. Die Bedingung 628b erfordert, dass ein Datensatz ein interner (intr) Datensatz eines elektronischen Anweisungstyps ist. Die Bedingung 628c erfordert, dass ein Datensatz ein interner Datensatz eines Rechnungsbezahlungstyps ist.
  • Das Diagramm 622 umfasst Verbindungen 645, 647, 649, 659 und jeweils assoziierte Beschriftungen 651, 653, 655, 657. Allgemein umfasst eine Beschriftung eine visuelle Darstellung einer erfüllten Bedingung. In diesem Beispiel queren Datensätze, welche die Bedingung 628a erfüllen, von dem Warteknoten 6128 zu dem Warteknoten 630 über die Verbindung 645 mit der Beschriftung 651. Das System bewirkt eine Anzeige in der grafischen Benutzerschnittstelle 600 einer visuellen Darstellung des Übergangs von dem Warteknoten 628 (der z.B. einen Wartezustand der ausführbaren Logik repräsentiert) zu dem Knoten 630 (der z.B. einen anderen Zustand der ausführbaren Logik oder einen oder mehrere Abschnitte der ausführbaren Logik repräsentiert). Das System kann die visuelle Darstellung des Übergangs durch das visuelle Hervorheben der Verbindung 645 anzeigen (oder die Anzeige davon bewirken).
  • In diesem Beispiel queren Datensätze, welche die Bedingung 628b erfüllen, von dem Warteknoten 628 zu dem Knoten 630 über die Verbindung 647 mit der Beschriftung 653. In diesem Beispiel queren Datensätze, welche die Bedingung 628c erfüllen, von dem Warteknoten 628 zu dem Knoten 630 über die Verbindung 649 mit der Beschriftung 655. Wenn der Warteknoten 628 wegen eines Timeout endet, aktualisiert dann das System eine aktuelle Position des Diagramms 622 auf den Erledigt-Knoten 632, der mit dem Warteknoten 628 durch den Weg (d.h. die Verbindung 659) mit der Beschriftung 657 verbunden ist.
  • Das Diagramm 622 umfasst einen Statusindikator 629, um zu spezifizieren, welcher Knoten des Diagramms 622 aktuell einen Datensatz verarbeitet. In diesem Beispiel wird der Warteknoten 628 aktuell von dem System ausgeführt, wie von dem Statusindikator 629 spezifiziert, der neben dem (z.B. nahe bei dem) Warteknoten 628 angezeigt wird. Das Diagramm 622 umfasst Überwachungspunkte 636, 638, 640, 642, 644, 646, 648, 650, 652, 654. Allgemein repräsentiert ein Überwachungspunkt Instruktionen zur Berechnung einer bestimmten Metrik, die automatisch gesammelt wird, z.B. zur Laufzeit oder während einer Simulation und des Testens. Überwachungspunkte werden von Benutzern definiert und werden von Benutzern in ein Diagramm eingefügt. Ein Überwachungspunkt hat einen Namen, und der Name ist einzigartig innerhalb des Diagramms. In einem Beispiel verwendet das System einen Überwachungspunkt, um einen Genauigkeitsgrad einer Regel zu testen, z.B. durch Überwachen, wie viele Datensätze durch einen bestimmten Knoten hindurchgehen. Wenn keine Datensätze durch einen Knoten hindurchgehen, identifiziert das System ein potentielles Problem mit der Logik, die in diesem Knoten enthalten ist, und kann einen Benutzer auffordern, die Logik zu überprüfen und die Logik potentiell einzustellen. In diesem Beispiel wird ein Überwachungspunkt im Diagramm 622 neben dem Knoten angezeigt, der überwacht wird, z.B. um eine visuelle Indikation von Ergebnissen des Testens dieses Knotens zu liefern.
  • In einem Beispiel ermöglichen es Überwachungspunkte einem Benutzer, Berechnungen an Daten vorzunehmen, die zur Laufzeit verfügbar sind, so dass die Laufzeit-Daten in eine Metrik eingeschlossen werden können. Beispielsweise kann ein Benutzer wissen wollen, wie viele hochwertige Kunden (anstatt aller Kunden) eine spezifische Abzweigung eines bestimmten Entscheidungsknotens gewählt haben. Um diese Metrik zu berechnen, weist ein Überwachungspunkt das System an, zu berechnen, wenn das Diagramm ausgeführt wird, ob ein Kunde hochwertig ist, und an den Überwachungspunkt Daten zurückzusenden, die anzeigen, ob der Kunde hochwertig ist. Wenn ein Überwachungspunkt in einem Subdiagramm definiert wird, wird er mit dem aufrufenden Diagramm assoziiert.
  • Ein Überwachungspunkt ist an einen Pfeil gebunden, der zwei Knoten in dem Diagramm 622 verbindet, oder ist an einen Warteknoten gebunden. Beispielsweise ist der Überwachungspunkt 646 mit der Verbindung 645 assoziiert, z.B. um eine Anzahl von Datensätzen zu verfolgen, welche die Verbindung 645 queren, wie im Nachstehenden beschrieben. Die Überwachungspunkte 648, 650 sind jeweils mit den Verbindungen 647, 649 assoziiert, um eine Anzahl von Datensätzen zu verfolgen, welche die Verbindungen 647, 649 queren.
  • Die grafische Benutzerschnittstelle 600 umfasst auch den Abschnitt 660 mit den Reitern 662, 664, 666. Der Reiter 662 bewirkt eine Anzeige von Daten, die dazu dienen, das Diagramm 622 zu steuern, wie im Nachstehenden detaillierter beschrieben. Der Reiter 664 bewirkt eine Anzeige von Daten, die dazu dienen, verschiedene Objekte in dem Diagramm 622 zu verwenden, wie im Nachstehenden detaillierter beschrieben. Der Reiter 666 bewirkt eine Anzeige von Daten, die zu Überwachungspunkten gehören. Der Reiter 666 umfasst den Abschnitt 668 zum Anzeigen von Ausdruckinformationen, den Abschnitt 670 zum Anzeigen von Daten, die zu Überwachungspunkten gehören, welche mit Pfeilen assoziiert (z.B. verbunden) sind, den Abschnitt 674 zum Anzeigen von Daten, die zu Überwachungspunkten gehören, welche mit Warteknoten assoziiert sind, und den Abschnitt 676 zum Anzeigen von Metrikdaten, die ein oder mehrere Ergebnisse der Ausführung eines Diagramms und/oder von Diagrammfällen anzeigen.
  • Der Abschnitt 668 zeigt benutzerdefinierte Ausdrücke 668a, 668h an. Ein Ausdruck ist mit einem Namen assoziiert (z.B. „Total Qual“), einer Definition, die spezifiziert, wie in Wert des Ausdrucks von dem System berechnet wird, und einem Wert, der berechnet und ausgegeben wird. In einem Beispiel spezifiziert ein Ausdruck einen Satz von Parametern, eine oder mehrere lokale Variablen und/oder eine Definition, um zu spezifizieren, wie ein Überwachungspunkt aggregiert und berichtet wird.
  • Die Abschnitte 670, 674 ermöglichen es einem Benutzer, Überwachungspunkte zu definieren, z.B. auf der Basis von Ausdrücken 668a, 668b. In diesem Beispiel dient der Abschnitt 670 zum Spezifizieren einer Definition eines Überwachungspunkts, der mit einem Pfeil assoziiert ist. Der Abschnitt 670 umfasst die Überwachungspunktdefinition 672 zum Spezifizieren einer Definition für den Überwachungspunkt 646. Demgemäß umfasst der Überwachungspunkt 646 (der aus der Überwachungspunktdefinition 672 generiert wird) Text „A 8“, um zu spezifizieren, dass er ein Überwachungspunkt ist, der mit einem Pfeil („A“) assoziiert ist, und dass er der achte solche Typ eines Überwachungspunkts ist. Die Überwachungspunktdefinition 672 spezifiziert einen Namen (d.h. „Qual by Pchs“) des Überwachungspunkts 646 und spezifiziert auch verschiedene Werte 672i bis 6721, die von dem Überwachungspunkt 646 zu verfolgen sind, und jeweils assoziierte Definitionen 672e bis 672h, und jeweils Namen 672a bis 672d, für diese Werte 672i bis 6721. Der Wert 672i spezifiziert, wie viele Datensätze den Pfeil 645 zwischen dem Warteknoten 628 und dem Knoten 630 gequert haben. In diesem Beispiel wird der Wert 672i in dem Überwachungspunkt 646 angezeigt, z.B. auf der Basis einer Benutzerspezifikation in dem Abschnitt 670, wovon Werte in dem Überwachungspunkt 646 anzuzeigen sind. In diesem Beispiel umfasst der Abschnitt 670 ein oder mehrere Felder zur Definition eines neuen Überwachungspunkts.
  • Der Abschnitt 674 umfasst eine Überwachungspunktdefinition zum Spezifizieren einer Definition für den Überwachungspunkt 642, der mit dem Warteknoten 628 assoziiert ist, wie durch das „W“ in dem Übertragungsoperation 642 spezifiziert. In diesem Beispiel spezifiziert die Überwachungspunktdefinition in dem Abschnitt 674 eine Zählung 674a anstehender Warteblöcke, eine Zählung 674b einer Warteblocklatenz und einen Mittelwert 674c der Warteblocklatenz. In diesem Beispiel spezifiziert die Zählung 674a anstehender Warteblöcke eine Anzahl von Diagrammen, deren aktuelle Position dem Warteknoten 628 entspricht. Allgemein umfasst ein Knoten einen Block. In diesem Beispiel spezifiziert die Zählung 674b einer Warteblocklatenz eine Anzahl von Fällen, wo der Warteknoten 628 während einer spezifizierten Zeit oder eines Berichtsintervalls erfüllt ist (kein Timeout aufweist). In diesem Beispiel spezifiziert der Mittelwert 674c der Warteblocklatenz eine mittlere Datensatz-Verarbeitungslatenz für den Warteknoten 628. Allgemein umfasst die mittlere Datensatz-Verarbeitungslatenz für einen Warteknoten einen Wert, der eine mittlere Zeit anzeigt, während welcher der Warteknoten 628 auf einen Datensatz wartet, der eine oder mehrere der Bedingungen 628a, 628b, 628c erfüllt, und den Datensatz verarbeitet, der eine oder mehrere der Bedingungen 628a, 628b, 628c erfüllt. In diesem Beispiel zeigt der Überwachungspunkt 628 einen Wert (d.h. 3173) anstehender Warteblöcke 674a an, z.B. auf der Basis einer Benutzerauslegung des Überwachungspunkts 642 in dem Abschnitt 674. Insbesondere umfasst der Abschnitt 674 eine oder mehrere Steuerungen oder Eingabefelder (nicht gezeigt) für einen Benutzer, um zu spezifizieren, welche Werte in dem Überwachungspunkt 642 angezeigt werden.
  • Der Abschnitt 676 zeigt eine Metrik an, wie eine aktive Diagrammmetrik und eine Erledigt-Diagrammmetrik. Allgemein spezifiziert eine aktive Diagrammmetrik eine Anzahl aktuell aktiver (z.B. laufender) Fälle eines bestimmten Diagramms. Allgemein spezifiziert eine Erledigt-Diagrammmetrik eine Anzahl von Fällen des Diagramms, die zuvor aktiv waren, jedoch nicht länger aktiv sind.
  • In einer Variation zeigt der Abschnitt 676 auch andere Metriken an, die eine Verarbeitungslatenz anzeigen, zwischen wenn die Datensätze in eine Eingabewarteschlange eingegeben werden, und wenn sie verarbeitet werden. Zu diesem Zweck weist das System einem Eingabedatensatz eine Aufnahmezeit zu, z.B. eine Zeit, zu welcher der Datensatz zu einer Eingabewarteschlange hinzugefügt wird (z.B. zur Verarbeitung). Wenn das System den Datensatz aus der Eingabewarteschlange liest, berechnet das System die Verarbeitungslatenz durch Subtrahieren der Aufnahmezeit von einer aktuellen Zeit. Das System verfolgt auch die mittlere Datensatz-Verarbeitungslatenz durch Berechnen eines Mittelwerts der Metriken, welche die Verarbeitungslatenz anzeigen. In einem Beispiel umfasst die oben beschriebene Metrik eine globale Metrik (für Datensätze, die durch einen Satz oder eine Vielzahl von Diagrammen verarbeitet werden) und eine Metrik pro Diagramm.
  • In einigen Beispielen führt das System das Diagramm 622 an einem Satz von Elementen von Testdaten aus, die z.B. in einem Datenarchiv gespeichert sind. In diesem Beispiel wählt das System eine der Aktionen aus und simuliert einen Strom von nahezu Echtzeit-Testdaten unter Verwendung des ausgewählten Satzes. Das System wendet ein Diagramm, wie das Diagramm 662, auf Elemente von Testdaten in dem simulierten Strom an. In einem anderen Beispiel ist ein Element von Testdaten ein Datenelement, das von dem System empfangen wird, z.B. von einer oder mehreren externen Quellen.
  • Mit Bezugnahme auf 7 zeigt eine grafische Benutzerschnittstelle 700 Inhalte des Reiters 701 an (der beispielsweise dem Reiter 662 entsprechen kann). In diesem Beispiel zeigt die grafische Benutzerschnittstelle 700 eine Rücksetzsteuerung 702 an, eine Stoppsteuerung 703, eine Durchlaufsteuerung 704, eine Freigabesteuerung 706, eine Nächster-Knoten-Steuerung 708 und eine Laufsteuerung 710 zur Steuerung der Ausführung eines Diagramms, z.B. des Diagramms 622 in 6. Die Rücksetzsteuerung 702 veranlasst das Diagramm zurückzusetzen, z.B. wenn die Rücksetzsteuerung 702 ausgewählt wird. Allgemein wird ein Diagramm zurückgesetzt, indem ein aktuell ausgeführter Fall des Diagramms beendet wird und alle Variablen, die von dem Diagramm verwendet werden, eingestellt werden, einen Initialwert (z.B. einen Wert von Null) aufzuweisen. Die Stoppsteuerung 703 bewirkt die Ausführung, dass ein Diagramm stoppt, z.B. mindestens bis ein Benutzer spezifiziert, dass das Diagramm erneut laufen zu lassen ist.
  • Die Durchlaufsteuerung 704 liefert ein temporales fokussiertes Testen, indem es einem Benutzer ermöglicht wird, Datensätze durchlaufen zu lassen (z.B. für einen bestimmten Wert eines Schlüssels), um zu sehen, wie diese Datensätze von einem Diagramm verarbeitet werden. Während das System die Datensätze durchlaufen lässt, aktualisiert das System das Diagramm mit einer visuellen Indikation, welcher Knoten welchen Datensatz und Werte (oder Inhalt) dieses Datensatzes verarbeitet. Beispielsweise verarbeitet die Logik eines Diagramms (das z.B. eine Regel verkörpert) zahlreiche Datensätze. Während des Testens muss ein Benutzer die Datensätze sehen, die mit einer Entscheidung (z.B. einem in dem Diagramm durchgequerten Weg) für einen gegebenen Wert des Schlüssels assoziiert sind. Durch die Verwendung der Durchlaufsteuerung 704 läuft das System durch jeden Datensatz (für einen bestimmten Wert eines Schlüssels) und hebt visuell hervor, welcher Knoten eines Diagramms aktuell einen Datensatz (oder Datensätze) und Werte für die und Inhalte von den Datensätzen verarbeitet, die verarbeitet werden (sowie jenen Datensätzen, die zuvor verarbeitet wurden), wie im Nachstehenden detaillierter erläutert. Die Freigabesteuerung 706 veranlasst das System, einen Datensatz freizugeben. Allgemein umfasst die Freigabe eines Datensatzes die Verarbeitung und/oder Evaluierung eines Datensatzes, z.B. so dass das Diagramm fortsetzen kann, neue oder ankommende Datensätze zu verarbeiten. Die Nächster-Knoten-Steuerung 708 veranlasst das System, den Zustand eines Diagramms zu ändern, so dass der Zustand zu einem nächsten Knoten in dem Diagramm weitergeht. Die Auswahl dieser Nächster-Knoten-Steuerung 708 sendet eine Instruktion an das System, einen aktuellen Zustand eines Diagramms zu übergehen, und das Diagramm zu zwingen, zum nächsten Knoten weiterzugehen, z.B. während des Testens - wie im Nachstehenden beschrieben. Die Laufsteuerung 710 veranlasst das Diagramm, die Ausführung zu starten oder wiederaufzunehmen.
  • Die grafische Benutzerschnittstelle 700 zeigt auch Statusindikatoren an, wie den Stopp-Indikator 716, Durchlauftest-Indikator 714 und Lauf-Indikator 712. In diesem Beispiel spezifiziert der Stopp-Indikator 716, dass die Ausführung eines Diagramms aktuell gestoppt ist, z.B. wenn der Stopp-Indikator 716 in der grafischen Benutzerschnittstelle 700 visuell hervorgehoben ist. Wenn der Durchlauftest-Indikator 714 in der grafischen Benutzerschnittstelle 700 visuell hervorgehoben ist, spezifiziert er, dass ein Diagramm aktuell zum Testen durchlaufen gelassen wird, z.B. auf der Basis der Auswahl der Durchlaufsteuerung 704. Der Lauf-Indikator 712 spezifiziert, dass ein Diagramm aktuell ausgeführt wird, z.B. wenn der Lauf-Indikator 712 in der grafischen Benutzerschnittstelle 700 visuell hervorgehoben ist.
  • Die grafische Benutzerschnittstelle 700 umfasst auch den Verstrichene-Zeit-Abschnitt 718, der eine Zeitleiste 718a umfasst, um eine Zeitdauer visuell zu spezifizieren, die während der Ausführung eines Diagramms verstrichen ist. Die grafische Benutzerschnittstelle 700 umfasst auch einen Laufdiagrammabschnitt 720, der spezifiziert, welche Diagramme aktuell von dem System ausgeführt werden. In diesem Beispiel spezifiziert der Laufdiagrammabschnitt 720, dass das Diagramm 720a läuft. Für das Diagramm 720a umfasst der Laufdiagrammabschnitt 720 eine Steuerung 720b, deren Auswahl das System veranlasst, einen Status-Indikator zu identifizieren und anzuzeigen, der spezifiziert, welcher Knoten des Diagramms 720a aktuell ausgeführt wird. Die grafische Benutzerschnittstelle 700 umfasst auch einen Abschnitt 722, der Bezeichnungen für verschiedene Eingabedatensätze anzeigt, gemeinsam mit Verarbeitungszeiten für diese Datensätze (z.B. eine Zeitdauer, die ein Knoten in einem Ausführungsdiagramm benötigt, um den Datensatz zu verarbeiten) und Ausgabeauslösern für assoziierte Eingabedatensätze.
  • Mit Bezugnahme auf 8 zeigt die grafische Benutzerschnittstelle 800 Inhalte des Reiters 802 an (der z.B. dem Reiter 664 in 6 entsprechen kann). Die grafische Benutzerschnittstelle 800 umfasst den Abschnitt 804 zum Spezifizieren von Steuerpunkten (und assoziierten Werten), die von einem oder mehreren Diagrammen (z.B. dem Diagramm 622 in 6) verwendet werden. Die grafische Benutzerschnittstelle 800 umfasst den Abschnitt 806, der Variablen (und assoziierte Werte) spezifiziert, die von dem Diagramm verwendet werden. Variablen werden Werte zugewiesen, die unter Verwendung eines Ausdrucks, einer Regel, eines Subdiagramms usw. berechnet werden können.
  • Die grafische Benutzerschnittstelle 800 umfasst auch einen Abschnitt 808 zum Anzeigen von Mitarbeiterdiagrammen, die z.B. mit einem bestimmten Diagramm verwendet werden. Allgemein umfasst ein Mitarbeiterdiagramm ein Diagramm, das von einem anderen Diagramm gestartet wird und dann unabhängig mit seiner eigenen aktuellen Position läuft. Das System kann ein Mitarbeiterdiagramm verwenden, z.B. auf der Basis einer Einschränkung, dass es einem einzelnen Diagramm gestattet wird, eine einzelne aktuelle Position aufzuweisen. Beispielsweise kann ein Zieldiagramm ausgelegt sein, ein zusätzliches Diagramm zu starten, das seine eigene aktuelle Position aufweist, und parallel mit dem Zieldiagramm zu laufen. In diesem Beispiel ist das zusätzliche Diagramm ein Mitarbeiterdiagramm, und es kommuniziert mit anderen Diagrammen (wie dem Zieldiagramm, das es gestartet hat) unter Verwendung interner Datensätze. Die grafische Benutzerschnittstelle 800 umfasst auch den Abschnitt 810 zum Spezifizieren interner Datensätze, die von dem Diagramm verwendet werden, den Abschnitt 812 zum Spezifizieren globaler Variablen, die von dem Diagramm verwendet werden, den Abschnitt 814 zum Spezifizieren von Referenzdaten, die von dem Diagramm verwendet werden, und den Abschnitt 816 zum Spezifizieren externer Eingabedatensätze, die von dem Diagramm verwendet werden.
  • Die hier beschriebenen Diagramme sind auslegbar, um gefensterte Aggregationen vorzunehmen. Allgemein ist eine gefensterte Aggregation eine Aggregation von Daten (z.B. eines spezifischen Datentyps) über eine spezifizierte Zeitperiode oder ein Fenster. Beispielsweise umfasst eine gefensterte Aggregation eine Aggregation, die für einen Subsatz von Datensätzen berechnet wird. Der Subsatz umfasst rezente Datensätze (z.B. Datensätze am letzten Tag), und mit fortschreitender Zeit ändert sich auch der Satz von Datensätzen, die aggregiert sind. Viele CEP-Regeln verwenden gefensterte Aggregationen verschiedener Typen (z.B. eine Anzahl von ATM-Abbuchungen in den letzten 24 Stunden). Demgemäß generiert das System gefensterte Aggregationen, generiert Regeln, um die Aggregation vorzunehmen und liefert Steuerungen an Benutzer, um diese Aggregationen zu definieren, und um ihr Verhalten während des Testens zu beobachten. In einem Beispiel umfasst die ausführbare Logik eine Aggregation oder drückt diese aus. In diesem Beispiel berechnet das System die Aggregation durch die Ausführung einer Regel, welche die ausführbare Logik repräsentiert. Bei der Vollendung der Berechnung der Aggregation speichert das System die Aggregation für einen nachfolgenden Abruf durch eine oder mehrere andere Regeln, die auch die Aggregation umfassen - wodurch die gemeinsame Nutzung zuvor berechneter Aggregationen gefördert wird.
  • In einem Beispiel liefert das System verschiedene vorspezifizierte Aggregationen (z.B. eine Anzahl von in diesem Monat verwendeten Textnachrichten), die ein Benutzer beim Generieren eines Diagramms auswählen und verwenden kann. In diesem Beispiel liefert das System eine Schnittstelle (oder Daten für eine Schnittstelle), in der ein Benutzer ein Diagramm definieren kann, z.B. durch „Ziehen und Ablegen“ verschiedener Knoten, Symbole und Verbindungen in einen Abschnitt der Schnittstelle zum Definieren des Diagramms. Ein Knoten umfasst Logik und zeigt diese an, die editierbar ist. Ein Benutzer kann die Logik editieren, um eine Aggregation zu spezifizieren, die von der ausführbaren Logik verwendet wird, welche von dem Knoten repräsentiert wird, oder um andere Logik zu spezifizieren (die bei der Kompilierung der ausführbaren Logik verwendet wird). Der Benutzer kann eine Aggregation spezifizieren, z.B. durch Eingeben von Logik, welche die Aggregation spezifiziert, durch Auswählen einer vordefinierten Aggregation (z.B. aus einer Vielzahl vordefinierter Aggregationen), durch Auswählen eines Symbols oder eines Knotens, das/der eine vordefinierte Aggregation anzeigt, und Hinzufügen desselben zu dem Diagramm oder Assoziieren desselben mit einem Knoten in dem Diagramm usw. Das System testet das Verhalten dieser Aggregationen, indem Datensätze (z.B. für einen bestimmten Wert eines Schlüssels) durchlaufen gelassen werden, um zu identifizieren, welche Knoten welche Datensätze und Werte von (und/oder Inhalte in) den Datensätzen verarbeiten, während sie verarbeitet werden. Auf der Basis dieses Tests kann das System identifizieren, dass Datensätze nicht durch einen Knoten hindurchgehen, der eine Aggregation umfasst. Als solches kann das System die Logik in diesem Knoten auf Fehler (z.B. Bedingungen, die nie erfüllt werden) analysieren und/oder kann einen Benutzer auffordern, die Logik des Knotens zu einer Bedingung zu ändern, die leichter oder häufiger erfüllt wird.
  • Mit erneuter Bezugnahme auf 2 berechnet die Sammelmaschine 61 gefensterte Aggregationen und speichert diese als Referenzdaten oder fügt diese zu einem Datensatz als Anreicherung hinzu. Allgemein umfasst eine Anreicherung Daten, die zu einem Datensatz hinzugefügt werden, nachdem der Datensatz von dem System empfangen wird. Das System „reichert“ den Datensatz mit diesen Daten „an“. In einem anderen Beispiel generiert das System 60 Aggregationen, z.B. auf der Basis einer Definition, die von einem Autor des Diagramms (oder einer Regel, die von dem Diagramm verkörpert wird) spezifiziert wird, und implementiert diese Aggregationen als Teil des Diagrammausführungsprozesses.
  • Das System 60 definiert Aggregationen als Variablen, z.B. innerhalb von Diagrammen oder innerhalb von Projekten. Allgemein umfasst ein Projekt eine Sammlung von Diagrammen, z.B. eine Sammlung von Diagrammen zum Führen einer Kampagne. Um eine gemeinsame Nutzung von Aggregationen unter Diagrammen zu ermöglichen, definiert das System 60 Aggregationen für ein Projekt. Dadurch wird die Systemleistung und die Leistung einzelner Diagramme verbessert, z.B. indem eine Anzahl von Berechnungen reduziert wird, die das System 60 bei der Berechnung von Aggregationen vornimmt, relativ zu einer Anzahl von Berechnungen, die das System 60 benötigen würde, um die Berechnung von Aggregationen vorzunehmen, wenn das System 60 Aggregationen für jedes Diagramm unabhängig voneinander vornehmen würde.
  • In einem Beispiel berechnet das System 60 Aggregationen, die verschlüsselt sind (z.B. indem sie mit einem bestimmten Wert eines Schlüssels oder mit einem bestimmten Schlüssel assoziiert sind). Das System 60 generiert Regeln zum Zugreifen auf Aggregationen quer über Schlüssel, so dass ein Diagramm auf die Aggregationen eines Schlüssels zugreifen kann, der gleich ist wie der Schlüssel für das System. In diesem Beispiel berechnet das System 60 gefensterte Aggregationen, Aggregationen mit bewegtem Fenster (z.B. eine Aggregation für die letzten 15 Minuten), periodische Aggregationen (z.B. eine Aggregation für eine Serie definierter Zeitintervalle), korrelierte Aggregationen (z.B. eine Aggregation, die einen Wert eines Felds auf der Basis eines Minimums oder Maximums eines anderen Felds zurückführt), usw.
  • In einem Beispiel wird eine Definition einer Aggregation (hier im Nachstehen Aggregationsdefinition) für eine Aggregation mit bewegtem Fenster textuell wie folgt repräsentiert:
    • For each customer, for each data record of type trade, where trade.action = „buy“, calculate the average of trade.amount over the last 15 minutes.
  • Die unterstrichenen Abschnitte der obigen Textdarstellung entsprechen Parametern in der Aggregationsdefinition, die von dem System 60 generiert wird. In diesem Beispiel generiert das System 60 eine Aggregation mit den in der nachstehenden Tabelle 1 gezeigten Parametern: Tabelle 1
    Parametername Parameterbeschreibung
    Aggregation Name Dieser Parameter spezifiziert den Namen für die Aggregation, der in den Diagrammen verwendet werden kann. In diesem Beispiel ist der Aggregationsname „Average Trade Amount - 15 min“.
    Data record Type Dieser Parameter spezifiziert den Eingabedatensatztyp, der eine Aktualisierung dieser Aggregation auslöst. In diesem Beispiel ist der Eingabedatensatztyp ein Eingabedatensatz des Typs Trade.
    Key Dieser Parameter spezifiziert einen Schlüssel für die Aggregation. In diesem Beispiel ist der Schlüssel ein Kunden-Indikator.
    Filter Expression Dieser Parameter spezifiziert einen optionalen Ausdruck, der einen Booleschen evaluiert. Wenn spezifiziert, werden nur die Datensätze, für die der berechnete Wert gilt, in die Aggregation eingeschlossen. In diesem Beispiel ist der Filterausdruck die Aktion Trade = „buy“.
    Aggregation Function(s) Dieser Parameter spezifiziert eine Aggregationsfunktion und umfasst eine oder mehrere von count, count distrinct, sum, minimum, maximum, average, standard deviation, oldest, latest. In einem Beispiel liefert das System 60 eine Benutzerschnittstelle, um eine Aggregation zu definieren, und liefert ein Dropdown-Menü zur Auswahl einer bestimmten Aggregationsfunktion.
    Field or Expression(s) Dieser Parameter spezifiziert, was aggregiert wird. Beispielsweise spezifiziert dieser Parameter einen Namen eines Felds in einem Datensatz. In diesem Beispiel hat der Feldparameter einen Wert von trade.amount.
    Inclusive Flag Dieser Parameter hat einen wahren oder falschen Wert. Wenn wahr, aktualisiert das System 60 die Aggregation, bevor ein Diagramm laufen gelassen wird, auf der Basis eines aktuellen Datensatzes. Als solches umfasst das System 60 den aktuellen Datensatz in der Aggregation. Wenn falsch, aktualisiert das System 60 die Aggregation, nachdem das Diagramm ausgeführt wird, auf der Basis eines aktuellen Datensatzes.
    Time Window Dieser Parameter spezifiziert eine Zeitperiode für die Aggregation. In einer Benutzerschnittstelle zur Definition einer Aggregation ist eine Zeitdauer auswählbar.
    Granularity Dieser Parameter ist auch eine Zeitperiode. Über den Ganularitätsparameter optimiert und/oder reduziert (z.B. sichert) das System 60 den Speicherverbrauch (z.B. relativ zu dem Speicherverbrauch unabhängig von dem Granularitätsparameter) durch das Sammeln von Werten. Wenn beispielsweise das Zeitfenster 5 Minuten ist, und die Granularität 30 Sekunden beträgt, wird dann eine Hinterkante eines Aggregationsfensters alle 30 Sekunden schrumpfen, anstatt für jeden Datensatz. Als solches kann das 5 Minuten-Fenster 5 Minuten plus 30 Sekunden Daten repräsentieren.
  • In der obigen Tabelle 1 umfasst eine Aggregationsdefinition verschiedene Parameter, die von dem System 60 beim Generieren der Aggregation verwendet werden. Einer oder mehrere der Parameter und/oder Werte der Parameter sind durch den Benutzer auslegbar, z.B. während der Generierung eines Diagramms. Beispielsweise liefert das System 60 eine Benutzerschnittstelle, durch die der Benutzer Werte für einen oder mehrere Parameter spezifiziert, die in der obigen Tabelle 1 gezeigt sind. Auf der Basis der spezifizierten Werte und Parametertypen generiert das System 60 eine Aggregationsdefinition und verwendet die Aggregationsdefinition bei der Berechnung einer Aggregation für diese Aggregationsdefinition.
  • Das System 60 berechnet auch eine Periodenaggregation, umfassend z.B. eine Aggregation für eine Serie definierter Zeitintervalle. Eine Textdarstellung einer Periodenaggregation ist nachstehend gezeigt:
    • For each customer, for each data record of type trade, where trade.action = „buy“, calculate the sum of trade.amount for each 30 second period in the last 10 minutes.
  • Die unterstrichenen Abschnitte der obigen Textdarstellung entsprechen Parametern in der Aggregationsdefinition für diese Periodenaggregation, die von dem System 60 generiert wird. Für die Periodenaggregation generiert das System 60 eine Aggregationsdefinition mit einem Aggregationsnamen-Parameter, einem Datensatztyp-Parameter, einem Schlüssel-Parameter, einem Filterausdruck-Parameter, einem Aggregationsfunktions-Parameter, einem Feld- oder Ausdruck-Parameter, wie vorstehend mit Bezugnahme auf Tabelle 1 beschrieben. Zusätzlich umfasst diese Aggregationsdefinition auch die folgenden Parameter, die in nachstehender Tabelle 2 gezeigt sind. Tabelle 2
    Parametername Parameterbeschreibung
    Time Period Dieser Parameter spezifiziert eine Zeitperiode. Es kann eine längere Periode sein (z.B. 1 Monat) oder eine kürzere Periode (z.B. 10 Minuten). Die gesamten Zeitfenster, die von der Aggregation abgedeckt werden, sind die Zeitperioden-Parameter mal der Anzahl von Perioden-Parameter.
    Number of Periods Dieser Parameter spezifiziert eine Anzahl vollendeter Zeitperioden, die aufrechterhalten werden. In einem Beispiel ist ein Wert des Zeitperioden-Parameters 1 Monat. Wenn in diesem Beispiel ein Wert des Anzahl von Perioden-Parameters auch 1 ist, erhält dann das System 60 die Aggregation für den letzten vollständigen Monat aufrecht, und auch eine partielle Aggregation für einen aktuellen Monat.
    Only Latest Flag Dieser Parameter hat einen Booleschen Wert von wahr oder falsch. Wenn wahr, wird die Periodenaggregation dann eine skalare sein statt eines Vektors, und der Wert wird der Wert der letzten vollständigen Periode sein. Wenn falsch, ist die Periodenaggregation ein Vektor.
  • Die in der obigen Tabelle 2 gezeigten Parameter sind von einem Benutzer auslegbar, z.B. durch eine Benutzerschnittstelle des Systems 60. Zusätzlich berechnet das System 60 korrelierte Aggregationen, in denen eine Korrelation zwischen einem rückgeführten Wert und dem aggregierten Wert besteht. Ein Beispiel einer korrelierten Aggregation wird nachstehend gezeigt:
    • For each customer, for each data record of type trader where trade.action = „buy“, calculate the symbol for the largest trade.amount seen in the last 20 minutes.
  • In diesem Beispiel wählt das System 60 geeignete Datensätze innerhalb des spezifizierten Zeitfensters (d.h. 20 Minuten) aus und führt ein Symbol (z.B. „GSPC“) zurück, das die Kriterien erfüllt, die von der Aggregation spezifiziert werden (z.B. largest trade.amount). Das System 60 berechnet auch Mehrperiodenaggregationen, in denen das System 60 eine Periodenaggregation berechnet, und dann eine Aggregation der Ergebnisse dieser Periodenaggregation. Ein Beispiel einer Periodenaggregation umfasst die folgende Aggregation. For each customer, for each data record of type trade, where trade, action = „buy“, first calculate the sum of trade.amount for each day, then calculate the largest total for the last seven days.
  • Das System 60 berechnet Aggregationen, während Datensätze empfangen werden, z.B. für jeden Datensatz, wenn der Datensatz ankommt. Diese Aggregationen sind nahezu Echtzeit-Aggregationen, da sie nahezu in Echtzeit berechnet werden, wenn Datensätze empfangen werden. In einem Beispiel berechnet das System 60 die Aggregationen unabhängig davon, ob en Diagramm die Werte für die Aggregationen testet oder verwendet. In einem anderen Beispiel berechnet das System 60 die Aggregationen nach Bedarf, z.B. wenn das System 60 einen Strom von Datensätzen archiviert. Allgemein umfasst eine Aggregation nach Bedarf eine Aggregation, die ansprechend auf eine Anforderung auftritt. In diesem Beispiel archiviert das System 60 einen Strom von Datensätzen, z.B. durch Speichern der Datensätze oder Daten, welche die Datensätze anzeigen, in einem Datenarchiv. Bei der Berechnung einer Aggregation nach Bedarf fragt das System 60 das Datenarchiv nach einem geeigneten Datensatztyp ab, liest die geeigneten Datensätze aus, identifiziert, welche der geeigneten Datensätze mit einem angeforderten Datenbereich übereinstimmen, und berechnet die Aggregation, als würden die Datensätze live ankommen. Allgemein umfasst ein geeigneter Datensatz einen Datensatz, der ein oder mehrere Kriterien oder Bedingungen erfüllt. In einem Beispiel werden bestimmte Aggregation nicht häufig verwendet. Statt der Berechnung dieser bestimmten Aggregationen für jeden ankommenden Datensatz, berechnet in diesem Beispiel das System Aggregationen nach Bedarf für diese bestimmten Aggregationen, um Systemressourcen zu sparen und um die Verarbeitungsgeschwindigkeit zu erhöhen, relativ zu einer Verarbeitungsgeschwindigkeit zur Berechnung dieser Aggregationen in Echtzeit, wenn die Datensätze empfangen werden. Zusätzlich implementiert das System 60 eine Aggregation nach Bedarf für Diagramme, die auf einer kürzeren Zeitskala laufen (z.B. einige Tage laufen), einige der Logiken verwenden jedoch Aggregationen mit einer längeren Zeitskala (z.B. mehrere Monate in der Vergangenheit). Dadurch reduziert das System 60 eine Menge an kostspieligen kontinuierlichen Berechnungen von Aggregationen über längere Zeitskalen (relativ zu einer Menge von Berechnungen dieser Aggregationen in Echtzeit, wenn die Datensätze ankommen). Eine Aggregationsdefinition spezifiziert, ob die Aggregation eine Aggregation nach Bedarf oder eine nahezu Echtzeit-Aggregation ist. In einigen Beispielen spezifiziert ein Benutzer (z.B. in einer Benutzerschittstelle, wenn die Aggregation definiert wird), ob die Aggregation eine nahezu Echtzeit-Aggregation oder eine Aggregation nach Bedarf ist.
  • In einem Beispiel liefert das System 60 gemeinsam genutzte Regeln und Aggregationen (z.B. die Logik wird quer über mehrere Regeln in einem CEP-System gemeinsam genutzt). Durch die gemeinsame Nutzung von Regeln und Aggregationen erhöht das System 60 eine Geschwindigkeit, mit der es ankommende Datensätze verarbeiten kann, z.B. indem es nicht damit beschäftigt ist, dieselbe Aggregation mehrmals zu berechnen, relativ zu einer Geschwindigkeit der Verarbeitung ankommender Datensätze unabhängig von der gemeinsamen Nutzung von Regeln und Aggregationen. Beispielsweise berechnet das System 60 einmal Aggregationen, die von mehreren Regeln benötigt werden, und speichert Werte für diese Aggregationen in einem Datenarchiv oder Speicher-Cache. In einem anderen Beispiel speichert das System 60 die Logik eines Knotens (z.B. Entscheidungslogik in einem Knoten) in einem Datenarchiv. Diese Logik kann dann bei der Berechnung mehrerer anderer getrennt aufrechterhaltener Entscheidungen erneut verwendet werden, z.B. wie durch andere Knoten spezifiziert.
  • Mit Bezugnahme auf 9 liefert eine grafische Benutzerschnittstelle 900 (z.B. eine Editierschnittstelle) eine „Ziehen und Ablegen“-Schnittstelle zur Erzeugung eines Diagramms. In diesem Beispiel generiert das System die grafische Benutzerschnittstelle 900 (oder liefert Daten für die grafische Benutzerschnittstelle 900), um ein grafisches Programmierungsmodell zur Generierung von Diagrammen zu liefern, die eine Zeitserie von Tests oder Regeln beschreiben (z.B. eine Regel, um Datensätze zu verarbeiten, die zeitlich getrennt sind), und die visuell veranschaulichen, welche Abschnitte einer Regel oder eines Tests welche Datensätze verarbeiten. Unter Verwendung einer grafischen Benutzerschnittstelle 900 kann ein Benutzer einen Flussdiagrammstil einer Regel definieren.
  • Die grafische Benutzerschnittstelle 900 umfasst den Abschnitt 902, der Daten anzeigt, die zu dem Diagramm gehören, das erzeugt wird. Der Abschnitt 902 umfasst das Namensfeld 938 zum Spezifizieren eines Namens des Diagramms, ein Typenfeld 940 zum Spezifizieren eines Diagrammtyps und Sichtbarkeitssteuerungen 942 zum Spezifizieren, ob das Diagramm öffentlich oder privat sichtbar ist, ob das Diagramm ohne Warten ist und ob das Diagramm ein globales Diagramm ist. Der Abschnitt 902 umfasst auch ein Schlüsseltypenfeld 944 zum Spezifizieren eines Typs des Schlüssels für das Diagramm. Der Abschnitt 902 umfasst das _keyValue-Feld 946 zum Spezifizieren eines Abtastwerts eines Schlüssels, für den das Diagramm generiert oder konstruiert wird. Beispielsweise kann ein Benutzer das _keyValue-Feld 946 verwenden, um einen bestimmten Wert des Schlüssels auszuwählen und das Diagramm (während es aufgebaut wird) auf diesen Wert des Schlüssels zu testen, z.B. unter Verwendung einer Durchlaufsteuerung (wie der Durchlaufsteuerung 704 in 7). Der Abschnitt 902 umfasst auch das chartID-Feld 948 zum Spezifizieren eines ID für einen Fall des Diagramms, der für diesen bestimmten Wert des Schlüssels ausgeführt wird, welcher in dem _keyValue-Feld 946 spezifiziert wird. Der Abschnitt 902 umfasst auch das Argumentfeld 950, wenn es Argumente gibt.
  • Die grafische Benutzerschnittstelle 900 umfasst auch den Abschnitt 904, der auswählbare Knoten 906, 908, 910, 912, 914, 916, 918, 920, 921, 922, 924 und das Editierfenster 952 zum Erzeugen eines Flussdiagramms umfasst. In diesem Beispiel umfasst ein Editierfenster eine editierbare Anzeige einer Spezifikation zum Assoziieren eines oder mehrerer logischer Ausdrücke mit einem Knoten oder zum Editieren eines oder mehrerer logischer Ausdrücke, die mit einem Knoten oder der Spezifikation assoziiert sind. In diesem Beispiel generiert das System Daten für die grafische Benutzerschnittstelle 900.
  • Jeder dieser auswählbaren Knoten ist ausgelegt, in das Editierfenster 952 „gezogen und abgelegt“ zu werden, um einen Knoten zu dem Flussdiagramm hinzuzufügen. In diesem Beispiel umfasst das Editierfenster 952 Knoten 926, 928, 930, 932, 934, 936, von denen jeder zu dem Editierfenster 952 hinzugefügt wird, indem ein geeigneter auswählbarer Knoten ausgewählt wird, und dieser auswählbare Knoten in das Editierfenster 952 gezogen und abgelegt wird. In einem Beispiel umfasst ein Knoten einen oder mehrere editierbare Abschnitte zur Eingabe eines oder mehrerer logischer Ausdrücke. In einem anderen Beispiel bewirkt die Auswahl eines oder mehrerer Abschnitte eines Knotens die Anzeige einer grafischen Benutzerschnittstelle (z.B. eines Dialogfelds) zur Eingabe eines oder mehrerer logischer Ausdrücke, zum Editieren eines oder mehrerer logischer Ausdrücke, usw. In diesem Beispiel wird die grafische Benutzerschnittstelle (die auf der Basis der Auswahl eines oder mehrerer Abschnitte des Knotens angezeigt wird) als Überlappung mit der grafischen Benutzerschnittstelle 900 angezeigt. Auf der Basis des einen oder der mehreren logischen Ausdrücke, welche in der grafischen Benutzerschnittstelle spezifiziert sind (die auf der Basis der Auswahl eines oder mehrerer Abschnitte des Knotens angezeigt wird), umfasst ein Knoten den einen oder die mehreren logischen Ausdrücke und/oder eine Visualisierung dieses einen oder der mehreren logischen Ausdrücke. In einem anderen Beispiel zeigt der Knoten andere Daten an, die auf dem einen oder den mehreren logischen Ausdrücken basieren, z.B. durch Anzeigen einer Phrase, welche die eine oder mehreren logischen Darstellungen erläutert.
  • Beispielsweise wird der Knoten 936 zu dem Editierfenster 952 durch die Auswahl des auswählbaren Knotens 906 und Ziehen und Ablegen des auswählbaren Knotens 906 in die Editierebene 952 hinzugefügt, gemäß einer Ziehen-und-Ablegen-Querung, die von dem Pfeil 954 spezifiziert wird. Sobald der auswählbare Knoten 906 in dem Editierfenster 952 ist, kann ein Benutzer den auswählbaren Knoten 906 auslegen, um ihn in den Knoten zu transformieren, der von dem Diagramm verwendet wird, z.B. den Knoten 936. In diesem Beispiel umfasst der auswählbare Knoten 906 auswählbare Abschnitte 906a, 906b, 906c, von denen jeder einen Typ eines zu implementierenden Wartens spezifiziert. Der auswählbare Abschnitt 906a spezifiziert einen Wartetyp des Wartens auf einen bestimmten Datensatz. Der auswählbare Abschnitt 906b spezifiziert einen Wartetyp des Wartens auf irgendeinen Datensatz, der mindestens ein Kriterium erfüllt (unter einer Vielzahl verschiedener Kriterien). Der auswählbare Abschnitt 906c spezifiziert einen Wartetyp des Wartens auf mehrere Datensätze, die gemeinsam spezifizierte Kriterien erfüllen.
  • In diesem Beispiel wählt ein Benutzer den auswählbaren Abschnitt 906a aus, um zu spezifizieren, dass der Knoten 936 auf irgendeinen Datensatz wartet, der ein oder mehrere spezifizierte Kriterien erfüllt. Der auswählbare Knoten 906 umfasst auch andere editierbare Felder (nicht gezeigt) für einen Benutzer, um Daten einzugeben, die ein oder mehrere Kriterien spezifizieren, welche einen Typ eines Datensatzes anzeigen, auf den ein Warteknoten ausgelegt ist zu warten. In diesem Beispiel werden die benutzerspezifizierten Kriterien (eingegeben in den auswählbaren Knoten 906) in den Abschnitten 936a, 936b, 936c des Knotens 936 angezeigt. (In diesem Beispiel umfasst der Abschnitt 929d die Abschnitte 936a, 936b, 936c.) In diesem Beispiel fügt ein Benutzer alle Knoten 926, 928, 930, 932, 934, 936 zu dem Editierfenster 952 hinzu, um ein Diagramm zur Ausführung zu definieren. In dem Editierfenster 952 sind die Knoten 926, 928, 930, 932, 934, 936 editierbar, z.B. durch Editieren der Logik in einem Knoten. In einem Beispiel empfängt das System Daten, die eine oder mehrere Editierungen an einem oder mehreren logischen Ausdrücken eines oder mehrerer der Knoten 926, 928, 930, 932, 934, 936 anzeigen, und Daten, die spezifizieren, welcher der Knoten 926, 928, 930, 932, 934, 936 mit dem einen oder den mehreren empfangenen logischen Ausdrücken assoziiert ist.
  • In diesem Beispiel zeigt die Editorschnittstelle 900 ein Diagramm 951 mit den Knoten 926, 928, 930, 932, 934, 936 und den Verbindungen 927a bis 927e an. Die Editorschnittstelle 900 umfasst die Abschnitte 929a bis 929d zum Eingeben oder Editieren eines oder mehrerer logischer Ausdrücke in Bezug auf einen oder mehrere der Knoten 926, 928, 930, 932, 934, 936. Beispielsweise umfasst die Editorschnittstelle 900 den Abschnitt 929a zum Eingeben oder Editieren eines oder mehrerer logischer Ausdrücke in Bezug auf den Knoten 928. In einer Variation sind der eine oder die mehreren Abschnitte zum Eingeben oder Editieren der logischen Ausdrücke außerhalb der Knoten angeordnet, in der Nähe der Knoten angeordnet, neben den Knoten angeordnet, bei den Knoten angeordnet, werden in einer anderen Benutzerschnittstelle angezeigt (z.B. nach der Auswahl und/oder dem Klicken auf einen Knoten), usw. In diesem Beispiel entsprechen ein oder mehrere der Knoten 926, 928, 930, 932, 934, 936 einem bestimmten Zustand der Zustandsmaschine. Ein logischer Ausdruck (z.B. „Start Coworker Chart: CheckElectricStatements“, und „call SendSMS_DailyLimit, Phone: Account Details.Phone, Msg: „Win a new phone! The first 100 people meeting the criteria at YourBank.com/raffle will be entered in a special raffle“) repräsentiert mindestens eine teilweise Verarbeitung eines Datensatzes, wenn sich die Zustandsmaschine in einem bestimmten Zustand befindet. Insbesondere repräsentiert der logische Ausdruck, wie der Datensatz verarbeitet wird (z.B. welche Operationen vorgenommen werden), wenn sich die Zustandsmaschine in einem bestimmten Zustand befindet.
  • In diesem Beispiel repräsentiert eine Verbindung (z.B. eine der Verbindungen 927a bis 927d) zwischen einem der Knoten und einem anderen der Knoten einen Übergang der Zustandsmaschine von einem Zustand in einen anderen Zustand. In diesem Beispiel transformiert das System 11 (2) den einen oder die mehreren logischen Ausdrücke und das Diagramm 951 in ausführbare Logik zur Implementierung einer Zustandsmaschine, um, wenn Datensätze intermittierend empfangen werden, ein oder mehrere Felder in den Datensätzen zu evaluieren, um einen Wert eines Schlüssels zu erzeugen. Beispielsweise konkateniert das System 11 Werte eines Felds miteinander, um einen Wert eines Schlüssels zu erzeugen, modifiziert ein Format eines Werts eines Felds, um einen Wert eines Schlüssels zu erzeugen, ergänzt Daten auf einen Wert eines Felds, um einen Wert eines Schlüssels zu erzeugen, wählt einen Wert eines Felds aus, um einen Wert eines Schlüssels zu erzeugen, usw. Für jeden Wert des Schlüssels implementiert das System 11 die Zustandsmaschine, um einen oder mehrere erste Datensätze zu verarbeiten, die ein oder mehrere Felder umfassen, auf denen der Wert des Schlüssels basiert, wobei die Verarbeitung gemäß einem oder mehreren logischen Ausdrücken erfolgt, die mit einem oder mehreren Knoten in Zusammenhang stehen, welche einem aktuellen Zustand der Zustandsmaschine entsprechen, in Bezug auf diesen Wert des Schlüssels. Wenn sich beispielsweise die Zustandsmaschine in einem Zustand befindet, der dem Knoten 928 entspricht, wendet das System auf einen empfangenen Datensatz einen oder mehrere Abschnitte ausführbarer Logik entsprechend (oder basierend auf) dem logischen Ausdruck an (d.h. „call SendSMS_DailyLimit, Phone: Account Details.Phone, Msg: „Win a new phone! The first 100 people meeting the criteria at YourBank.com/raffle will be entered in a special raffle“), der sich auf den Knoten bezieht. Die Zustandsmaschine, die aus den Knoten 926, 928, 930, 932, 934, 936, den Verbindungen 927a bis 927e und logischen Ausdrücken generiert wird, geht auch, gemäß einer Verbindung des Diagramms 951, in einen anderen Zustand über, um einen oder mehrere zweite Datensätze der intermittierend empfangenen Datensätze zu verarbeiten. In diesem Beispiel umfassen der eine oder die mehreren zweiten Datensätze das eine oder die mehreren Felder, auf denen der Wert des Schlüssels basiert, und werden nach dem einen oder den mehreren ersten Datensätzen empfangen.
  • Mit Bezugnahme auf 10 umfasst die grafische Benutzerschnittstelle 1000 den Abschnitt 1032 zum Anzeigen des Diagramms 1034 und den Abschnitt 1002 zum Anzeigen von Details des Testens des Diagramms 1034, z.B. mit einem Satz von Datensätzen, die zu einem bestimmten Wert eines Schlüssels gehören, und zum Anzeigen von Steuerungen für das Testen des Diagramms 1034. Der Abschnitt 1002 umfasst die Auswahlsteuerung 1004 zur Auswahl eines Namens eines Diagramms, das beim Testen zu verwenden ist. Der Abschnitt 1002 umfasst auch die Auswahlsteuerung 1006 zur Auswahl eines Satzes von Testdaten, die beim Testen des Diagramms 1034 zu verwenden sind. In diesem Beispiel umfasst der Satz von Testdaten eine Sequenz von Datensätzen (z.B. die „campaign sandbox data records“), die mit einem bestimmten Wert eines Schlüssels assoziiert sind, und die zum Testen verwendet werden. Die Datensätze in dieser Sequenz von Datensätzen werden hier als Testdatensätze bezeichnet. In einem Beispiel umfassen die Testdatensätze Datensätze, die zuvor von dem System empfangen wurden. In einem anderen Beispiel basieren die Testdatensätze auf Datensätzen, die von dem System empfangen werden, z.B. durch Verschleiern oder Modifizieren von Inhalt empfangener Datensätze, um die Testdatensätze zu generieren. In diesem Beispiel ist der Schlüssel für das Diagramm 1034 ein Konto-ID. Die Datensätze, die von der Auswahlsteuerung 1006 spezifiziert werden, sind Datensätze, die mit einem Konto-ID „10000000117“ assoziiert sind, wie im Abschnitt 1028 gezeigt.
  • Der Abschnitt 1002 umfasst auch eine Rücklaufsteuerung 1008, deren Auswahl das System anweist, das Testen „zurücklaufen“ zu lassen, z.B. durch Zurückkehren, um einen früheren Knoten zu testen. Beispielsweise weist die Auswahl der Rücklaufsteuerung 1008 das System an, zum Testen eines Knotens zurückzukehren, der sich unmittelbar vor einem aktuellen Knoten befindet, welcher getestet wird. Der Abschnitt 1002 umfasst auch eine Rückwärtsdurchlaufsteuerung 1010, deren Auswahl das System anweist, zum Testen des Diagramms 1034 mit einem zuvor getesteten Datensatz zurückzukehren. Der Abschnitt 1002 umfasst auch eine Laufsteuerung 1012, deren Auswahl das System anweist, das Testen des Diagramms 1034 mit Datensätzen zu starten, die von der Auswahlsteuerung 1006 spezifiziert werden, z.B. durch Anwenden des Diagramms 1034 auf diese Datensätze. Der Abschnitt 1002 umfasst eine Vorwärtsdurchlaufsteuerung 1014, deren Auswahl das System anweist, das Diagramm 1034 mit dem nächsten Datensatz zu testen, der in den Datensätzen enthalten ist, die getestet werden. In diesem Beispiel umfassen die Datensätze eine Sequenz von Datensätzen. Als solche bewirkt die Auswahl der Vorwärtsdurchlaufsteuerung 1014, dass das Diagramm 1034 auf den nächsten Datensatz in der Sequenz zum Testen angewendet wird. Der Abschnitt 1002 umfasst die Vorwärtsdurchlaufsteuerung 1016, deren Auswahl das System anweist, zum Testen des nächsten Knotens in dem Diagramm 1034 weiterzugehen. Der Abschnitt 1002 umfasst auch eine Zeitskala 1018 zur Darstellung des Fortschritts des Testens des Diagramms 1034.
  • Der Abschnitt 1002 umfasst die Abschnitte 1020, 1022, 1024, 1026, 1028, 1030. In diesem Beispiel zeigt der Abschnitt 1020 aktuell externe Datensatzdaten an, die einen externen Datensatz anzeigen, der aktuell von dem Diagramm 1034 verarbeitet wird. Hier im Nachstehenden wird der Abschnitt 1020 als aktueller externer Datensatzabschnitt 1020 bezeichnet. In diesem Beispiel wird der externe Datensatz, der aktuell verarbeitet wird, in einer Aktivitätsstrom- („AS-“) Warteschlange empfangen (z.B. einer Warteschlange, die AS-externe Datensätze zur Verarbeitung durch das Diagramm 1034 subskribiert), und ist mit einem Konto-ID 10000000117 assoziiert. Zusätzlich ist der externe Datensatz ein Textnachricht-gesendet-Datensatz, der eine Textnachricht umfasst. Der Abschnitt 1022 zeigt an, welche Ausgabedatensätze, so vorhanden, ausgeführt oder verarbeitet werden. Der Abschnitt 1024 zeigt an, welche Variablen (z.B. Variablen, die mit dem getesteten Datensatz oder einem ersten von Datenelementen assoziiert sind) von dem Diagramm 1034 verwendet werden, und assoziierte Werte für die Variablen. Der Abschnitt 1026 spezifiziert Aggregationen, die das System berechnet, und die in dem Diagramm 1034 verwendet werden. In diesem Beispiel berechnet das System eine Aggregation von „gesamte Tests in diesem Monat“. Der Abschnitt 1028 zeigt Referenzdaten an, die von dem Diagramm 1034 verwendet werden. Die Referenzdaten können mit Ergebnisdaten verglichen werden, die durch die Ausführung des Diagramms 1034 ausgegeben werden, um irgendwelche potentiellen Abweichungen zwischen diesen zu identifizieren. Der Abschnitt 1030 zeigt Steuerpunkte an, die von dem Diagramm 1034 verwendet werden.
  • Das Diagramm 1034 umfasst die Knoten 1036, 1038, 1040, 1042, 1044, 1048, 1050, 1052 und den Status-Indikator 1046, um zu spezifizieren, welcher Knoten des Diagramms 1034 (oder welcher Abschnitt ausführbarer Logik) aktuell getestet wird. In diesem Beispiel testet das System aktuell den Knoten 1044, wie durch den Status-Indikator 1046 spezifiziert, der in der Nähe des Knotens 1044 ist. Das System testet den Knoten 1044 mit dem Datensatz, der in dem aktuellen externen Datensatzabschnitt 1020 repräsentiert ist. In diesem Beispiel umfasst der Knoten 1044 einen Entscheidungsknoten und umfasst (oder zeigt an) einen logischen Ausdruck, der auf der Aggregation basiert, die in dem Abschnitt 1026 repräsentiert ist, und den Steuerpunkt, der in dem Abschnitt 1030 repräsentiert ist. Die Auswahl der Rücklaufsteuerung 1008 bewirkt, dass das System zum Testen des Knotens 1040 mit einem oder mehreren zuvor verarbeiteten Datensätzen zurückkehrt. Die Auswahl der Vorwärtsknotensteuerung 1016 bewirkt, dass das System den Knoten 1050 oder Knoten 1048 und verwandte Datensätze testet. Durch die Steuerungen 1008, 1016 kann ein Benutzer spezifizieren, welche Knoten des Diagramms 1034 getestet werden.
  • Die Auswahl der Rückdurchlaufsteuerung 1010 bewirkt, dass das System durch die Datensätze zurückläuft (die mit einem bestimmten Wert des Schlüssels assoziiert sind), und einen früheren Datensatz testet (in einer Sequenz von Datensätzen, die getestet werden). Die Auswahl der Vorwärtsdurchlaufsteuerung 1014 bewirkt, dass das System vorwärts durch die Datensätze läuft und einen nächsten Datensatz in der Sequenz testet (z.B. durch die Verarbeitung eines nächsten Datensatzes mit einem oder mehreren geeigneten Knoten). Unter Verwendung der Steuerungen 1008 und 1014 kann ein Benutzer die Datensätze durchlaufen, um zu identifizieren, welche Knoten auf welche Datensätze angewendet werden. Wenn der Benutzer die Datensätze durchläuft, werden Ergebnisse der Verarbeitung eines bestimmten Datensatzes mit dem Diagramm 1034 mit dem Diagramm 1034 angezeigt, z.B. in dem Abschnitt 1002. Beispielsweise können die Ergebnisse umfassen: Generieren eines Ausgabedatensatzes (für den Daten in dem Abschnitt 1022 angezeigt werden), Berechnen von Aggregationen (deren Ergebnisse in dem Abschnitt 1026 angezeigt werden, Einstellen von Werten für Variablen (wie in dem Abschnitt 1024 angezeigt, z.B. Variable, die mit dem getesteten Datensatz oder dem ersten von Datenelementen assoziiert ist), usw. Der Abschnitt 1032 zeigt auch ein Ergebnis der Verarbeitung eines Datensatzes an, z.B. durch Anzeigen des Status-Indikators 1046, der repräsentiert, ob die Verarbeitung eines Datensatzes zu einer Änderung eines aktuellen Knotens führt.
  • In diesem Beispiel ermöglicht es der Status-Indikator 1046 einem Benutzer, das Diagramm 1034 zu testen, indem eine visuelle Indikation geliefert wird, welche Knoten (oder welche ausführbare Logik) ausgeführt werden, und wie (z.B. in welcher Reihenfolge, mit welcher ausführbaren Logik und/oder Rendern welcher Ergebnisdaten) die Datensätze verarbeitet werden. Die grafische Benutzerschnittstelle 1000 liefert Indikatoren des aktuell verarbeiteten Datenelements oder Datensatzes, der ausführbaren Logik, die aktuell auf das Datenelement oder den Datensatz angewendet wird, und/oder der Ergebnisdaten, die durch die Anwendung der ausführbaren Logik auf das Datenelement oder den Datensatz gerendert werden. Die Ergebnis können dadurch als Ausgang der Verarbeitung des Datenelements oder Datensatzes gemäß den Programminstruktionen gerendert werden, die in der angewendeten ausführbaren Logik spezifiziert sind. Das eine oder die mehreren Rückkopplungsmittel, die hier beschrieben werden, unterstützen direkt den Benutzer im geeigneten Betrieb des zugrundeliegenden Systems oder bei der Beurteilung, ob das zugrundeliegende System geeignet betrieben wird.
  • Beispielsweise kann eine Benutzerauswahl (1006) des ersten der Datenelemente des Stroms empfangen werden, eine Anzeige einer Indikation des ersten der Datenelemente des Stroms, der aktuell von dem Datenverarbeitungssystem verarbeitet wird, kann bewirkt werden, und eine Anzeige einer Indikation des einen oder der mehreren Abschnitte der ausführbaren Logik, die aktuell auf das erste der Datenelemente angewendet wird, um die Ergebnisdaten zu erhalten, kann bewirkt werden.
  • Beispielsweise kann der Abschnitt der Ergebnisdaten mit vorherbestimmten Referenzdaten (1022 oder 1028) verglichen werden. Es kann bestimmt werden, ob eine Abweichung zwischen dem Abschnitt der Ergebnisdaten und den vorherbestimmten Referenzdaten vorliegt, oder ob eine solche Abweichung nicht vorliegt, und eine Indikation kann ausgegeben werden, ob der Abschnitt der Ergebnisdaten mit den vorherbestimmten Referenzdaten übereinstimmt, auf der Basis der Bestimmung, ob eine Abweichung zwischen dem Abschnitt der Ergebnisdaten und den vorherbestimmten Referenzdaten vorliegt, oder ob eine solche Abweichung nicht vorliegt.
  • Beispielsweise kann das erste der Datenelemente des Stroms, der aktuell von dem Datenverarbeitungssystem verarbeitet wird, mit einem vorherbestimmten Referenzdatenelement (1006 oder 1028) verglichen werden, es kann bestimmt werden, ob eine Abweichung zwischen dem ersten der Datenelemente des Stroms, der aktuell verarbeitet wird, und dem vorherbestimmten Referenzdatenelement vorliegt, oder ob eine solche Abweichung nicht vorliegt, und eine Indikation kann ausgegeben werden, ob das erste der Datenelemente des Stroms, der aktuell verarbeitet wird, mit dem vorherbestimmten Referenzdatenelement übereinstimmt, auf der Basis der Bestimmung, ob eine Abweichung zwischen dem ersten der Datenelemente des Stroms, der aktuell verarbeitet wird, und dem vorherbestimmten Referenzdatenelement vorliegt, oder ob eine solche Abweichung nicht vorliegt.
  • Beispielsweise können der eine oder die mehreren Abschnitte der ausführbaren Logik, die aktuell auf das erste der Datenelemente angewendet werden, um die Ergebnisdaten zu erhalten, mit einer vorherbestimmten ausführbaren Referenzlogik verglichen werden; es kann bestimmt werden, ob eine Abweichung zwischen dem einen oder den mehreren Abschnitten der ausführbaren Logik, die aktuell auf das erste der Datenelemente angewendet wird, und der vorherbestimmten ausführbaren Referenzlogik vorliegt, oder ob eine solche Abweichung nicht vorliegt; und eine Indikation kann ausgegeben werden, ob der eine oder die mehreren Abschnitte der ausführbaren Logik, die aktuell auf das erste der Datenelemente angewendet werden, um die Ergebnisdaten zu erhalten, mit der vorherbestimmten ausführbaren Referenzlogik übereinstimmt, auf der Basis der Bestimmung, ob eine Abweichung zwischen dem einen oder den mehreren Abschnitten der ausführbaren Logik, die aktuell auf das erste der Datenelemente angewendet wird, und der vorherbestimmten ausführbaren Referenzlogik vorliegt, oder ob eine solche Abweichung nicht vorliegt.
  • Falls der Ausdruck „Abweichung“ hier verwendet wird, kann eine Abweichung innerhalb eines bestimmten Toleranzrahmens akzeptiert werden, um eine Konformität oder Übereinstimmung mit der jeweiligen Referenz zu bestimmen. Alternativ dazu kann eine genaue Übereinstimmung mit der jeweiligen Referenz erforderlich sein, um eine Konformität oder Übereinstimmung mit der jeweiligen Referenz zu bestimmen.
  • Wenn beispielsweise der Status-Indikator 1046 nie mit einem bestimmten Knoten assoziiert wird, wird dann der Benutzer auf die Tatsache aufmerksam gemacht, dass der Knoten logisch inkonsistente Ausdrücke umfassen kann oder mit Kriterien assoziiert sein kann, die verhindern, dass der Datensatz des Knotens ausgeführt wird. Zusätzlich spezifiziert der Status-Indikator 1046, wie die Datensätze durch das Flussdiagramm 1034 verarbeitet werden. Wenn in diesem Beispiel ein Benutzer erwartet, dass die Datensätze in einer Weise verarbeitet werden (z.B. durch Queren eines jeweiligen Wegs durch einen Graphen), der Status-Indikator 1046 jedoch spezifiziert, dass die Datensätze in einer anderen Weise verarbeitet werden, kann der Benutzer einen oder mehrere Knoten in dem Diagramm 1034 modifizieren, oder kann den logischen Ausdruck modifizieren, der mit einem Knoten assoziiert ist (z.B. in der ausführbaren Logik), um eine gewünschte Weise der Verarbeitung von Datensätzen durch das Diagramm 1034 zu erzielen. Zusammenfassend, um den Benutzer beim geeigneten Betreiben des zugrundeliegenden Systems zu unterstützen, wird eine Rückkopplung geliefert, z.B. durch die Abschnitte 1022, 1024, 1026, 1028, 1030 und den Indikator 1046, ob (i) die korrekte ausführbare Logik (ii) korrekt angewendet wurde auf (iii) das korrekte Datenelement oder den korrekten Datensatz.
  • Mit Bezugnahme auf 11 führt das System den Prozess 1100 zur Verarbeitung von Datenelementen (z.B. Datensätzen) eines Stroms von Datenelementen gemäß einer Spezifikation aus, die mit einem Schlüssel assoziiert ist. Ein Datenelement ist mit einem Wert des Schlüssels assoziiert, z.B. durch Inhalt, der in dem Datenelement enthalten ist, das in einem Datenarchiv mit dem Wert des Schlüssels assoziiert ist. In diesem Beispiel hält das System Zustände der Spezifikation für jeweilige Werte des Schlüssels aufrecht. Die Spezifikation repräsentiert ausführbare Logik und wird von dem System in einem Datenspeichersystem gespeichert.
  • Im Betrieb greift das System (1102) auf die Spezifikation zu, welche die ausführbare Logik repräsentiert. In diesem Beispiel spezifiziert ein Zustand der Spezifikation für einen bestimmten Wert des Schlüssels einen oder mehrere Abschnitte der ausführbaren Logik, die in diesem Zustand ausführbar sind. Das System empfängt (1104), über eine Eingabevorrichtung oder einen Eingabeport, Datenelemente eines Datenstroms, z.B. Datenelemente über eine Netzverbindung. Für ein erstes der Datenelement des Stroms identifiziert (1106) das System einen ersten Zustand der Spezifikation für einen Wert des Schlüssels, der mit diesem ersten der Datenelemente assoziiert ist. Das System verarbeitet (1108) das erste der Datenelemente gemäß einem oder mehreren Abschnitten ausführbarer Logik, die in der Spezifikation als mit dem ersten Zustand assoziiert spezifiziert sind. Das System bewirkt (1110) eine Anzeige einer oder mehrerer Abschnitte der Spezifikation, z.B. in einer grafischen Benutzerschnittstelle. Das System wendet (1112) den einen oder die mehreren Abschnitte der ausführbaren Logik auf das erste der Datenelemente an, um Ergebnisdaten zu erhalten, z.B. einen oder mehrere Abschnitte der ausführbaren Logik, die unter Verwendung des ersten der Datenelemente als Eingabe für die ausführbare Logik ausgeführt werden, um zu erhalten, dass die Ergebnisdaten aus der ausführbaren Logik nach der Ausführung ausgeben werden. Das System bewirkt (1114) die Anzeige mindestens eines Abschnitts der Ergebnisdaten, wobei mindestens einer von dem einen oder den mehreren Abschnitten der angezeigt wird, z.B. durch Anzeigen der Ergebnisdaten neben einem Knoten in der Spezifikation, durch Anzeigen der Ergebnisdaten in einem Abschnitt der grafischen Benutzerschnittstelle zum Anzeigen von Ergebnissen (wobei ein anderer Abschnitt der grafischen Benutzerschnittstelle einen oder mehrere Abschnitte der Spezifikation anzeigt), usw. Das System bewirkt auch, dass die Spezifikation, in Bezug auf den Wert des Schlüssels (z.B. nur in Bezug auf diesen Wert des Schlüssels) für das erste der Datenelemente von dem ersten Zustand in einen zweiten Zustand übergeht, z.B. durch Aktualisieren eines Abschnitts des speicherresidenten Datenrasters, z.B. einer Datenstruktur, die in einem flüchtigen Speicher gespeichert ist (zum Speichern eines Zustands für diesen Wert des Schlüssels), mit Daten, die eine aktuelle Position des Diagramms anzeigen, in Bezug auf diesen Wert des Schlüssels. Durch die Verwendung des speicherresidenten Datenrasters wird eine Verarbeitungsgeschwindigkeit des Systems erhöht, relativ zu einer Verarbeitungsgeschwindigkeit des Systems, wenn die Daten in elektromechanischen Massenspeichermedien, wie Festplatten, gespeichert werden. Durch die Verwendung des speicherresidenten Datenrasters schreibt das System Daten rascher in den, und liest Daten rascher aus dem, Speicher als beim Schreiben und Lesen von Daten in/aus einer Festplatte. Zusätzlich liefert die Schlüssel/Wert-Datenstruktur des speicherresidenten Datenrasters schnellere Datenabrufzeiten, z.B. relativ zu Abrufzeiten mit relationalen Datenstrukturen (wie z.B. Ketten und gerichteten Graphen). Allgemein umfasst eine Schlüssel-Wert-Struktur einen Datenstruktur mit Anordnungen, wobei eine Anordnung einen Schlüssel und einen Wert dieses Schlüssels (oder einen Hash-Wert des Schlüssels) umfasst.
  • Mit Bezugnahme auf 12 implementiert das System den Prozess 1200 bei der Verarbeitung von Datenelementen eines Stroms von Datenelementen gemäß einer Spezifikation, die mit einem Schlüssel assoziiert ist. In diesem Beispiel ist ein Datenelement mit einem Wert des Schlüssels assoziiert. Das System hält Zustände der Spezifikation für jeweilige Werte des Schlüssels aufrecht. Zusätzlich repräsentiert die Spezifikation ausführbare Logik, die in einem Datenspeichersystem gespeichert ist.
  • Im Betrieb greift (1202) das System auf die Spezifikation zu, welche die ausführbare Logik repräsentiert. In diesem Beispiel spezifiziert ein Zustand der Spezifikation für einen bestimmten Wert des Schlüssels einen oder mehrere Abschnitte der ausführbaren Logik, die in diesem Zustand ausführbar sind. Das System empfängt (1204), über eine Eingabevorrichtung oder einen Eingabeport, Datenelemente des Datenstroms. Für ein erstes der Datenelemente des Stroms identifiziert (1206) das System einen Wert des Schlüssels, der mit dem ersten der Datenelemente assoziiert ist, z.B. auf der Basis von Inhalten des Datensatzes oder auf der Basis eines Werts, der in dem Datensatz enthalten ist, wie im Vorstehenden beschrieben. Das System identifiziert (1208) auch, dass die Spezifikation mit einem Wartezustand für diesen Wert des Schlüssels assoziiert ist. In dem Wartezustand wartet die ausführbare Logik auf ein oder mehrere Datenelemente, die mit diesem Wert des Schlüssels assoziiert sind, und die zeitlich von einem oder mehreren anderen Datenelementen getrennt sind, welche vor dem einen oder den mehreren Datenelementen in dem Strom angeordnet sind. In diesem Beispiel identifiziert das System, dass sich die Spezifikation in einem Wartezustand befindet, durch Nachschlagen (z.B. in einem speicherresidenten Datenraster) von Zustandsdaten, die mit dem Wert des Schlüssels assoziiert sind. In diesem Beispiel spezifizieren die Zustandsdaten, dass ein aktueller Knoten ein Warteknoten ist, oder spezifizieren auf andere Weise, dass ein aktueller Zustand ein Wartezustand ist.
  • Das System verarbeitet (1210) das erste der Datenelemente gemäß einem oder mehreren Abschnitten ausführbarer Logik, die in der Spezifikation als mit dem Wartezustand assoziiert repräsentiert sind. Das System bewirkt (1212) eine Anzeige mindestens eines Abschnitts von Daten (z.B. eines Status-Indikators, von Daten, die einen Ausgabedatensatz anzeigen, usw.), die ein Ergebnis der Verarbeitung des ersten der Datenelemente gemäß einem oder mehreren Abschnitten ausführbarer Logik anzeigen, welche mit dem Wartezustand assoziiert sind.
  • Mit Bezugnahme auf 13 implementiert das System den Prozess 1300, um Datenelemente eines Datenstroms gemäß einer Spezifikation zu verarbeiten, die mit einem Schlüssel assoziiert ist, und die ausführbare Logik repräsentiert. In diesem Beispiel ist ein Datenelement mit einem Wert des Schlüssels assoziiert. Das System hält Zustände der Spezifikation für jeweilige Werte des Schlüssels aufrecht.
  • Im Betrieb greift (1302) das System auf die Spezifikation zu, welche die ausführbare Logik repräsentiert. In diesem Beispiel spezifiziert ein Zustand der Spezifikation für einen bestimmten Wert des Schlüssels einen oder mehrere Abschnitte der ausführbaren Logik, die in diesem Zustand ausführbar sind. In diesem Beispiel umfasst die Spezifikation logische Ausdrücke, Knoten und eine oder mehrere Verbindungen. Erste Knoten (z.B. Knoten 2a, 2b, 2c in 1A) repräsentieren einen ersten Zustand der Spezifikation (oder der ausführbaren Logik), in Bezug auf einen Wert des Schlüssels, wobei ein erster Abschnitt der ausführbaren Logik an einem ersten der Datenelemente ausgeführt werden kann, das mit diesem Wert des Schlüssels assoziiert ist. Mindestens einer der ersten Knoten umfasst eine erste Visualisierung, die auf einem oder mehreren ersten logischen Ausdrücken basiert, welche mindestens teilweise dem ersten Abschnitt der ausführbaren Logik entsprechen (z.B. logische Ausdrücke in dem Abschnitt 120b von 4).
  • Einer oder mehrere zweite Knoten (z.B. Knoten 2d, 2e, 2f) repräsentieren einen zweiten Zustand der Spezifikation (oder der ausführbaren Logik), in Bezug auf den Wert des Schlüssels, wobei der zweite Abschnitt der ausführbaren Logik an einem zweiten der Datenelemente ausgeführt werden kann, das mit dem Wert des Schlüssels assoziiert ist, und das nach dem ersten der Datenelemente in dem Strom angeordnet ist. In diesem Beispiel repräsentiert eine Verbindung (z.B. Verbindung 2i in 1A) zwischen einem der ersten Knoten und einem von dem einen oder den mehreren zweiten Knoten einen Übergang der Spezifikation (oder der ausführbaren Logik), in Bezug auf diesen Wert des Schlüssels, von dem ersten Zustand in den zweiten Zustand.
  • Das System transformiert (1304) die logischen Ausdrücke in der Spezifikation in ausführbare Logik. Beispielsweise umfasst ein Datenstromgraph oder ein Diagramm Scheitelpunkte (die Datenverarbeitungskomponenten oder Datensätze repräsentieren), die durch gerichtete Verbindungen (die Flüsse von Arbeitselemente, d.h. Daten, repräsentieren) zwischen den Scheitelpunkten verbunden sind. Ein System zur Ausführung solcher Datenstromgraphen ist im US-Patent 5,966,072 mit dem Titel „Executing Computations Expressed as Graphs“ beschrieben, dessen gesamter Inhalt hier durch Bezugnahme eingeschlossen wird. Datenstromgraphen, die gemäß diesem System erstellt werden, liefern Verfahren, um Daten in und aus einzelnen Prozessen zu bringen, die von Graphenkomponenten repräsentiert werden, um Daten zwischen den Prozessen zu bewegen, und um eine Laufreihenfolge für die Prozesse zu definieren. Dieses System umfasst Algorithmen, die Interprozess-Kommunikationsverfahren aus beliebigen verfügbaren Verfahren auswählen (beispielsweise können Kommunikationswege gemäß den Verbindungen des Graphen TCP/IP- oder UNIX-Domain Sockets verwenden, oder verwenden einen gemeinsam genutzten Speicher, um Daten zwischen den Prozessen hin- und herzuführen).
  • Für jeden Wert des Schlüssels kann der erste Abschnitt ausführbarer Logik, der von den ersten Knoten (z.B. Knoten 2a, 2b, 2c in 1A) repräsentiert wird, und der mit dem ersten Zustand assoziiert ist, an einem ersten Datenelement mit diesem Wert des Schlüssels ausgeführt werden, wenn ein Zustand für diesen Wert des Schlüssels den ersten Zustand umfasst. Die ausführbare Logik ist für den Übergang, der durch die Verbindung (z.B. Verbindung 2i in 1A) repräsentiert wird, von dem ersten Zustand in den zweiten Zustand ausgelegt, nach der Ausführung des ersten Abschnitts. Der zweite Abschnitt der ausführbaren Logik, der von dem einen oder den mehreren zweiten Knoten (z.B. Knoten 2d, 2e, 2f in 1A) repräsentiert wird, kann an einem zweiten Datenelement mit diesem Wert des Schlüssels ausgeführt werden, wenn der Zustand für diesen Wert des Schlüssels den zweiten Zustand umfasst. In diesem Beispiel empfängt (1306) das System Datenelemente eines Datenstroms. Für einen bestimmten Wert des Schlüssels identifiziert das System einen Zustand, der mit diesem Schlüssel assoziiert ist. In diesem Beispiel ist der Schlüssel mit einem ersten Zustand assoziiert, der die Knoten 2a, 2b, 2c umfasst. Das System schlägt auch eine aktuelle Position nach, um zu identifizieren, welcher der Knoten 2a, 2b, 2c ein aktueller Knoten ist. In diesem Beispiel ist der Knoten 2c ein aktueller Knoten.
  • Das System führt (1308) einen ersten Abschnitt der ausführbaren Logik an einem ersten Datenelement mit diesem Wert des Schlüssels aus, wenn ein Zustand für diesen Wert des Schlüssels einen ersten Zustand umfasst (z.B. wie von einer Datenstruktur für diesen Wert des Schlüssels in einem speicherresidenten Datenraster repräsentiert), der mit dem ersten Abschnitt assoziiert ist. In diesem Beispiel führt das System einen Abschnitt der ausführbaren Logik aus, der von dem Knoten 2c repräsentiert wird, da der Zustand für diesen Wert des Schlüssels der erste Zustand ist (der mit einem oder mehreren Abschnitten der ausführbaren Logik assoziiert ist, die durch den Knoten 2c repräsentiert werden), und eine aktuelle Position ist der Knoten 2c.
  • In einem Beispiel umfasst einer der zweiten Knoten einen Warteknoten, der einen Abschnitt der ausführbaren Logik repräsentiert, welcher ausgelegt ist, auf ein zweites der Datenelemente mit diesem Wert des Schlüssels zu warten. In diesem Beispiel repräsentiert ein anderer der zweiten Knoten (z.B. Sende-Knoten 2e in 1A) einen anderen Abschnitt der ausführbaren Logik, der ausgelegt ist, die Ausführung einer oder mehrerer Aktionen zu bewirken, z.B. wie das Senden einer Nachricht. In diesem Beispiel repräsentiert die Verbindung 2i einen Zustandsübergang der Spezifikation, in Bezug auf diesen Wert des Schlüssels, von dem ersten Zustand, in dem der erste Abschnitt ausführbar ist, in den zweiten Zustand, in dem die ausführbare Logik ausgelegt ist, auf das zweite der Datenelemente zu warten.
  • Mit Bezugnahme auf 14 implementiert das System den Prozess 1400 bei der Verarbeitung von Datenelementen eines Datenstroms gemäß einer Spezifikation, die mit einem Schlüssel assoziiert ist, und die ausführbare Logik zur Verarbeitung der Datenelemente repräsentiert. In diesem Beispiel ist ein Datenelement mit einem Wert des Schlüssels assoziiert. Das System hält Zustände (z.B. in einem speicherresidenten Datenraster) für eine Vielzahl von Werten des Schlüssels aufrecht.
  • Im Betrieb greift (1402) das System auf die Spezifikation zu. Ein Zustand der Spezifikation repräsentiert einen oder mehrere Abschnitte der ausführbaren Logik, die in diesem Zustand ausführbar sind. Das System empfängt (1404) ein erstes Datenelement der Datenelemente. Die Datenelemente können ein Teil eines ankommenden Datenstroms sein, z.B. Datenelemente, die über eine Netzverbindung empfangen werden. Das erste Datenelement ist mit einem bestimmten Wert des Schlüssels assoziiert. Das System identifiziert (1406) einen ersten Zustand für den bestimmten Wert des Schlüssels. Das System verarbeitet (1408) das erste Datenelement gemäß (z.B. durch die Ausführung von) einem oder mehreren Abschnitten der ausführbaren Logik, die von der Spezifikation als in dem ersten Zustand ausführbar spezifiziert sind. Das System identifiziert (1410) einen Übergang, in Bezug auf den bestimmten Wert des Schlüssels, von dem ersten Zustand der Spezifikation in einen zweiten Zustand, in dem ein oder mehrere andere Abschnitte der ausführbaren Logik ausführbar sind. Das System empfängt (1412) ein intervenierendes Datenelement, das mit einem anderen Wert des Schlüssels assoziiert ist, der sich von dem bestimmten Wert des Schlüssels unterscheidet und nicht mit dem bestimmten Wert des Schlüssels assoziiert ist. Das System identifiziert (1414) einen gegebenen Zustand der Spezifikation, der mit dem anderen Wert des Schlüssels für das intervenierende Datenelement assoziiert ist. Das System verarbeitet (1416) das intervenierende Datenelement gemäß einem oder mehreren Abschnitten der ausführbaren Logik, die von der Spezifikation als in dem gegebenen Zustand ausführbar spezifiziert sind. Das System empfängt (1418) ein zweites Datenelement der Datenelemente, das später in dem Strom ist als das erste Datenelement und das intervenierende Datenelement, und das auch mit dem bestimmten Wert des Schlüssels assoziiert ist. Auf der Basis des Übergangs der Spezifikation in Bezug auf den bestimmten Wert des Schlüssels verarbeitet (1420) das System das zweite Datenelement gemäß einem oder mehreren Abschnitten der ausführbaren Logik, die von der Spezifikation als in dem zweiten Zustand ausführbar spezifiziert sind. Der eine oder die mehreren Abschnitte der ausführbaren Logik, die in den zweiten Zustand ausführbar sind, unterscheiden sich von dem einen oder den mehreren Abschnitten der ausführbaren Logik, die in dem ersten Zustand ausführbar sind. Beispielsweise unterscheiden sich der eine oder die mehreren Abschnitte der ausführbaren Logik, die in den zweiten Zustand ausführbar sind, und die durch die Knoten 2d, 2e, 2f (1A) repräsentiert werden, von dem einen oder den mehreren Abschnitten der ausführbaren Logik, die in dem ersten Zustand ausführbar sind, und die von den Knoten 2a, 2b, 2c (1A) repräsentiert werden.
  • Mit Bezugnahme auf 15 implementiert das System den Prozess 1500 zur Implementierung einer Zustandsmaschine, die ausgelegt ist, für jeden Wert eines Schlüssels Datensätze zu verarbeiten, die mit diesem Wert assoziiert sind. Im Betrieb zeigt (1502) das System, in einer oder mehreren Editorschnittstellen, (i) ein Diagramm mit Knoten und einer oder mehreren Verbindungen an, und (ii) einen oder mehrere Abschnitte zum Eingeben oder Editieren eines oder mehrerer logischer Ausdrücke in Bezug auf einen oder mehrere der Knoten. In diesem Beispiel entsprechen der eine oder die mehreren Knoten einem bestimmten Zustand der Zustandsmaschine. Beispielsweise repräsentiert ein Entscheidungsknoten einen bestimmten Zustand, in dem die ausführbare Logik eine Entscheidung implementiert. In einem anderen Beispiel repräsentieren ein Warteknoten und ein anderer Knoten, der eine oder mehrere Aktionen spezifiziert, die nach dem Warten vorzunehmen sind, einen anderen Zustand der Zustandsmaschine. In diesem Beispiel repräsentiert ein logischer Ausdruck mindestens eine teilweise Verarbeitung eines Datensatzes, wenn sich die Zustandsmaschine in dem bestimmten Zustand befindet. Es gibt verschiedene Typen logischer Ausdrücke, die z.B. Ausdrücke umfassen, welche Typen von Datensätzen spezifizieren, auf die das System warten sollte, und eine oder mehrere Aktionen, die bei der Detektion eines Datensatzes vorzunehmen sind, auf den das System wartet. In diesem Beispiel repräsentiert eine Verbindung zwischen einem der Knoten und einem anderen der Knoten einen Übergang der Zustandsmaschine von einem Zustand in einen anderen Zustand.
  • Das System transformiert (1504) den einen oder die mehreren logischen Ausdrücke und das Diagramm in ausführbare Logik zur Implementierung einer Zustandsmaschine. Auf der Basis der Ausführung der ausführbaren Logik zur Implementierung der Zustandsmaschine, und wenn die Datensätze intermittierend empfangen werden, evaluiert (1506) das System eines oder mehrere Felder in den Datensätzen, um Werte des Schlüssels zu identifizieren. Für jeden Wert des Schlüssels verarbeitet (1508) das System einen oder mehrere erste Datensätze, die ein oder mehrere Felder umfassen, auf denen der Wert des Schlüssels basiert, wobei die Verarbeitung mit einem oder mehreren logischen Ausdrücken übereinstimmt, die sich auf einen oder mehrere Knoten entsprechend einem aktuellen Zustand der Zustandsmaschine beziehen, in Bezug auf diesen Wert des Schlüssels. In einigen Beispielen nimmt das System diese Verarbeitung vor, wenn Datensätze intermittierend empfangen werden. Für jeden Wert des Schlüssels geht (1510) das System auch, gemäß einer Verbindung des Diagramms, in einen anderen Zustand über, um einen oder mehrere zweite Datensätze der intermittierend empfangenen Datensätze zu verarbeiten, wobei der eine oder die mehreren zweiten Datensätze das eine oder die mehreren Felder umfassen, auf denen der Wert des Schlüssels basiert, und wobei der eine oder die mehreren zweiten Datensätze nach dem einen oder den mehreren ersten Datensätzen empfangen werden. In einigen Beispielen nimmt das System diesen Übergang vor, während Datensätze intermittierend empfangen werden.
  • In einigen Beispielen sichert und speichert das System, in einem Datenarchiv, Daten, die einen Zustand der ausführbaren Logik anzeigen, für jeden Wert des Schlüssels. Wenn dann das System zusätzliche Datensätze detektiert, die mit demselben Wert des Schlüssels assoziiert sind, nimmt das System ein Nachschlagen in der Datenbank vor, um einen Zustand der ausführbaren Logik zu identifizieren, für diesen Wert des Schlüssels. Auf der Basis des Zustands der ausführbaren Logik für diesen Wert des Schlüssels bestimmt das System, ob eine weitere Verarbeitung an den Datensätze in diesem Zustand vorzunehmen ist, oder ob in einen neuen, nächsten Zustand überzugehen ist. Durch das Aufrechterhalten eines Zustands für jeden Wert des Schlüssels, anstelle der Ausführung der ausführbaren Logik für jeden Wert des Schlüssels, spart das System Systemressourcen (wie z.B. Speicher- und Verarbeitungsleistung). Sobald die ausführbare Logik in einen neuen Zustand für einen bestimmten Wert des Schlüssels übergeht, löscht das System zusätzlich den Wert des alten Zustands aus dem Speicher, wodurch die Gesamtspeichermenge reduziert wird, die für die Ausführung und Implementierung der Zustandsmaschine erforderlich ist.
  • Zusätzlich gestatten der eine oder die mehreren Abschnitte zum Eingeben oder Editieren eines oder mehrerer logischer Ausdrücke in Bezug auf einen oder mehrere der Knoten eine erhöhte Flexibilität beim Auslegen und Editieren einer Zustandsmaschine, wie z.B. einer verschlüsselten Zustandsmaschine, relativ zu der Flexibilität des Editierens einer Zustandsmaschine unabhängig von oder ohne die Abschnitte zum Eingeben oder Editie-ren. Anstelle einer extensiven Modellierung und Auslegung der verschiedenen Zustände und Beziehungen zwischen Zuständen vor dem Start der Zustandsmaschine, liefert die hier beschriebene Editierschnittstelle die Implementierung einer Zustandsmaschine, die ohne solche Aufgaben im Voraus gestartet werden kann, und wird stattdessen fliegend ausgelegt.
  • Unter Verwendung der hier beschriebenen Techniken liefert ein System ein grafisches Programmierungsmodell für eine Verarbeitung nahezu in Echtzeit von Datensätzen, die zeitlich getrennt sind. Diese Verarbeitung ist eine schlüsselbasierte Verarbeitung, da die Datensätze auf der Basis eines Schlüssels verarbeitet werden. In einem Beispiel werden die Datensätze, die mit einem bestimmten Wert für den Schlüssel assoziiert sind, analysiert und gemeinsam verarbeitet. Zusätzlich liefert das System ein zeitliches fokussiertes Testen durch die Anzeige von Ergebnisdaten, die Ergebnisse anzeigen, wobei die ausführbare Logik, die in einem Diagramm definiert ist, auf Datensätze angewendet wird, die von dem System empfangen werden. Diese Ergebnisdaten können in dem Diagramm angezeigt werden, wobei jedes Element der Ergebnisdaten neben einem Knoten in dem Diagramm angezeigt wird, für das die Ergebnisdaten generiert werden. Zusätzlich bietet das System dem Benutzer auch einen granuläreren Blick, indem es dem Benutzer gestattet wird, Testergebnisse für Werte eines Schlüssels für das Diagramm zu durchlaufen. In diesem Beispiel liefert das System, z.B. als Überlagerung des Diagramms, Ergebnisse der Ausführung der ausführbaren Logik an Datensätzen, die mit einem bestimmten Wert des Schlüssels assoziiert sind.
  • Die oben beschriebenen Techniken können unter Verwendung von Software zur Ausführung auf einem Computer implementiert werden. Beispielsweise bildet die Software Prozeduren in einem oder mehreren Computerprogrammen, die auf einem oder mehreren programmierten oder programmierbaren Computersystemen ausgeführt werden (die verschiedene Architekturen aufweisen können, wie verteilt, Client/Server oder Gitter), welche mindestens einen Prozessor, mindestens ein Datenspeichersystem (einschließlich füchtiger und nicht-flüchtiger Speicher und/oder Speicherelemente), mindestens eine Eingabevorrichtung oder einen Eingabeport und mindestens eine Ausgabevorrichtung oder einen Ausgabeport umfassen. Die Software kann ein oder mehreree Module eines Zielprogramms bilden, das beispielsweise andere Dienste in Bezug auf die Ausbildung und Auslegung von Diagrammen und Flussdiagrammen liefert. Die Knoten, Verbindungen und Elemente des Diagramms können als Datenstrukturen implementiert werden, die in einem computerlesaren Medium gespeichert werden, oder andere organisierte Daten, die mit einem in einem Datenarchiv gespeicherten Datenmodell konform sind.
  • Die hier beschriebenen Techniken können in digitalen elektronische Schaltungen implementiert werden, oder in Computer-Hardware, -Firmware, -Software oder in Kombinationen davon. Eine Vorrichtung kann in einem Computerprogrammprodukt implementiert werden, das greifbar verkörpert ist oder in einer maschinenlesbaren Speichervorrichtung gespeichert ist (z.B. einer nichttransitorischen maschinenlesbaren Speichervorrichtung, einer maschinenlesbaren Hardware-Speichervorrichtung usw.), zur Ausführung durch einen programmierbaren Prozessor; und Verfahrensaktionen können von einem programmierbaren Prozessor vorgenommen werden, der ein Programm mit Instruktionen ausführt, um Funktionen vorzunehmen, indem an Eingabedaten gearbeitet wird und ein Ausgang generiert wird. Die hier beschriebenen Ausführungsformen und andere Ausführungsformen der Ansprüche und hier beschriebenen Techniken können vorteilhaft in einem oder mehreren Computerprogrammen implementiert werden, die auf einem programmierbaren System ausgeführt werden können, das mindestens einen programmierbaren Prozessor umfasst, der gekoppelt ist, um Daten und Instruktionen von einem Datenspeichersystem zu empfangen, und Daten und Instruktionen zu diesem zu übertragen, mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung. Jedes Computerprogramm kann in einer prozeduralen oder objektorientierten Programmierhochsprache implementiert werden, oder in einer Assemblier- oder Maschinensprache, wenn gewünscht, und in jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Prozessoren, die für die Ausführung eines Computerprogramms geeignet sind, umfassen, als Beispiel, sowohl Universal- als auch Spezial-Mikroprozessoren und irgendeinen oder mehrere Prozessoren einer beliebigen Art eines digitalen Computers. Allgemein empfängt ein Prozessor Instruktionen und Daten von einem Nurlesespeicher oder einem Speicher mit wahlfreiem Zugriff oder beiden. Die essentiellen Elemente eines Computers sind ein Prozessor zur Ausführung von Instruktionen und eine oder mehrere Speichervorrichtungen zum Speichern von Instruktionen und Daten. Allgemein umfasst ein Computer auch eine oder mehrere Massenspeichervorrichtungen zum Speichern von Daten, oder ist operativ gekoppelt, um Daten von dieser zu empfangen oder zu dieser zu transferieren oder beides, z.B. magnetische, magnetooptische Platten oder optische Platten. Computerlesbare Medien zur Verkörperung von Computerprogramminstruktionen und Daten umfassen alle Formen nicht-flüchtiger Speicher, umfassend als Beispiel Halbleiter-Speichervorrichtungen, z.B. EPROM, EEPROM und Flash-Speichervorrichtungen; Magnetplatten, z.B. interne Festplatten oder entfernbare Platten, magnetooptische Platten, und CD ROM und DVD-ROM Disks. Der Prozessor und der Speicher können durch Spezial-Logikschaltungen ergänzt werden oder darin eingebaut sein. Beliebige der Obigen können durch ASICs (anwendungsspezifische integrierte Schaltungen) ergänzt werden oder darin eingeschlossen werden.
  • Um eine Interaktion mit einem Benutzer zu liefern, können Ausführungsformen auf einem Computer implementiert werden, der eine Anzeigevorrichtung aufweist, z.B. einen LCD- (Flüssigkristallanzeige-) Monitor, um dem Benutzer Informationen anzuzeigen, und eine Tastatur und eine Zeigervorrichtung, z.B. eine Maus oder einen Trackball, womit der Benutzer eine Eingabe in den Computer vornehmen kann. Auch andere Arten von Vorrichtungen können verwendet werden, um eine Interaktion mit einem Benutzer zu liefern; beispielsweise kann eine Rückkopplung, die dem Benutzer geliefert wird, eine beliebige Form einer sensorischen Rückkopplung sein, z.B. visuelle Rückkopplung, auditive Rückkopplung, oder taktile Rückkopplung, und eine Eingabe von dem Benutzer kann in einer beliebigen Form empfangen werden, einschließlich einer akustischen-, Sprach- oder taktilen Eingabe.
  • Ausführungsformen können in einem Rechnersystem implementiert werden, das eine Back End-Komponente umfasst, wie z.B. einen Datenserver, oder das eine Middleware-Komponente umfasst, z.B. einen Anwendungsserver, oder das eine Front End-Komponente umfasst, z.B. einen Client-Computer mit einer grafischen Benutzerschnittstelle oder einem Web-Browser, durch die ein Benutzer mit einer Implementierung von Ausführungsformen interagieren kann, oder irgendeine Kombination solcher Back End-, Middleware- oder Front End-Komponenten. Die Komponenten des Systems können miteinander durch eine beliebige Form oder ein Medium einer digitalen Kommunikation verbunden sein, z.B. ein Kommunikationsnetz. Beispiele von Kommunikationsnetzen umfassen ein lokales Netz (LAN) und ein Weitverkehrsnetz (WAN), z.B. das Internet.
  • Das System und das Verfahren oder Teile davon können das „World Wide Web“ (Web oder WWW) verwenden, das jene Ansammlung von Servern im Internet ist, die das Hypertext Transfer Protocol (HTTP) verwenden. HTTP ist ein bekanntes Anwendungsprotokoll, das Benutzern einen Zugang zu Ressourcen gestattet, die Informationen in verschiedenen Formaten sein können, wie Text, Grafik, Bilder, Ton, Video, Hypertext Markup Language (HTML), sowie Programme. Bei der Spezifikation einer Verbindung durch den Benutzer stellt der Client-Computer eine TCP/IP-Anforderung an einen Webserver und empfängt Informationen, die eine andere Webseite sein können, welche gemäß HTML formatiert ist. Benutzer können auch auf andere Seiten auf demselben oder anderen Servern zugreifen, indem sie Instruktionen auf dem Bildschirm folgen, bestimmte Daten eingeben, oder ausgewählte Symbole anklicken. Es ist auch anzumerken, dass ein beliebiger Typ einer Fachleuten bekannten Auswahlvorrichtung, wie Kontrollkästchen, Drop Down-Kästchen und dgl., für Ausführungsformen unter Verwendung von Webseiten verwendet werden können, um es einem Benutzer zu gestatten, Optionen für eine gegebene Komponente auszuwählen. Server laufen auf verschiedensten Plattformen, einschließlich UNIX Maschinen, obwohl andere Plattformen, wie Windows 2000/2003, Windows NT, Sun, Linux und Mactintosh auch verwendet werden können. Computerbenutzer können Informationen ansehen, die auf Servern oder Netzen auf dem Web verfügbar sind, durch die Verwendung von Browser-Software, wie Firefox, Netscape Navigator, Microsoft Internet Exploer oder Mosaic-Browser. Das Rechnersystem kann Clients und Server umfassen. Ein Client und Server sind allgemein voneinander entfernt und interagieren typischerweise durch ein Kommunikationsnetz. Die Beziehung von Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern laufen und eine Client-Server-Beziehung zueinander haben.
  • Andere Ausführungsformen liegen im Umfang und Grundgedanken der Beschreibung und der Ansprüche. Beispielsweise können, aufgrund der Beschaffenheit von Software, oben beschriebene Funktionen unter Verwendung von Software, Hardware, Firmware, Festverdrahtung oder Kombination irgendwelcher von diesen implementiert werden. Merkmale, die Funktionen implementieren, können auch physisch an verschiedenen Positionen angeordnet sein, einschließlich verteilt sein, so dass Abschnitte von Funktionen an verschiedenen physischen Orten implementiert werden. Die Verwendung des Ausdrucks „ein/e/r“ hier und in der gesamten Anmeldung wird nicht in einer einschränkenden Weise verwendet und soll daher eine mehrfache Beduetung oder eine Bedeutung von „ein/e/r oder mehrere“ für den Ausdruck „ein/e/r“ nicht ausschließen. Zusätzlich ist es klar, in dem Maß, in dem Priorität gegenüber einer provisorischen Patentanmeldung beansprucht wird, dass die provisorische Patentanmeldung nicht einschränkend ist, sondern Beispiele davon umfasst, wie die hier beschriebenen Techniken implementiert werden können.
  • Eine Reihe von Ausführungsformen der Erfindung wurde beschrieben. Dennoch ist es für gewöhnliche Fachleute klar, dass verschiedene Modifikationen vorgenommen werden können, ohne vom Grundgedanken und Umfang der Ansprüche und der hier beschriebenen Techniken abzuweichen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62340825 [0002]
    • US 15376129 [0002]
    • US 5966072 [0197]

Claims (20)

  1. Verfahren, welches von einem Datenverarbeitungssystem zur Verarbeitung von Datenelementen eines Stroms von Datenelementen gemäß einer Spezifikation implementiert wird, die mit einem Schlüssel assoziiert ist, wobei ein Datenelement mit einem Wert des Schlüssels assoziiert ist, wobei Zustände der Spezifikation für jeweilige Werte des Schlüssels aufrechterhalten werden, wobei die Spezifikation ausführbare Logik repräsentiert, die in einem Datenspeichersystem gespeichert ist, wobei das Verfahren umfasst: Zugreifen auf die Spezifikation, welche die ausführbare Logik repräsentiert, wobei ein Zustand der Spezifikation für einen bestimmten Wert des Schlüssels einen oder mehrere Abschnitte der ausführbaren Logik spezifiziert, die in diesem Zustand ausführbar sind; Empfangen, über eine Eingabevorrichtung oder einen Eingabeport, von Datenelementen eines Datenstroms; für ein erstes der Datenelemente des Stroms, Identifizieren eines ersten Zustands der Spezifikation für einen Wert des Schlüssels, der mit diesem ersten der Datenelemente assoziiert ist; Verarbeiten, durch das Datenverarbeitungssystem, des ersten der Datenelemente gemäß einem oder mehreren Abschnitten ausführbarer Logik, die in der Spezifikation als mit dem ersten Zustand assoziiert repräsentiert sind, wobei die Verarbeitung umfasst: Bewirken einer Anzeige eines oder mehrerer Abschnitte der Spezifikation; Anwenden des einen oder der mehreren Abschnitte der ausführbaren Logik auf das erste der Datenelemente, um Ergebnisdaten zu erhalten; Bewirken einer Anzeige mindestens eines Abschnitts der Ergebnisdaten mit mindestens einem von dem einen oder den mehreren angezeigten Abschnitten der Spezifikation; und Bewirken, dass die Spezifikation, in Bezug auf den Wert des Schlüssels für das erste der Datenelemente, von dem ersten Zustand in einen zweiten Zustand übergeht.
  2. Verfahren nach Anspruch 1, ferner umfassend: Ausführen der ausführbaren Logik.
  3. Verfahren nach Anspruch 1, wobei der eine oder die mehreren Abschnitte der ausführbaren Logik einen oder mehrere erste Abschnitte der ausführbaren Logik umfassen, wobei der eine oder die mehreren Abschnitte der Spezifikation einen ersten Abschnitt der Spezifikation umfassen, wobei die Ergebnisdaten erste Ergebnisinformationen umfassen, wobei das Verfahren umfasst: Ausführen der ausführbaren Logik; wenn die ausführbare Logik weiterhin ausgeführt wird, Empfangen eines zweiten der Datenelemente, das später in dem Strom ist als das erste der Datenelemente und auch mit dem Wert des Schlüssels assoziiert ist; auf der Basis des Übergangs von dem ersten Zustand in den zweiten Zustand, Verarbeiten des zweiten der Datenelemente gemäß einem oder mehreren zweiten Abschnitten der ausführbaren Logik, die mit dem zweiten Zustand assoziiert sind, wobei der eine oder die mehreren zweiten Abschnitte der ausführbaren Logik als zweiter Abschnitt der Spezifikation ausgedrückt werden; auf der Basis der Verarbeitung, Erhalten zweiter Ergebnisdaten, die ein oder mehrere Ergebnisse der Verarbeitung des zweiten der Datenelemente anzeigen; und Bewirken einer Anzeige mindestens eines Abschnitts der zweiten Ergebnisdaten mit dem zweiten Abschnitt der Spezifikation.
  4. Verfahren nach Anspruch 1, umfassend: Zugreifen auf Sätze von Elementen von Testdaten; und aus einem ausgewählten der Sätze, Simulieren eines Stroms von nahezu Echtzeit-Testdaten, die ein erstes Element von Testdaten aufweisen, das vor einem zweiten Element von Testdaten auftritt.
  5. Verfahren nach Anspruch 4, wobei das Empfangen des Stroms von Datenelementen ein Empfangen des simulierten Stroms umfasst.
  6. Verfahren nach Anspruch 1, umfassend: Testen eines Genauigkeitsgrads der Ausführung einer Regel, die durch die Spezifikation ausgedrückt wird, durch Anwenden des einen oder der mehreren Abschnitte der ausführbaren Logik auf das erste der Datenelemente.
  7. Verfahren nach Anspruch 6, wobei das Testen eines Genauigkeitsgrads der Ausführung einer Regel eines oder mehrere umfasst von: Bestimmen, dass ein Abschnitt des ersten der Datenelemente von dem Datenverarbeitungssystem nicht verarbeitet wird, Bestimmen, dass ein Konflikt zwischen Abschnitten der Regel vorliegt, Bestimmen, dass ein Abschnitt der Regel eine Bedingung spezifiziert, von der es unwahrscheinlich ist, dass sie für das erste der Datenelemente erfüllt wird, und Bestimmen, dass ein Abschnitt der Regel einen Abschnitt des ersten der Datenelemente auf eine Weise verarbeitet, die von einem gesetzten Verarbeitungsziel verschieden ist.
  8. Verfahren nach Anspruch 4, wobei der Wert des Schlüssels einen ersten Wert aufweist, und wobei das Verfahren umfasst: Auswählen, aus den Sätzen von Testdaten, eines Satzes, der mit einem zweiten Wert des Schlüssels assoziiert ist; und Ausführen, an einem Strom, der unter Verwendung von Testdaten in dem Satz für den zweiten Schlüssel simuliert wird, eines Falls der ausführbaren Logik für den zweiten Wert des Schlüssels.
  9. Verfahren nach Anspruch 1, umfassend: Bewirken einer Anzeige einer visuellen Darstellung eines Übergangs von dem Abschnitt der Spezifikation, der den ersten Zustand der ausführbaren Logik repräsentiert, in den anderen Abschnitt der Spezifikation, der den zweiten Zustand repräsentiert.
  10. Verfahren nach Anspruch 1, ferner umfassend: Empfangen einer Benutzerauswahl des ersten der Datenelemente des Stroms; Bewirken einer Anzeige einer Indikation des ersten der Datenelemente des Stroms, der aktuell von dem Datenverarbeitungssystem verarbeitet wird; und Bewirken einer Anzeige einer Indikation des einen oder der mehreren Abschnitte der ausführbaren Logik, der aktuell auf das erste der Datenelemente angewendet wird, um die Ergebnisdaten zu erhalten.
  11. Verfahren nach Anspruch 1, ferner umfassend: Vergleichen des Abschnitts der Ergebnisdaten mit vorherbestimmten Referenzdaten; Bestimmen, ob eine Abweichung zwischen dem Abschnitt der Ergebnisdaten und den vorherbestimmten Referenzdaten vorliegt, oder ob eine solche Abweichung nicht vorliegt; und Ausgeben einer Indikation, ob der Abschnitt der Ergebnisdaten mit den vorherbestimmten Referenzdaten übereinstimmt, auf der Basis der Bestimmung, ob eine Abweichung zwischen dem Abschnitt der Ergebnisdaten und den vorherbestimmten Referenzdaten vorliegt, oder ob eine solche Abweichung nicht vorliegt.
  12. Verfahren nach Anspruch 10, ferner umfassend: Vergleichen des ersten der Datenelemente des Stroms, der aktuell von dem Datenverarbeitungssystem verarbeitet wird, mit einem vorherbestimmten Referenzdatenelement; Bestimmen, ob eine Abweichung zwischen dem ersten der Datenelemente des Stroms, der aktuell verarbeitet wird, und dem vorherbestimmten Referenzdatenelement vorliegt, oder ob eine solche Abweichung nicht vorliegt; und Ausgeben einer Indikation, ob das erste der Datenelemente des Stroms, der aktuell verarbeitet wird, mit dem vorherbestimmten Referenzdatenelement übereinstimmt, auf der Basis der Bestimmung, ob eine Abweichung zwischen dem ersten der Datenelemente des Stroms, der aktuell verarbeitet wird, und dem vorherbestimmten Referenzdatenelement vorliegt, oder ob eine solche Abweichung nicht vorliegt.
  13. Verfahren nach Anspruch 10, ferner umfassend: Vergleichen des einen oder der mehreren Abschnitte der ausführbaren Logik, die aktuell auf das erste der Datenelemente angewendet wird, um die Ergebnisdaten zu erhalten, mit einer vorherbestimmten ausführbaren Referenzlogik; Bestimmen, ob eine Abweichung zwischen dem einen oder den mehreren Abschnitten der ausführbaren Logik, die aktuell auf das erste der Datenelemente angewendet wird, und der vorherbestimmten ausführbaren Referenzlogik vorliegt, oder ob eine solche Abweichung nicht vorliegt; und Ausgeben einer Indikation, ob der eine oder die mehreren Abschnitte der ausführbaren Logik, die aktuell auf das erste der Datenelemente angewendet wird, um die Ergebnisdaten zu erhalten, mit der vorherbestimmten ausführbaren Referenzlogik übereinstimmt, auf der Basis der Bestimmung, ob eine Abweichung zwischen dem einen oder den mehreren Abschnitten der ausführbaren Logik, die aktuell auf das erste der Datenelemente angewendet wird, und der vorherbestimmten ausführbaren Referenzlogik vorliegt, oder ob eine solche Abweichung nicht vorliegt.
  14. Verfahren, welches von einem Datenverarbeitungssystem zur Verarbeitung von Datenelementen eines Stroms von Datenelementen gemäß einer Spezifikation implementiert wird, die mit einem Schlüssel assoziiert ist, wobei ein Datenelement mit einem Wert des Schlüssels assoziiert ist, wobei Zustände der Spezifikation für jeweilige Werte des Schlüssels aufrechterhalten werden, und wobei die Spezifikation ausführbare Logik repräsentiert, die in einem Datenspeichersystem gespeichert ist, wobei das Verfahren umfasst: Zugreifen auf die Spezifikation, welche die ausführbare Logik repräsentiert, wobei ein Zustand der Spezifikation für einen bestimmten Wert des Schlüssels einen oder mehrere Abschnitte der ausführbaren Logik spezifiziert, die in diesem Zustand ausführbar sind; Empfangen, über eine Eingabevorrichtung oder einen Eingabeport, von Datenelementen eines Datenstroms; für ein erstes der Datenelemente des Stroms, Identifizieren eines Werts des Schlüssels, der mit diesem ersten der Datenelemente assoziiert ist; Identifizieren, dass die Spezifikation mit einem Wartezustand für diesen Wert des Schlüssels assoziiert ist, wobei der Wartezustand einen Zustand umfasst, in dem die ausführbare Logik ausgelegt ist, auf ein oder mehrere Datenelemente zu warten, die mit diesem Wert des Schlüssels assoziiert sind, und die zeitlich von einem oder mehreren anderen Datenelementen getrennt sind, welche vor dem einen oder den mehreren Datenelementen in dem Strom angeordnet sind; Verarbeiten, mit mindestens einem Prozessor, des ersten der Datenelemente gemäß einem oder mehreren Abschnitten ausführbarer Logik, die in der Spezifikation als mit dem Wartezustand assoziiert repräsentiert sind; und Bewirken einer Anzeige mindestens eines Abschnitts von Daten, die ein Ergebnis der Verarbeitung des ersten der Datenelemente gemäß einem oder mehreren Abschnitten ausführbarer Logik anzeigen, welche mit dem Wartezustand assoziiert sind.
  15. Verfahren nach Anspruch 14, wobei die Spezifikation ein Flussdiagramm mit einer Vielzahl von Knoten umfasst, wobei mindestens einer der Knoten einen Warteknoten aufweist, der den Wartezustand repräsentiert, und wobei das Flussdiagramm eine Verbindung zwischen einem ersten der Knoten und einem zweiten der Knoten aufweist, wobei die Verbindung repräsentiert: einen Übergang der ausführbaren Logik von der Ausführung eines oder mehrerer erster Abschnitte der ausführbaren Logik, die von dem ersten der Knoten repräsentiert werden, zur Ausführung eines oder mehrerer zweiter Abschnitte der ausführbaren Logik, die von dem zweiten der Knoten repräsentiert werden.
  16. Verfahren nach Anspruch 14, umfassend: Generieren von Daten für eine grafische Benutzerschnittstelle, die, wenn sie auf einer Anzeigevorrichtung gerendert werden, eine Startsteuerung zur Ausführung des Flussdiagramms umfassen und auch das Flussdiagramm umfassen; Empfangen von Daten, die eine Auswahl der Startsteuerung anzeigen; ansprechend auf die empfangenen Daten, Ausführen des Flussdiagramms durch Vornehmen von Operationen, umfassend: Ausführen des einen oder der mehreren Abschnitte der ausführbaren Logik, die von dem ersten Knoten an dem ersten der Datenelemente repräsentiert werden; und Bewirken, dass die grafische Benutzerschnittstelle aktualisiert wird, um Ergebnisdaten anzuzeigen, die ein Ergebnis der Verarbeitung des ersten der Datenelemente mit dem einen oder den mehreren ersten Abschnitten der ausführbaren Logik anzeigen, welche von dem ersten Knoten repräsentiert werden, wobei die Ergebnisdaten neben dem ersten Knoten in dem Flussdiagramm angezeigt werden.
  17. Verfahren nach Anspruch 14, wobei die Daten für die grafische Benutzerschnittstelle Daten zum Anzeigen einer Stoppsteuerung umfassen, wobei das Verfahren umfasst: Empfangen von Daten, die eine Auswahl der Stoppsteuerung anzeigen; und Pausieren der Ausführung des Flussdiagramms.
  18. Verfahren, welches von einem Datenverarbeitungssystem zur Implementierung einer Zustandsmaschine vorgenommen wird, wobei die Zustandsmaschine ausgelegt ist, für jeden Wert eines Schlüssels Datensätze zu verarbeiten, die mit diesem Wert assoziiert sind, wobei das Verfahren umfasst: Anzeigen, in einer oder mehreren Editorschnittstellen, (i) eines Diagramms mit Knoten und einer oder mehreren Verbindungen, und (ii) eines oder mehrerer Abschnitte zum Eingeben oder Editieren eines oder mehrerer logischer Ausdrücke in Bezug auf einen oder mehrere der Knoten, wobei der eine oder die mehreren der Knoten einem bestimmten Zustand der Zustandsmaschine entsprechen, und wobei ein logischer Ausdruck mindestens eine teilweise Verarbeitung eines Datensatzes repräsentiert, wenn sich die Zustandsmaschine in dem bestimmten Zustand befindet; wobei eine Verbindung zwischen einem der Knoten und einem anderen der Knoten einen Übergang der Zustandsmaschine von einem Zustand in einen anderen Zustand repräsentiert; Transformieren des einen oder der mehreren logischen Ausdrücke und des Diagramms in ausführbare Logik zur Implementierung einer Zustandsmaschine zum: während Datensätze intermittierend empfangen werden, Evaluieren eines oder mehrerer Felder in den Datensätzen, um Werte des Schlüssels zu identifizieren; und für jeden Wert des Schlüssels, Verarbeiten eines oder mehrerer erster Datensätze, die ein oder mehrere Felder umfassen, auf denen der Wert des Schlüssels basiert, wobei die Verarbeitung mit einem oder mehreren logischen Ausdrücken übereinstimmt, die mit einem oder mehreren Knoten entsprechend einem aktuellen Zustand der Zustandsmaschine in Zusammenhang stehen, in Bezug auf diesen Wert des Schlüssels; und Übergehen, gemäß einer Verbindung des Diagramms, in einen anderen Zustand zur Verarbeitung eines oder mehrerer zweiter Datensätze der intermittierend empfangenen Datensätze, wobei der eine oder die mehreren zweiten Datensätze das eine oder die mehreren Felder umfassen, auf denen der Wert des Schlüssels basiert, und wobei der eine oder die mehreren zweiten Datensätze nach dem einen oder den mehreren ersten Datensätzen empfangen werden.
  19. Verfahren, welches von einem Datenverarbeitungssystem implementiert wird, um Datenelemente eines Datenstroms zu verarbeiten, wobei die Verarbeitung umfasst: Empfangen einer Spezifikation, die ausführbare Logik zur Verarbeitung von Datenelementen eines Datenstroms repräsentiert, wobei die Spezifikation mit einem Schlüssel assoziiert ist, wobei ein Datenelement mit einem Wert des Schlüssels assoziiert ist, und wobei Zustände der ausführbaren Logik für jeweilige Werte des Schlüssels aufrechterhalten werden; wobei die Spezifikation Knoten und eine oder mehrere Verbindungen umfasst, einer oder mehrere erste Knoten einen ersten Zustand der ausführbaren Logik repräsentieren, in Bezug auf einen Wert des Schlüssels, wobei ein erster Abschnitt der ausführbaren Logik an einem ersten der Datenelemente ausführbar ist, das mit diesem Wert des Schlüssels assoziiert ist; wobei zweite Knoten einen zweiten Zustand der ausführbaren Logik repräsentieren, in Bezug auf diesen Wert des Schlüssels, wobei einer der zweiten Knoten einen Abschnitt der ausführbaren Logik repräsentiert, der ausgelegt ist, auf ein zweites der Datenelemente mit diesem Wert des Schlüssels in dem zweiten Zustand zu warten, wobei das zweite der Datenelemente zeitlich von dem ersten der Datenelemente getrennt ist, indem es nach dem ersten der Datenelemente in dem Strom angeordnet ist, wobei ein anderer der zweiten Knoten einen anderen Abschnitt der ausführbaren Logik repräsentiert, der ausgelegt ist, die Ausführung einer oder mehrerer Aktionen in dem zweiten Zustand zu bewirken; wobei eine Verbindung zwischen einem von dem einen oder den mehreren Knoten und einem der zweiten Knoten einen Zustandsübergang der ausführbaren Logik, in Bezug auf diesen Wert des Schlüssels, von dem ersten Zustand, in dem der erste Abschnitt ausführbar ist, in den zweiten Zustand, in dem die ausführbare Logik ausgelegt ist, auf das zweite der Datenelemente zu warten, repräsentiert; und Transformieren der Spezifikation in ausführbare Logik zur Verarbeitung, für jeden Wert des Schlüssels, von Datenelementen, die mit diesem Wert assoziiert sind, und die zeitlich in einem Datenstrom getrennt sind.
  20. Verfahren, welches von einem Datenverarbeitungssystem zur Verarbeitung von Datenelementen eines Datenstroms gemäß einer Spezifikation implementiert wird, die mit einem Schlüssel assoziiert ist, und die ausführbare Logik zur Verarbeitung der Datenelemente repräsentiert, wobei ein Datenelement mit einem Wert des Schlüssels assoziiert ist, wobei Zustände der Spezifikation für eine Vielzahl von Werten des Schlüssels aufrechterhalten werden, wobei das Verfahren umfasst: Zugreifen auf die Spezifikation, wobei ein Zustand der Spezifikation einen oder mehrere Abschnitte der ausführbaren Logik repräsentiert, die in diesem Zustand ausführbar sind; Empfangen eines ersten Datenelements der Datenelemente, wobei das erste Datenelement mit einem bestimmten Wert des Schlüssels assoziiert ist; Identifizieren eines ersten Zustands für den bestimmten Wert des Schlüssels; Verarbeiten des ersten Datenelements gemäß einem oder mehreren Abschnitten der ausführbaren Logik, die von der Spezifikation als in dem ersten Zustand ausführbar spezifiziert sind; Identifizieren eines Übergangs, in Bezug auf den bestimmten Wert des Schlüssels, von dem ersten Zustand der Spezifikation in einen zweiten Zustand, in dem ein oder mehrere andere Abschnitte der ausführbaren Logik ausführbar sind; Empfangen eines intervenierenden Datenelements, das mit einem anderen Wert des Schlüssels assoziiert ist, der von dem bestimmten Wert des Schlüssels verschieden ist und nicht mit dem bestimmten Wert des Schlüssels assoziiert ist; Identifizieren eines gegebenen Zustands der Spezifikation, der mit dem anderen Wert des Schlüssels für das intervenierende Datenelement assoziiert ist; Verarbeiten des intervenierenden Datenelements gemäß einem oder mehreren Abschnitten der ausführbaren Logik, die von der Spezifikation als in dem gegebenen Zustand ausführbar spezifiziert sind; Empfangen eines zweiten Datenelements der Datenelemente, das später in dem Strom ist als das erste Datenelement und das intervenierende Datenelement, und das auch mit dem bestimmten Wert des Schlüssels assoziiert ist; und auf der Basis des Übergangs der Spezifikation in Bezug auf den bestimmten Wert des Schlüssels, Verarbeiten des zweiten Datenelements gemäß einem oder mehreren Abschnitten der ausführbaren Logik, die von der Spezifikation als in dem zweiten Zustand ausführbar spezifiziert sind, wobei der eine oder die mehreren Abschnitte der ausführbaren Logik, die in dem zweiten Zustand ausführbar sind, von dem einen oder den mehreren Abschnitten der ausführbaren Logik verschieden sind, die in dem ersten Zustand ausführbar sind.
DE112017002645.8T 2016-05-24 2017-05-23 Ausführbare Logik zur Verarbeitung verschlüsselter Daten in Netzen Pending DE112017002645T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662340825P 2016-05-24 2016-05-24
US62/340,825 2016-05-24
US15/376,129 US10579753B2 (en) 2016-05-24 2016-12-12 Executable logic for processing keyed data in networks
US15/376,129 2016-12-12
PCT/US2017/033978 WO2017205362A1 (en) 2016-05-24 2017-05-23 Executable logic for processing keyed data in networks

Publications (1)

Publication Number Publication Date
DE112017002645T5 true DE112017002645T5 (de) 2019-03-07

Family

ID=59009798

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017002645.8T Pending DE112017002645T5 (de) 2016-05-24 2017-05-23 Ausführbare Logik zur Verarbeitung verschlüsselter Daten in Netzen

Country Status (9)

Country Link
US (2) US10579753B2 (de)
EP (1) EP3465442B1 (de)
JP (2) JP6847980B2 (de)
CN (2) CN114817037B (de)
AU (2) AU2017269280B2 (de)
CA (2) CA3026445C (de)
DE (1) DE112017002645T5 (de)
SG (2) SG11201809395XA (de)
WO (1) WO2017205362A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19521421C2 (de) * 1995-06-14 1999-12-30 Hoffmeister Helmut Steuerbarer Schrägaufzug
US10579753B2 (en) 2016-05-24 2020-03-03 Ab Initio Technology Llc Executable logic for processing keyed data in networks
US10831509B2 (en) 2017-02-23 2020-11-10 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
US11947978B2 (en) 2017-02-23 2024-04-02 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
US11429725B1 (en) * 2018-04-26 2022-08-30 Citicorp Credit Services, Inc. (Usa) Automated security risk assessment systems and methods
US10978176B2 (en) 2018-06-29 2021-04-13 pulseData Inc. Machine learning systems and methods for predicting risk of renal function decline
US11561993B2 (en) 2018-08-08 2023-01-24 Ab Initio Technology Llc Generating real-time aggregates at scale for inclusion in one or more modified fields in a produced subset of data
WO2020068927A2 (en) 2018-09-25 2020-04-02 Ab Initio Technology Llc A dedicated audit port for implementing recoverability in outputting audit data
CN109634845B (zh) * 2018-11-13 2022-05-17 微梦创科网络科技(中国)有限公司 一种生成上下文记录文本的方法及装置
CN110059004B (zh) * 2019-03-21 2021-08-17 深圳市腾讯信息技术有限公司 一种应用测试的方法、装置、设备和介质
CN112286812A (zh) * 2020-10-30 2021-01-29 上海莉莉丝科技股份有限公司 Json数据处理方法、系统、设备和介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0792771B2 (ja) * 1986-04-01 1995-10-09 株式会社日立製作所 プログラム実行状況表示システム
US6542894B1 (en) 1998-12-09 2003-04-01 Unica Technologies, Inc. Execution of multiple models using data segmentation
AU1968501A (en) 1999-10-21 2001-04-30 Unica Technologies, Inc. Combining value and probability models in database mining
AU2002224343A1 (en) 2000-10-02 2002-04-15 Vialanguage, Inc. Machine editing system incorporating dynamic rules database
US7571187B2 (en) * 2002-05-31 2009-08-04 Microsoft Corporation Support for real-time queries concerning current state, data and history of a process
US8145629B2 (en) * 2004-05-28 2012-03-27 International Business Machines Corporation Method and system for business reporting
US7472101B2 (en) 2005-07-12 2008-12-30 Tibco Software Inc. Inferential state machines
US9092464B2 (en) * 2005-11-17 2015-07-28 International Business Machines Corporation Monitoring and debugging query execution objects
US20090276754A1 (en) 2008-05-01 2009-11-05 Kabira Technologies, Inc. Java virtual machine having integrated transaction management system
US8868518B2 (en) * 2009-08-14 2014-10-21 International Business Machines Corporation Processing of streaming data with keyed aggregation
EP2348416A1 (de) 2010-01-21 2011-07-27 Software AG Analysesystem und Verfahren zur Analyse von durchgehenden Anfragen für Datenströme
US9552280B2 (en) * 2010-05-13 2017-01-24 Microsoft Technology Licensing, Llc Visual analysis and debugging of complex event flows
CN101923464A (zh) * 2010-05-19 2010-12-22 上海爱韦讯信息技术有限公司 Do-178b标准文档生成器
EP2612260A1 (de) 2010-09-03 2013-07-10 Loglogic, Inc. Dynamische parsingregeln
JP5480395B2 (ja) * 2010-10-06 2014-04-23 株式会社日立製作所 ストリームデータ処理方法及び装置
US8887138B2 (en) * 2012-05-25 2014-11-11 Telefonaktiebolaget L M Ericsson (Publ) Debugging in a dataflow programming environment
KR101388845B1 (ko) * 2012-07-10 2014-04-23 삼성전기주식회사 다단 히트 싱크를 구비한 냉각 시스템 및 그 제어방법
US20150324417A1 (en) * 2012-12-10 2015-11-12 Viditeck Ag Rules based data processing system and method
EP2941705B1 (de) * 2013-01-03 2023-02-22 AB Initio Technology LLC Konfigurierbare prüfung der computerprogramme
US9256460B2 (en) * 2013-03-15 2016-02-09 International Business Machines Corporation Selective checkpointing of links in a data flow based on a set of predefined criteria
WO2015048212A2 (en) 2013-09-27 2015-04-02 Ab Initio Technology Llc Evaluating rules applied to data
JP6032680B2 (ja) * 2013-10-31 2016-11-30 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 受信したデータごとに集計処理を行うシステム、方法およびプログラム
CN106663075B (zh) 2014-09-02 2020-12-11 起元科技有限公司 执行基于图的程序规范
CN107145344B (zh) 2014-09-02 2020-12-04 起元科技有限公司 在基于图的程序中指定组件
US10055333B2 (en) * 2014-11-05 2018-08-21 Ab Initio Technology Llc Debugging a graph
CN105224461B (zh) * 2015-10-23 2018-01-26 网易(杭州)网络有限公司 一种集成测试用例的生成方法和装置
US10579753B2 (en) 2016-05-24 2020-03-03 Ab Initio Technology Llc Executable logic for processing keyed data in networks

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs

Also Published As

Publication number Publication date
JP7163435B2 (ja) 2022-10-31
JP6847980B2 (ja) 2021-03-24
JP2021106000A (ja) 2021-07-26
US11295049B2 (en) 2022-04-05
US20200175213A1 (en) 2020-06-04
AU2017269280B2 (en) 2020-01-23
CN109196482B (zh) 2022-04-05
AU2020202161B2 (en) 2021-11-25
AU2020202161A1 (en) 2020-04-16
JP2019521421A (ja) 2019-07-25
CA3026445C (en) 2022-11-15
US20170344672A1 (en) 2017-11-30
CA3175664A1 (en) 2017-11-30
CN109196482A (zh) 2019-01-11
EP3465442A1 (de) 2019-04-10
CN114817037A (zh) 2022-07-29
SG10202003805QA (en) 2020-06-29
CA3026445A1 (en) 2017-11-30
AU2017269280A1 (en) 2018-12-06
EP3465442B1 (de) 2023-07-05
US10579753B2 (en) 2020-03-03
WO2017205362A1 (en) 2017-11-30
CN114817037B (zh) 2023-02-17
SG11201809395XA (en) 2018-11-29

Similar Documents

Publication Publication Date Title
DE112017002645T5 (de) Ausführbare Logik zur Verarbeitung verschlüsselter Daten in Netzen
US10915526B2 (en) Historical data replay utilizing a computer system
DE112017006164T5 (de) Differenzvergleich von ausführbaren Datenflussdiagrammen
JP5909140B2 (ja) Jvmおよびクロスjvm呼び出しスタックの可視化
DE112018002872T5 (de) Integriertes system zur regelbearbeitung, simulation, versionssteuerung und geschäftsprozessverwaltung
DE69712678T3 (de) Verfahren zur Echtzeitüberwachung eines Rechnersystems zu seiner Verwaltung und Hilfe zu seiner Wartung während seiner Betriebsbereitschaft
DE69029983T2 (de) Leistungsverbesserungsgerät für auf Regeln beruhendes Expertensystem
DE112018000974T5 (de) Dynamische ausführung parametrisierter anwendungen für die verarbeitung verschlüsselter netzwerkdatenströme
DE112013000916T5 (de) System zum Anzeigen und Bearbeiten von Artefakten an einem zeitbezogenen Referenzpunkt
CN109960560B (zh) 一种指标处理方法及系统
DE112017006106T5 (de) Erzeugen von, Zugreifen auf und Anzeigen von Abstammungsmetadaten
DE112016005870T5 (de) Such- und retrieval-datenverarbeitungssystem zum berechnen von nahezu-echtzeit-datenaggregationen
EP3049920A1 (de) Verfahren und einrichtung zur automatisierten erzeugung und bereitstellung wenigstens einer softwareanwendung
DE112013005993T5 (de) Verfahren, Vorrichtung und computerlesbares Medium für eine optimale Bestimmung von Daten-Teilmengen
DE112018005452T5 (de) Schlüsselbasiertes loggen für die verarbeitung strukturierter datenelemente mit ausführbarer logik
DE19960048A1 (de) Zeitgesteuerte Startbedingungen für Aktivitäten in Workflow-Management-Systemen
CH701481B1 (de) Prozessmanagement.
DE112020004688T5 (de) Debuggen und erstellen von profilen von maschinenlernmodelltraining
WO2005109196A1 (de) Verfahren zur bestimmung von verklemmungen in nebenläufigen prozessen
DE102012106913A1 (de) Modulares Werkzeug zum Aufbau eines Links zu einem Rechte-Programm von Artikelinformationen
DE112015004642T5 (de) Erzeugen von Webbrowseransichten für Anwendungen
Privitera Creation of a web platform for event-flow visualization
DE102015107150B4 (de) Vorrichtungen, Verfahren zum Erkennen koppelbarer Schnittstellen
DE10134093C2 (de) Verfahren und Anordnung zum Entfernen von Verbindungen aus einem Netzwerk mit Knoten und Verbindungen
Anand USER INTERFACE BASED APPROACH TO USER DATA COLLECTION FOR BUSINESS-FOCUSED AND CONTEXTUAL ENRICHMENT OF BROWSER PAGE PERFORMANCE DATA

Legal Events

Date Code Title Description
R012 Request for examination validly filed