Schnellere Entwicklung für Web-Anwendungen

Feature | 7. Januar 2003 von admin 0

Business Server Pages (BSP) bieten einen einfachen, direkten Ansatz zur Präsentation klassischer SAP-Inhalte im Web Browser, etwa von SAP-Tabellen oder von Ergebnissen des Aufrufs von Funktionsbausteinen. Darüber hinaus ist die BSP-Laufzeit eng in die traditionelle ABAP-Laufzeitplattform integriert. Viele bekannte Workbench-Tools wie beispielsweise der Object Navigator, der Editor und der Debugger, lassen sich deshalb auch für die Web-Entwicklung nutzen. Mit wenigen HTML-Kenntnissen können ABAP-Entwickler in einem eintägigen Workshop genug lernen, um Web-Anwendungen neu zu entwickeln.

Zwischenzeitlich hat sich die BSP-Technologie weiterentwickelt: Unlängst hat SAP einen vollständig J2EE-fähigen Web Application Server (Web AS) bereitgestellt, der sowohl Java- als auch ABAP-Technology-Stacks unterstützt. Für die nächste Version des Web AS hat SAP eine neue Strategie für die Benutzeroberfläche angekündigt, das Web Dynpro. Web Dynpro bietet in Web AS 6.30 eine modellgesteuerte, plattformunabhängige Web-Oberfläche zum Java- und ABAP-Stack.

Was bedeutet nun die Einführung von Web Dynpro für den ABAP-Entwickler? Zunächst sollten ABAP-Entwickler ihre BSP-Kenntnisse auf dem aktuellen Stand halten. Die BSP-Laufzeit ist eine der Zielplattformen für das Web Dynpro. Außerdem ist es bei der Entwicklung von Web-Anwendungen und -Oberflächen jetzt möglich, die Richtlinien hinter dem Web Dynpro einzubeziehen. Programmiertechniken, die sowohl vom klassischen BSP-Programmiermodell abstrahieren, als auch die Wiederverwendbarkeit und Abstraktion des Designparadigmas die Web-Dynpros bieten, werden künftig sehr gefragt sein.
Das aktuelle Release des SAP Web AS (6.20) bringt zwei wichtige Erweiterungen in das BSP-Modell ein. Dabei handelt es sich zum einen

  • um BSP-Extensions, also um neue SAP-Tag-Bibliotheken, die allgemeine Aufgaben bei der Oberflächenprogrammierung unterstützen, um kompakteren und effizienteren Code zu erhalten,
  • zum anderen um Unterstützung für das Pattern des Model View Controller (MVC) direkt in der ABAP Workbench. MVC ist ein Entwicklungsansatz, der dem Code eine Abstraktionsebene hinzufügt, um die Wiederverwendbarkeit und Wartungsfreundlichkeit zu erhöhen.

Diese erweiterten Programmiertechniken unterstützen Entwickler bei der Erstellung von Oberflächen. Sie orientieren sich am Web-Dynpro-Modell, beschleunigen die Entwicklungsaktivitäten und leisten dem Entwickler bei aktuellen und zukünftigen Web-Anwendungen und -Oberflächen gute Dienste.

Das Standard-BSP-Modell

Im BSP-Programmiermodell bestehen Web-Anwendungen in der Regel aus dynamischen HTML-Seiten. Jede dynamische HTML-Seite enthält statischen HTML-Code und einen in ABAP geschriebenen Scripting-Teil. Der ABAP-Code steuert, wie dynamische Inhalte – also interne Tabellen, die aus Funktionsbausteinaufrufen resultieren – in die Seite eingemischt werden. Wird die dynamische Seite im Browser angefordert, führt die ABAP-Laufzeit den Script-Teil aus und baut die HTML-Seite auf, die dann an den Browser gesendet wird.
Bei einer einzelnen Seite hat das Standard-BSP-Modell keine technischen Einschränkungen – es kombiniert einfach Standard-HTML- und ABAP-Programmierung. Bei zunehmender Komplexität von Anwendungen treten jedoch einige Nachteile auf.

Trennung verschiedener Bereiche

BSP-Seiten ermöglichen es, ABAP-Code an beliebiger Stelle in den statischen HTML-Code einzufügen. Anwendungscode, betriebswirtschaftliche Logik und Präsentationsdaten sind deshalb nicht klar getrennt. Diese Vermischung ist fehleranfällig und erschwert das Debugging. Wird ein ABAP-Feld in der dynamischen HTML-Seite ausgegeben, steht zudem keine Standardmöglichkeit für Datentypkonvertierungen zur Verfügung, beispielsweise für Datums-, Zeit- oder Währungsbehandlungen. Das ist jedoch in komplexen Web-Anwendungen ein Manko.
BSP-Seiten bieten zudem nur eingeschränkte Wiederverwendungsmöglichkeiten über Seitenfragmente. Außerdem unterstützen sie zwar Cascading Style Sheets (CSS). Es existiert jedoch bei BSP-Applikationen keine Möglichkeit, über mehrere Seiten von komplexen Anwendungen hinweg ein konsistentes Erscheinungsbild zu erzwingen. Eine weitere Schwäche ist die Browserunabhängigkeit. Jeder, der eine komplexere Web-Anwendung entwickelt hat, stößt bei einfachen BSP-Seiten auf Probleme mit der Portabilität.

