DE112012004301T5 - Erzeugen einer vorhersagenden Datenstruktur - Google Patents
Erzeugen einer vorhersagenden Datenstruktur Download PDFInfo
- Publication number
- DE112012004301T5 DE112012004301T5 DE112012004301.4T DE112012004301T DE112012004301T5 DE 112012004301 T5 DE112012004301 T5 DE 112012004301T5 DE 112012004301 T DE112012004301 T DE 112012004301T DE 112012004301 T5 DE112012004301 T5 DE 112012004301T5
- Authority
- DE
- Germany
- Prior art keywords
- source code
- data structure
- application
- network
- server
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
- Bereich der Erfindung
- Die Erfindung betrifft den Bereich der vernetzten Datenverarbeitungssysteme. Insbesondere betrifft die Erfindung ein Verfahren und eine Vorrichtung zum Erzeugen einer vorhersagenden Datenstruktur für eine Anwendung, wenn die Anwendung offline betrieben wird.
- Hintergrund der Erfindung
- Internet-Benutzer greifen auf Dienste zu, die von Internet-Dienstanbietern bereitgestellt werden, um Interaktionen wie zum Beispiel die Abwicklung von Bankgeschäften über das Internet (Personal Banking), Online-Shopping, das Abrufen von Informationen durchzuführen oder um andere Dienste aus der Online-Umgebung eines Dienstanbieters heraus zu starten.
- Um auf Online-Dienste zuzugreifen, betreiben Benutzer Client-Einheiten, um Anforderungen an einen Server zu senden, um den Zugriff auf Ressourcen anzufordern, die von einer oder von mehreren Anwendungen bereitgestellt werden.
- Ein Server empfängt Anforderungen für Ressourcen und sendet die angeforderten Ressourcen an die anfordernde Client-Einheit zurück. Üblicherweise wird ein Hypertext Transfer Protocol (HTTP) verwendet, welches das Mittel angibt, in dem eine Client-Einheit mit einem oder mehreren Servern über das Internet in Dialogverkehr tritt. HTTP ist ein ”Anforderungs-Antwort”-Protokoll, bei dem der Client eine Anforderungsnachricht an den Server sendet, die die URL der benötigten Ressource enthält. Der Server sucht einen Pfadnamen und wenn er vorhanden ist, sendet er die Ressource in einer Antwort an den Client zurück. HTTP ermöglicht eine Inhaltabstimmung und Authentifizierung.
- Die vorstehende Art der Interaktion funktioniert gut, solange der Client und der Server fortlaufend miteinander Daten austauschen können, d. h., Anforderungen für Ressourcen senden und die angeforderte Ressource von dem Server zurück bekommen. Diese Anforderungs-Antwort-Interaktion ist auf einen offenen und unterbrechungsfreien Datenübertragungspfad über das Netzwerk angewiesen.
- Ein Problem entsteht, wenn, egal aus welchen Gründen, vorübergehend keine Verbindung zum Netzwerk hergestellt werden kann. Die Folge davon, dass keine Verbindung zum Netzwerk hergestellt werden kann, ist, dass eine Transaktion nicht abgeschlossen werden kann. Oftmals geht die Anwendung, die verwendet wird, um die eine oder die mehreren Ressourcen anzufordern, üblicherweise ein Webbrowser, an diesem Punkt in einen Betriebszustand über, der als ”offline arbeitend” bezeichnet wird. Beim Arbeiten im ”Offline”-Modus können Scripte und/oder in einer Webseite eingebettete HTML nicht ausgeführt werden, da die Software einen Aufruf an einen Server richten muss, um weitere Daten zu laden.
- Eine typische Lösung für das vorstehende Problem besteht darin, die angeforderte Ressource, d. h. die Webseite, in einem Cachespeicher zwischenzuspeichern. Ein Nachteil bei dieser Vorgehensweise ist jedoch, dass die zwischengespeicherte Kopie der Ressource ”veraltete” Daten aufweisen und folglich falsche Ergebnisse erzeugen kann oder dass es aus Sicherheits- oder Datenschutzgründen möglicherweise keine zwischengespeicherte Version gibt.
- Kurzdarstellung der Erfindung
- Von einem ersten Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Verfahren zum Erzeugen einer vorhersagenden Datenstruktur für eine Anwendung bereit, wenn diese offline in einem mit einem Netzwerk verbundenen Datenverarbeitungssystem arbeitet, wobei die Anwendung Quellcode aufweist, der einen Ausführungspfad hat, wobei das Verfahren die Schritte aufweist: Festlegen eines Exit-Punkts in dem Quellcode der Anwendung; Festlegen eines Ausführungspfads ab dem Exit-Punkt, wobei der Ausführungspfad mindestens eine bedingte Anweisung aufweist; Feststellen von einer oder mehreren Verzweigungen der mindestens einen festgestellten bedingten Anweisung und für jede festgestellte Verzweigung Festlegen einer erwarteten Antwort; für jede festgelegte erwartete Antwort Erzeugen einer Datenstruktur aus der Antwort; Fortfahren entlang des Ausführungspfads des Quellcodes ab dem Exit-Punkt und Ersetzen einer jeden Anforderung für eine Ressource in dem Quellcode durch einen Zeiger auf die erzeugte Datenstruktur; und Ausführen des Quellcodes mit dem Zeiger auf die erzeugte Datenstruktur ab dem festgelegten Exit-Punkt.
- Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, bei dem das Festlegen einer erwarteten Antwort den Schritt des Prüfens einer jeden Verzweigung der bedingten Anweisung mit einer oder mehreren Logikregeln aufweist, um die erwartete Antwort festzulegen.
- Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, bei dem jede Logikregel einen Datensatz zur Abbildung auf eine Variable in dem Quellcode der Anwendung aufweist und wobei der Datensatz Daten aufweist, die als Reaktion auf die Eingabe der Variablen in einem Fenster der Netzwerkanwendung angezeigt werden sollen.
- Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, bei dem der Exit-Punkt die Codezeile ist, an der der Quellcode aufgrund des festgestellten Ausfalls der Netzwerkaktivität nicht ausgeführt werden konnte.
- Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, bei dem das Ersetzen einer Anforderung für eine Ressource das Ändern eines in dem Quellcode festgestellten Verweises auf eine Ressource auf dem Server aufweist, um auf die erzeugte Datenstruktur zu verweisen.
- Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, das des Weiteren das Ausführen des Quellcodes, der über die geänderten Verweise verfügt, aufweist.
- Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, das des Weiteren die Feststellung, ob der Client und der Server über ein Netzwerk verbunden sind, und als Reaktion auf eine positive Feststellung das Senden eines Datenpakets an den Server sowie die weiterhin durch den Server erfolgende Ausführung des Quellcodes der Anwendung ab der Stelle des Quellcodes, an der der Client die Verarbeitung übergeben hat, aufweist.
- Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, das des Weiteren die Überwachung der Anforderung eines Client für Ressourcen von einem Server und die Feststellung einer Datenstruktur aus den Anforderungen aufweist, um die Datenstruktur in einem Vergangenheitsspeicher zu speichern.
- Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, das des Weiteren das Entfernen von persönlichen Daten aus der gespeicherten Datenstruktur aufweist.
- Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung eine Vorrichtung zum Erzeugen einer vorhersagenden Datenstruktur für eine Anwendung bereit, wenn diese offline in einem mit einem Netzwerk verbundenen Datenverarbeitungssystem arbeitet, wobei die Anwendung Quellcode aufweist, der einen Ausführungspfad hat, wobei das Vorrichtung die Schritte aufweist: eine Abfangprozess-Komponente, um einen Exit-Punkt in dem Quellcode der Anwendung festzulegen; eine Scripterstellungs-Engine, um ab dem Ausstiegspfad einen Ausführungspfad festzulegen, der mindestens eine bedingte Anweisung aufweist; eine Scripterstellungs-Engine, um eine oder mehrere Verzweigungen der mindestens einen festgestellten bedingten Anweisung festzustellen und um für jede festgestellte Verzweigung eine erwartete Antwort festzulegen; für jede festgelegte erwartete Antwort eine Scripterstellungs-Engine, um eine Datenstruktur aus der Antwort zu erzeugen; eine Scripterstellungs-Engine, um entlang des Ausführungspfads des Quellcodes ab dem Exit-Punkt fortzufahren und jede Anforderung für eine Ressource in dem Quellcode durch einen Zeiger auf die erzeugte Datenstruktur zu ersetzen; und eine Erstellungskomponente, um den Quellcode mit dem Zeiger auf die erzeugte Datenstruktur ab dem festgelegten Exit-Punkt auszuführen.
- Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, bei der das Festlegen einer erwarteten Antwort den Schritt des Prüfens einer jeden Verzweigung der bedingten Anweisung mit einer oder mehreren Logikregeln aufweist, um die erwartete Antwort festzulegen.
- Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, bei der jede Logikregel einen Datensatz zur Abbildung auf eine Variable in dem Quellcode der Anwendung aufweist und wobei der Datensatz Daten aufweist, die als Reaktion auf die Eingabe der Variablen in einem Fenster der Netzwerkanwendung angezeigt werden sollen.
- Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, bei der der Exit-Punkt die Codezeile ist, an der der Quellcode aufgrund des festgestellten Ausfalls der Netzwerkaktivität nicht ausgeführt werden konnte.
- Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, bei der das Ersetzen einer Anforderung für eine Ressource das Ändern eines in dem Quellcode festgestellten Verweises auf eine Ressource auf dem Server aufweist, um auf die erzeugte Datenstruktur zu verweisen.
- Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, die des Weiteren das Ausführen des Quellcodes, der über die geänderten Verweise verfügt, aufweist.
- Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, die des Weiteren einen Netzwerk-Verbindungsdetektor aufweist, um festzustellen, ob der Client und der Server über ein Netzwerk verbunden sind, und um als Reaktion auf eine positive Feststellung ein Datenpaket an den Server zu senden, und wobei der Server weiterhin den Quellcode der Anwendung ab der Stelle des Quellcodes, an der der Client die Verarbeitung übergeben hat, ausführt.
- Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, die des Weiteren eine Überwachungskomponente zur Überwachung einer Anforderung eines Client für Ressourcen von einem Server und zur Feststellung einer Datenstruktur aus den Anforderungen aufweist, um die Datenstruktur in einem Vergangenheitsspeicher zu speichern.
- Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, die des Weiteren das Entfernen von persönlichen Daten aus der gespeicherten Datenstruktur aufweist.
- Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Verfahren zum Testen einer Netzwerkanwendung bereit, wenn die Netzwerkanwendung nicht mit einem Netzwerk verbunden ist, wobei die Netzwerkanwendung dazu dient, mit einem Server über ein Netzwerk Daten auszutauschen, wobei die Anwendung Quellcode aufweist, der einen Ausführungspfad hat, wobei das Verfahren die Schritte aufweist: Festlegen eines Exit-Punkts in dem Quellcode der Anwendung; Festlegen eines Ausführungspfads ab dem Exit-Punkt, wobei der Ausführungspfad mindestens eine bedingte Anweisung aufweist; Feststellen von einer oder mehreren Verzweigungen der mindestens einen festgestellten bedingten Anweisung und für jede festgestellte Verzweigung Festlegen einer erwarteten Antwort; für jede festgelegte erwartete Antwort Erzeugen einer Datenstruktur aus der Antwort; Fortfahren entlang des Ausführungspfads des Quellcodes ab dem Exit-Punkt und Ersetzen einer jeden Anforderung für eine Ressource in dem Quellcode durch einen Zeiger auf die erzeugte Datenstruktur; Ausführen des Quellcodes mit dem Zeiger auf die erzeugte Datenstruktur ab dem festgelegten Exit-Punkt.
- Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Computerprogramm bereit, das Computerprogrammcode aufweist, um, wenn dieser in ein Computersystem geladen und ausgeführt wird, alle Schritte der Erfindung wie vorstehend beschrieben durchzuführen.
- Kurze Beschreibung der Zeichnungen
- Eine bevorzugte Ausführungsform der vorliegenden Erfindung wird nun lediglich anhand eines Beispiels und mit Bezug auf die beiliegenden Zeichnungen beschrieben, bei denen:
-
1 ein Blockschaubild ist, das ausführlich eine vernetzte Datenverarbeitungsumgebung zeigt, in der eine bevorzugte Ausführungsform der vorliegenden Erfindung realisiert werden kann; -
2 ein Blockschaubild ist, das ausführlich ein Datenverarbeitungssystem zeigt, in dem eine bevorzugte Ausführungsform der vorliegenden Erfindung realisiert werden kann; -
3 ein Blockschaubild ist, das ausführlich ein Beispiel einer Offline-Anwendung gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt; -
4 ein Blockschaubild ist, das eine prädiktive Datenstrukturkomponente gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt; -
5 ein Blockschaubild ist, das ausführlich die Komponenten einer Lookahead-Datenstrukturkomponente der vorhersagenden Datenstrukturkomponente von4 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt; -
6 einen Ausführungspfad gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung darstellt; -
7 ein Blockschaubild ist, das ausführlich die Komponenten der leeren Datenstrukturkomponente des Erstellers der vorhersagenden Datenstruktur von4 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt; -
8 ein Ablaufplan ist, der ausführlich die Prozessschritte der Lookahead-Datenstrukturkomponente gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt; und -
9 ein Ablaufplan ist, der ausführlich die Prozessschritte des Erstellers der leeren Datenstrukturkomponente gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt. - Ausführliche Beschreibung der bevorzugten Ausführungsformen der Erfindung
- Nun Bezug nehmend auf die Figuren zeigt
1 eine bildliche Darstellung eines Netzwerk-Datenverarbeitungssystems100 , in dem bevorzugte Ausführungsformen der Erfindung realisiert werden können. Ein Netzwerk-Datenverarbeitungssystem100 weist ein Netzwerk135 auf, bei dem es sich um das Medium handelt, das zur Bereitstellung von Datenübertragungsverbindungen zwischen verschiedenen Einheiten verwendet wird, die in dem Netzwerk-Datenverarbeitungssystem100 miteinander verbunden sind. Das Netzwerk135 kann Datenübertragungsstrukturen wie zum Beispiel drahtgebundene Verbindungen (Ethernet), drahtlose Datenübertragungsverbindungen oder Lichtwellenleitertechnik usw. aufweisen. - In dem gezeigten Beispiel von
1 sind Server105 mit dem Netzwerk135 zusammen mit dem Speichermittel130 verbunden. Bei den Servern105 kann es sich um jede beliebige Art von Servern handeln, zum Beispiel Anwendungsserver oder Webserver usw. Client-Einheiten115 sind ebenfalls mit dem Netzwerk135 verbunden. Diese Clients115 können zum Beispiel Personal Computer, mobile Einheiten, tragbare Einheiten, mit einem Netzwerk verbundene Endgeräte oder jede beliebige Art einer Einheit sein, die Anforderungen für Ressourcen140 senden und die Ressourcen140 von Servern105 , die mit dem Netzwerk verbunden sind, empfangen kann. Die Ressourcen140 können die Form einer Webseite, die Form von Informationsressourcen, Daten, einer Online-Anwendung und ihrer zugrunde liegenden Formate wie zum Beispiel Auszeichnungssprachen, d. h. HTML-Dateien, XML-Dateien, und Scriptsprachen wie JavaScript-Dateien, Datendateien und Nutzlasten usw. annehmen. Die Clients115 verwenden üblicherweise eine Netzwerkanwendung120 wie zum Beispiel einen Webbrowser, um Ressourcen140 von einem oder mehreren Servern105 anzufordern. Das Speichermittel130 speichert Ressourcen, um sie an anfordernde Clients115 zu senden. - In einer weiteren Ausführungsform, die in den Figuren nicht gezeigt ist, sind die Client-Einheiten auf ebenbürtige Weise (Peer-to-Peer) verbunden und daher können Clients selbst Server werden.
- Das Netzwerk-Datenverarbeitungssystem
100 kann zusätzliche Server, Clients und andere Datenübertragungseinheiten aufweisen, die in den Figuren nicht gezeigt sind. - Das Netzwerk-Datenverarbeitungssystem
100 kann die Form des Internets annehmen, wobei das Netzwerk130 einen weltweiten Verbund von Netzwerken und Gateways darstellt, die die Transmission Control Protocol/Internet Protocol-(TCP/IP-)Folge von Protokollen verwenden, um miteinander Daten auszutauschen. Ebenso kann das Netzwerk135 auch die Form eines lokalen Netzes oder eines Weitverkehrsnetzes usw. annehmen.1 ist lediglich als Beispiel und nicht als architektonische Einschränkung für verschiedene Ausführungsformen gedacht. -
2 ist eine bildliche Darstellung des Datenverarbeitungssystems200 . Das Datenverarbeitungssystem200 ist ein Beispiel für einen Computer wie zum Beispiel einen Server105 oder einen Client115 von1 . - Das Datenverarbeitungssystem
200 weist eine Zentraleinheit265 mit einem Primärspeicher in Form eines Arbeitsspeichers205 (RAM und ROM) auf. Der Arbeitsspeicher205 speichert Programminformationen und Daten, die von Anwendungsprogrammen bearbeitet oder erzeugt werden. Programminformationen weisen den Betriebssystemcode für das Datenverarbeitungssystem200 und Anwendungscode für Anwendungen auf, die auf dem Datenverarbeitungssystem200 ausgeführt werden. Der Sekundärspeicher235 weist zum Beispiel einen optischen Plattenspeicher und einen magnetischen Plattenspeicher auf. Daten und Programminformationen können auch gespeichert werden und vom Sekundärspeicher235 kann darauf zugegriffen werden. - Das Datenverarbeitungssystem
200 weist ein Netzwerkverbindungsmittel230 auf, um das Datenverarbeitungssystem200 über eine Schnittstelle mit einem Netzwerk135 zu verbinden. Das Datenverarbeitungssystem200 kann auch über ein anderes externes Quellendatenübertragungsmittel wie zum Beispiel ein Faxmodem oder eine Telefonverbindung verfügen. - Die Zentraleinheit
265 weist Eingänge in Form von beispielsweise einer Tastatur260 , einer Maus255 , einem Spracheingang250 und einem Scanner245 zur Eingabe von Text, Bildern, Grafiken oder dergleichen auf. Ausgänge von der Zentraleinheit265 können ein Anzeigemittel210 , einen Drucker215 , einen Tonausgang220 , einen Videoausgang225 usw. aufweisen. Anwendungen können auf dem Datenverarbeitungssystem200 aus einem Speichermittel235 oder über eine Netzwerkverbindung230 ausgeführt werden. - In einer bevorzugten Ausführungsform weist der Anwendungscode Code zum Ausführen einer Netzwerkanwendung
120 auf, um auf Online-Anwendungen110 wie zum Beispiel Wikis, Sites von sozialen Netzwerken und Datenübertragungstools usw. zuzugreifen. Der Klarheit halber ist die Netzwerkanwendung120 eine beliebige Anwendung, die dazu dient, Informationsressourcen140 von dem Netzwerk135 anzufordern, zu empfangen, darzustellen und zu durchlaufen. Die Netzwerkanwendung120 kann die Form einer Browser-Anwendung annehmen, die auf einem Client ausgeführt wird, ist jedoch nicht auf solche Anwendungen beschränkt. Der Klarheit halber soll der Begriff Online-Anwendung jedwede Informationsressource140 umfassen, auf die von dem Netzwerk135 bei einer Interaktion zwischen einem Client115 und einem Server105 zugegriffen wird. Diese Form der Interaktion kann die Form einer Anforderung in HTTP oder einem anderen ähnlichen Protokoll annehmen. Der Fachmann erkennt, dass eine Online-Anwendung110 offline sein kann, weil eine oder mehrere Ressourcen von einem oder mehreren Servern105 nicht zur Verfügung stehen. Die Folge ist somit eine Anwendung110 , die nur teilweise online ist, da einige Ressourcen140 zur Verfügung stehen und einige Ressourcen140 aufgrund der selektiven Verfügbarkeit von einem oder mehreren Servern105 nicht zur Verfügung stehen. - Ein Hauptproblem, auf das man trifft, wenn man eine Netzwerkanwendung
120 als Plattform für die Ausführung von Online-Anwendungen verwendet, ist der Verlust der Netzwerkverbindung während der Ausführung der Online-Anwendungen110 . Wenn ein Client115 folglich auf eine Online-Anwendung110 zugreift, die es erforderlich macht, dass ein Benutzer eines Client Daten eingibt, und der Client die Verbindung mit der Online-Anwendung110 verliert, kann der Client115 die Transaktion nicht mehr abschließen und die Online-Anwendung arbeitet in einem Offline-Modus. Eine angeforderte Ressource kann jedes beliebige Datenelement sein, das seitens des Client115 von dem Server105 angefordert wird. - Die Auswirkung eines Verbindungsverlusts führt oftmals zu einem Datenverlust und einem Verlust der Funktionalität. Dies führt dazu, dass der Client
115 die Online-Anwendung110 verlassen muss und einen neuen Verbindungsversuch unternimmt, wenn die Verbindung zu dem Server105 wieder aufgenommen worden ist. Wenn die Netzwerk-Anwendung in einem Offline-Modus arbeitet, kann der Quellcode der Anwendung häufig dennoch nicht ausgeführt werden, da an den Server keine HTTP-Anforderungen für Ressourcen gestellt werden können, welche durch Aufrufe in dem Quellcode angefordert werden. -
3 ist ein Beispiel einer Webbrowser-Anwendung120 . Die Webbrowser-Anwendung weist Menüs300 auf, in denen Benutzer auf Funktionen zugreifen können, die für die Webbrowser-Anwendung120 spezifisch sind. Die Webbrowser-Anwendung weist auch eine Navigationsleiste305 auf, in der Benutzer eine Adresse (URL) einer Ressource eingeben können, auf die zugegriffen werden soll. In diesem Beispiel hat der Benutzer die URL www.pensioncalculator.com eingegeben. Jede URL lässt sich in eine IP-Adresse eines Speicherorts der Ressource eines Servers umsetzen. Bei Verwendung des HTTP-Protokolls wird eine Anforderung an den Server gesendet, die den Zugriff auf die Rentenberechnungs-Anwendung (”die Ressource”) anfordert. Solange der Client115 und der Server105 über ein Netzwerk Daten austauschen, kann der Server105a ) die Anforderung von dem Client115 empfangen und b) die angeforderte Ressource an den Client115 zurücksenden. Wenn der Client115 und der Server105 nicht verbunden sind, zeigt die Netzwerk-Anwendung die Meldung ”404 Nicht gefunden” an. - Der Fachmann erkennt, dass der Server
105 , der die Anforderung empfangen hat, gegebenenfalls in einer ”Eins-zu-eins”-Beziehung über ein Netzwerk mit dem Client115 verbunden ist und die angeforderte Ressource folglich an den Client zurücksenden kann. Wenn der Server105 jedoch nicht über die angeforderte Ressource verfügt und sich die angeforderte Ressource auf einem zweiten Server105 befindet und der zweite Server die Netzwerkverbindung mit dem Server verloren hat, kann die Anforderung des Client nicht erfüllt werden. - Um das vorstehende Problem zu lösen und gemäß einer bevorzugten Ausführungsform zeigt
4 eine prädiktive Datenstrukturkomponente400 . Die prädiktive Datenstrukturkomponente400 kann mit einer Netzwerk-Anwendung120 betrieben werden, wie in der Technik bekannt ist. Die prädiktive Datenstrukturkomponente400 kann in eine Netzwerk-Anwendung120 eingebettet sein oder als Zusatzprogramm (Plug-in) in einer vorhandenen Netzwerk-Anwendung120 installiert werden. - Die prädiktive Datenstrukturkomponente
400 weist Logik auf, um zu erkennen, wenn ein Client115 und ein Server105 nicht mehr über ein Netzwerk verbunden sind. Als Reaktion auf das Erkennen eines Verlusts der Netzwerkverbindung erzeugt die prädiktive Datenstrukturkomponente eine Datenstruktur, die von dem Quellcode der Anwendung benötigt wird, damit der Quellcode weiterhin ausgeführt werden und die vorgesehene Funktionalität bereitstellen kann. Die Datenstruktur, die erzeugt wird, ist eine Replik der Datenstruktur, die von dem Quellcode erzeugt worden wäre, wenn der Server105 und der Client115 über das Netzwerk135 Daten austauschen würden. Die prädiktive Datenstrukturkomponente400 stellt fest, welche Ressourcen von dem Quellcode benötigt werden, damit der Quellcode ausgeführt und seine Ausführung abgeschlossen werden kann. Indem vorhergesagt wird, welche Datenstrukturen benötigt werden, kann die prädiktive Datenstrukturkomponente400 die Datenstrukturen erzeugen und die Quellcode-Verweise auf die serverseitigen Ressourcen ändern, um auf die erzeugten Datenstrukturen zu zeigen, die auf dem Client115 gespeichert werden. Nachdem die Quellcode-Verweise in dem Quellcode geändert worden sind, kann der Quellcode entlang seines Ausführungspfads fortfahren und ausgeführt werden, als wäre er mit dem Netzwerk verbunden. Für den Benutzer hätte es daher den Anschein, als wären der Client115 und der Server105 immer noch über das Netzwerk verbunden. - Gemäß einer ersten Ausführungsform überwacht eine Datenverbindungsdetektor-Komponente
415 , die sich auf dem Client115 befindet, laufend HTTP-Anforderungen für Ressourcen140 . Wenn sie erkennt, dass die Anforderung eines Client115 ein Zeitlimit überschritten hat oder dass ein Client115 einen HTTP-404-Fehlercode empfängt, sendet die Datenverbindungsdetektor-Komponente415 eine Nachricht an die prädiktive Datenstrukturkomponente400 . - Die prädiktive Datenstrukturkomponente
400 weist mehrere Komponenten auf, die miteinander in Dialogverkehr treten, um einer Offline-Anwendung anhaltende Funktionalität bereitzustellen, d. h., auf diese Weise den Eindruck zu vermitteln, dass die Anwendung online ist. - Die prädiktive Datenstrukturkomponente
400 setzt zwei Verfahren ein, um dies zu erreichen. Eines ist ein Ersteller410 einer ”leeren” Datenstruktur und das andere ist ein Ersteller405 einer ”Lookahead”-Datenstruktur. Das Ziel von beiden vorhersagenden Datenstrukturkomponenten405 ,410 besteht darin, anhaltende Funktionalität bereitzustellen, indem Datenstrukturen neu erzeugt werden, die von der Offline-Anwendung benötigt werden, wenn die Verbindung zwischen dem Client115 und dem Server105 verloren ging. - Mit Bezug auf die
5 ,6 und8 empfängt die Lookahead-Datenstrukturerstellerkomponente405 eine Nachricht (Schritt800 ) über eine Nachrichtenempfängerkomponente500 , die über einen Verlust der Netzverbindung informiert. Diese Nachricht kann die Form einer ”Ressourcenausfall”-Nachricht haben, wie zum Beispiel eine HTTP-404-Antwort. - Eine Abfangprozess-Komponente
505 greift auf den Quellcode der Anwendung110 , die auf dem Client115 ausgeführt wird, zu und fängt ihn ab. Die Abfangprozess-Komponente505 beginnt mit der Feststellung, an welcher Stelle in einem Ausführungspfad die Logik eine Netzwerkressource angefordert hat (zum Beispiel mit einer ganz bestimmten Codezeile). Dieser Punkt wird als ein ”Ausstiegs”-Punkt615 (Schritt805 ) bezeichnet, da der Ausführungsablauf aufgrund des Nichtvorhandenseins einer Netzwerkverbindung nicht weiter fortschreiten kann. Ein Ausführungspfad ist die Reihenfolge, in der die Zeilen des Quellcodes der Anwendung ausgeführt werden, um die Funktionalität der Online-Anwendung bereitzustellen. Beispielsweise sendet die Netzwerk-Anwendung120 eine Anforderung für den Zugriff auf www.pensioncalculator.com. Der Server105 ruft die angeforderte Ressource140 ab und sendet die Ressource an den Client115 . Der Client115 empfängt die Ressource140 und die Netzwerk-Anwendung120 zeigt eine Frage an (geben Sie bitte Ihr Geschlecht an), die eine Eingabe von Daten durch den Benutzer erfordert. Der Benutzer gibt sein Geschlecht ”weiblich” ein und der Ausführungspfad gibt vor, dass basierend auf der Antwort ”weiblich” dem Benutzer ein ganz bestimmter Satz von Fragen vorgelegt werden soll. Wenn die Netzwerkverbindung zwischen dem Client115 und dem Server105 an diesem Punkt in dem Ausführungspfad verloren geht, wird dies als der ”Exit-Punkt” bezeichnet. - Beim Auffinden eines Exit-Punkts in dem Ausführungspfad ändert die Abfangprozess-Komponente
505 den Quellcode und kopiert ihn in einen Arbeitsspeicher und sendet einen Aufruf an eine Scripterstellungs-Engine510 . In Verbindung mit einer Syntaxanalyse-(Parsing-)Komponente515 führt die Scripterstellungs-Engine510 eine Syntaxanalyse des Quellcodes durch, der im Arbeitsspeicher gespeichert ist, wobei sie mit der ersten festgestellten Datenstruktur vor dem Exit-Punkt beginnt. Dies ist deshalb so, weil die Scripterstellungs-Engine feststellen muss, a) welches die aktuelle Datenstruktur ist, die dem Benutzer gerade angezeigt wird, und b) den Ausführungspfad feststellen muss, dem die Datenstruktur in Abhängigkeit von der Eingabe des Benutzers folgen muss. Die Scripterstellungs-Engine510 beginnt mit der Feststellung einer ersten bedingten Anweisung in dem Quellcode (Schritt810 ). Eine bedingte Anweisung kann die Form von ”if this, then else” (”wenn-dann-sonst”) annehmen, zum Beispiel, wenn ein Wert von X größer als der Wert von Y ist, führe eine bestimmte Aktion aus, führe auf der Grundlage einer positiven Feststellung eine Aktion aus usw. - Bei der Feststellung einer bedingten Anweisung wie zum Beispiel einer ”IF”-Anweisung erzeugt die Scripterstellungs-Engine ein Datenelement, das eine Verzweigung der IF-Anweisung erfüllt (Schritt
815 ). Zur weiteren Erklärung dieses Konzepts wird ein Beispiel einer Online-Anwendung mit der Bezeichnung ”pension calculator” (”Rentenrechner”) verwendet. - Beim Start der Online-Anwendung mit der Bezeichnung ”pension calculator” durch einen Benutzer wird dem Benutzer gegebenenfalls eine ”Homepage” angezeigt. Die Homepage gibt Einzelheiten über die Online-Anwendung sowie die Informationen an, welche die Online-Anwendung von dem Benutzer benötigt, um eine endgültige Berechnung durchzuführen. Zu diesem Zeitpunkt verfügt der Client
115 , von dem aus auf die Online-Anwendung zugegriffen wird, über eine Netzwerkverbindung zum Server105 . - Der Benutzer wählt eine Option auf der Homepage aus, um den Rentenrechner zu starten. Eine HTTP-Anforderung wird an den Server
105 gesendet, um die nächste Seite abzurufen, die dem Benutzer auf dem Client115 angezeigt werden soll. Die Abfangprozess-Komponente505 arbeitet ständig im Hintergrund, wobei sie den Status der Netzwerkverbindung zwischen dem Client115 und dem Server105 überwacht. - Solange die Netzwerkverbindung besteht, empfängt der Client
115 angeforderte Ressourcen140 , und der Server105 empfängt die Anforderung für die Ressourcen140 und ruft die Ressourcen140 von dort ab, wo immer sich die Ressourcen140 in dem Netzwerk135 befinden. Wenn die Abfangprozess-Komponente505 an diesem Punkt keine Verbindung feststellt, wird eine Nachricht an die Scripterstellungs-Engine510 gesendet, mit der sie angewiesen wird, mit der Syntaxanalyse des Quellcodes der Offline-Anwendung110 zu beginnen. - Als Beispiel sei angeführt, dass, wenn die nächste Seite, die dem Benutzer angezeigt werden soll, eine ”Dropdown”-Liste ist, die den Benutzer anweist, sein Geschlecht auszuwählen, der Benutzer üblicherweise die Dropdown-Liste auswählen und sein Geschlecht eingeben würde, und es würde eine Anforderung an den Server
105 gesendet werden, mit welcher der Abruf des Datensatzes ”person.gender” (”Person. Geschlecht”) angefordert würde. Wenn jedoch keine Netzwerkverbindung vorhanden ist, wird die Anforderung für den Datensatz ”person.gender” von dem Server105 nicht empfangen, die Anforderung des Client kann nicht erfüllt werden und die Anforderung überschreitet ein Zeitlimit. - Gemäß einer Ausführungsform der vorliegenden Erfindung stellt die Scripterstellungs-Engine
510 folglich den Exit-Punkt in dem Logikfluss fest und bemerkt, dass der Datensatz ”person.gender” benötigt wird. - Die Scripterstellungs-Engine
510 erzeugt Datenelemente, die die bedingte Anweisung erfüllen, um die Datenstruktur zu erzeugen, so, als wären der Client und der Server über das Netzwerk verbunden. Die Scripterstellungs-Engine510 ist über eine Schnittstelle mit einer Logikkomponente520 verbunden, die selbst bedingte Anweisungen in Form von Regeln aufweist, um jede Verzweigung der bedingten Anweisung zu prüfen und zu validieren. Indem jede Verzweigung der bedingten Anweisung mit Variablen geprüft und validiert wird, kann die Datenstruktur (d. h. das Festlegen einer erwarteten Antwort) erzeugt werden. Wenn eine bedingte Anweisung zum Beispiel lautet ”wenn Alter der Person => 65 ist, zeige den Datensatz 'X' an”. - Die Logikkomponente
520 prüft und validiert die bedingte Anweisung, um den Datensatz 'X' (die erwartete Antwort) festzustellen. Sobald er validiert wurde, wird der Variablendatensatz 'X' Teil der erzeugten Datenstruktur. Indem man den Quellcode der Anwendung ändert, wird die erzeugte Datenstruktur verwendet, statt die Ressource vom Server105 anfordern zu müssen, der nicht mit dem Client115 über ein Netzwerk Daten austauscht. Daher prüft und validiert die Scripterstellungs-Engine510 jede mögliche Verzweigung einer bedingten Anweisung, wenn es zum Beispiel fünf mögliche Ausführungspfade gibt, wobei jeder Ausführungspfad Quellcode ausführt, gibt es fünf Sätze von Datenstrukturen. Der Fachmann erkennt, dass jeder der fünf Sätze von Datenstrukturen überlappende Daten haben kann, was jedem der fünf Datensätze gemein ist. - Ein weiteres Beispiel ist wie folgt:
- Datenstruktur
-
- Person = {gender: ???}
-
- Die Scripterstellungs-Engine
510 ist mit der Logikkomponente520 über eine Schnittstelle verbunden, um jede Antwort der bedingten Anweisung zu erzeugen und um jede mögliche Antwort der bedingten Anweisung festzustellen (Schritt815 ). Wenn das Geschlecht beispielsweise weiblich und das Alter der Person höher als sechzig Jahre ist, zeige die jeweiligen Rentenfragen an, die sich auf eine Frau beziehen, die über sechzig Jahre alt ist (6 605 ,610 ). Beim Ausführen einer anderen Verzweigung der bedingten Anweisung, beispielsweise, wenn das Geschlecht männlich und das Alter der Person höher als fünfundsechzig Jahre ist, zeige die jeweiligen Rentenfragen an, die sich auf einen Mann beziehen, der über fünfundsechzig Jahre alt ist (Figur615 ,620 ). - Nach Beendigung der Erzeugung einer jeden möglichen Permutation einer Antwort einer bedingten Anweisung erstellt die Scripterstellungs-Engine
510 die gesamte Datenstruktur, die die Online-Anwendung110 benötigt, um mit dem Betrieb fortzufahren (Schritt820 ). Es sei angemerkt, dass die Datenstruktur an diesem Punkt erzeugt worden ist, aber noch nicht ausgeführt wurde. - Eine Abfangprozess-Komponente
505 ändert die Nachricht in eine ”Erfolgs”-Nachricht, damit der Quellcode die Ausführung fortsetzen kann (Schritt825 ). Der Quellcode kann die Form von beispielsweise XML, HTML oder JavaScript usw. annehmen. - Die Parsing-Komponente
515 führt eine syntaktische Analyse der gesamten Datenstruktur durch, die von der Scripterstellungs-Engine510 erzeugt wurde, und zeigt dem Benutzer die entsprechende Datenstruktur an. Zum Beispiel - PERSON
- Geschlecht eingeben
- Alter eingeben
- In Abhängigkeit von den Antworten des Benutzers ruft die Parsing-Komponente
515 den passenden Datensatz ab und zeigt dem Benutzer den passenden Datensatz zur Eingabe von weiteren Informationen an. Jede der eingegebenen Antworten des Benutzers wird als Variable in einem Datenspeicher525 abgelegt. Während dem Benutzer jede Datenstruktur angezeigt wird, gibt der Benutzer seine Antwort ein und jede der Antworten gibt an, welche Datenstruktur dem Benutzer als Nächstes angezeigt wird und damit welchem Ausführungspfad gefolgt werden soll. Eine Erstellungskomponente530 wird entlang dieses Ausführungspfads ausgeführt, wobei sie jede der Fragen mit den Eingabevariablen des Benutzers füllt, und die Offline-Anwendung wird weiterhin so ausgeführt, als wäre sie offline (Schritt830 ). - Ein Datenspeicher
525 speichert die Daten, die vom Benutzer in die Anwendung110 eingegeben werden. Die Daten werden Variablen in dem Quellcode zugeordnet. Der Datenspeicher525 weist Zuordnungen auf, um die von dem Benutzer empfangenen Daten den Variablen zuzuordnen, die in dem Quellcode aufgeführt sind, um festzustellen, welche Daten zu einer Variablen in dem Quellcode gehören. Jede Zuordnung weist einen Zeiger von den Daten zu der Variablen in dem Quellcode auf. Folglich wird der Quellcode mit dem Zeiger auf dem Zeiger auf die erzeugte Datenstruktur ab dem festgelegten Exit-Punkt ausgeführt. - In einer weiteren Ausführungsform ermittelt eine Wahrscheinlichkeitskomponente
535 die Wahrscheinlichkeit, ob ein bestimmter Quellcode-Block in dem Ausführungspfad erreicht wird. Zum Beispiel wird es basierend auf einer Antwort eines Benutzers auf eine bestimmte Frage möglicherweise als unwahrscheinlich erachtet, dass eine bestimmte Verzweigung der bedingten Anweisung erreicht wird. In diesem Szenario muss der Benutzer die Daten nicht eingeben, wenn es unwahrscheinlich ist, dass der Code-Block erreicht wird. Somit muss der Benutzer nur Daten für den Code-Block eingeben, der am wahrscheinlichsten ausgeführt wird. - In einer alternativen Ausführungsform und mit Bezug auf die
7 und9 überwacht eine Komponente mit einer leeren Datenstruktur410 die Online-Aktivitäten eines Benutzers, um einen Langzeitdatensatz mit Datenstrukturen zur Ausführung anzulegen, wenn eine Abfangprozess-Komponente einen Verlust der Netzwerkverbindung zwischen dem Client und dem Server erkennt. - In dieser beispielhaften Ausführungsform überwacht eine Überwachungskomponente
705 die Online-Aktivität eines Benutzers und bemerkt, wenn auf Online-Anwendungen110 zugegriffen wird. Identifikationsinformationen wie zum Beispiel die URL der Online-Anwendung110 , der Name der Online-Anwendung110 , die Versionsnummer und das Datum des Zugriffs werden in dem Datenspeicher720 abgelegt (Schritt900 ). Falls erkannt wird, dass keine Netzwerkverbindung vorhanden ist, wird mit diesen Informationen festgestellt, ob zuvor auf die Online-Anwendung110 zugegriffen worden ist. - Eine Ressourcenabruf-Komponente
725 überwacht die Interaktion des Benutzers mit der Online-Anwendung110 und prüft den Quellcode, um jede Datenstruktur festzustellen, die dem Benutzer angezeigt wird oder mit welcher der Benutzer in Dialogverkehr tritt. Wie zuvor wird jede bedingte Anweisung überwacht und die Antworten auf jede der bedingten Anweisungen in Bezug auf die Frage, welche Datensätze zurückgeschickt werden, werden von der Überwachungskomponente605 vorübergehend im Arbeitsspeicher gespeichert (Schritt905 ). - Parallel dazu führt eine Scripterstellungs-Engine
715 eine syntaktische Analyse der Datenstrukturen und der Eingabedaten durch und entfernt die Eingabedaten aus den Datenstrukturen und speichert die leeren Datenstrukturen in dem Datenspeicher730 (Schritt915 ). - Folglich weist der Datenspeicher
730 einen Speicher mit leeren Datenstrukturen und die Verknüpfungen (Links) und Interaktionen zu abhängigen leeren Datenstrukturen in dem Datenspeicher auf. - In einer alternativen Ausführungsform werden die Eingabedaten des Benutzers ebenfalls gespeichert.
- Der Fachmann erkennt, dass die Erzeugung eines Datenspeichers mit leeren Datenstrukturen über einen längeren Zeitraum erfolgt. Der Grund dafür ist, dass ein Benutzer nur eine Teilgruppe des Satzes von Funktionen nutzen kann, den eine Online-Anwendung aufweist. Wenn eine Online-Anwendung einen Satz von Funktionen F1 bis Fn aufweist, kann der Benutzer bei einer ersten Interaktion daher nur die Teilgruppe F1 und F2 nutzen. Die leeren Datenstrukturen der Teilsätze F1 und F2 werden somit in dem Datenspeicher abgelegt. Bei späteren Interaktionen kann auf dieselben Teilsätze zugegriffen werden oder auf andere Teilsätze, auf die vorher nicht zugegriffen wurde, kann zugegriffen werden, zum Beispiel F7 bis F12. Diese neuen Teilsätze werden in dem Datenspeicher abgelegt.
- Wenn der Benutzer zu einem späteren Zeitpunkt auf die Online-Anwendung
110 zugreift, überprüft die Abfangprozess-Komponente710 laufend den Status der Netzwerkverbindung zwischen dem Client und dem Server. Wenn die Abfangprozess-Komponente710 erkennt, dass die Netzwerkverbindung verloren ging, sendet die Abfangprozess-Komponente710 eine Nachricht an die Scripterstellungs-Engine715 , die besagt, dass sie damit beginnen soll, den erwarteten Ausführungsablauf der Anwendung110 darzustellen und zu erzeugen (Schritt925 ). Die Scripterstellungs-Engine715 stellt fest, ob der Benutzer bereits vorher auf die Online-Anwendung110 zugegriffen hat, indem sie die URL und andere Identifikationsinformationen prüft. - Die Scripterstellungs-Engine
715 stellt fest, an welchem Punkt in dem Ausführungsablauf der Benutzer die Netzwerkverbindung mit dem Server105 verloren hat (Schritt935 ) und unter Verwendung der im Datenspeicher730 abgelegten leeren Datenstrukturen erstellt sie erneut den Ausführungspfad, indem sie den Quellcode ausführt und den in Ausführung befindlichen Quellcode mit den erzeugten Datenstrukturen füllt (Schritte940 bis950 ). - In beiden vorstehenden Beispielen wird, wenn die Netzwerkverbindungsdetektor-Komponente erkennt, dass die Netzwerkverbindung wieder aufgenommen wurde, eine Nachricht an die Scripterstellungs-Engine gesendet, die besagt, dass sie ein Datenpaket erzeugen soll, das Informationen wie zum Beispiel welchen Punkt die Verarbeitung in dem Ausführungspfad erreicht hat, aufweist. Der Server kann mit diesen Informationen die Ausführung des Quellcodes bis zum Abschluss der Ausführung fortsetzen.
- Die prädiktive Datenstrukturkomponente kann auch verwendet werden, um webbasierte Anwendungen zu testen, bevor die Anwendung in einem vernetzten Datenverarbeitungssystem eingesetzt wird. Die prädiktive Datenstrukturkomponente ist in der Lage, Datenstrukturen zu erzeugen, die von dem Quellcode benötigt werden, um die Ausführung entlang eines Ausführungspfads fortzusetzen, wenn die Anwendung nicht in einem Netzwerk eingesetzt wird und die angeforderte Ressource nicht von einem mit dem Netzwerk verbundenen Server abgerufen werden kann. Daher können Transaktionsfolgen, die eine Anwendung abarbeiten muss, um eine angeforderte Transaktion abzuschließen, in einer offline-Umgebung validiert und getestet werden. In diesem Beispiel wird gegebenenfalls ein Bericht erzeugt, um einen Entwickler über einen Ausführungspfad zu informieren, der aufgrund eines Fehlers in einem Verweis im Quellcode nicht abgeschlossen werden kann.
- Die Erfindung kann die Form einer ganz in Hardware realisierten Ausführung, einer ganz in Software realisierten Ausführung oder einer Ausführung annehmen, die sowohl Hardware- als auch Software-Elemente enthält. In einer bevorzugten Ausführungsform wird die vorliegende Erfindung in Software realisiert, die Firmware, residente Software, Mikrocode usw., ohne darauf beschränkt zu sein, beinhaltet.
- Die Erfindung kann die Form eines Computerprogrammprodukts annehmen, auf das von einem Datenträger zugegriffen werden kann, welches von einem Computer genutzt oder gelesen werden kann und welches Programmcode zur Verwendung durch einen Computer oder ein beliebiges Anweisungsausführungssystem oder in Verbindung mit einem Computer oder einem beliebigen Anweisungsausführungssystem bereitstellt. Zum Zweck dieser Beschreibung kann ein von einem Computer nutzbarer oder von einem Computer lesbarer Datenträger jede Vorrichtung sein, die das Programm zur Verwendung durch das Anweisungsausführungssystem, die Anweisungsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit dem Anweisungsausführungssystem, der Anweisungsausführungsvorrichtung oder -einheit enthalten, speichern, übertragen, weiterleiten oder transportieren kann.
- Bei dem Datenträger kann es sich um ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- oder Halbleitersystem (oder -vorrichtung oder -einheit) oder ein Weiterleitungsmedium handeln. Zu Beispielen für einen computerlesbaren Datenträger gehören ein Halbleiterspeicher, ein Magnetband, eine auswechselbare Computerdiskette, ein Direktzugriffspeicher (RAM), ein Nur-Lese-Speicher (ROM), eine magnetische Festplatte und eine optische Platte. Zu aktuellen Beispielen für optische Platten gehören Compact-Disk-Nur-Lese-Speicher (CD-ROM), Compact-Disk-Schreib-/Lese-Speicher (CD-R/W) und DVD.
- An dem Vorstehenden können Verbesserungen und Änderungen vorgenommen werden, ohne vom Umfang der vorliegenden Erfindung abzuweichen.
Claims (20)
- Verfahren zum Erzeugen einer vorhersagenden Datenstruktur für eine Anwendung, wenn diese offline in einem mit einem Netzwerk verbundenen Datenverarbeitungssystem arbeitet, wobei die Anwendung Quellcode aufweist, der einen Ausführungspfad hat, wobei das Verfahren die Schritte aufweist: Festlegen eines Exit-Punkts in dem Quellcode der Anwendung; Festlegen eines Ausführungspfads ab dem Exit-Punkt, wobei der Ausführungspfad mindestens eine bedingte Anweisung aufweist; Feststellen von einer oder mehreren Verzweigungen der mindestens einen festgestellten bedingten Anweisung und für jede festgestellte Verzweigung Festlegen einer erwarteten Antwort; für jede festgelegte erwartete Antwort Erzeugen einer Datenstruktur aus der Antwort; Fortfahren entlang des Ausführungspfads des Quellcodes ab dem Exit-Punkt und Ersetzen einer jeden Anforderung für eine Ressource in dem Quellcode durch einen Zeiger auf die erzeugte Datenstruktur; und Ausführen des Quellcodes mit dem Zeiger auf die erzeugte Datenstruktur ab dem festgelegten Exit-Punkt.
- Verfahren nach Anspruch 1, wobei das Festlegen einer erwarteten Antwort den Schritt des Prüfens einer jeden Verzweigung der bedingten Anweisung mit einer oder mehreren Logikregeln aufweist, um die erwartete Antwort festzulegen.
- Verfahren nach Anspruch 2, wobei jede Logikregel einen Datensatz zur Abbildung auf eine Variable in dem Quellcode der Anwendung aufweist und wobei der Datensatz Daten aufweist, die als Reaktion auf die Eingabe der Variablen in einem Fenster der Netzwerkanwendung angezeigt werden sollen.
- Verfahren nach Anspruch 1, wobei der Exit-Punkt die Codezeile ist, an der der Quellcode aufgrund des festgestellten Ausfalls der Netzwerkaktivität nicht ausgeführt werden konnte.
- Verfahren nach Anspruch 1, wobei das Ersetzen einer Anforderung für eine Ressource das Ändern eines in dem Quellcode festgestellten Verweises auf eine Ressource auf dem Server aufweist, um auf die erzeugte Datenstruktur zu verweisen.
- Verfahren nach Anspruch 5, das des Weiteren ein Ausführen des Quellcodes, der über die geänderten Verweise verfügt, aufweist.
- Verfahren nach Anspruch 1, das des Weiteren eine Feststellung, ob der Client und der Server über ein Netzwerk verbunden sind, und als Reaktion auf eine positive Feststellung ein Senden eines Datenpakets an den Server sowie die weiterhin durch den Server erfolgende Ausführung des Quellcodes der Anwendung ab der Stelle des Quellcodes, an der der Client die Verarbeitung übergeben hat, aufweist.
- Verfahren nach Anspruch 1, das des Weiteren eine Überwachung einer Anforderung eines Client für Ressourcen von einem Server und die Feststellung einer Datenstruktur aus den Anforderungen aufweist, um die Datenstruktur in einem Vergangenheitsspeicher zu speichern.
- Verfahren nach Anspruch 7, das des Weiteren ein Entfernen von persönlichen Daten aus der gespeicherten Datenstruktur aufweist.
- Vorrichtung zum Erzeugen einer vorhersagenden Datenstruktur für eine Anwendung, wenn diese offline in einem mit einem Netzwerk verbundenen Datenverarbeitungssystem arbeitet, wobei die Anwendung Quellcode aufweist, der einen Ausführungspfad hat, wobei die Vorrichtung die Schritte aufweist: eine Abfangprozess-Komponente, um einen Exit-Punkt in dem Quellcode der Anwendung festzulegen; eine Scripterstellungs-Engine, um einen Ausführungspfad ab dem Exit-Punkt festzulegen, wobei der Ausführungspfad mindestens eine bedingte Anweisung aufweist; eine Scripterstellungs-Engine, um eine oder mehrere Verzweigungen der mindestens einen festgestellten bedingten Anweisung festzustellen und um für jede festgestellte Verzweigung eine erwartete Antwort festzulegen; für jede festgelegte erwartete Antwort eine Scripterstellungs-Engine zum Erzeugen einer Datenstruktur aus der Antwort; eine Scripterstellungs-Engine, um entlang des Ausführungspfads des Quellcodes ab dem Exit-Punkt fortzufahren und eine jede Anforderung für eine Ressource in dem Quellcode durch einen Zeiger auf die erzeugte Datenstruktur zu ersetzen; und eine Erstellungskomponente, um den Quellcode mit dem Zeiger auf die erzeugte Datenstruktur ab dem festgelegten Exit-Punkt auszuführen.
- Vorrichtung nach Anspruch 10, wobei das Festlegen einer erwarteten Antwort den Schritt des Prüfens einer jeden Verzweigung der bedingten Anweisung mit einer oder mehreren Logikregeln aufweist, um die erwartete Antwort festzulegen.
- Vorrichtung nach Anspruch 11, wobei jede Logikregel einen Datensatz zur Abbildung auf eine Variable in dem Quellcode der Anwendung aufweist und wobei der Datensatz Daten aufweist, die als Reaktion auf die Eingabe der Variablen in einem Fenster der Netzwerkanwendung angezeigt werden sollen.
- Vorrichtung nach Anspruch 10, wobei der Exit-Punkt die Codezeile ist, an der der Quellcode aufgrund des festgestellten Ausfalls der Netzwerkaktivität nicht ausgeführt werden konnte.
- Vorrichtung nach Anspruch 10, wobei das Ersetzen einer Anforderung für eine Ressource ein Ändern eines in dem Quellcode festgestellten Verweises auf eine Ressource auf dem Server aufweist, um auf die erzeugte Datenstruktur zu verweisen.
- Vorrichtung nach Anspruch 14, die des Weiteren ein Ausführen des Quellcodes, der über die geänderten Verweise verfügt, aufweist.
- Vorrichtung nach Anspruch 10, die des Weiteren einen Netzwerk-Verbindungsdetektor aufweist, um festzustellen, ob der Client und der Server über ein Netzwerk verbunden sind, und um als Reaktion auf eine positive Feststellung ein Datenpaket an den Server zu senden, und wobei der Server weiterhin den Quellcode der Anwendung ab der Stelle des Quellcodes, an der der Client die Verarbeitung übergeben hat, ausführt.
- Vorrichtung nach Anspruch 10, die des Weiteren eine Überwachungskomponente zur Überwachung der Anforderung eines Client für Ressourcen von einem Server und die Feststellung einer Datenstruktur aus den Anforderungen aufweist, um die Datenstruktur in einem Vergangenheitsspeicher zu speichern.
- Vorrichtung nach Anspruch 16, die des Weiteren das Entfernen von persönlichen Daten aus der gespeicherten Datenstruktur aufweist.
- Verfahren zum Testen einer Netzwerkanwendung, wenn die Netzwerkanwendung nicht mit einem Netzwerk verbunden ist, wobei die Netzwerkanwendung dazu dient, mit einem Server über ein Netzwerk Daten auszutauschen, wobei die Anwendung Quellcode aufweist, der einen Ausführungspfad hat, wobei das Verfahren die Schritte aufweist: Festlegen eines Exit-Punkts in dem Quellcode der Anwendung; Festlegen eines Ausführungspfads ab dem Exit-Punkt, wobei der Ausführungspfad mindestens eine bedingte Anweisung aufweist; Feststellen von einer oder mehreren Verzweigungen der mindestens einen festgestellten bedingten Anweisung und für jede festgestellte Verzweigung Festlegen einer erwarteten Antwort; für jede festgelegte erwartete Antwort Erzeugen einer Datenstruktur aus der Antwort; Fortfahren entlang des Ausführungspfads des Quellcodes ab dem Exit-Punkt und Ersetzen einer jeden Anforderung für eine Ressource in dem Quellcode durch einen Zeiger auf die erzeugte Datenstruktur; Ausführen des Quellcodes mit dem Zeiger auf die erzeugte Datenstruktur ab dem festgelegten Exit-Punkt.
- Computerprogramm, das Computerprogrammcode aufweist, um, wenn es in ein Computersystem geladen und darauf ausgeführt wird, alle Schritte des Verfahrens nach einem der Ansprüche 1 bis 9 durchzuführen.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP11184879.2 | 2011-10-12 | ||
EP11184879 | 2011-10-12 | ||
PCT/IB2012/055429 WO2013054248A1 (en) | 2011-10-12 | 2012-10-08 | Generating a predictive data structure |
Publications (1)
Publication Number | Publication Date |
---|---|
DE112012004301T5 true DE112012004301T5 (de) | 2014-07-31 |
Family
ID=48081445
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112012004301.4T Pending DE112012004301T5 (de) | 2011-10-12 | 2012-10-08 | Erzeugen einer vorhersagenden Datenstruktur |
Country Status (4)
Country | Link |
---|---|
US (3) | US9557966B2 (de) |
CN (1) | CN103874998B (de) |
DE (1) | DE112012004301T5 (de) |
WO (1) | WO2013054248A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10725751B2 (en) | 2011-10-12 | 2020-07-28 | International Business Machines Corporation | Generating a predictive data structure |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11100450B2 (en) * | 2016-02-26 | 2021-08-24 | International Business Machines Corporation | Document quality inspection |
US10817272B2 (en) * | 2016-12-12 | 2020-10-27 | Sap Se | Generation and usage of language-converted script |
US10957195B2 (en) * | 2018-06-29 | 2021-03-23 | Lyft, Inc. | Apparatuses, systems, and methods for graphical progress interfaces for dynamic transportation networks |
CN109324792B (zh) * | 2018-10-09 | 2022-03-11 | 深圳点猫科技有限公司 | 一种基于编程语言的路由构建自动化方法及电子设备 |
US11520560B2 (en) * | 2018-12-31 | 2022-12-06 | Kevin D. Howard | Computer processing and outcome prediction systems and methods |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7430670B1 (en) | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US7222161B2 (en) | 1999-11-24 | 2007-05-22 | Yen Robert C | Method and system for facilitating usage of local content at client machine |
US7013310B2 (en) * | 2002-01-03 | 2006-03-14 | Cashedge, Inc. | Method and apparatus for retrieving and processing data |
US20020073076A1 (en) | 2000-12-11 | 2002-06-13 | Yongjie Xu | System and method for enabling off-line database functionality |
US6918110B2 (en) * | 2001-04-11 | 2005-07-12 | Hewlett-Packard Development Company, L.P. | Dynamic instrumentation of an executable program by means of causing a breakpoint at the entry point of a function and providing instrumentation code |
US8141052B2 (en) * | 2003-05-09 | 2012-03-20 | Microsoft Corporation | Instrumenting software for enhanced diagnosability |
US7177877B2 (en) * | 2003-05-29 | 2007-02-13 | Electronic Data Systems Corporation | Method and system for externalizing conditional logic for collecting multi-purpose objects |
US7577771B2 (en) | 2004-05-03 | 2009-08-18 | Microsoft Corporation | Caching data for offline display and navigation of auxiliary information |
JP4616035B2 (ja) | 2005-02-25 | 2011-01-19 | 富士通株式会社 | サーバ負荷分散プログラム,装置および方法 |
US20070033155A1 (en) * | 2005-08-02 | 2007-02-08 | Landsman Richard A | Client/server web application architectures for offline usage, data structures, and related methods |
US7953861B2 (en) | 2006-08-10 | 2011-05-31 | International Business Machines Corporation | Managing session state for web applications |
US7814234B2 (en) | 2006-10-30 | 2010-10-12 | Microsoft Corporation | Offline execution of web based applications |
US8452853B2 (en) * | 2007-03-05 | 2013-05-28 | International Business Machines Corporation | Browser with offline web-application architecture |
US7631214B2 (en) | 2007-05-31 | 2009-12-08 | International Business Machines Corporation | Failover processing in multi-tier distributed data-handling systems |
EP2009572B1 (de) * | 2007-06-29 | 2010-01-27 | Telefonaktiebolaget LM Ericsson (publ) | Verschleierung von Ausführungsspuren eines Computerprogrammcodes |
US8516080B2 (en) | 2008-12-03 | 2013-08-20 | Mobophiles, Inc. | System and method for providing virtual web access |
US8359574B1 (en) * | 2009-01-16 | 2013-01-22 | Adobe Systems Incorporated | Offline mode in IDE for seamless service-oriented-architecture-based application development |
CN101876934B (zh) | 2009-04-30 | 2013-08-21 | 国际商业机器公司 | 一种用于对输入数据进行采样的方法和系统 |
US8661423B2 (en) | 2009-05-01 | 2014-02-25 | Telcordia Technologies, Inc. | Automated determination of quasi-identifiers using program analysis |
DE112012004301T5 (de) | 2011-10-12 | 2014-07-31 | International Business Machines Corporation | Erzeugen einer vorhersagenden Datenstruktur |
-
2012
- 2012-10-08 DE DE112012004301.4T patent/DE112012004301T5/de active Pending
- 2012-10-08 US US14/351,178 patent/US9557966B2/en not_active Expired - Fee Related
- 2012-10-08 WO PCT/IB2012/055429 patent/WO2013054248A1/en active Application Filing
- 2012-10-08 CN CN201280050218.7A patent/CN103874998B/zh active Active
-
2016
- 2016-11-16 US US15/352,787 patent/US10235143B2/en active Active
-
2018
- 2018-11-06 US US16/181,431 patent/US10725751B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10725751B2 (en) | 2011-10-12 | 2020-07-28 | International Business Machines Corporation | Generating a predictive data structure |
Also Published As
Publication number | Publication date |
---|---|
US10235143B2 (en) | 2019-03-19 |
CN103874998B (zh) | 2017-02-15 |
US20140282374A1 (en) | 2014-09-18 |
US20190073199A1 (en) | 2019-03-07 |
US9557966B2 (en) | 2017-01-31 |
US10725751B2 (en) | 2020-07-28 |
WO2013054248A1 (en) | 2013-04-18 |
US20170060549A1 (en) | 2017-03-02 |
CN103874998A (zh) | 2014-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102012213795B4 (de) | Durch einen Computer implementiertes Verfahren, das es einer Web-Anwendung ermöglicht, mindestens eine native Funktion einer mobilen Einheit aufzurufen | |
DE60114999T2 (de) | Überwachung von und interaktion mit netzwerkdiensten | |
DE60308489T2 (de) | Anwendungsfensterschließung als Reaktion auf ein Ereignis in einem Parent-Fenster | |
DE69934871T2 (de) | Verfahren und System zur optimalen Auswahl eines Webfirewalls in einem TCP/IP Netzwerk | |
DE112010002445T9 (de) | Identifizierung von Bots | |
DE60015423T2 (de) | Verfahren und Vorrichtung zur Objektwiedergabe in einem Netzwerk | |
DE102010012847B4 (de) | Monitor für dringende Kommunikation in sozialen Netzwerken und Echtzeit-Anrufeinleitungssystem | |
DE112012004301T5 (de) | Erzeugen einer vorhersagenden Datenstruktur | |
DE112018002952T5 (de) | Datenabgleich basierend auf einer Computeranalyse von Daten | |
US9232011B2 (en) | Tracking navigation flows within the same browser tab | |
DE202014011541U1 (de) | System zum Herstellen einer Vertrauensverknüpfung | |
DE102013200159A1 (de) | Management von Sicherheitsrichtlinien unter Verwendung einer Störungsanalyse | |
DE112018003482T5 (de) | Serveranfrageverwaltung | |
DE102014114005A1 (de) | Risikobeurteilung von Interaktionen von Anwendungen für mobile Einheiten aufgrund von Reputation | |
DE10050172A1 (de) | Systeme, Verfahren und Computerprogrammprodukte zur Überprüfung eines für die Anzeige in pervasive Computereinheiten angepassten Web-Inhaltes | |
DE112010003361T5 (de) | Virtuelles privates Netz für soziale Netze | |
DE102012220716A1 (de) | Verfahren, Datenverarbeitungsvorrichtung und Programm zum Identifizieren vertraulicher Daten | |
DE112018006345T5 (de) | Abrufen von unterstützenden belegen für komplexe antworten | |
DE112011103273T5 (de) | Weitergabe von Identitäten über Anwendungsebenen unter Verwendung von kontextabhängiger Zuordnung und gesetzten Werten | |
DE112020000927T5 (de) | Verwalten sensibler daten | |
DE112017003884T5 (de) | Benutzerschnittstelle für Protokollabfragen | |
DE102015101062B4 (de) | Serversystem, Verfahren zur Steuerung eines Serversystems und Speichermedium | |
DE10314792A1 (de) | Verfolgen von Benutzern an einem Webservernetz | |
CN110083752A (zh) | 房源信息推荐方法、装置、设备及存储介质 | |
DE112020004312T5 (de) | Übersetzung von eingebetteten mehrformatdateien |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R082 | Change of representative |
Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE Representative=s name: LIFETECH IP SPIES DANNER & PARTNER, PATENTANWA, DE |
|
R082 | Change of representative |
Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE |
|
R082 | Change of representative |
Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE |
|
R082 | Change of representative |
Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE |
|
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: G06F0017300000 Ipc: G06F0016000000 |
|
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: G06F0016000000 Ipc: G06F0016957000 |
|
R016 | Response to examination communication | ||
R084 | Declaration of willingness to licence |