DE112012004301T5 - Erzeugen einer vorhersagenden Datenstruktur - Google Patents

Erzeugen einer vorhersagenden Datenstruktur Download PDF

Info

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
Application number
DE112012004301.4T
Other languages
English (en)
Inventor
c/o IBM UK Ltd. Fletcher Benjamin Joseph
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112012004301T5 publication Critical patent/DE112012004301T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic 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

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.

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 von 4 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 von 4 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-Datenverarbeitungssystems 100, in dem bevorzugte Ausführungsformen der Erfindung realisiert werden können. Ein Netzwerk-Datenverarbeitungssystem 100 weist ein Netzwerk 135 auf, bei dem es sich um das Medium handelt, das zur Bereitstellung von Datenübertragungsverbindungen zwischen verschiedenen Einheiten verwendet wird, die in dem Netzwerk-Datenverarbeitungssystem 100 miteinander verbunden sind. Das Netzwerk 135 kann Datenübertragungsstrukturen wie zum Beispiel drahtgebundene Verbindungen (Ethernet), drahtlose Datenübertragungsverbindungen oder Lichtwellenleitertechnik usw. aufweisen.
  • In dem gezeigten Beispiel von 1 sind Server 105 mit dem Netzwerk 135 zusammen mit dem Speichermittel 130 verbunden. Bei den Servern 105 kann es sich um jede beliebige Art von Servern handeln, zum Beispiel Anwendungsserver oder Webserver usw. Client-Einheiten 115 sind ebenfalls mit dem Netzwerk 135 verbunden. Diese Clients 115 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 Ressourcen 140 senden und die Ressourcen 140 von Servern 105, die mit dem Netzwerk verbunden sind, empfangen kann. Die Ressourcen 140 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 Clients 115 verwenden üblicherweise eine Netzwerkanwendung 120 wie zum Beispiel einen Webbrowser, um Ressourcen 140 von einem oder mehreren Servern 105 anzufordern. Das Speichermittel 130 speichert Ressourcen, um sie an anfordernde Clients 115 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 Netzwerk 130 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 Netzwerk 135 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 Datenverarbeitungssystems 200. Das Datenverarbeitungssystem 200 ist ein Beispiel für einen Computer wie zum Beispiel einen Server 105 oder einen Client 115 von 1.
  • Das Datenverarbeitungssystem 200 weist eine Zentraleinheit 265 mit einem Primärspeicher in Form eines Arbeitsspeichers 205 (RAM und ROM) auf. Der Arbeitsspeicher 205 speichert Programminformationen und Daten, die von Anwendungsprogrammen bearbeitet oder erzeugt werden. Programminformationen weisen den Betriebssystemcode für das Datenverarbeitungssystem 200 und Anwendungscode für Anwendungen auf, die auf dem Datenverarbeitungssystem 200 ausgeführt werden. Der Sekundärspeicher 235 weist zum Beispiel einen optischen Plattenspeicher und einen magnetischen Plattenspeicher auf. Daten und Programminformationen können auch gespeichert werden und vom Sekundärspeicher 235 kann darauf zugegriffen werden.
  • Das Datenverarbeitungssystem 200 weist ein Netzwerkverbindungsmittel 230 auf, um das Datenverarbeitungssystem 200 über eine Schnittstelle mit einem Netzwerk 135 zu verbinden. Das Datenverarbeitungssystem 200 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 Tastatur 260, einer Maus 255, einem Spracheingang 250 und einem Scanner 245 zur Eingabe von Text, Bildern, Grafiken oder dergleichen auf. Ausgänge von der Zentraleinheit 265 können ein Anzeigemittel 210, einen Drucker 215, einen Tonausgang 220, einen Videoausgang 225 usw. aufweisen. Anwendungen können auf dem Datenverarbeitungssystem 200 aus einem Speichermittel 235 oder über eine Netzwerkverbindung 230 ausgeführt werden.
  • In einer bevorzugten Ausführungsform weist der Anwendungscode Code zum Ausführen einer Netzwerkanwendung 120 auf, um auf Online-Anwendungen 110 wie zum Beispiel Wikis, Sites von sozialen Netzwerken und Datenübertragungstools usw. zuzugreifen. Der Klarheit halber ist die Netzwerkanwendung 120 eine beliebige Anwendung, die dazu dient, Informationsressourcen 140 von dem Netzwerk 135 anzufordern, zu empfangen, darzustellen und zu durchlaufen. Die Netzwerkanwendung 120 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 Informationsressource 140 umfassen, auf die von dem Netzwerk 135 bei einer Interaktion zwischen einem Client 115 und einem Server 105 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-Anwendung 110 offline sein kann, weil eine oder mehrere Ressourcen von einem oder mehreren Servern 105 nicht zur Verfügung stehen. Die Folge ist somit eine Anwendung 110, die nur teilweise online ist, da einige Ressourcen 140 zur Verfügung stehen und einige Ressourcen 140 aufgrund der selektiven Verfügbarkeit von einem oder mehreren Servern 105 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-Anwendungen 110. Wenn ein Client 115 folglich auf eine Online-Anwendung 110 zugreift, die es erforderlich macht, dass ein Benutzer eines Client Daten eingibt, und der Client die Verbindung mit der Online-Anwendung 110 verliert, kann der Client 115 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 Client 115 von dem Server 105 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-Anwendung 110 verlassen muss und einen neuen Verbindungsversuch unternimmt, wenn die Verbindung zu dem Server 105 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-Anwendung 120. Die Webbrowser-Anwendung weist Menüs 300 auf, in denen Benutzer auf Funktionen zugreifen können, die für die Webbrowser-Anwendung 120 spezifisch sind. Die Webbrowser-Anwendung weist auch eine Navigationsleiste 305 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 Client 115 und der Server 105 über ein Netzwerk Daten austauschen, kann der Server 105a) die Anforderung von dem Client 115 empfangen und b) die angeforderte Ressource an den Client 115 zurücksenden. Wenn der Client 115 und der Server 105 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 Client 115 verbunden ist und die angeforderte Ressource folglich an den Client zurücksenden kann. Wenn der Server 105 jedoch nicht über die angeforderte Ressource verfügt und sich die angeforderte Ressource auf einem zweiten Server 105 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 Datenstrukturkomponente 400. Die prädiktive Datenstrukturkomponente 400 kann mit einer Netzwerk-Anwendung 120 betrieben werden, wie in der Technik bekannt ist. Die prädiktive Datenstrukturkomponente 400 kann in eine Netzwerk-Anwendung 120 eingebettet sein oder als Zusatzprogramm (Plug-in) in einer vorhandenen Netzwerk-Anwendung 120 installiert werden.
  • Die prädiktive Datenstrukturkomponente 400 weist Logik auf, um zu erkennen, wenn ein Client 115 und ein Server 105 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 Server 105 und der Client 115 über das Netzwerk 135 Daten austauschen würden. Die prädiktive Datenstrukturkomponente 400 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 Datenstrukturkomponente 400 die Datenstrukturen erzeugen und die Quellcode-Verweise auf die serverseitigen Ressourcen ändern, um auf die erzeugten Datenstrukturen zu zeigen, die auf dem Client 115 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 Client 115 und der Server 105 immer noch über das Netzwerk verbunden.
  • Gemäß einer ersten Ausführungsform überwacht eine Datenverbindungsdetektor-Komponente 415, die sich auf dem Client 115 befindet, laufend HTTP-Anforderungen für Ressourcen 140. Wenn sie erkennt, dass die Anforderung eines Client 115 ein Zeitlimit überschritten hat oder dass ein Client 115 einen HTTP-404-Fehlercode empfängt, sendet die Datenverbindungsdetektor-Komponente 415 eine Nachricht an die prädiktive Datenstrukturkomponente 400.
  • 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 Ersteller 410 einer ”leeren” Datenstruktur und das andere ist ein Ersteller 405 einer ”Lookahead”-Datenstruktur. Das Ziel von beiden vorhersagenden Datenstrukturkomponenten 405, 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 Client 115 und dem Server 105 verloren ging.
  • Mit Bezug auf die 5, 6 und 8 empfängt die Lookahead-Datenstrukturerstellerkomponente 405 eine Nachricht (Schritt 800) über eine Nachrichtenempfängerkomponente 500, 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 Anwendung 110, die auf dem Client 115 ausgeführt wird, zu und fängt ihn ab. Die Abfangprozess-Komponente 505 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”-Punkt 615 (Schritt 805) 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-Anwendung 120 eine Anforderung für den Zugriff auf www.pensioncalculator.com. Der Server 105 ruft die angeforderte Ressource 140 ab und sendet die Ressource an den Client 115. Der Client 115 empfängt die Ressource 140 und die Netzwerk-Anwendung 120 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 Client 115 und dem Server 105 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-Engine 510. In Verbindung mit einer Syntaxanalyse-(Parsing-)Komponente 515 führt die Scripterstellungs-Engine 510 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-Engine 510 beginnt mit der Feststellung einer ersten bedingten Anweisung in dem Quellcode (Schritt 810). 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 Server 105.
  • 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 Client 115 angezeigt werden soll. Die Abfangprozess-Komponente 505 arbeitet ständig im Hintergrund, wobei sie den Status der Netzwerkverbindung zwischen dem Client 115 und dem Server 105 überwacht.
  • Solange die Netzwerkverbindung besteht, empfängt der Client 115 angeforderte Ressourcen 140, und der Server 105 empfängt die Anforderung für die Ressourcen 140 und ruft die Ressourcen 140 von dort ab, wo immer sich die Ressourcen 140 in dem Netzwerk 135 befinden. Wenn die Abfangprozess-Komponente 505 an diesem Punkt keine Verbindung feststellt, wird eine Nachricht an die Scripterstellungs-Engine 510 gesendet, mit der sie angewiesen wird, mit der Syntaxanalyse des Quellcodes der Offline-Anwendung 110 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 Server 105 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-Engine 510 ist über eine Schnittstelle mit einer Logikkomponente 520 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 Server 105 anfordern zu müssen, der nicht mit dem Client 115 über ein Netzwerk Daten austauscht. Daher prüft und validiert die Scripterstellungs-Engine 510 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 bedingte Anweisung gibt gegebenenfalls Folgendes an:
    Figure DE112012004301T5_0002
  • Die Scripterstellungs-Engine 510 ist mit der Logikkomponente 520 über eine Schnittstelle verbunden, um jede Antwort der bedingten Anweisung zu erzeugen und um jede mögliche Antwort der bedingten Anweisung festzustellen (Schritt 815). 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 (Figur 615, 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-Anwendung 110 benötigt, um mit dem Betrieb fortzufahren (Schritt 820). 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 (Schritt 825). 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-Engine 510 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 Datenspeicher 525 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 Erstellungskomponente 530 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 (Schritt 830).
  • Ein Datenspeicher 525 speichert die Daten, die vom Benutzer in die Anwendung 110 eingegeben werden. Die Daten werden Variablen in dem Quellcode zugeordnet. Der Datenspeicher 525 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 und 9 überwacht eine Komponente mit einer leeren Datenstruktur 410 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-Anwendungen 110 zugegriffen wird. Identifikationsinformationen wie zum Beispiel die URL der Online-Anwendung 110, der Name der Online-Anwendung 110, die Versionsnummer und das Datum des Zugriffs werden in dem Datenspeicher 720 abgelegt (Schritt 900). Falls erkannt wird, dass keine Netzwerkverbindung vorhanden ist, wird mit diesen Informationen festgestellt, ob zuvor auf die Online-Anwendung 110 zugegriffen worden ist.
  • Eine Ressourcenabruf-Komponente 725 überwacht die Interaktion des Benutzers mit der Online-Anwendung 110 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 Überwachungskomponente 605 vorübergehend im Arbeitsspeicher gespeichert (Schritt 905).
  • 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 Datenspeicher 730 (Schritt 915).
  • 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-Komponente 710 laufend den Status der Netzwerkverbindung zwischen dem Client und dem Server. Wenn die Abfangprozess-Komponente 710 erkennt, dass die Netzwerkverbindung verloren ging, sendet die Abfangprozess-Komponente 710 eine Nachricht an die Scripterstellungs-Engine 715, die besagt, dass sie damit beginnen soll, den erwarteten Ausführungsablauf der Anwendung 110 darzustellen und zu erzeugen (Schritt 925). Die Scripterstellungs-Engine 715 stellt fest, ob der Benutzer bereits vorher auf die Online-Anwendung 110 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 Server 105 verloren hat (Schritt 935) und unter Verwendung der im Datenspeicher 730 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 (Schritte 940 bis 950).
  • 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)

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Verfahren nach Anspruch 5, das des Weiteren ein Ausführen des Quellcodes, der über die geänderten Verweise verfügt, aufweist.
  7. 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.
  8. 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.
  9. Verfahren nach Anspruch 7, das des Weiteren ein Entfernen von persönlichen Daten aus der gespeicherten Datenstruktur aufweist.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. Vorrichtung nach Anspruch 14, die des Weiteren ein Ausführen des Quellcodes, der über die geänderten Verweise verfügt, aufweist.
  16. 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.
  17. 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.
  18. Vorrichtung nach Anspruch 16, die des Weiteren das Entfernen von persönlichen Daten aus der gespeicherten Datenstruktur aufweist.
  19. 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.
  20. 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.
DE112012004301.4T 2011-10-12 2012-10-08 Erzeugen einer vorhersagenden Datenstruktur Pending DE112012004301T5 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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