Das BSP-Programmiermodell ist ein idealer Ansatz, wenn das Design der Web-Seite von HTML-Experten mit externen Web-Design-Tools entwickelt werden soll. Die primäre Aufgabe des ABAP-Entwicklers besteht dann darin, dieses Design mit effizienter betriebswirtschaftlicher Logik zu verbinden. BSP-Extensions und der MVC-Ansatz unterstützen ihn dabei, die benötigten Web-Oberflächen schneller und effizienter zu erstellen. Die Neuerungen ermöglichen eine größere Flexibilität und Wiederverwendbarkeit und reduzieren den Entwicklungsaufwand beträchtlich.

Kürzerer Code, schnellere Entwicklung und größere Flexibilität

Einer der offensichtlichsten Vorteile von BSP-Extensions besteht darin, dass der Umfang des Codes drastisch verringert wird. Um dieselbe interne Tabelle in einer BSP-Seite anzuzeigen, kann die BSP-Extension “htmlb” in die Seite eingebracht werden, wodurch die Anzahl der Codezeilen halbiert wird.
Eine BSP-Extension ist eigentlich eine Zusammenstellung vordefinierter Tags (wie eine Tag-Bibliothek in JSP), die gemeinsame Elemente etwa Tabellen kapselt. Beispielsweise führt der Tag <tableView>, Bestandteil der BSP-Extension htmlb (steht für “HTML Business”), einige Aufgaben automatisch durch: Er rendert die in einer internen ABAP-Tabelle enthaltenen Daten unter Beibehaltung der richtigen Datentypformate und bietet automatische Unterstützung beim Blättern, die im einfachen BSP-Beispiel nicht implementiert ist. Die Syntax besteht aus reiner XML mit Referenz auf die Datenquelle. Damit ist das Layout von der betriebswirtschaftlichen Logik klar getrennt. Das Layout wird in deklarativer, designorientierter Form dargestellt. Außerdem sind BSP-Extensions keine integrierten Komponenten der zugrunde liegenden BSP-Laufzeit. Sie lassen sich – wie der Name schon besagt – ergänzend zu einem generischen Framework entwickeln.

Tag-Browser und BSP-Editor

Aus dem Tag-Browser heraus lässt sich die BSP-Extension htmlb anzeigen. Die Extension htmlb besteht aus Tags wie “dateNavigator”, die allgemeine Benutzeroberflächen kapseln. Diese vordefinierten Tags decken Grundelemente der Oberfläche (Drucktasten, Bearbeitungsfelder, Auswahlknöpfe und Ankreuzfelder) und komplexere Elemente ab (Table Controls und Struktur-Views). Einige “Layout”-Tags unterstützen die Strukturierung von Seiten das heißt das Grid-Layout. Zur Vereinfachung der Entwicklung von BSP-Seiten können Tag-Definitionen in den BSP-Editor gezogen werden.

Der Tag “dateNavigator” ermöglicht es Web-Benutzern, einen Kalender anzuzeigen, um beispielsweise ein Flugdatum auszuwählen. Jeder Tag hat eigene Attribute. In diesem Fall definiert der Anwender durch Attribute wie “onDayClick” beim Anklicken eines Tags eine Aktion. Manche Tags besitzen zudem innere Tags. Das heißt ein Tag wie “listBox”, eine Sammlung verschiedener Listenfeldelemente, kann einen oder mehrere “listBoxItem”-Tags enthalten.
Die htmlb-Bibliothek ist als eine Menge von Oberflächenelementen definiert, mit denen jeweils bestimmte Ereignisse verknüpft sind. Alle Ereignisse werden im Ereignis “OnInputProcessing” behandelt, das mit der BSP-Seite verknüpft ist. Mit Doppelklick auf den jeweiligen Tag lässt sich detaillierte Dokumentation zum Tag anfordern. Außerdem ist es möglich, verschiedene BSP-Extensions zu kombinieren, indem das Präfix geändert wird.

Das MVC-Design-Paradigma (MVC = Model View Controller)

