AnzeigeSteuerung mit aktiven Hypertextdokumenten
Technisches Gebiet
Die Erfindung betrifft die Ablaufsteuerung von Computerprogrammen, insbesondere bei aktiven Hypertextdokumenten, d.h. solchen, bei denen Programme auf dem das Dokument anzeigenden Rechner ausgeführt werden.
Stand der Technik
Bei einer Anwendung der Datenverarbeitung wird unterschieden zwischen der Verarbeitungslogik, d.h. dem eigentlichen Programm, und der Interaktion mit dem Benutzer über eine Benutzerschnittstelle. Für letztere ist die Bezeichnung 'user interface', UI, oder 'graphical user interface', GUI, üblich. Bekannt ist beispielsweise das GUI der 'Windows '- Betriebssysteme, welches in das ausführbare Programm über Schnittstellenaufrufe integriert ist. Eine Trennung der Verarbeitungslogik von den Aufrufen der Benutzerschnittstelle ist in diesem Fall nicht möglich. Das heißt, die Verarbeitungslogik und die Gestaltung der Oberfläche sind integral ineinander verwoben.
In etlichen Anwendungsfällen ist jedoch eine Trennung von Benutzerschnittstelle und Verarbeitungslogik erwünscht. Dies beginnt bei der Erstellung von sprachspezifischen Varianten und endet bei einem unterschiedlichen Design der Bildschirmanzeigen. Dies hat insbesondere dazu geführt, daß hochkomplexe Entwicklungssysteme wie beispielsweise Delphi der Firma Inprise entstanden sind, die mittels objektorien-
tierter Programmierung die Ablaufsteuerungung bewirken und die Benutzerschnittstelle über ein interaktives Formatierungsprogramm bewirken. Damit ist zwar eine Veränderung wesentlich schneller zu bewirken; dennoch muß der Programmie- rer die Entwicklungsumgebung voll verstehen, um keine unerwünschten Veränderungen zu bewirken.
Ein anderer Ansatz zur Lösung dieser Aufgabe besteht darin, ein standardisiertes Anzeigeprogramm zu verwenden und den Aufbau der Bildschirmanzeige durch eine Hypertext- Markierungs-Sprache wie HTML zu bewirken. HTML erlaubt die Definition von Eingabfeldern, in die vom Benutzer Daten eingegeben und über ein Netzwerk an einen Server geschickt und dort verarbeitet werden können. Die Verarbeitung erfolgt dann jedoch ausschließlich im Server, insbesondere über Programme, die nach dem ' common gateway interface', CGI, aufgerufen werden und als Ergebnis des programmierten Ablaufs eine neue HTML-Seite zurücksenden. Da jedoch die HTML-Seiten von dem CGI-Programm erzeugt werden, ist wiederum eine Vermischung von Programm und Benutzerschnitt- stelle gegeben. Diese Lösung hat zudem den Nachteil, vollständig auf dem Server abzulaufen.
Daher sind unter dem Stichwort 'aktive Inhalte' Erweiterungen von HTML beschrieben worden, die eine Programmausführung auf dem die HTML-Seite anzeigenden System zulassen. Diese Erweiterungen sind unter den (Marken-) Namen 'JAVASCRIPT', 'JAVA' und 'ActiveX' bekannt. Die Anweisungen der Programme werden bei JAVASCRIPT in die Seite eingebettet und bei JAVA als separate präkompilierte Datei ("Bytecode") übertragen. Nach wie vor ist jedoch eine enge Ver- knüpfung von Programm und Darstellung durch HTML gegeben. Da zudem die Programmteile auf jeweils eine HTML-Seite be-
grenzt sind, ergeben sich Probleme bei der Programmorganisation, wenn die Steuerung von komplexen Transaktionsanwendungen, wie sie bei Geldautomaten usw. vorkommen, benötigt wird.
Aufgabe der Erfindung ist es daher, eine Lösung anzugeben, bei der die Benutzerschnittstelle von der Ausführungslogik entkoppelt ist und dennoch eine stardardisierte Markierungssprache wie HTML verwendet werden kann.
Darstellung der Erfindung
Die Lösung besteht aus einer Reihe von Maßnahmen, die jede für sich allein einsetzbar sind und in ihrer Gesamtheit besonders vorteilhaft sind. Im folgenden wird daher, ausgehend von einer einfachen Maßnahme, die Erfindung an Hand der jeweils darauf anwendbaren Veränderungen oder Ergänzun- gen beschrieben. Die dabei verwendeten Code-Beispiele sind zu Gunsten der Übersichtlichkeit stark vereinfacht und erfüllen ggf. auch Funktionen, für die integrierte Mittel zur Verfügung stehen.
Kurzbeschreibung der Figuren
Es zeigen
Fig. 1 den Code für die steuernde Seite,
Fig. 2 den für die erste Maske,
Fig. 3 den für die zweite Maske,
Fig. 4 den für eine Maske ohne variabel Inhalte,
Fig. 5 eine schematische Darstellung der beteiligten Komponenten,
Fig. 6 ein Blockdiagramm der Softwarestruktur,
einer Ausführungsform der Erfindung.
Beschreibung einer Ausführungsform der Erfindung
In Fig. 5 sind die beteiligten Komponenten in ihrem Bezug schematisch dargestellt. Die Beispiele beziehen sich auf das Anzeigeprogramm Netscape Communicator 4.7, im folgenden 'Browser' genannt. Der Browser 20 ist als Anwendungspro- gramm auf einem Rechner 22 aktiv. Der Browser 20 ist in bekannter Weise derart konfiguriert, daß er WEB-Seiten, basierend auf HTML-Code, anzeigt, die beispielsweise von einem Server 24 über ein geeignetes Computernetzwerk 26, beispielsweise das Internet, geladen werden.
Gemäß der Erfindung werden dem Browser 20 HTML-Daten gesendet, die einer Steuerseite 26 und einer oder mehrerer Anzeigeseiten 28 entsprechen. Wie weiter unten näher erläutert wird, enthält die Steuerseite einen Frameset 30, der den HTML-Code für eine von den Anzeigeseiten 28 enthält. Für eine gewünschte Benutzer-Interaktion enthält die Anzeigeseite 28 einen Mechanismus zur Ereignissteuerung 32, der auf der Steuerseite die Ausführung von Anweisungen bewirkt. Daher bewirkt die Steuerseite 26 eine Ablaufsteuerung, die schematisch bei 34 dargestellt ist, wohingegen die Anzeige- Seiten 28 die Funktionalität einer Benutzerschnittstelle bereitstellen, schematisch bei 36 dargestellt.
Fig. 6 zeigt die zur Zeit bevorzugte Software- Systemarchitektur in mehr Einzelheiten. Die Steuerseite 26 enthält Programmcode, der von dem Browser 20 ausgeführt werden kann, bevorzugt HTML mit JavaScript. Andere, wie JScript, JAVA, ActiveX und XML sind gleichfalls möglich.
Die Steuerseite 26 enthält bei Verwendung von HTML beispielsweise ein Rahmenwerk 38, dessen Code in Fig. 1 dargestellt ist und weiter unten genauer beschrieben wird. Das Rahmenwerk 38 umfaßt ausführbaren Code 40, insbesondere Ja- vaScript, sowie einen Frameset für die Seiteninhalte 42. In Fig. 6 ist der Frameset 44 zur besseren Veranschaulichung als eigene Einheit dargestellt.
Der Frameset 44 enthält einen oder mehrere Frames, die Anzeigeseiten oder andere Daten enthalten. In Fig. 6 wird der Framset 44 mit einer Leerseite 46 und einer ersten Anzeigeseite 48. Die erste Anzeigeseite 46 wird auch mit dem Be- zeichner 'showl.htm' versehen.
Das allgemeine Layout für zwei beispielhafte Anzeigeseiten ('showl.htm' und 'show2.htm') wird bei 50 und 52 näher dar- gestellt. Die 'showl.htm' Seite 50 ist zur Zeit als Anzeigeseite 48 geladen. Sie umfaßt einen Eingabe-Mechanismus 54 und eine Ereignissteuerung 56. Die Ereignissteuerung sendet Ereignis-Nachrichten and den JavaScript-Code 40, welcher damit vorbestimmte Befehle ausführt.
Wenn der Anwender die Steuerseite 26 in den Browser 20 lädt, bestimmt der Seiteninhalt des Framsets 44, was dem Benutzer angezeigt wird. Das Beispiel nach Fig. 6 entspricht den Programmlistings nach Fig. 1 bis Fig. 4. Wie weiter unten noch ausführlich dargestellt wird, ist die er- ste geladene Seite 46 ('dummy.htm'), ein letztendlich lee-
rer Seitenkopf, der keine variablen Daten enthält. Er dient hier lediglich dazu, zu zeigen, daß ein Frameset Seiteninformation enthalten kann, die keinerlei variabel Daten oder aktive Inhalten enthalten. Die zweite geladene Seite 48 ('showl.htm') erzeugt die aktuelle Anzeige für den Benutzer. Für die Zwecke dieses Beispiels ist der Eingabemechanismus der Benutzerinteraktion 54 die Nachricht bzw. Eingabeaufforderung "Please Enter Text" .Unterhalb der Eingabeaufforderung ist ein Eingabefeld, in das der Benutzer Text eingeben kann, den er einzugeben wünscht. Natürlich ist dies nur ein Beispiel . Es gibt viele verschiedene Arten der Benutzerinteraktion, die in der derzeitigen Web-Technologie verfügbar sind. Diese umfassen 'dropdown' Listen, Ankreuzkästchen ('check box'), Alternativkästchen ('radio button') und Mengentextfelder.
Die Ereignissteuerung 56 der Anzeigeseite 50 wird im Beispiel durch den OnChange' Parameter des Eingabefeldes ausgelöst, der eine Überwachung des Eingabefeldes bewirkt. Verläßt der Benutzer ein Feld, in das er zuvor Eingaben be- wirkt hat, wird hierdurch ein Ereignis innerhalb von JavaScript 40 ausgelöst. Im vorliegenden Fall besteht es aus der Nachricht, daß die Funktion 'putTextO ' der Steuerseite 26 aufzurufen ist.
Durch die den Aufruf von 'putTextO' bewirkende Nachricht an JavaScript 40 werden die Anweisungen der Funktion 'putTextO ' ausgeführt. Im Beispiel wird zunächst die Benutzer- Eingabe in dem globalen Speicher 60 in der Variablen 'the- Text ' abgelegt. Daraufhin vollführt das Skript ein Wechsel der Anzeigeseite, indem die durch 'show2.htm' bezeichnete Seite die in dem Frameset 44 enthaltene Seite 'showl.htm'
50 ersetzt. Der ersetzende Inhalt kann denselben Interaktionsmechanismus wie zuvor oder einen anderen benutzen.
In den Figuren 1 bis 3 sind in der allfällig bekannten Sprache HTML formulierte Codes dargestellt . Die den Zeilen vorgestellten Nummern dienen lediglich der besseren Bezugnahme und sind nicht Teil der codierten Anweisungen.
In Fig. 1 ist der Code für die steuernde Seite dargestellt. Die Zeilen 1 und 17 gehören zu dem in HTML vorgeschriebenen Rahmen. In Zeile 2 bis 12 sind Javascript-Befehle aufge- führt, die insbesondere drei Funktionen definieren, die weiter unten im Zusammenhang ihrer Benutzung genauer beschrieben werden.
In den Zeilen 13 bis 16 wird der Inhalt der Seite als Rahmenmenge ( ' frameset ' ) definiert, hier mit horizontaler Unterteilung in zwei Rahmen, deren erster 10 Pixel hoch ist und deren zweiter den Rest ausfüllt. Die Definitionen der beiden Rahmen sind unter 'dummy.htm' bzw. 'showl.htm' zu finden und in Fig. 4 bzw. Fig. 2 gezeigt. Sofern der Browser es zuläßt, wird bevorzugt nur ein Rahmen innerhalb der Rahmenmenge verwendet, so daß der Rahmen 'dummy.htm', der effektiv leer ist und keinerlei variable Daten enthält, entbehrlich ist.
In Fig. 2 ist der HTML-Text 'showl.htm' gezeigt, der in den Rahmen geladen wird, in dem die Interaktion mit dem Benut- zer stattfindet. Dieser besteht in diesem einfachen Beispiel nur aus dem Führungstext "Please Enter Text" in der 2. Zeile und und einem Eingabefeld in Zeile 4, für das eine JAVASCRIPT-Ereignisbehandlung über den OnChange ' -Parameter in Zeile 5 definiert ist. Dieses bestimmt, daß die in Zeile 4 von Fig. 1 definierte Funktion 'putText' mit dem Inhalt
des Eingabefeldes, ' this .value ' , aufgerufen werde, wenn der Feldinhalt verändert ist . Je nach Browser erfolgt diese beim Verlassen des Feldes durch die TAB-Taste oder die ENTER-Taste, ggf. abhängig vom weiteren Inhalt der Seite.
Diese Funktion 'putText' legt zunächst in Zeile 5 von Fig. 1 den als Parameter 'x' übergebenen Text in der globalen Variabelen 'theText' ab. Nach einer Abfrage in Zeile 6, ob der Text nicht leer ist, wird sodann gemäß der Erfindung die in dem Rahmen angezeigte Maske, die bislang durch 'showl.htm' definiert war, in Zeile 7 durch 'show2.htm' ersetzt. Damit wird also erreicht, daß in der durch 'showl.htm' definierten Seite, die die Benutzeroberfläche darstellt, keine Ablaufsteuerung vorhanden ist, sondern die Ablaufsteuerung durch eine Funktion bewirkt wird, die in einer anderen Seite, hier der Seite mit der Rahmenmenge ( 'frameset ' ) , enthalten ist, welche wiederum keinerlei variable und vom Benutzer sichtbare Ausgaben erzeugt . Der Funktionskδrper der Funktion 'putText', der hier der Übersichtlichkeit halber auf seine Essenz reduziert wurde, ent- hält bei einer realistischen Anwendung eine komplexe, die Möglichkeiten einer Programmiersprache wie JAVASCRIPT ausschöpfende, Ablaufsteuerung.
Mit Ausführung der Zeile 7 von Fig. 1 wird die in Fig. 3 dargestellte HTML-Text in den Rahmen geladen, in dem bis- lang 'showl.htm' aktiv war. Diese Maske besteht aus einem Leittext "Your Input : " in Zeile 4, einem zur Ausgabe benutzten Feld "was" in Zeile 5 und einem Betätigungsknopf "Again" in Zeile 6. Durch die Angabe OnLoad' in Zeile 2 wird die Funktion 'getText', wiederum aus der übergeordne- ten Rahmenmenge nach Fig. 1, dort Zeile 8-9, aufgerufen und das Ergebnis in das Ausgabefeld "was" von Zeile 5 Fig. 3
abgelegt. Nach dem Laden dieser HTML-Seite erscheint also der vormals eingegebene Text in dem Eingabefeld.
Durch Betätigen des Knopfes 'Again' wird die Funktion 'again' aus der Rahmenmenge nach Fig.l Zeile 10-11 aufgeru- fen, welche wiederum die erste Seite 'showl.htm' anstelle der angezeigten lädt. Auch hier wird bei einer realistischen Anwendung die Steuerung abhängig von einer komplexen Programmlogik erfolgen.
Damit ist erreicht, daß die Ablaufsteuerung, die hier mini- malistisch nur den Wechsel zweier Masken nach 'showl.htm' und 'show2.htm' realisiert, ausschließlich in dem HTML-Text nach Fig. 1 niedergelegt ist.
Anstelle der Verwendung von Frames, wie bisher dargestellt, kann auch ein neues Fenster geöffnet werden, z.B. durch den Script-Befehl ' openWindow' . Bei dem Browser 'Internet Explorer' ist dabei ein Parameter 'fullscreen' zulässig, der bewirkt, daß das neue Fenster den Bildschirm voll ausfüllt und damit den die Steuerung enthaltenden Bildschirm verdeckt und damit für den Benutzer nicht mehr erkennbar ist.
Besonders nützlich ist die Anwendung der Erfindung, wenn lokale Peripherie wie Magnetkartenleser, Maus oder Tastatur, letztere auch in Sonderausführugen, zu berücksichtigen sind. In diesem Fall erfolgt die Behandlung ausschließlich in der die Ablaufsteuerung enthaltenen Seite.
Gerade wenn Peripherieereignisse wie Tastendrücke oder die Aktivierung eines Magnetkartenlesers durch Einführen einer Karte berücksichtigt werden müssen, kann die Ablaufsteuerung die Anzeigen verändern. Dies ist durch das 'document object model ' ('DOM') möglich, das bereits in den dem Bei-
spiel verwendet wurde. Der in den Zeilen 7 und 11 bewirkte Wechsel der Seite durch Verändern der Eigenschaft 'locati- on' des Objekts 'show' als Unterobjekt von ' top ' ist eine Fähigkeit des DOM. Genauso kann die Ablaufsteuerung durch eine Zuweisung an 'document .show.forml.was .value' den Wert des Feldes in Zeile 5 von Fig. 3 verändern. Hierbei ist allerdings zu berücksichtigen, daß dies erst möglich ist, wenn 'show2.htm' vollständig geladen ist, weshalb im vorliegenden Beispiel die Lösung in Zeile 2 der Übersichtlich- keit halber bevorzugt wurde. Es ist aber klar, daß es auch möglich ist, vollständig auf aktive Inhalte auf der die Benuteroberfläche darstellenden Seite zu verzichten.
Die Verwendung von Feldnamen entspricht einer herkömmlichen Schnittstelle. Bevorzugt werden jedoch in den die Benutzer- schnittsteile realisierenden Seiten Funktionen definiert, die die Felder verändern und damit die Feldnamen verbergen. Dies entspricht eher einer objektorientierten Schnittstelle. In beiden Fällen wird die Ablaufsteuerung vor einem Aufruf der Funktionen bzw. Lesen oder Schreiben von Feldern durch den 'typeof Operator sicherstellen, daß das anzusprechende Objekt auch vorhanden ist. Unterstützt wird diese Maßnahme, wenn die Seite durch das OnLoad' -Attribut von '<body>' bei der Ablaufsteuerung signalisiert, daß und welche Schnittstellen aktiviert sind und gegebenenfalls Ver- weise auf die Schnittstellenfunktionen oder Datenfelder mitliefert . Diese Technik einer Registrierung von Funktionen und Datenfeldern ist allgemein auch unter der Bezeichnung 'callback' bekannt und im Rahmen der Erfindung vorteilhaft anwendbar.