-
HINTERGRUND
-
Prozedurale Programmierung ist ein Paradigma, bei dem Programme als eine Reihe von expliziten Befehlen geschrieben sind, die ein Prozessor in Reihenfolge ausführt. Teilsequenzen von Befehlen können gruppiert und nach Bedarf von anderen Teilen des Programms aufgerufen werden, und erweitern dadurch den Umfang von Befehlen, die der Rest des Programms ausführen kann. Diese Teilsequenzen werden in Abhängigkeit von der speziellen eingesetzten Programmiersprache manchmal als Subroutinen, Funktionen oder Teilprogramme bezeichnet.
-
Datenflussprogrammierung legt im Gegensatz dazu den Wert auf den Fluss von Daten durch eine Sequenz von Operationen durch Programme, genannt Datenflussgraphen, die Operationen definieren und definieren, wie Daten zwischen den Operationen fließen. Datenflussgraphen sind allgemein dazu konfiguriert, Datensätze von einer oder mehreren Quellen zu erhalten, Operationen an den Datensätzen in einer Sequenz durchzuführen und eine Art Ausgabe zu erzeugen. Typischerweise werden die Teile des Datenflussgraphen, die Operationen an Datensätzen durchführen, Komponenten genannt, und die Verbindungen zwischen den Komponenten werden Flüsse genannt.
-
Ein Unterschied zwischen Programmen, die in prozeduralen Sprachen geschrieben sind, und Datenflussgraphen besteht darin, dass in einem Datenflussgraphen mehrere Operationen gleichzeitig durchgeführt werden können, da an Datensätzen, die frühere Komponenten in dem Datenflussgraphen („Upstream“-Komponenten) erreichen, Operationen durchgeführt werden können, während andere Datensätze schon zu späteren Komponenten im Datenflussgraphen („Downstream“-Komponenten) weitergeführt wurden. Dieses Phänomen ist eine Art von Parallelität, manchmal Pipeline-Parallelität genannt. Auf diese Weise kann ein Datenflussgraph als eine Reihe von Arbeitern in einer Fertigungslinie angesehen werden, wobei die Komponenten die Arbeiter repräsentieren, wohingegen ein Programm, das in einer prozeduralen Sprache geschrieben ist, mehr wie ein einzelner Arbeiter ist, der eine Reihe von Aufgaben erledigt, wobei jede Aufgabe abgeschlossen wird, bevor die nächste begonnen wird.
-
KURZDARSTELLUNG
-
Gemäß manchen Aspekten ist ein nichtflüchtiges computerlesbares Medium bereitgestellt, das Anweisungen umfasst, die bei Ausführung durch mindestens einen Prozessor ein Verfahren zum Umwandeln eines Programms in einen Datenflussgraphen durchführen, wobei das Programm Datenoperationen und einen Steuerfluss umfasst, der eine Ausführungssequenz der Datenoperationen angibt, wobei das Verfahren umfasst: Analysieren des Programms unter Verwendung des mindestens einen Prozessors und Verwenden einer durch das mindestens eine computerlesbare Medium gespeicherten Grammatik, wobei das Analysieren Identifizieren, basierend auf der Grammatik, mehrerer sequenzieller Schritte des Programms umfasst, wobei jeder Schritt der mehreren Schritte eine oder mehrere Datenoperationen des Programms umfasst, Erzeugen eines Katalogs, der Steuerflussbeziehungen zwischen Schritten der mehreren identifizierten Schritte des Programms speichert, für jeden der identifizierten mehreren Schritte des Programms, basierend auf Datenoperationen des Schritts und basierend auf der Grammatik, Identifizieren eines mehrerer Datenflussgraphenkomponententypen als dem Schritt entsprechend, wodurch mehrere Datenflussgraphenkomponenten identifiziert werden, die jeweils einem jeweiligen Schritt der mehreren Schritte des Programms entsprechen, und Konfigurieren der mehreren Datenflussgraphenkomponenten basierend auf jeweiligen entsprechenden Schritten der mehreren Schritte des Programms und basierend auf der Grammatik, wodurch mehrere konfigurierte Datenflussgraphenkomponenten erzeugt werden, und Erzeugen, unter Verwendung des mindestens einen Prozessors, eines Datenflussgraphen, der die mehreren konfigurierten Datenflussgraphenkomponenten umfasst, und eines oder mehrerer Flüsse, die Flüsse von Datensätzen zwischen der einen oder den mehreren Datenflussgraphenkomponenten repräsentieren, wobei die eine oder die mehreren Datenflussgraphenkomponenten über den einen oder die mehreren Flüsse in einer Reihenfolge gemäß dem erzeugten Katalog verbunden sind.
-
Gemäß manchen Aspekten ist ein computerimplementiertes Verfahren bereitgestellt zum automatischen Umwandeln eines Programms in einen Datenflussgraphen, wobei das Programm Datenoperationen und einen Steuerfluss umfasst, der eine Ausführungssequenz der Datenoperationen angibt, wobei das Verfahren umfasst: Analysieren des Programms unter Verwendung des mindestens einen Prozessors und Verwenden einer durch das mindestens eine computerlesbare Medium gespeicherten Grammatik, wobei das Analysieren Identifizieren, basierend auf der Grammatik, mehrerer sequenzieller Schritte des Programms umfasst, wobei jeder Schritt der mehreren Schritte eine oder mehrere Datenoperationen des Programms umfasst, Erzeugen eines Katalogs, der Steuerflussbeziehungen zwischen Schritten der mehreren identifizierten Schritte des Programms speichert, für jeden der identifizierten mehreren Schritte des Programms, basierend auf Datenoperationen des Schritts und basierend auf der Grammatik, Identifizieren eines mehrerer Datenflussgraphenkomponententypen als dem Schritt entsprechend, wodurch mehrere Datenflussgraphenkomponenten identifiziert werden, die jeweils einem jeweiligen Schritt der mehreren Schritte des Programms entsprechen, und Konfigurieren der mehreren Datenflussgraphenkomponenten basierend auf jeweiligen entsprechenden Schritten der mehreren Schritte des Programms und basierend auf der Grammatik, wodurch mehrere konfigurierte Datenflussgraphenkomponenten erzeugt werden, und Erzeugen, unter Verwendung des mindestens einen Prozessors, eines Datenflussgraphen, der die mehreren konfigurierten Datenflussgraphenkomponenten umfasst, und eines oder mehrerer Flüsse, die Flüsse von Datensätzen zwischen der einen oder den mehreren Datenflussgraphenkomponenten repräsentieren, wobei die eine oder die mehreren Datenflussgraphenkomponenten über den einen oder die mehreren Flüsse in einer Reihenfolge gemäß dem erzeugten Katalog verbunden sind.
-
Gemäß manchen Aspekten ist ein System zum automatischen Umwandeln eines Programms in einen Datenflussgraphen bereitgestellt, wobei das Programm Datenoperationen und einen Steuerfluss umfasst, der eine Ausführungssequenz der Datenoperationen angibt, wobei das System umfasst: Mittel zum Analysieren des Programms unter Verwendung des mindestens einen Prozessors und Verwenden einer durch das mindestens eine computerlesbare Medium gespeicherten Grammatik, wobei das Analysieren Identifizieren, basierend auf der Grammatik, mehrerer sequenzieller Schritte des Programms umfasst, wobei jeder Schritt der mehreren Schritte eine oder mehrere Datenoperationen des Programms umfasst, Erzeugen eines Katalogs, der Steuerflussbeziehungen zwischen Schritten der mehreren identifizierten Schritte des Programms speichert, für jeden der identifizierten mehreren Schritte des Programms, basierend auf Datenoperationen des Schritts und basierend auf der Grammatik, Identifizieren eines mehrerer Datenflussgraphenkomponententypen als dem Schritt entsprechend, wodurch mehrere Datenflussgraphenkomponenten identifiziert werden, die jeweils einem jeweiligen Schritt der mehreren Schritte des Programms entsprechen, und Konfigurieren der mehreren Datenflussgraphenkomponenten basierend auf jeweiligen entsprechenden Schritten der mehreren Schritte des Programms und basierend auf der Grammatik, wodurch mehrere konfigurierte Datenflussgraphenkomponenten erzeugt werden, und Mittel zum Erzeugen eines Datenflussgraphen, wobei der Datenflussgraph die mehreren konfigurierten Datenflussgraphenkomponenten umfasst, und eines oder mehrerer Flüsse, die Flüsse von Datensätzen zwischen der einen oder den mehreren Datenflussgraphenkomponenten repräsentieren, wobei die eine oder die mehreren Datenflussgraphenkomponenten über den einen oder die mehreren Flüsse in einer Reihenfolge gemäß dem erzeugten Katalog verbunden sind.
-
Die vorstehenden Einrichtungs- und Verfahrensausführungsformen können mit einer beliebigen geeigneten Kombination von Aspekten, Merkmalen und Handlungen implementiert werden, die vorstehend oder ausführlicher nachstehend beschrieben sind. Diese und andere Aspekte, Ausführungsformen und Merkmale der vorliegenden Lehren können vollständig aus der folgenden Beschreibung in Verbindung mit den begleitenden Zeichnungen verstanden werden.
-
Figurenliste
-
Verschiedene Aspekte und Ausführungsformen werden unter Bezugnahme auf die folgenden Figuren beschrieben. Es versteht sich, dass die Figuren nicht notwendigerweise maßstabsgetreu sind. In den Zeichnungen wird jede identische oder fast identische Komponente, die in verschiedenen Figuren veranschaulicht ist, durch eine gleiche Ziffer repräsentiert. Für Verdeutlichungszwecke ist möglicherweise nicht jede Komponente in jeder Zeichnung bezeichnet.
- 1 stellt einen veranschaulichenden Datenflussgraphen gemäß einigen Ausführungsformen dar;
- 2 stellt ein Flussdiagramm eines Verfahrens zum automatischen Umwandeln eines Programms, das in einer prozeduralen Sprache geschrieben ist, in einen Datenflussgraphen gemäß einigen Ausführungsformen dar;
- 3 ist ein Flussdiagramm eines Verfahrens zum automatischen Umwandeln eines Programms, das in einer prozeduralen Sprache geschrieben ist, in einen Datenflussgraphen gemäß einigen Ausführungsformen;
- 4A ist ein veranschaulichendes SAS-Programm gemäß einigen Ausführungsformen;
- 4B stellt einen veranschaulichenden Datenflussgraphen dar, der gemäß dem in 4A gezeigten Programm erzeugt wird, gemäß einigen Ausführungsformen;
- 4C stellt den veranschaulichenden Datenflussgraphen von 4B dar, bei dem Datenflussgraphenkomponenten mit entsprechenden Schritten des SAS-Programms annotiert sind, gemäß einigen Ausführungsformen;
- 4D veranschaulicht Einzelheiten des Umwandelns eines ersten Schritts des in 4A gezeigten Programms in eine erste Komponente des in 4B gezeigten Datenflussgraphen, gemäß einigen Ausführungsformen;
- 4E veranschaulicht ein Beispiel für das Parsen eines Schritts des in 4A gezeigten Programms mit einer Grammatik, um den Schritt und Steuerflussbeziehungen zwischen dem Schritt und anderen Schritten zu identifizieren, eine entsprechende Datenflussgraphenkomponente auszuwählen und die ausgewählte Datenflusskomponente zu konfigurieren, gemäß einigen Ausführungsformen;
- 4F veranschaulicht Einzelheiten des Umwandelns eines zweiten Schritts des in 4A gezeigten Programms in eine zweite Komponente des in 4B gezeigten Datenflussgraphen, gemäß einigen Ausführungsformen; und
- 5 veranschaulicht ein Beispiel für eine Rechensystemumgebung, in der Aspekte der Erfindung implementiert werden können.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die Erfinder haben erkannt und verstanden, dass die Funktionalität eines Datenverarbeitungssystems mittels eines computerausgeführten Tools erhöht werden kann, das Programme, die in einer prozeduralen Sprache geschrieben sind, in Komponenten umwandelt, die als ein Datenflussgraph ausgeführt werden können. Insbesondere kann das computerausgeführte Tool Typen von Datenflussgraphenkomponenten als Teilen eines Programms entsprechend identifizieren, sodass das Verhalten jedes Teils durch einen geeigneten Teil eines Datenflussgraphen reproduziert werden kann. In manchen Ausführungsformen kann der Graph, der aus einem Programm erzeugt wird, das in einer prozeduralen Programmiersprache geschrieben ist, verschiedene Formen von Parallelität unterstützen, wie etwa Pipeline-Parallelität und/oder Komponentenparallelität, obwohl dem in der prozeduralen Sprache geschriebenen Programm eine solche Parallelität möglicherweise fehlte. In manchen Ausführungsformen kann Parallelität durch Parsen des Programms basierend auf einer Grammatik und Identifizieren von Steuerflussbeziehungen zwischen Datenoperationen, die durch das Programm durchgeführt werden, erreicht werden. Ferner können Typen von Datenflussgraphenkomponenten unter Verwendung der Grammatik als speziellen Datenoperationen (oder Gruppen von Datenoperationen) des Programms entsprechend identifiziert werden. Ein Datenflussgraph kann so erzeugt werden, dass er die identifizierten Komponenten umfasst, die mit Flüssen in einer Reihenfolge gemäß den identifizierten Steuerflussbeziehungen zwischen Datenoperationen miteinander verbunden sein können.
-
Es kann eine Anzahl von Vorteilen für das Verarbeiten von Daten unter Verwendung von Datenflussprogrammierung im Vergleich zu prozeduraler Programmierung geben. Insbesondere, wie oben besprochen, kann ein Datenflussgraph natürlich eine parallele Verarbeitung über Pipeline-Parallelität bereitstellen, was Datenflussprogrammierung eine natürliche Wahl für die Verarbeitung von Datensätzen macht, bei denen spezielle Operationen an vielen Datenstücken wiederholt werden, wie etwa Datensätzen einer Datenmenge. Ein zusätzlicher Typ von Parallelität, der durch Datenflussgraphen geboten wird, ist Komponentenparallelität, die erzeugt wird, wenn unterschiedliche Zweige des Datenflussgraphen zur gleichen Zeit arbeiten. Beispielsweise können Datensätze von einer einzelnen Datenquelle entlang unterschiedlicher Flüsse ausgegeben werden und unterschiedliche Operationen können entlang der unterschiedlichen Zweige zur gleichen Zeit durchgeführt werden.
-
Trotz der Vorteile, die durch Datenflussgraphen geboten werden können, können manche Organisationen (z. B. Unternehmen) nichtsdestotrotz für die Datenverarbeitung auf Programme angewiesen sein, die in einer prozeduralen Sprache geschrieben sind. In manchen Fällen kann eine Organisation Datenflussgraphen teilweise verwenden, während sie weiterhin Programme nutzt, die in einer prozeduralen Sprache geschrieben sind. Dieser Ansatz beinhaltet typischerweise das Ausführen von Datenflussgraphen anstelle der ehemaligen Programme, die in der prozeduralen Sprache geschrieben sind, während Komponenten in den Datenflussgraphen eingeschlossen werden, die extern zu dem Datenflussgraphen einen Teil des Codes des Programms ausführen, das in der prozeduralen Sprache geschrieben ist. Auf diese Weise wird der Datenflussgraph als eine Art „Wrapper“ ausgeführt, und obwohl der Datenflussgraph letztlich das Programm ist, das durch das System ausgeführt wird, kann ein großer Teil der Funktionalität des Programms weiterhin extern durch die prozedurale Sprache ausgeführt werden.
-
Ein Nachteil dieses Ansatzes kann darin bestehen, dass die Sprache des Datenflussgraphen möglicherweise keine Fähigkeit hat, zu verstehen, was innerhalb einer Komponente passiert, die externen Code ausführt, der in einer prozeduralen Sprache geschrieben ist. Ein anderes nützliches Merkmal von Datenflussgraphen ist die Fähigkeit, die Datenherkunft durch einen einzelnen Datenflussgraphen oder durch mehrere Datenflussgraphen zu verfolgen, um ein Verständnis dafür zu erlangen, woher die Daten kommen und wohin sie innerhalb der Operationen einer Organisation gehen. Eine Komponente, die externen Code ausführt, kann jedoch bezüglich der Datenherkunft einer „Blackbox“ zu der Datenflussgraphensoftware ähneln, da die Datenflussgraphensoftware möglicherweise nicht in der Lage ist, die Datenherkunft durch die Komponente zu verfolgen, da die Operationen, die die Komponente durchführt, der Software nicht bekannt sind. Darüber hinaus kann dieser Ansatz Pipeline-Parallelität verhindern, da der externe Code möglicherweise vollständig ausgeführt werden muss, bevor Downstream-Komponenten ausgeführt werden können.
-
Wie oben besprochen, hat der Erfinder erkannt und verstanden, dass die Funktionalität eines Datenverarbeitungssystems mittels eines computerausgeführten Tools erhöht werden kann, das Programme, die in einer prozeduralen Sprache geschrieben sind, in Komponenten umwandelt, die als ein Datenflussgraph ausgeführt werden können. Diese Techniken können angewendet werden, um nativen Datenflussgraphencode überall im erzeugten Datenflussgraphen zu erzeugen, sodass die Datenherkunft durch den Datenflussgraphen verfolgt werden kann. Die natürlichen Effizienzvorteile von Datenflussgraphen, wie etwa Komponentenparallelität und/oder Pipeline-Parallelität, wie oben besprochen, können in einem erzeugten Datenflussgraphen natürlich bereitgestellt werden. Der Erfinder hat ferner Techniken zum Implementieren eines solchen Tools basierend auf einer Grammatik erkannt und verstanden, wie ferner nachstehend besprochen.
-
Gemäß manchen Ausführungsformen kann ein System, das ein in einer prozeduralen Sprache geschriebenes Programm in einen Datenflussgraphen umwandelt, einen Parser zum Parsen des Textes des Programms ausführen. In manchen Ausführungsformen kann ein solches Parsen Operationen identifizieren, die durch das Programm an Daten durchgeführt werden, und kann ferner den Typ solcher Operationen identifizieren. Basierend auf dem Typ der durch das Programm durchgeführten Datenoperation kann ein spezieller Typ von Datenflussgraphenkomponente, die in der Lage ist, die gleiche Operation durchzuführen, identifiziert werden, indem eine Datenstruktur identifiziert wird, die konstruiert wurde, um spezielle Operationen mit speziellen Datenflussgraphenkomponenten zu assoziieren. Falls beispielsweise Sprache in dem Programm durch den Parser als ein Zusammenführen von Daten durchführend identifiziert wird, kann die Datenstruktur eine Datenflussgraphenkomponente identifizieren, die Flüsse von Datensätzen als einer Zusammenführungsoperation entsprechend vereint. Ein solcher Parser kann in manchen Ausführungsformen auch eine Ausführungsreihenfolge von Datenoperationen, wie durch das Programm ausgeführt, bestimmen. Wenn ein Datenflussgraph basierend auf dem Programm erzeugt wird, können Flüsse zwischen Komponenten, die Datenoperationen repräsentieren, erzeugt werden und die Komponenten über die Flüsse in einer Reihenfolge basierend auf der bestimmten Ausführungsreihenfolge miteinander verbunden werden.
-
Nachfolgend sind ausführlichere Beschreibungen verschiedener Konzepte bezüglich zu, und Ausführungsformen von, Techniken zum automatischen Umwandeln von Programmen, die in prozeduralen Sprachen geschrieben sind, in Datenflussgraphen beschrieben. Es versteht sich, dass die hierin beschriebenen verschiedenen Aspekte auf irgendeine von zahlreichen Weisen implementiert werden können. Beispiele für spezifische Implementierungen werden hierin rein zur Veranschaulichung bereitgestellt. Zusätzlich können die verschiedenen in den nachstehenden Ausführungsformen beschriebenen Aspekte alleine oder in einer beliebigen Kombination verwendet werden und sind nicht auf die ausdrücklich hierin beschriebenen Kombinationen beschränkt.
-
1 stellt einen veranschaulichenden Datenflussgraphen gemäß einigen Ausführungsformen dar. Der Datenflussgraph 100 ist in 1 derart dargestellt, dass er manche der oben beschriebenen Merkmale eines Datenflussgraphen veranschaulicht. Ein Datenflussgraph ist ein Programm, das als ein visueller Fluss von Datensätzen durch Komponenten und Flüsse repräsentiert werden kann. Die Komponenten, wie hierin bezeichnet, sind Teile des Datenflussgraphen, die Operationen an Datensätzen durchführen, und die Verbindungen zwischen den Komponenten werden hierin als Flüsse bezeichnet.
-
Allgemein gesagt wird ein Datenflussgraph durch Anordnen von Komponenten und Flüssen in einer grafischen Benutzeroberfläche erzeugt. 1 veranschaulicht ein Beispiel für eine solche Ansicht eines Datenflussgraphen, wobei die rechteckigen Kästchen Komponenten sind und die Linien zwischen ihnen jeweils einen Fluss repräsentieren. Datenflussgraphen sind eine zweckdienliche Weise zum Schreiben von Programmen, die an einem Datensatz operieren, da der Fluss von Daten visualisiert werden kann, wenn der Datenflussgraph angesehen wird. Sobald ein Datenfluss zur Ausführung bereit ist, kann es durch ein geeignetes Rechensystem kompiliert und dann ausgeführt werden.
-
In dem Beispiel von 1 werden drei Dateneingaben 102, 104 und 106 auf eine Weise aufgerufen, manipuliert und kombiniert, die nachstehend beschrieben wird, um zwei Datenausgaben 122 und 124 zu erzeugen. Eine Dateneingabe kann von verschiedenen Quellen bereitgestellt werden, einschließlich von einer Datei, die in einem computerlesbaren Medium gespeichert ist, von einer Sammlung von Dateien oder von einer Datenbanktabelle. In dem Beispiel von 1 sind die Dateneingaben 102, 104 und 106 auf eine Weise dargestellt, die häufig verwendet wird, um einzelne Datendateien darzustellen, die in einem computerlesbaren Medium gespeichert sind.
-
In dem Beispiel von 1 werden Eingabedaten 102 gelesen und operiert eine Filterkomponente 108 an diesen, die Datensätze ausgibt, die einen speziellen logischen Ausdruck erfüllen. Falls beispielsweise die Eingabedaten 102 ein Datenfeld beinhalteten, das einen Ländercode spezifiziert, könnte das Filter 108 dazu konfiguriert sein, nur jene Datensätze auszugeben, die einen Wert dieses Datenfeldes von „US“ aufweisen. Datensätze, die vom Filter 108 ausgegeben werden, werden in eine Sortierungskomponente 110 eingegeben, die die Datensätze in eine Reihenfolge sortiert, die durch einen ausgewählten Sortier-„Schlüssel‟ angegeben wird, der ein oder mehrere Datenfelder identifiziert, gemäß denen die Datensätze geordnet werden sollen. Die sortierten Datensätze werden zu der Vereinigungskomponente 120 ausgegeben.
-
Zusätzlich werden die Eingabedaten 104 gelesen und operiert eine Transformationskomponente 112 an diesen, die die Eingabedatensätze gemäß einem Transformationscode manipuliert, der in der Transformationskomponente 112 gespeichert ist (oder diese anderweitig darauf zugreift). Eine Transformation kann zum Beispiel Datenfelder für jeden Datensatz hinzufügen oder entfernen und/oder kann Werte von Datenfeldern beim Erzeugen von Ausgabedaten manipulieren. Es ist anzumerken, dass im Beispiel von 1 die Filterkomponente 108 und die Transformationskomponente 112 Komponentenparallelität aufweisen. Das heißt, das Filter 108 kann an Datensätzen aus den Eingabedaten 102 zur gleichen Zeit operieren, während die Transformation 112 an Datensätzen aus den Eingabedaten 104 operiert. Die Komponentenparallelität kann in manchen Fällen ausgenutzt werden, indem die Filter- 108 und die Transformationskomponente 112 unter Verwendung unterschiedlicher Prozessoren und in manchen Fällen unter Verwendung unterschiedlicher Rechensysteme ausgeführt werden.
-
In dem Beispiel von 1 empfängt eine Vereinigungskomponente 116 Datensätze, die von der Transformation 112 und von der Filterkomponente 114 (die, wie oben besprochen, in Bezug auf das Filter 108 operiert) ausgegeben werden. Die Vereinigungskomponente kann dazu konfiguriert sein, eine einzelne Menge von Datensätzen aus zwei Mengen von Datensätzen zu erzeugen, indem sie Datensätze von jeder Menge gemäß einem Schlüssel abgleicht, der ein Datenfeld von jeder Menge von Eingabedatensätzen identifiziert. Transformationscode, der in der Vereinigungskomponente 116 gespeichert ist (oder diese anderweitig darauf zugreift), kann ferner vorgeben, wie ausgehende Datensätze von der Vereinigungskomponente basierend auf Datenfeldwerten zu konstruieren sind, die in übereinstimmenden Datensätzen von den beiden Mengen von Eingabedatensätzen enthalten sind.
-
Die Datensätze, die von der Vereinigungskomponente 116 ausgegeben werden, werden durch eine Replizierungskomponente 118 repliziert, um zwei identische Mengen von Datensätzen zu erzeugen. Eine dieser Mengen von Datensätzen wird als Ausgabedaten 124 gespeichert, wohingegen die andere Menge mit den Datensätzen vereint wird, die von der Sortierung 110 ausgegeben werden, und das Ergebnis wird als Ausgabedaten 122 gespeichert.
-
Allgemein sind Komponenten in einem Datenflussgraphen in gewissem Maße konfiguriert, ihre Funktion zu definieren. In dem Fall der Filter- und Transformationskomponenten in dem Beispiel von 1 werden die Komponenten beispielsweise durch Transformationscode konfiguriert, der vorgibt, wie die Datensätze ausgewählt bzw. transformiert werden. In manchen Fällen kann eine Transformationskomponente auch ein Ausgabedatensatzformat definieren, das sich vom Datensatzformat von Eingabedatensätzen unterscheidet. Die Sortierungskomponente kann durch Spezifizieren eines Sortierschlüssels und in manchen Fällen durch Spezifizieren, wie die Sortierung durchzuführen ist (z. B. aufsteigende gegenüber absteigender Werte), konfiguriert werden. In jedem dieser Fälle wird eine Art von Konfiguration angewendet, um zu beschreiben, wie die Komponente an Datensätzen operieren sollte. Die Daten, die eine solche Konfiguration beschreiben, können hierin kollektiv als „Konfigurationsdaten“ bezeichnet werden. Transformationscode, Schlüsselwerte, Datensatzformate usw. sind daher jeweils eine Art von Konfigurationsdaten. Die Replizierungskomponente in dem Beispiel von 1 kann, zumindest in manchen Fällen, ohne definierte Konfigurationsdaten funktionieren, da die Komponente dazu ausgebildet ist, nur einen Datenfluss zu replizieren, und ist möglicherweise nicht anderweitig konfigurierbar.
-
2 stellt ein Flussdiagramm eines Verfahrens zum automatischen Umwandeln eines Programms, das in einer prozeduralen Sprache geschrieben ist, in einen Datenflussgraphen gemäß einigen Ausführungsformen dar. Wie oben besprochen, kann gemäß manchen Aspekten der vorliegenden Anmeldung die Funktionalität eines Datenverarbeitungssystems mittels eines computerausgeführten Tools erhöht werden, das Programme, die in einer prozeduralen Sprache geschrieben sind, in Komponenten umwandelt, die als ein Datenflussgraph ausgeführt werden können. Das Verfahren 200 veranschaulicht, wie ein solches Tool betrieben werden kann, um eine solche Umwandlung durch ein Umwandlungsprogramm 201 in einen Datenflussgraphen 208 durchzuführen.
-
In dem Beispiel von 2 ist ein Programm 201, das in einer prozeduralen Sprache geschrieben ist, als Eingabe in eine Umwandlungs-Engine 205 bereitgestellt, die eine oder mehrere Rechenvorrichtungen umfasst, die das oben besprochene Tool ausführen. Das Programm 201 kann in einer beliebigen prozeduralen Sprache geschrieben sein, da die hierin beschriebenen Techniken nicht auf irgendeine spezielle Sprache beschränkt sind. Beispiele für geeignete Sprachen beinhalten SAS (Statistical Analysis System), BASIC, Fortran, Java, Mathematica, MATLAB, Pascal, Perl, Python, R, Unix-Shell und Visual Basic.
-
Während der Ausführung durch die Umwandlungs-Engine kann das Tool eine vordefinierte Grammatik 206 nutzen. Die Grammatik 206 kann verschiedene Definitionen bereitstellen, auf die das durch die Umwandlungs-Engine 205 ausgeführte Tool angewiesen ist, die dem Tool ermöglichen, das Programm 201 zu parsen und den Datenflussgraphen 208 zu erzeugen. Diese durch die Grammatik 206 bereitgestellten Definitionen können dem Tool angeben, wie Wörter und Symbole im Programm 201 zu interpretieren sind, wie Datenoperationen (oder Gruppen von Datenoperationen) im Programm als Funktionalität entsprechend eines speziellen Typs von Datenflussgraphenkomponente aufweisend zu identifizieren sind, wie Datenflussgraphenkomponenten zu erzeugen sind, wie Datenoperationen (oder Gruppen von Datenoperationen) im Programm als bezüglich Konfigurationsdaten für einen identifizierten Typ von Datenflussgraphenkomponente zu identifizieren sind, wie Datenflussgraphenkomponenten, die Datenoperationen im Programm entsprechen, zu konfigurieren sind und/oder wie der Steuerfluss von Datenoperationen im Programm zu bestimmen ist.
-
Wie hierin verwendet, bezieht sich „Steuerfluss“ auf eine Reihenfolge, konsistent mit dem Programm, in der individuelle Datenoperationen durchgeführt werden. Beispielsweise kann ein Programm Operationen C, D und E durchführen und kann derart konfiguriert sein, dass die Operation C entweder vor Operation D oder Operation E durchgeführt wird. Diese Abhängigkeit von der relativen Reihenfolge der Operationen C, D und E ist ein Beispiel eines Steuerflusses.
-
In dem Beispiel von 2 können Daten, die durch das Tool erzeugt werden, das das Programm parst, in einem Katalog 207 gespeichert werden, der eine beliebige geeignete Datenstruktur umfassen kann, in der Aspekte, wie etwa bestimmte Steuerflussbeziehungen von Datenoperationen im Programm, gespeichert werden können. Die Umwandlungs-Engine kann während anschließender Parsing-Operationen auf den Katalog zugreifen, wie ferner nachstehend beschrieben.
-
Wie hierin darauf Bezug genommen, bezeichnet eine „Datenoperation“ für ein Programm einen Teil des Programms, der bei seiner Ausführung die Ausführungsumgebung des Programms modifiziert. Datenoperationen können beispielsweise die Modifikation des Werts einer oder mehrerer Variablen oder anderer Daten, die in der Ausführungsumgebung existieren, beinhalten. Es versteht sich, dass die Modifikation eines Werts selbst eine oder mehrere Datenoperationen umfassen kann. Wenn beispielsweise ein Befehl in einem prozeduralen Programm den Wert einer Variable auf einen Wert gleich dem Ergebnis einer Berechnung setzt, kann jeder Teil der Berechnung, sowie das Endergebnis des Speicherns des berechneten Werts in der Variable, eine separate Datenoperation repräsentieren. Demnach kann zumindest in manchen Fällen ein einzelner Befehl des Programms mehrere Datenoperationen repräsentieren, da verschiedene Änderungen an der Ausführungsumgebung während der Ausführung des Befehls auftreten.
-
Gemäß manchen Ausführungsformen kann die Umwandlungs-Engine 205 eine oder mehrere Komponenten und einen oder mehrere Flüsse eines Datenflussgraphen 208 als einer Sequenz von Datenoperationen im Programm 201 entsprechend erzeugen. In manchen Fällen kann das Erzeugen einer Komponente des Datenflussgraphen 208 Identifizieren eines Typs von Komponente aus mehreren verfügbaren Datenflussgraphenkomponenten beinhalten. In manchen Fällen kann das Erzeugen einer Komponente des Datenflussgraphen 208 auch Erzeugen von Konfigurationsdaten für eine identifizierte Komponente beinhalten, was Definieren eines Parameters oder anderer konfigurierbarer Aspekte der Komponente basierend auf Datenoperationen im Programm umfassen kann. Beispielsweise können Instanzen eines in 2 gezeigten veranschaulichenden Datenflussgraphen-Transformationscodes 209 durch das Tool erzeugt werden, das durch die Umwandlungs-Engine ausgeführt wird und mit der identifizierten Komponente assoziiert ist.
-
Gemäß manchen Ausführungsformen kann das durch die Umwandlungs-Engine 205 ausgeführte Tool Flüsse zwischen identifizierten Komponenten des Datenflussgraphen 208 basierend auf bestimmten Steuerflussbeziehungen von Datenoperationen im Programm erzeugen. Wenn das Tool beispielsweise eine erste und zweite Komponente für spezielle Datenoperationen (oder Mengen von Datenoperationen) identifiziert, kann das Tool auch identifizieren, dass die mit der ersten Komponente assoziierte(n) Datenoperation(en) früher im Steuerfluss auftreten als die mit der zweiten Komponente assoziierte(n) Datenoperation(en). Infolgedessen kann das Tool einen oder mehrere Flüsse erzeugen, die die erste und zweite Komponente verbinden, sodass die zweite Komponente downstream (nachgelagert) im Datenflussgraphen von der ersten Komponente ausgeführt wird (das heißt, Daten fließen aus der ersten Komponente früher in der Sequenz von Komponenten als Daten, die in die zweite Komponente fließen).
-
Das Nettoergebnis des Prozesses, der durch die Umwandlungs-Engine 205 basierend auf der Grammatik 206 durchgeführt wird, besteht darin, den Datenflussgraphen 208 zu erzeugen, der eine Datenflussgraphenrepräsentation des Programms 201 ist. Diese Beziehung zwischen einem Programm und einem äquivalenten Datenflussgraphen ist in 2 und in nachfolgenden Zeichnungen durch einen Zickzack-Pfeil veranschaulicht.
-
3 ist ein Flussdiagramm eines Verfahrens zum automatischen Umwandeln eines Programms, das in einer prozeduralen Sprache geschrieben ist, in einen Datenflussgraphen gemäß einigen Ausführungsformen. Das Verfahren 300 ist ein veranschaulichender Prozess, bei dem ein Programm 301, das in einer prozeduralen Sprache geschrieben ist, automatisch in einen Datenflussgraphen umgewandelt wird. Das Verfahren 300 kann beispielsweise durch das Tool durchgeführt werden, das durch die in 2 gezeigte und vorstehend besprochene Umwandlungs-Engine 205 ausgeführt wird.
-
Das Verfahren 300 beginnt mit Handlung 302, bei der das Programm 301 basierend auf einer Grammatik 303 in Schritte aufgeteilt wird. Ein Tool, das das Verfahren 300 durchführt, kann, wie mit dem Beispiel der Grammatik 206 in 2, auf eine Grammatik 303 angewiesen sein, die unter anderem angibt, wie Wörter und Symbole in einem Programm zu interpretieren sind und wie Datenoperationen (oder Gruppen von Datenoperationen) im Programm als Funktionalität entsprechend einem speziellen Typ von Datenflussgraphenkomponente aufweisend zu identifizieren sind. Insbesondere kann das Tool das Programm 301 unter Verwendung der Grammatik 303 parsen, um eine oder mehrere Datenoperationen bei Handlung 302 zu identifizieren. Jede Gruppe einer oder mehrerer Datenoperationen kann als ein „Schritt“ bezeichnet werden, sodass die Datenoperationen des Programms in eine Sequenz von Schritten aufgeteilt sind, wobei jeder Schritt eine oder mehrere durch das Programm durchgeführte Datenoperationen enthält.
-
Bei Handlung 304 kann das Tool, das das Verfahren 300 ausführt, Informationen, die die erkannten Schritte identifizieren, in einem Katalog 305 speichern oder anderweitig aufzeichnen. Der bei Handlung 304 erzeugte Katalog kann Schritte des Programms und die Steuerflussbeziehungen der Schritte identifizieren und kann ferner die eine oder die mehreren Datenoperationen des Programms 301, die jedem Schritt entsprechen, identifizieren.
-
Bei Handlung 306 wählt das Tool, das das Verfahren 300 ausführt, Typen von Datenflussgraphenkomponenten aus, die den identifizierten Schritten des Programms entsprechen (und die möglicherweise bei Handlung 304 im Katalog gespeichert wurden). Der ausgewählte Typ von Datenflussgraphenkomponente kann aus Parsen der Datenoperationen eines identifizierten Schritts unter Verwendung der Grammatik 303 und Bestimmen, basierend auf dem Parsen, welcher Typ von Datenflussgraphenkomponente den Datenoperationen des Schritts entspricht, basieren. Wie oben besprochen, kann die Grammatik 303 dazu konfiguriert sein, spezielle Typen von Datenflussgraphenkomponenten mit spezieller Sprache im Programm in Beziehung zu setzen, sodass eine Datenflussgraphenkomponente, die die gleiche Funktion wie ein Schritt durchführt, in dem die Sprache erscheint, zweckmäßig erzeugt werden kann.
-
In manchen Ausführungsformen kann eine vorkonfigurierte Bibliothek von Datenflussgraphenkomponententypen dem Tool zur Verfügung stehen, sodass das Identifizieren einer Datenflussgraphenkomponente Auswählen eines der Komponententypen aus der Bibliothek umfasst (z. B. eine Komponente des Typs „Sortieren“ oder des Typs „Filtern“, wie mit Bezug auf 1 besprochen). In manchen Ausführungsformen kann eine Instanz einer Datenflussgraphenkomponente des ausgewählten Komponententyps erzeugt werden, die eine entsprechende Funktion wie ein Schritt des Programms aufweist.
-
Bei Handlung 308 kann das Tool, das das Verfahren 300 ausführt, bei Handlung 306 ausgewählte Datenflussgraphenkomponenten konfigurieren. Handlung 308 kann dementsprechend Erzeugen von Konfigurationsdaten für eine oder mehrere der bei Handlung 306 ausgewählten Komponenten umfassen. Das Tool kann auf eine Grammatik zugreifen, um zu bestimmen, wie eine gegebene Datenflussgraphenkomponente basierend auf den Datenoperationen zu konfigurieren ist, die in dem entsprechenden Schritt des Programms vorhanden sind. Wie oben besprochen, werden Daten, die die Konfiguration einer Datenflussgraphenkomponente beschreiben, hierin als „Konfigurationsdaten“ bezeichnet. Handlung 308 kann dadurch Erzeugen von Werten für Betriebsparameter einer Komponente und/oder Erzeugen eines Transformationscodes für eine Komponente umfassen. Es versteht sich, dass manche der bei Handlung 306 identifizierten Komponenten möglicherweise keine Konfigurationsdaten erfordern, und infolgedessen werden Konfigurationsdaten möglicherweise nicht für alle der identifizierten Komponenten erzeugt.
-
Bei Handlung 310 kann das Tool, das das Verfahren 300 ausführt, einen Datenflussgraphen erzeugen, der die identifizierten Komponenten umfasst, die, wenn zutreffend, durch die Handlung 308 konfiguriert werden (z. B. die erzeugten Konfigurationsdaten umfassend), und mit Flüssen, die die Komponenten in einer Sequenz gemäß den identifizierten Steuerflussbeziehungen der Schritte des Programms verbinden. In manchen Ausführungsformen kann Handlung 310 Aufzeichnen der schon identifizierten und konfigurierten Komponenten zusammen mit erzeugten Flüssen, die die Komponenten verbinden, in ein geeignetes computerlesbares Speicherungsmedium umfassen. Beispielsweise kann ein Datenflussgraph als eine Datendatei gespeichert werden, die Daten beinhaltet, die Datenflussgraphenkomponenten, Flüsse und Konfigurationsdaten für die Komponenten beschreiben oder anderweitig identifizieren, und Handlung 310 kann Aufzeichnen der Datendatei umfassen. In manchen Ausführungsformen kann eine solche Datendatei so angeordnet sein, dass sie durch ein anderes Programm vor der Ausführung kompiliert wird. In manchen Ausführungsformen kann der erzeugte Datenflussgraph als eine ausführbare Datendatei erzeugt werden, in welchem Fall die Handlung 310 einen Schritt des Kompilierens des Datenflussgraphen gemäß den identifizierten Datenflussgraphenkomponenten, Flüssen und Konfigurationsdaten für die Komponenten umfassen kann. Handlung 310 kann Erzeugen von Flüssen umfassen, sodass diese die Datenflussgraphenkomponenten in einer Reihenfolge gemäß den durch den Katalog identifizierten Steuerflussbeziehungen verbinden.
-
Gemäß manchen Ausführungsformen kann das Programm 301 eine oder mehrere Prozeduren umfassen (die auch als Routinen, Funktionen, Subroutinen oder Makros bezeichnet werden können) und das Tool, das das Verfahren 300 ausführt, kann solche Prozeduren beim Parsen des Programms unter Verwendung einer Grammatik identifizieren. Beispielsweise kann das Tool einen oder mehrere Prozeduraufrufe identifizieren und/oder kann Prozedurdefinitionen erkennen. In manchen Ausführungsformen kann das Tool, das das Verfahren 300 ausführt, eine wiederverwendbare Gruppe von Datenflussgraphenkomponenten erzeugen, manchmal als ein „Teilgraph“ bezeichnet, um die Datenoperationen einer identifizierten Prozedur zu repräsentieren. In manchen Fällen kann dieser Teilgraph in einer Datendatei gespeichert sein, auf die der erzeugte Datenflussgraph zugreifen kann. Dies kann dem erzeugten Datenflussgraphen ermöglichen, die gleiche Menge von Komponenten auf eine ähnliche Weise wiederzuverwenden, wie das Programm 301 wiederholte Prozeduraufrufe machen und dadurch den gleichen Codeabschnitt wiederverwenden kann. Der Teilgraph kann einen gesamten identifizierten Schritt des Programms repräsentieren oder kann stattdessen einen Teil eines identifizierten Schritts des Programms repräsentieren.
-
In Fällen, bei denen das Tool, das das Verfahren 300 ausführt, einen Teilgraph erzeugt, um eine Prozedur des Programms 301 zu repräsentieren, kann die Prozedur einen oder mehrere Werte als Eingaben in die Prozedur nutzen. In solchen Fällen kann der erzeugte Teilgraph parametrisiert sein, sodass sich das Verhalten der Datenflussgraphenkomponenten im Teilgraphen basierend auf dem Wert der Teilgraphenparameter anders verhält. Beispielsweise können Zweige von Komponenten im Teilgraphen basierend auf dem Wert einer Komponente aktiviert oder deaktiviert sein.
-
Gemäß manchen Ausführungsformen kann das Programm 301 eine oder mehrere globale Variablen umfassen oder anderweitig basierend auf diesen arbeiten, die Werte sind, die in der Ausführungsumgebung definiert sind und die die Weise ändern können, mit der Datenoperationen im Programm durchgeführt werden. In solchen Fällen kann das Tool, das das Verfahren 300 ausführt, einen oder mehrere Datenflussgraphenparameter erzeugen, die Parameter sind, die auf der Datenflussgraphenebene gesetzt sind und auf deren Werte eine oder mehrere Komponenten des Datenflussgraphen zugreifen können, um das Verhalten der Komponente vorzugeben. Als ein veranschaulichendes Beispiel kann das Programm 301 derart geschrieben sein, eine globale Variable mit einem Wert eines Ländercodes zu initialisieren und eine anschließende Verarbeitung von Daten in Abhängigkeit von dem Wert durchzuführen. Ein erzeugter Datenflussgraph kann mit einem Graphenparameter zum Definieren des Ländercodes definiert sein und Komponenten des Datenflussgraphen können diese Parameterdefinition in Transformationscode oder anderweitig nutzen.
-
Gemäß manchen Ausführungsformen kann das Tool, das das Verfahren 300 ausführt, Kommentare im Programm 301 identifizieren. Kommentare sind Abschnitte eines Programms, die nicht ausgeführt werden, und werden typischerweise unter Verwendung eines Trennzeichens am Anfang oder am Anfang und am Ende des Kommentarabschnitts identifiziert. In manchen Fällen kann das Tool, das das Verfahren 300 ausführt, solche Kommentare im Programm identifizieren und diese Kommentare an relevante Stellen im erzeugten Datenflussgraphen kopieren. Kommentare können beispielsweise durch das Tool als mit speziellen Datenoperationen im Programm basierend auf der Nähe des Kommentartexts zu den Datenoperationen in Beziehung stehend identifiziert werden. Solche Kommentare können in Transformationscode einer Komponente entsprechend diesen Datenoperationen platziert werden, sodass jegliche Informationen in diesen Kommentaren in dem resultierenden Datenflussgraphen bewahrt werden.
-
Gemäß manchen Ausführungsformen kann das Tool, das das Verfahren 300 ausführt, Leerraum im Programm 301 identifizieren und beim Erzeugen des Datenflussgraphen bewahren. Wie hierin darauf Bezug genommen, bezieht sich „Leerraum“ auf irgendein Zeichen oder Reihe von Zeichen, das/die horizontalen oder vertikalen Raum in der Typographie im Programm repräsentiert, wobei das üblichste Beispiel ein „Leerzeichen“-Zeichen ist. In manchen Fällen kann das Tool, das das Verfahren 300 ausführt, solchen Leerraum in einer Datenoperation des Programms identifizieren und das Vorhandensein des Leerraums beim Erzeugen von Transformationscode (oder anderer Konfigurationsdaten) für die Datenoperation in einer Komponente des Datenflussgraphen bewahren.
-
4A-4F stellen ein veranschaulichendes Beispiel zum Umwandeln eines Programms, das in der prozeduralen Sprache SAS geschrieben ist, in einen Datenflussgraphen bereit, gemäß einigen Ausführungsformen. 4A stellt ein veranschaulichendes SAS-Programm dar, das eine Reihe von Operationen an zwei Eingabedatendateien durchführt und eine Ausgabedatendatei erzeugt. Wie oben besprochen, kann ein computerausgeführtes Tool ausgeführt werden, um das veranschaulichte Programm in Komponenten umzuwandeln, die als ein Datenflussgraph ausgeführt werden können.
-
Gemäß manchen Ausführungsformen, wenn ausgeführt und ein Programm 400 als Eingabe bereitgestellt, kann das Tool vier Schritte des Programms identifizieren, mit 401a, 401b, 401c und 401d bezeichnet. Wie oben mit Bezug auf Handlung 302 von 3 besprochen, kann ein Tool auf eine Grammatik zugreifen, um Datenoperationen oder Gruppen von Datenoperationen zu identifizieren, die Schritten des Programms entsprechen. In dem veranschaulichenden Programm 400 sind diese Schritte dazu konfiguriert, die folgenden Aktionen durchzuführen. Schritt 401a liest eine Datendatei mit dem Namen „DATEI A“, parst ihren Inhalt in drei Datenfelder und erzeugt ein zusätzliches Datenfeld (AUFTRAG_VOLLER _NAME) aus den Inhalten der drei Datenfelder. Schritt 401b liest eine Datendatei mit dem Namen „DATEI_B“, parst ihren Inhalt in drei Datenfelder und erzeugt ein zusätzliches Datenfeld (AUFTRAG_VOLLER_NAME) aus den Inhalten der drei Datenfelder. Schritt 401c führt die Ergebnisse der Schritte 401a und 401b zusammen. Schritt 401d filtert jegliche Datensätze heraus, die keinen speziellen Wert („US“) in den ersten beiden Zeichen der Datenfeldes „AUFTRAG_VOLLER_NAME“ aufweisen.
-
Gemäß manchen Ausführungsformen kann das ausgeführte Tool die Inhalte dieser Teile des Programms 400 als Operationen, die durch Komponenten eines Datenflussgraphen durchgeführt werden können, entsprechend identifizieren. Insbesondere kann das Tool die Inhalte der Teile des Codes bezeichnet mit 401a und 401b als jeweils eine Transformation einer gelesenen Datendatei durchführend erkennen. Ferner kann das Tool die Inhalte des Teils des Codes bezeichnet mit 401c als eine Vereinigungsoperation durchführend erkennen, und die Inhalte des Teils des Codes bezeichnet mit 401d als eine Filteroperation durchführend erkennen. Darüber hinaus kann das Tool Steuerflussbeziehungen dieser Schritte identifizieren, indem es erkennt, dass Schritt 401c das Ergebnis der Schritte 401a und 401b nutzt („MERGE DATENMENGE_A DATENMENGE_B“) und dass Schritt 401d das Ergebnis des Schritts 401c nutzt („SET DATENMENGE C“). Infolgedessen können die in 4B gezeigten Komponenten und Flüsse identifiziert werden. Das Tool kann auch geeignete Konfigurationsdaten für die Komponenten 406, 408, 410 und 412 erzeugen. Als ein finaler Schritt kann das Tool dann einen Datenflussgraphen erzeugen, der wie in 4B gezeigt angeordnet ist und der die erzeugten Konfigurationsdaten beinhaltet.
-
4C veranschaulicht 4B mit Annotationen, die mit den Komponenten 406, 408, 410 und 412 assoziiert sind und jeweilige Schritte des in 4A gezeigten Programms 400 zeigen. Code in einer prozeduralen Sprache, der einer Komponente des Datenflussgraphen 450 äquivalent ist, ist mit der Komponente in 4C mit einem grauen Zickzack-Pfeil verbunden gezeigt. Es versteht sich daher, dass die annotierten Abschnitte des Programms 400 nicht wortwörtlich durch jeweilige Komponenten im Datenflussgraphen 450 gespeichert oder anderweitig ausgeführt werden. Stattdessen führen die Komponenten des Datenflussgraphen 450 Funktionalität durch, die zu den assoziierten Abschnitten des Programms äquivalent sind.
-
4D veranschaulicht Einzelheiten des Umwandelns eines ersten Schritts des in 4A gezeigten Programms in eine erste Komponente des in den 4B-4C gezeigten Datenflussgraphen, gemäß einigen Ausführungsformen. Um den Prozess des Konfigurierens einer Komponente durch Erzeugen von Konfigurationsdaten für die Komponente durch das Tool zusätzlich zu veranschaulichen, zeigt 4D Schritt 401a von 4A und veranschaulicht, wie der resultierende Abschnitt eines Datenflussgraphen erzeugt werden kann.
-
In dem Beispiel von 4D wird ein Fluss 405 erzeugt, um die identifizierte Transformationskomponente 406 mit der Eingabedatei DATEI_A zu verbinden, infolge der Datenoperation „INFILE DATEI_A“ im Abschnitt 401a des Programms, der angibt, dass das Programm DATEI_A lesen soll. Zusätzlich ist die Transformationskomponente 406 dazu konfiguriert, eine Sequenz von Bytes aus der Eingabedatei zu lesen, wie durch die Datenoperation „INPUT AUFTRAG_NAME $10 EXT $4 ÄNDERUNGS_FLAG $1“ des Programms vorgegeben, die angibt, dass zehn Bytes als ein Wert für das Datenfeld AUFTRAG_NAME zu lesen sind, die nächsten vier Bytes als ein Wert für das Datenfeld EXT zu lesen sind und das nächste Byte als ein Wert für das Datenfeld ÄNDERUNGS_FLAG zu lesen ist. Die Komponente 406 kann dazu konfiguriert sein, damit fortzufahren, Bytes aus der Eingabe DATEI A zu lesen, unter der Annahme, dass es zusätzliche Bytes gibt; auf diese Weise wird jeder Block von 15 Bytes in der Eingabedatei ein Teil sukzessiver Datensätze.
-
Zusätzlich ist die Komponente 406 mit dem Transformationscode 451 konfiguriert, ein zusätzliches Ausgabedatenfeld durch Verketten der drei Feldwerte, die aus der Eingabedatei gelesen werden, mit Unterstrich-Zeichen zu erzeugen, wie durch die Datenoperation vorgegeben, die AUFTRAG_VOLLER_NAME im Programmabschnitt 401a definiert. Die Komponente 406 kann dazu konfiguriert sein, Datensätze auf dem Fluss 407 gemäß dem veranschaulichten Ausgabedatensatzformat 452 zu erzeugen. Das Tool, das den Datenflussgraphen erzeugt, kann das Datensatzformat 452 durch Interpretieren des Programmabschnitts 401a unter Verwendung einer Grammatik erzeugen, um die Typen und Längen der Datenfelder zu identifizieren, die durch diesen Schritt des Programms erzeugt werden. In diesem Fall können die Längen der Felder „AUFTRAG NAME“, „EXT“ und „ÄNDERUNGS_FLAG“ aus der Weise gefolgert werden, mit der sie aus der Eingabedatei gelesen werden, und die Länge des Feldes „AUFTRAG_VOLLER _NAME‟ kann infolge des Verkettens der insgesamt 15 Zeichen der drei anderen Felder mit zwei Unterstrich-Zeichen gefolgert werden.
-
4E-4F veranschaulichen Einzelheiten des Umwandelns eines zweiten Schritts des in 4A gezeigten Programms in eine zweite Komponente des in den 4B-4C gezeigten Datenflussgraphen, gemäß einigen Ausführungsformen. 4E reproduziert den Inhalt des Schritts 401c von 4A und stellt drei unterschiedliche Parsing-Operationen des Schritts unter Verwendung einer Grammatik 480 dar.
-
In einer ersten Instanz in 4E werden die veranschaulichten Datenoperationen des Programms 481 unter Verwendung der Grammatik 480 geparst, um diese Datenoperationen als einen Schritt zu identifizieren, nämlich den oben beschriebenen Schritt 401c. Das Tool kann unter Verwendung der Grammatik 480 die Datenoperationen 481 als dem Schritt entsprechend basierend auf der hervorgehobenen Sprache erkennen, die a) die Datenoperationen, die mit „DATA..“ beginnen und mit „...RUN;‟ enden, als einen Schritt definierend identifiziert; und b) erkennt, dass der Schritt von „DATENMENGE_A“ und „DATENMENGE_B“ abhängt und dass dies daher eine spezielle Steuerflussbeziehung zwischen diesem Schritt und anderen Teilen des Programms impliziert.
-
In einer zweiten Instanz in 4E kann das Tool die veranschaulichten Datenoperationen des Programms 482 (das jetzt möglicherweise als einem Schritt 401c entsprechend identifiziert wurde) unter Verwendung der Grammatik 480 parsen, um einen Typ von Datenflussgraphenkomponente zu bestimmen, die der Funktion des Schritts im Programm entspricht. In dem Beispiel von 4E kann das hervorgehobene Schlüsselwort „MERGE“ unter Verwendung der Grammatik als einer Datenflussgraphenkomponente des Typs „VEREINEN“ entsprechend identifiziert werden.
-
In einer dritten Instanz in 4E kann das Tool die veranschaulichten Datenoperationen des Programms 482 (das jetzt möglicherweise als einem Schritt 401c entsprechend identifiziert wurde) unter Verwendung der Grammatik 480 parsen, um zu bestimmen, wie eine Instanz des Typs von Datenflusskomponente, die in der oben beschriebenen zweiten Instanz zum Parsen ausgewählt wird, zu konfigurieren ist. In dem Beispiel von 4E kann die hervorgehobene Sprache „BY AUFTRAG_NAME;“ unter Verwendung der Grammatik als angebend identifiziert werden, dass die Instanz der Datenflussgraphenkomponente „VEREINEN“ konfiguriert sein sollte, ein Feld namens „AUFTRAG_NAME“ als ein Schlüsselfeld für die Vereinigungsoperation zu verwenden.
-
Dementsprechend stellt 4E ein Beispiel bereit, wie eine Grammatik 480 diese drei unterschiedlichen Typen von Informationen bezüglich eines Teils eines Programms durch Parsen dieses Teils erzeugen kann. Obwohl das Parsen oben hinsichtlich drei separater Instanzen des Parsens beschrieben ist, ist zu verstehen, dass das Tool die Grammatik 480 nutzen kann, um den Teil des Programms in einer beliebigen Anzahl von Weisen zu parsen, die jeweils beliebige geeignete Teile des Teils des Programms in einer beliebigen Reihenfolge parsen, und dass das Obenstehende lediglich als ein veranschaulichender Prozess bereitgestellt ist.
-
Angesichts des oben beschriebenen Parsens von Schritt 401c veranschaulicht 4F, wie der resultierende Abschnitt eines Datenflussgraphen erzeugt werden kann. In dem Beispiel von 4F stellen Flüsse 407 und 409 Datensätze mit den veranschaulichten Eingabedatensatzformaten von den beiden Upstream-Transformationskomponenten 406 und 408 bereit. Beim Parsen des Schritts 401c des Programms kann das Tool identifizieren, dass eine Vereinigungskomponente als ein Ergebnis des Befehls „MERGE“ im Programm zweckmäßig ist, und kann ferner Konfigurationsdaten für die Vereinigungskomponente erzeugen, die einen Vereinigungsschlüssel 462 von AUFTRAG NAME als ein Feld zum Verwenden für das Abgleichen eingehender Datensätze für die Vereinigung spezifizieren. Infolge der Vereinigung können die einzigen Datensätze, die von der Komponente 410 entlang des Flusses 411 ausgegeben werden, jene sein, für die Datensätze mit dem gleichen Wert für AUFTRAG NAME in beiden eingehenden Mengen von Datensätzen von den Transformationskomponenten vorhanden waren.
-
5 veranschaulicht ein Beispiel für eine geeignete Rechensystemumgebung 500, in der die hierin beschriebene Technologie implementiert werden kann. Die Rechensystemumgebung 500 ist nur ein Beispiel für eine geeignete Rechenumgebung und soll keinerlei Beschränkung des Verwendungsbereichs oder der Funktionalität der hierin beschriebenen Technologie suggerieren. Auch soll die Rechenumgebung 500 nicht so interpretiert werden, dass sie irgendeine Abhängigkeit von oder Anforderung in Bezug auf irgendeine oder eine Kombination von Komponenten aufweist, die in der beispielhaften Betriebsumgebung 500 veranschaulicht wird.
-
Die hierin beschriebene Technologie ist mit zahlreichen anderen Allzweck- oder Spezial-Rechensystemumgebungen oder -konfigurationen betriebsfähig. Zu Beispielen für allgemein bekannte Rechensysteme, Umgebungen und/oder Konfigurationen, die zur Verwendung mit der hierin beschriebenen Technologie geeignet sein können, zählen, ohne darauf beschränkt zu sein, Personal Computer, Server-Computer, Handheld- oder Laptop-Vorrichtungen, Multiprozessorsysteme, Systeme auf Mikroprozessorbasis, Set-Top-Boxen, programmierbare Verbraucherelektronik, Netzwerk-PCs, Minicomputer, Mainframe-Computer, verteilte Rechenumgebungen, die beliebige der oben genannten Systeme oder Vorrichtungen enthalten, und dergleichen.
-
Die Rechenumgebung kann computerausführbare Anweisungen, wie etwa Programmmodule, ausführen. Im Allgemeinen enthalten Programmmodule Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw., die spezielle Aufgaben durchführen oder spezielle abstrakte Datentypen implementieren. Die hierin beschriebene Technologie kann ebenfalls in verteilten Rechenumgebungen umgesetzt werden, wobei Aufgaben durch entfernte Verarbeitungsvorrichtungen durchgeführt werden, die über ein Kommunikationsnetzwerk verknüpft sind. In einer verteilten Rechenumgebung können sich Programmmodule sowohl in lokalen als auch in entfernten Computerspeicherungsmedien, einschließlich Speicher-Speicherungsvorrichtungen, befinden.
-
Unter Bezugnahme auf 5 beinhaltet ein beispielhaftes System zum Implementieren der hierin beschriebenen Technologie eine Allzweck-Rechenvorrichtung in Form eines Computers 510. Zu den Komponenten des Computers 510 können, aber ohne darauf beschränkt zu sein, eine Verarbeitungseinheit 520, ein Systemspeicher 530 und ein Systembus 521 zählen, der verschiedene Systemkomponenten, einschließlich des Systemspeichers, mit der Verarbeitungseinheit 520 koppelt. Der Systembus 521 kann ein beliebiger von mehreren Typen von Busstrukturen sein, einschließlich eines Speicherbusses oder einer Speichersteuerung, eines Peripheriebusses und eines lokalen Busses, die eine beliebige von einer Vielfalt von Busarchitekturen verwenden. Beispielhaft und nicht beschränkend enthalten solche Architekturen einen ISA(Industry Standard Architecture)-Bus, einen MCA(Micro Channel Architecture)-Bus, einen EISA(Enhanced ISA)-Bus, einen lokalen VESA(Video Electronics Standards Association)-Bus und einen PCI(Peripheral Component Interconnect)-Bus, der auch als Mezzanin-Bus bekannt ist.
-
Der Computer 510 enthält typischerweise eine Vielfalt von computerlesbaren Medien. Die computerlesbaren Medien können beliebige verfügbare Medien sein, auf die vom Computer 510 zugegriffen werden kann, und zu ihnen zählen sowohl flüchtige als auch nichtflüchtige Medien, auswechselbare als auch nicht auswechselbare Medien. Beispielhaft und nicht beschränkend können computerlesbare Medien Computerspeicherungsmedien und Kommunikationsmedien umfassen. Zu Computerspeicherungsmedien zählen flüchtige und nichtflüchtige, auswechselbare und nicht auswechselbare Medien, die in einem beliebigen Verfahren oder einer beliebigen Technologie zum Speichern von Informationen implementiert sind, wie etwa computerlesbaren Anweisungen, Datenstrukturen, Programmmodulen oder anderen Daten. Zu Computerspeicherungsmedien zählen unter anderem RAM, ROM, EEPROM, Flash-Speicher oder eine andere Speichertechnologie, CD-ROM, DVD (Digital Versatile Disk) oder eine andere optische Plattenspeicherung, Magnetkassetten, Magnetband, Magnetplattenspeicherung oder andere magnetische Speicherungsvorrichtungen oder ein beliebiges anderes Medium, das verwendet werden kann, um die gewünschten Informationen zu speichern und auf das vom Computer 510 zugegriffen werden kann. Kommunikationsmedien verkörpern typischerweise computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Daten auf einem modulierten Datensignal, wie etwa einer Trägerwelle oder einem anderen Transportmechanismus, und beinhalten beliebige Informationsübermittlungsmedien. Mit dem Begriff „moduliertes Datensignal“ ist ein Signal gemeint, bei dem eine oder mehrere seiner Charakteristiken auf solch eine Art und Weise gesetzt oder geändert sind, um Informationen im Signal zu codieren. Beispielhaft und nicht beschränkend beinhalten Kommunikationsmedien drahtgebundene Medien, wie etwa ein drahtgebundenes Netzwerk oder eine direkt verdrahtete Verbindung, und drahtlose Medien, wie etwa Akustik-, HF-, Infrarot- oder andere drahtlose Medien. Kombinationen beliebiger der oben Genannten sollten ebenfalls im Umfang der computerlesbaren Medien eingeschlossen sein.
-
Das Systemspeicher 530 beinhaltet Computerspeicherungsmedien in Form von flüchtigem und/oder nichtflüchtigem Speicher, wie etwa Nurlesespeicher (ROM) 531 und Direktzugriffsspeicher (RAM) 532. Ein BIOS (Basic Input/Output System) 533, das die Basisroutinen enthält, die das Transferieren von Informationen zwischen Elementen innerhalb des Computers 510 unterstützen, wie etwa während des Hochfahrens, wird typischerweise im ROM 531 gespeichert. Der RAM 532 enthält typischerweise Daten und/oder Programmmodule, auf die unmittelbar von der Verarbeitungseinheit 520 zugegriffen werden kann und/oder die gerade von ihr betrieben werden. Beispielhaft und nicht beschränkend veranschaulicht die 5 ein Betriebssystem 534, Anwendungsprogramme 535, andere Programmmodule 536 und Programmdaten 537.
-
Der Computer 510 kann auch andere auswechselbare/nicht auswechselbare, flüchtige/nichtflüchtige Computerspeicherungsmedien enthalten. Nur beispielhaft veranschaulicht 5 ein Festplattenlaufwerk 541, das aus nicht auswechselbaren, nichtflüchtigen magnetischen Medien liest bzw. darauf schreibt, ein Flash-Laufwerk 551, das aus einem auswechselbaren, nichtflüchtigen Speicher 552, wie etwa Flash-Speicher, liest bzw. darauf schreibt, und ein optisches Plattenlaufwerk 555, das auf eine auswechselbare, nichtflüchtige optische Platte 556, wie etwa eine CD-ROM oder andere optische Medien, liest bzw. darauf schreibt. Andere auswechselbare/nicht auswechselbare, flüchtige/nichtflüchtige Computerspeicherungsmedien, die in der beispielhaften Betriebsumgebung verwendet werden können, beinhalten unter anderem Magnetbandkassetten, Flash-Speicher-Karten, Digital Versatile Disks, digitale Videobänder, Solid-State-RAM, Solid-State-ROM und dergleichen. Das Festplattenlaufwerk 541 ist typischerweise über eine nicht auswechselbare Speicherschnittstelle, wie etwa eine Schnittstelle 540, mit dem Systembus 521 verbunden, und das Magnetplattenlaufwerk 551 und das optische Plattenlaufwerk 555 sind typischerweise über eine auswechselbare Speicherschnittstelle, wie etwa eine Schnittstelle 550, mit dem Systembus 521 verbunden.
-
Die oben besprochenen und in 5 veranschaulichten Laufwerke und ihre assoziierten Computerspeicherungsmedien stellen Speicherung für computerlesbare Anweisungen, Datenstrukturen, Programmmodule und andere Daten für den Computer 510 bereit. In 5 wird zum Beispiel das Festplattenlaufwerk 541 so veranschaulicht, dass es das Betriebssystem 544, die Anwendungsprogramme 545, die anderen Programmmodule 546 und die Programmdaten 547 speichert. Es sei angemerkt, dass diese Komponenten entweder die gleichen wie das Betriebssystem 534, die Anwendungsprogramme 535, die anderen Programmmodule 536 und die Programmdaten 537 sein oder sich von ihnen unterscheiden können. Das Betriebssystem 544, die Anwendungsprogramme 545, die anderen Programmmodule 546 und die Programmdaten 547 sind hier mit anderen Nummerierungen versehen, um zu veranschaulichen, dass sie wenigstens unterschiedliche Kopien sind. Ein Benutzer kann über Eingabevorrichtungen, wie etwa eine Tastatur 562 und eine Zeigevorrichtung 561, die üblicherweise als eine Maus, ein Trackball oder ein Touchpad bezeichnet wird, Befehle und Informationen in den Computer 510 eingeben. Andere Eingabevorrichtungen (nicht gezeigt) können ein Mikrofon, einen Joystick, ein Gamepad, eine Satellitenschüssel, einen Scanner oder dergleichen beinhalten. Diese und andere Eingabevorrichtungen sind mit der Verarbeitungseinheit 520 häufig über eine Benutzereingabeschnittstelle 560 verbunden, die mit dem Systembus gekoppelt ist, können jedoch über andere Schnittstellen und Busstrukturen verbunden sein, wie etwa einen Parallelport, einen Game-Port oder einen Universal Serial Bus (USB). Ein Monitor 591 oder ein anderer Typ von Anzeigevorrichtung ist ebenfalls mit dem Systembus 521 über eine Schnittstelle, wie etwa eine Videoschnittstelle 590, verbunden. Zusätzlich zum Monitor können Computer auch andere periphere Ausgabevorrichtungen enthalten, wie etwa Lautsprecher 597 und einen Drucker 596, die über eine periphere Ausgabeschnittstelle 595 verbunden sein können.
-
Der Computer 510 kann in einer vernetzten Umgebung unter Verwendung logischer Verbindungen mit einem oder mehreren entfernten Computern betrieben werden, wie etwa einem entfernten Computer 580. Der entfernte Computer 580 kann ein Personal Computer, ein Server, ein Router, ein Netzwerk-PC, eine Peer-Vorrichtung oder ein anderer üblicher Netzwerkknoten sein und enthält typischerweise viele oder alle der oben in Bezug auf den Computer 510 beschriebenen Elemente, obwohl in der 5 nur eine Speicher-Speicherungsvorrichtung 581 veranschaulicht worden ist. Die logischen Verbindungen, die in der 5 dargestellt sind, beinhalten ein Lokalnetzwerk (LAN) 571 und ein Weitbereichsnetzwerk (WAN) 573, können jedoch auch andere Netzwerke beinhalten. Solche Networking-Umgebungen sind in Büros, unternehmensweiten Computernetzwerken, Intranets und dem Internet allgemein üblich.
-
Bei Verwendung in einer LAN-Networking-Umgebung ist der Computer 510 mit dem LAN 571 über eine Netzwerkschnittstelle oder einen Netzwerkadapter 570 verbunden. Bei Verwendung in einer WAN-Networking-Umgebung enthält der Computer 510 typischerweise ein Modem 572 oder andere Mittel zum Aufbau von Kommunikationen über das WAN 573, wie etwa das Internet. Das Modem 572, das intern oder extern sein kann, kann mit dem Systembus 521 über die Benutzereingabeschnittstelle 560 oder einen anderen zweckmäßigen Mechanismus verbunden sein. In einer vernetzten Umgebung können Programmmodule, die in Bezug auf den Computer 510 dargestellt sind, oder Teile davon, in der entfernten Speicher-Speicherungsvorrichtung gespeichert sein. Beispielhaft und nicht beschränkend veranschaulicht 5 entfernte Anwendungsprogramme 585 als in der Speichervorrichtung 581 befindlich. Es versteht sich, dass die Netzwerkverbindungen beispielhaft gezeigt sind und andere Mittel zum Aufbau eines Kommunikationslinks zwischen den Computern verwendet werden können.
-
Nachdem somit mehrere Aspekte mindestens einer Ausführungsform dieser Erfindung beschrieben worden sind, versteht es sich, dass Fachleuten verschiedene Abänderungen, Modifikationen und Verbesserungen in den Sinn kommen werden.
-
Solche Abänderungen, Modifikationen und Verbesserungen sollen Teil dieser Offenbarung sein und sollen innerhalb des Gedankens und des Schutzbereichs der Erfindung liegen. Obgleich Vorteile der vorliegenden Erfindung angegeben werden, versteht es sich des Weiteren, dass nicht jede Ausführungsform der hierin beschriebenen Technologie jeden beschriebenen Vorteil beinhalten wird. Einige Ausführungsformen implementieren möglicherweise nicht alle Merkmale, die hier als vorteilhaft beschrieben sind, und in einigen Beispielen können eines oder mehrere der beschriebenen Merkmale implementiert sein, um weitere Ausführungsformen zu erreichen. Dementsprechend sind die vorhergehende Beschreibung und die Zeichnungen lediglich beispielhaft.
-
Die oben beschriebenen Ausführungsformen der hier beschriebenen Technologie können auf irgendeine von zahlreichen Weisen implementiert sein. Zum Beispiel können die Ausführungsformen unter Verwendung von Hardware, Software oder einer Kombination daraus implementiert sein. Wenn sie als Software implementiert sind, kann der Softwarecode auf einem beliebigen geeigneten Prozessor oder einer Sammlung von Prozessoren ausgeführt werden, egal ob sie in einem einzelnen Computer oder verteilt auf mehrere Computer bereitgestellt werden. Solche Prozessoren können als integrierte Schaltungen implementiert sein, mit einem oder mehreren Prozessoren in einer integrierten Schaltungskomponente, einschließlich handelsüblichen integrierten Schaltungskomponenten, die im Fachgebiet durch Benennungen bekannt sind, wie zum Beispiel CPU-Chips, GPU-Chips, Mikroprozessor, Mikrocontroller oder Coprozessor. Alternativ kann ein Prozessor in einer kundenspezifischen Schaltungsanordnung implementiert sein, wie etwa einer ASIC, oder einer teilweise kundenspezifischen Schaltungsanordnung, die sich aus dem Konfigurieren einer programmierbaren Logikvorrichtung ergibt. Als noch eine weitere Alternative kann ein Prozessor ein Abschnitt einer größeren Schaltung oder einer Halbleitervorrichtung sein, sei er handelsüblich, teilweise kundenspezifisch oder kundenspezifisch. Als ein spezifisches Beispiel weisen einige handelsübliche Mikroprozessoren mehrere Kerne auf, sodass einer oder eine Teilmenge dieser Kerne einen Prozessor bilden kann. Allerdings kann ein Prozessor unter Verwendung von Schaltungsanordnungen in einem beliebigen geeigneten Format implementiert sein.
-
Des Weiteren versteht es sich, dass ein Computer in einer beliebigen einer Anzahl von Formen umgesetzt sein kann, wie etwa als ein Rack-Computer, ein Desktop-Computer, ein Laptop-Computer oder ein Tablet-Computer. Zusätzlich kann ein Computer in einer Vorrichtung eingebettet sein, die im Allgemeinen nicht als ein Computer betrachtet wird, jedoch geeignete Verarbeitungsfähigkeiten aufweist, einschließlich eines Personal Digital Assistant (PDA), eines Smartphones oder einer beliebigen anderen geeigneten portablen oder festen elektronischen Vorrichtung.
-
Auch kann ein Computer eine oder mehrere Eingabe- und Ausgabevorrichtungen aufweisen. Diese Vorrichtungen können unter anderem dazu verwendet werden, eine Benutzerschnittstelle darzustellen. Zu Beispielen für Ausgabevorrichtungen, die verwendet werden können, um eine Benutzerschnittstelle bereitzustellen, zählen Drucker oder Anzeigebildschirme für eine visuelle Darstellung der Ausgabe und Lautsprecher oder andere tonerzeugende Vorrichtungen für die hörbare Darstellung der Ausgabe. Zu Beispielen für Eingabevorrichtungen, die für eine Benutzerschnittstelle verwendet werden können, zählen Tastaturen und Zeigevorrichtungen, wie etwa Mäuse, Touchpads und Digitalisiertablets. Als ein anderes Beispiel kann ein Computer Eingangsinformationen über Spracherkennung oder in einem anderen hörbaren Format empfangen.
-
Solche Computer können durch ein oder mehrere Netzwerke in einer beliebigen geeigneten Form miteinander verbunden sein, einschließlich als ein Lokalnetzwerk oder ein Weitbereichsnetzwerk, wie etwa ein Unternehmensnetzwerk oder das Internet. Solche Netzwerke können auf einer beliebigen geeigneten Technologie basieren und können gemäß einem beliebigen geeigneten Protokoll arbeiten und können drahtlose Netzwerke, drahtgebundene Netzwerke oder Glasfasernetzwerke enthalten.
-
Die verschiedenen Verfahren und Prozesse, die hierin umrissen werden, können ebenfalls als Software codiert sein, die auf einem oder mehreren Prozessoren ausführbar ist, die ein beliebiges einer Vielfalt von Betriebssystemen oder Plattformen einsetzen. Zusätzlich kann solche Software unter Verwendung einer beliebigen aus einer Anzahl geeigneter Programmiersprachen und/oder Programmier- oder Scripting-Tools geschrieben werden, und kann auch als ausführbarer Maschinensprachencode oder Zwischencode kompiliert werden, der auf einem Framework oder einer virtuellen Maschine ausgeführt wird.
-
In dieser Hinsicht kann die Erfindung als ein computerlesbares Speicherungsmedium (oder mehrere computerlesbare Medien) (z. B. ein Computerspeicher, eine oder mehrere Disketten, Compact Disks (CDs), optische Platten, Digital Video Disks (DVDs), Magnetbänder, Flash-Speicher, Schaltungskonfigurationen in feldprogrammierbaren Gate-Arrays oder anderen Halbleitervorrichtungen oder einem anderen greifbaren Computerspeicherungsmedium) umgesetzt werden, das mit einem oder mehreren Programmen codiert wird, die, wenn sie auf einem oder mehreren Computern oder anderen Prozessoren ausgeführt werden, die Verfahren durchführen, die die verschiedenen Ausführungsformen der oben besprochenen Erfindung implementieren. Wie sich aus den vorher genannten Beispielen ergibt, kann ein computerlesbares Speicherungsmedium Informationen für eine ausreichende Zeit halten, um computerausführbare Anweisungen in einer nichtflüchtigen Form bereitzustellen. Solch ein computerlesbares Speicherungsmedium oder solche computerlesbaren Speicherungsmedien können transportierbar sein, sodass das Programm oder die Programme, die darauf gespeichert sind, auf einen oder mehrere unterschiedliche Computer oder andere Prozessoren geladen werden können, um verschiedene Aspekte der vorliegenden Erfindung zu implementieren, wie oben besprochen. Wie er hierin verwendet wird, umfasst der Begriff „computerlesbares Speicherungsmedium“ nur ein nichtflüchtiges computerlesbares Medium, das als ein Fabrikat (d. h. ein Herstellungsartikel) oder eine Maschine angesehen werden kann. Alternativ oder zusätzlich kann die Erfindung als ein anderes computerlesbares Medium als ein computerlesbares Speicherungsmedium umgesetzt werden, wie etwa als ein Propagationssignal.
-
Die Begriffe „Programm“ oder „Software“, wenn hierin verwendet, werden im generischen Sinne verwendet, um sich auf irgendeinen Typ von Computercode oder einen Satz von computerausführbaren Anweisungen zu beziehen, die dazu eingesetzt werden können, einen Computer oder einen anderen Prozessor dazu zu programmieren, verschiedene Aspekte der vorliegenden Erfindung zu implementieren, wie oben besprochen. Zusätzlich versteht es sich, dass gemäß einem Aspekt dieser Ausführungsform sich ein oder mehrere Computerprogramme, die, wenn sie ausgeführt werden, Verfahren der vorliegenden Erfindung durchführen, nicht auf einem einzelnen Computer oder Prozessor befinden müssen, sondern auf eine modulare Weise auf einer Anzahl von unterschiedlichen Computern oder Prozessoren verteilt sein können, um verschiedene Aspekte der vorliegenden Erfindung zu implementieren.
-
Computerausführbare Anweisungen können in vielen Formen vorliegen, wie etwa Programmmodule, die durch einen oder mehrere Computer oder andere Vorrichtungen ausgeführt werden. Im Allgemeinen enthalten Programmmodule Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw., die spezielle Aufgaben durchführen oder spezielle abstrakte Datentypen implementieren. Typischerweise kann die Funktionalität der Programmmodule kombiniert oder verteilt werden, wie es in verschiedenen Ausführungsformen erwünscht ist.
-
Datenstrukturen können ebenfalls in einer beliebigen geeigneten Form in computerlesbaren Medien gespeichert werden. Der Einfachheit der Veranschaulichung halber können Datenstrukturen so gezeigt werden, dass sie Felder aufweisen, die über die Position in der Datenstruktur in Beziehung stehen. Solche Beziehungen können gleichermaßen erreicht werden, indem Speicherung für die Felder mit Positionen in einem computerlesbaren Medium zugeordnet wird, die die Beziehung zwischen den Feldern vermittelt. Allerdings kann ein beliebiger geeigneter Mechanismus verwendet werden, um eine Beziehung zwischen Informationen in Feldern einer Datenstruktur festzulegen, einschließlich durch Verwendung von Zeigern, Tags oder anderen Mechanismen, die die Beziehung zwischen Datenelementen festlegen.
-
Verschiedene Aspekte der vorliegenden Erfindung können allein, in Kombination oder in einer Vielfalt von Anordnungen, die in den vorher beschriebenen Ausführungsformen nicht besonders besprochen werden, verwendet werden, und daher ist sie in ihrer Anwendung nicht auf die Details und die Anordnung von Komponenten beschränkt, die in der vorherigen Beschreibung dargelegt oder in den Zeichnungen veranschaulicht werden. Zum Beispiel können in einer Ausführungsform beschriebene Aspekte auf eine beliebige Art und Weise mit Aspekten kombiniert werden, die in anderen Ausführungsformen beschrieben werden.
-
Die Erfindung kann auch als ein Verfahren umgesetzt werden, für das ein Beispiel bereitgestellt worden ist. Die als Teil des Verfahrens durchgeführten Handlungen können in einer beliebigen geeigneten Weise geordnet sein. Dementsprechend können Ausführungsformen aufgebaut werden, in denen Handlungen in einer anderen Reihenfolge als veranschaulicht durchgeführt werden, was beinhalten kann, einige Handlungen zeitgleich durchzuführen, auch wenn sie in den veranschaulichenden Ausführungsformen als sequenzielle Handlungen gezeigt werden.
-
Des Weiteren werden einige Handlungen als von einem „Benutzer“ durchgeführt beschrieben. Es versteht sich, dass ein „Benutzer“ nicht ein einzelnes Individuum sein muss und dass in einigen Ausführungsformen Handlungen, die einem „Benutzer“ zugeschrieben werden können, von einem Team von Individuen und/oder einem Individuum in Kombination mit computergestützten Werkzeugen oder anderen Mechanismen durchgeführt werden können.
-
Die Verwendung von Ordnungsbegriffen wie „erster“, „zweiter“, „dritter“ usw. in den Ansprüchen, um ein Anspruchselement zu modifizieren, bedeutet nicht von selbst irgendeine Priorität, einen Vorrang oder eine Reihenfolge eines Anspruchselements vor einem anderen oder die zeitliche Reihenfolge, in der Handlungen eines Verfahrens durchgeführt werden, sondern sie werden lediglich als Bezeichner verwendet, um ein Anspruchselement mit einem bestimmten Namen von einem anderen Element mit einem gleichen Namen (mit Ausnahme der Verwendung des Ordnungsbegriffs) zu unterscheiden, um die Anspruchselemente zu unterscheiden.
-
Auch dient die hier verwendete Phraseologie und Terminologie der Beschreibung und sollte nicht als einschränkend betrachtet werden. Die Verwendung hierin von „einschließlich“, „umfassend“ oder „aufweisend“, „enthaltend“, „beinhaltend“ und Varianten davon soll die danach aufgeführten Elemente und ihre Äquivalente ebenso wie zusätzliche Elemente einschließen.