Die Philosophie der Entwicklung flexibler Web-Oberflächen ist zwischenzeitlich Gegenstand zahlreicher Bücher. Dabei wurde der Model View Controller (MVC) ausführlich behandelt. MVC ist keine Technologie, sondern lediglich ein Design-Ansatz, der die Oberfläche einer Anwendung in drei verschiedene Teile gliedert:

  • Das Model kapselt die eigentlichen betriebswirtschaftlichen Daten und die betriebswirtschaftliche Funktionalität. Es dient als Datenquelle für jegliche Art von Visualisierung.
  • Der View visualisiert die Anwendungsdaten über eine grafische Darstellung. Dieselben Anwendungsdaten können auf verschiedene Weise angezeigt werden (beispielsweise lässt sich eine Tabelle in Gitter- oder Diagrammansicht darstellen). Werden die Anwendungsdaten geändert, müssen in der Regel alle abhängigen Views aktualisiert werden. Folglich ist das Model der einzige Punkt, an dem die Anwendungsdaten aktualisiert werden, bevor sie an die verschiedenen Views weitergegeben werden.
  • Der Controller verwaltet Interaktionen zwischen dem Endbenutzer einerseits und dem Model und dem View andererseits. Der Controller ist zuständig für die Behandlung von Benutzerereignissen, die Aktualisierung der Anwendungsdaten und die Bearbeitung von Navigationsanforderungen.

Das MVC-Design-Pattern verbessert die Trennung einzelner Bereiche bei der Arbeit mit komplexen Benutzeroberflächen und erhöht die Wiederverwendbarkeit und Wartbarkeit in einer typischen Anwendung. Wird etwa ein weiterer View hinzugefügt, muss das Modell in der Regel nicht geändert werden.

MVC in Business Server Pages

Neue Funktionen im Web AS 6.20 liefern die Technologie, welche die Anwendung dieser Grundsätze auf BSP-Anwendungen unterstützt. In Business Server Pages sollte das Model immer durch die zugehörige Applikationsklasse dargestellt werden, die alle betriebswirtschaftlichen Daten und die gesamte betriebswirtschaftliche Logik kapselt.

Controller Cache im Class Builder

Um den Controller und den View-Teil von zflightdemo voneinander zu trennen, werden herkömmliche BSP-Seiten (als Container für Event-Handler und HTML-Layout) in zwei Teile aufgeteilt:

  • Die gesamte Ereignis- und Navigationslogik einer BSP-Applikation ist in einem Controller vorhanden. Der Controller besitzt eine zugehörige Controller-Klasse. Um Daten anzuzeigen, müssen Methoden der Controller-Klasse überschrieben werden.
  • Die Views selbst werden durch BSP-Seiten dargestellt, mit denen keine Ereignislogik verknüpft ist, wie im View-Code (flights.htm). Die View-Seiten bestehen einfach aus HTML-Layoutspezifikationen, wie in diesem Fall vorzugsweise mit vordefinierten Tags aus der BSP-Extension htmlb.

Einfache Implementierung mit Workbench-Tools

Mit den Workbench-Tools einer BSP-Applikation ist die Implementierung einfach, und jede Schicht ist eindeutig gekennzeichnet:

  1. Erstellung einer BSP-Applikation (z.B. zflightdemo).
  2. Erstellung eines untergeordneten View, der das Layout für diese BSP-Applikation enthält (z.B. flights.htm).
  3. Erstellung eines untergeordneten Controllers für diese BSP-Applikation (z.B. flights.do).
  4. Erstellung einer zugehörigen Controller-Klasse (z.B. DO_REQUEST).
  5. Überschreiben der Methode DO_REQUEST zur Initialisierung der anzuzeigenden Daten und zum Aufruf des entsprechenden Views (siehe Abbildung 3).

Der MVC-Ansatz in BSP-Seiten unterstützt auch geschachtelte Views. Ruft ein Controller einen View auf, könnte diesem View wiederum ein Controller zugeordnet sein, der einen anderen View aufruft. Die Web-Applikation besteht dann aus mehreren Bausteinen, deren HTML-Layout im Browser als Ganzes dargestellt wird.

Web-Oberflächen schneller und flexibler entwickeln und gestalten

Durch BSP-Erweiterungen und die Unterstützung des MVC-Design-Paradigmas sowie Views und Controller-Klassen, die vom Workbench-Bild aus leicht angezeigt und verwaltet werden können, lassen sich Web-Oberflächen schneller entwickeln, einfacher warten und flexibler individuell anpassen. Die BSP-Plattform bietet eine robuste Umgebung, die den Anforderungen der kommenden Web-Dynpro-Technologie gerecht wird. BSP-Seiten lassen sich bei der Entwicklung durch BSP-Extensions erweitern und zur Optimierung mit MVC-Struktur kombinieren. Diese erweiterten Techniken ermöglichen eine Planung, die auf einen störungsfreien Betrieb von Web-Anwendungen und -Oberflächen ausgerichtet ist.
Weitere Informationen zu BSP-Applikationen sowie BSP-Extensions:
http://help.sap.com
Weitere Informationen zur bevorstehenden Freigabe von Web Application Server 6.30 und Web Dynpro
www.sap.com/technology

Leave a Reply