Projektarbeit 2000 Anrufumleitung über WAP Dokumentation Urs Bosshard, Iwan Eberhart IT3b Inhaltsverzeichnis 1. ZUSAMMENFASSUNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2. PROJEKTBESCHREIBUNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Infrastruktur / Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3 Literatur / Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. PFLICHTENHEFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 4. PROBLEMANALYSE, LÖSUNGSKONZEPT . . . . . . . . . . . . . . . . . . . . . . . . . 7 4.1 Teilprobleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4.2 Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4.3 Zeitplan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 5. FUNKTIONSPRINZIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5.1 Aufruf von Index.wml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5.2 Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5.3 Lesen der Umleitziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 5.4 Generieren des Eintrags „Benutzerdefiniert“ . . . . . . . . . . . . . . . . . . . . 10 5.5 Ändern des Umleitziels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 5.6 Update der Datenbank auf das gewählte Umleitziel . . . . . . . . . . . . . . 12 5.7 Bestätigungsanzeige . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 5.8 Benutzerdefiniertes Umleitziel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 6. SERVER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 6.1 Apache Webserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 6.2 Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 6.2.1 HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 6.2.2 WAP, WML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 6.2.3 Java-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 7. DATENBANK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 7.1 Entitäts Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 7.1.1 Mitarbeiter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 7.1.2 Destination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 7.1.3 Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 7.2 ER-Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 7.3 Relationales Datenbankmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 7.4 Einbindung ins System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 8. PROGRAMMIERUNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 8.1 index.wml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Projektarbeit 2000 -I- Anrufumleitung 8.2 WAPServlet.class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 8.3 ChangeServlet.class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 8.4 DefServlet.class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 9. TESTPROTOKOLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 9.1 Anwählen der ZHWap-Seite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2 Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3 Statusanzeige . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.4 Auswahl der Umleitziele. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.5 Umleitung AUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.6 Umleitung „normal“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.7 Umleitung „Benutzerdefiniert“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.8 Kommentar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 23 23 23 23 24 24 24 10. KURZANLEITUNG FÜR DIE INBETRIEBNAHME DES SYSTEMS . . . . . . . . . 25 10.1 Installation Java Servlet Development Kit . . . . . . . . . . . . . . . . . . . . . 10.2 Installation Apache Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3 Installation Apache JServ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.4 Kopieren der Config-Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.5 Kopieren der HTML- und WML Dateien. . . . . . . . . . . . . . . . . . . . . . . 10.6 Kopieren der Bilder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.7 Kopieren der Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.8 Einbinden der Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.9 Test der Funktionalität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 25 25 27 27 27 27 27 28 11. BETRIEBSANLEITUNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 11.1 Seite anwählen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Umleitung ändern (Normal) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.4 Umleitung ändern (Benutzerdefiniert) . . . . . . . . . . . . . . . . . . . . . . . . 11.5 Umleitung ausschalten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 29 30 31 32 12. ENTWICKLUNGSTOOLS UND WAP-BROWSER . . . . . . . . . . . . . . . . . . . 35 12.1 Nokia WAP Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2 Kawa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.3 pic_2_wbmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.4 WinWAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5 YOURWAP.com. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.6 Nokia 7110. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - II - 35 36 37 37 38 39 Projektarbeit 2000 Inhaltsverzeichnis 13. GRUNDLAGEN ZU WML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 13.1 Links. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2 Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.3 Textauszeichnungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.4 Einbindung von Bildern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.5 Menü/Buttons. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.6 Formulare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.7 Eingabefelder (Input) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.8 Ereignisbehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.9 Auzeichnungsbefehle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 42 43 43 44 45 46 46 47 14. SCHLUSSWORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 14.1 Bewertung der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 14.2 Teamarbeit und Umfeld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 14.3 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 15. ANHANG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 15.1 Menüführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 15.1.1 „normale“ Umleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 15.1.2 benutzerdefinierte Umleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 15.2 CD-ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Projektarbeit 2000 - III - Anrufumleitung - IV - Projektarbeit 2000 Zusammenfassung 1. Zusammenfassung Der heutigen Gesellschaft rast die Zeit davon. Arbeitsabläufe werden und müssen immer schneller werden. Der Schwachpunkt im System ist der Mensch, der alles vorantreibt und sich so selber Probleme schafft. Er ist schon lange an seine Grenzen gestossen und nimmt sich neue Technologien zu Hilfe, welche ihm beim Bewältigen der täglichen Hürden helfen sollen. Probleme sind dazu da, gelöst zu werden! Es bleibt uns also nichts anderes übrig, als diese zu bewältigen, denn ansonsten wird die Geschwindigkeit der Entwicklungen gebremst und wir stehen eines Tages in einer Sackgasse. Vor einigen Jahren wurde der GSM Standard in vielen Ländern der Welt eingeführt. Von einem Tag auf den anderen war der Mensch „mobil“. Ein Handybesitzer kann beinahe auf der ganzen Erde erreicht werden. Die Mobiltelefonie hat sich in der Gesellschaft etabliert und es wird mobil telefoniert. Der GSM Standard erlaubt jedoch noch mehr, als einfach zu telefonieren: Von Anfang an war auch der SMS1 integriert. Dies ist ein Dienst, der es erlaubt, eine auf 160 Zeichen beschränkte Kurzmitteilung an einen anderen Mobilteilnehmer zu senden. Dies interessierte zu Beginn nur wenige Menschen, denn lange nicht alle Handies konnten mit diesen Short Messages umgehen. Dies sieht heute ganz anders aus. SMS ist zu einer Art „Droge“ geworden - vorallem bei den jungen Benutzern. Es werden tausende Mitteilungen pro Tag über die Mobiltelefonie verschickt. Seit dem 01. Februar 2000 bietet die Swisscom AG einen neuen Service auf dem Mobilnetz der Schweiz an. Dieses Feature nennt sich WAP2. Das Handy soll uns damit Zugang auf eine Art Internet zur Verfügung stellen. Somit können auch Dienste, wie sie aus dem Internet bekannt sind, von überall her abgerufen werden. Hierzu einige Beispiele: • Wetterberichte • aktuelle Börsenergebnisse • Programme von Kinos, Theater, Konzerten etc. Wie beim SMS vor einigen Jahren sind auch hier nicht alle Mobiltelefone fähig, auf das WAP zu zugreifen. Es wird in Zukunft aber immer mehr Telefone geben, welche dieses Feature integriert haben. Unsere Arbeit befasste sich mit einem Dienst, der mit Hilfe von WAP eine Anrufumleitung von einem Telefonapparat auf ein anderes beliebiges Gerät erlaubt. Der Service soll einer berufstätigen Person erlauben, ihren Büroanschluss auf verschiedene andere Telefonaparate umleiten zu lassen. Sicherlich konnte man das auch schon früher, nur ist es mit dieser „Anwendung“ jetzt möglich, von einem beliebigen Standort aus, an welchem der Benutzer natürlich Empfang auf ein GSM-Netz haben muss, den persönlichen Festanschluss umleiten zu lassen. Winterthur, Mai 2000 Urs Bosshard Iwan Eberhart 1. SMS = Short Message Service 2. WAP = Wireless Application Protocol Projektarbeit 2000 -1- Anrufumleitung -2- Projektarbeit 2000 Projektbeschreibung 2. Projektbeschreibung Auf einem Schul- oder Firmenareal sind viele Leute häufig unterwegs und deshalb selten in ihrem Büro anzutreffen. Sie sind dadurch nur schwer telefonisch erreichbar. Eine Abhilfe schaffen drahtlose Netze, die häufig auf dem DECT-Standard basieren. Weil aber die für eine 100%-ige Abdeckung eines Firmengeländes notwendige DECT-Infrastruktur relativ aufwändig ist, bieten sich heute als Alternative sogenannte Corporate Mobile Networks an, die auf der vorhandenen GSM-Infrastruktur eines Providers aufsetzen. Weil aber erstens der günstige GSM-Tarif nur in einem gewissen Umkreis um den Firmenstandort gilt und man zweitens nicht unbedingt den ganzen Tag mit dem Handy telefonieren möchte, sollte eine Anrufumleitungsfunktion auf ein Festnetztelefon oder ein Internet-Phone vorgesehen werden. Mit einem WAP-fähigen Handy kann die Anrufumleitung auf das gewünschte Endgerät über die Tastatur des Mobilgeräts vorgenommen werden. Das Display zeigt ein Auswahl von möglichen Endgeräten an, auf welche ankommende Anrufe umgeleitet werden können. Das Symbol des momentan aktiven Endgeräts soll speziell gekennzeichnet werden. Im Rahmen dieser Projektarbeit sollen mobilseitig die WAP-Seiten für die Benutzerführung und serverseitig die Verwaltung der gültigen Anrufsumleitungen und des aktuellen Systemzustands realisiert werden. Das Kernstück der Anwendung bildet dabei eine Datenbank, die sämtliche statischen und dynamischen Daten nichtflüchtig speichert. Die eigentliche Anrufumleitung über eine Hicom-Zentrale oder via einen H.323 Gateway / Gatekeeper ist nicht Gegenstand dieser Arbeit. 2.1 Aufgaben • Einarbeiten in die Server-Skript Thematik (Java Servlet oder Perl CGI-Skript) • Definition eines Pflichtenhefts auf der Basis von Kundenbedürfnissen • Erstellen einer SW-Spezifikation auf der Basis des Pflichtenhefts • Definition der Schnittstellen und Module • Entwurf der Datenbankstruktur (entity relationships) • Konzept der WML-basierten Bedienerführung • Implementation und Austesten der Anwendung • Dokumentation der Projektarbeit 2.2 Infrastruktur / Tools • Raum: E416 • Rechner: 2 PCs mit Dual-Boot: SuSE Linux 6.3 / Windows NT 4.0 • SW-Tools: Nokia Wap Toolkit, Apache Web Server, MS Access Datenbank • CGI-Skripts: ActivePerl oder Java Servlets 2.3 Literatur / Links ZHWAP Kommunikationsprojekt Blockdiagramm, (Abbildung: 2.3 - 1) Nokia Wap Toolkit 1.3 beta http://www.forum.nokia.com/developers/wap/wap.html Apache Web Server http://www.apache.org Projektarbeit 2000 -3- Anrufumleitung Abbildung: 2.3 - 1 -4- Projektarbeit 2000 Pflichtenheft 3. Pflichtenheft Mit Hilfe von WAP soll das Aktivieren und Deaktivieren von Anrufumleitungen in einer Firma ermöglicht werden. Die offizielle Büronummer wird dann automatisch auf die konfigurierte Rufnummer umgeleitet. Die Schaltung der Umleitung ist aber nicht Teil dieses Projektes. In dieser Arbeit soll nur die Benutzerführung und die Änderung in der Datenbank realisiert werden. In einer späteren, möglichen Arbeit könnten die Zustände aus der Datenbank gelesen und in der HiCom-Zentrale geschalten werden. Folgende Umleitungen sollen realisiert werden: • Handy • Home • VoIP (H.323) • VoiceMail (z.B. Combox) • Benutzerdefinierte Umleitung Bei der benutzerdefinierten Umleitung soll direkt über WAP eine freiwählbare Nummer konfiguriert werden. Die anderen „festen“ Umleitungen werden direkt in der Datenbank vorkonfiguriert. Die Benutzerdaten (Kürzel, Passwort, Name, Vorname, Umleitnummern) sind in einer einfachen Accessdatenbank gespeichert. Softwaretools: Der WAP/WEB-Server wird mit Hilfe des ApacheServer unter Windows NT betrieben. Mit Hilfe von Servlets wird der Zugriff über JDBC auf die Accessdatenbank realisiert. Erweiterungsmöglichkeiten: • gleicher Service auf dem Web (www) • gleicher Service über SMS • Accesstool für die Datenbankpflege • Webtool für Datenbankpflege • Anbindung an eine Telefonzentrale (HiCom von Siemens) • Realisierung des Gatekeepers für VoIP • Abfrage des Status via SMS Projektarbeit 2000 -5- Anrufumleitung -6- Projektarbeit 2000 Problemanalyse, Lösungskonzept 4. Problemanalyse, Lösungskonzept Anhand der Aufgabenstellung konnten wir uns schnell vorstellen, auf welches Ziel hin wir in diesem Projekt arbeiten. Wir konnten uns bereits zu diesem Zeitpunkt vorstellen, was wir abliefern werden. Wir mussten uns jedoch eine entscheidende Frage stellen: „Wie kommen wir zu diesem Ziel?“. Wir teilten das Projekt in Teilprobleme auf, die wir Schritt für Schritt angingen. 4.1 Teilprobleme • WEB/WAP-Server Welchen Server setzen wir ein? • Java-Servlet / Pearl Wie werden die WML-Seiten dynamisch? • WML Wie werden die WAP-Seiten programmiert? • Datenbank (Access, SQL) Wie realisieren wir unsere Datenbank? Wie greifen wir darauf zu? • FrameMaker / Word Mit welcher Software schreiben wir unsere Dokumentation? 4.2 Lösungen • WEB/WAP-Server Wir entschieden uns für den Apache-Webserver. Er eignet sich für unser Projekt ideal. Zudem ist er der meist verwendete Web-Server auf dem Internet. Durch Anpassung der MIME-Types wird er auch WAP-fähig. • Java-Servlet / Pearl Java-Servlet und Pearl kamen in die engere Auswahl, um eine dynamische WMLSeite zu programmieren. Wir entschieden uns für Java-Servlets, da an der ZHW einiges Know-How darüber vorhanden und Pearl wenig bekannt ist. Zudem wollten wir einen Einblick in die Javaprogrammierung bekommen. Wir mussten uns zuerst mit dem Entwicklertool Kawa vertraut machen, danach eigneten wir uns den grundlegenden Syntax von Java an. Sicher wurden wir durch diese Arbeit nicht zu Java-Spezialisten, aber ein kleines Grundwissen besitzen wir jetzt dennoch. • WML Da wir uns schon zuvor für WAP und WML interessiert haben, konnten wir unsere Erfahrungen ins Projekt einfliessen lassen. Wir wussten bereits was mit WML möglich ist und hatten das Grundlagenwissen für eine WML-Seite. Natürlich kamen bei diesem Projekt einige neue, interessante Funktionen hinzu, mit denen wir unser Wissen erweitern konnten. Das wichtigste Hilfsmittel war die „WML Reference Version 1.1“. • Datenbank (Access, SQL) Wir entschieden uns für eine einfache Access-Datenbank. Wir wollten nicht viel Zeit mit einem uns unbekannten System verlieren. Access eignet sich für kleine Datenbanken hervorragend und ist im Microsoft Office Paket integriert. Mit unserem Grundwissen aus dem Fach „Datenbanken“ konnten wir innert kürzester Zeit unsere Datenbank aufbauen. Auch der Zugriff mit SQL über ODBC erschien uns als professionelle und sauber Variante. Zudem ist der Zugriff über ein Servlet relativ einfach zu realisieren. Projektarbeit 2000 -7- Anrufumleitung • Adobe FrameMaker / Word Bis heute schrieben wir unsere Dokumentaionen ausschliesslich mit Word. Im Verlaufe unserer Projektarbeit mussten mir aber immer wieder feststellen, dass sich dieses Programm für grössere Dokumentationen mit Bildern und Querverweisen nicht besonders gut eignet. Wir suchten nach einer alternativen Lösung und die Assistenten empfohlen uns Adobe FrameMaker. Wir griffen diese Variante auf und können abschliessend sagen, dass es eine gute Wahl war. Wir kämpften zwar mit einigen Problemen, doch wir waren in der Lage, genügend Zeit zu investieren, um sie zu lösen. Mit diesem Wissen über FrameMaker haben wir uns sicher eine gute Grundlage für die Dokumentation der Diplomarbeit angeeignet. 4.3 Zeitplan Um die Arbeit gut einteilen zu können, haben wir uns einen Zeitplan zusammengestellt, in dem wir einige wichtige Termine aufgeführt haben. Wir konnten uns während diesen acht Wochen sehr gut an diesem Plan orientieren und so unsere „Meilensteine“ erreichen. Tätigkeit Wo 11 Wo 12 Wo 13 Wo 14 Wo 15 Wo 16 Wo 17 Wo 18 Wo 19 Wo 20 Installation A rbeitsplatz A nalyse Pf lichtenhef t Tools testen A pache Server / Jserv Lernen Java Lernen WML Lernen Framemaker Datenbank Design WML Dokumentation Ferien -8- Projektarbeit 2000 Funktionsprinzip 5. Funktionsprinzip 5.1 Aufruf von Index.wml Der WAP-Browser sendet einen Request an die Adresse des WAP-Servers. Dieser schickt als Antwort das Index.wml zurück. (Abbildung: 5.1 - 1) Index.wml WAPServlet WAP-Adresse DB ChangeServlet index.wml DefServlet WAP-Server Abbildung: 5.1 - 1 5.2 Login Der Benutzer füllt das Loginformular aus und sendet sein Loginname und sein Passwort an das WAPServlet. Er bekommt als Anwort eine Anzeige mit seinem Name, Vornamen und dem aktuellen Umleitstatus. (Abbildung: 5.2 - 1) Index.wml WAPServlet Login, Passwort Login, Passwort DB ChangeServlet Name, Vorname,Status Name, Vorname,Status DefServlet WAP-Server Abbildung: 5.2 - 1 Projektarbeit 2000 -9- Anrufumleitung 5.3 Lesen der Umleitziele Danach liest das WAPServlet selbständig die vorhandenen Umleitziele, die für diesen Benutzer in der Datenbank eingetragen sind, und schreibt sie in einen Array. (Abbildung: 5.3 - 1) Index.wml WAPServlet Login DB ChangeServlet vorhandene Umleitziele DefServlet WAP-Server Abbildung: 5.3 - 1 5.4 Generieren des Eintrags „Benutzerdefiniert“ In einem weiteren Schritt überprüft das WAPServlet, ob für den angemeldeten Benutzer das Umleitziel „Benutzerdefiniert“ in der Datenbank eingetragen ist. Meldet sich der Benutzer das erste Mal an, generiert das WAPServlet den Eintrag automatisch (Abbildung: 5.4 - 1). Wird der Eintrag neu generiert, liest das WAPServlet die vorhandenen Umleitziele erneut aus der Datenbank. (Abbildung: 5.3 - 1) Index.wml WAPServlet ChangeServlet generiert Eintrag „Benutzerdifiniert“ DB DefServlet WAP-Server Abbildung: 5.4 - 1 - 10 - Projektarbeit 2000 Funktionsprinzip 5.5 Ändern des Umleitziels Wählt nun der Benutzer den Link „aendern“, schickt das WAPServlet ein Auswahlmenü der möglichen Umleitungen zurück. (Abbildung: 5.5 - 1) Index.wml WAPServlet aendernt DB ChangeServlet Auswahlmenü der möglichen Umleitzeile DefServlet WAP-Server Abbildung: 5.5 - 1 Der Benutzer schickt anschliessend das gewählt Umleitziel an das ChangeServlet (Abbildung: 5.5 - 2). Ist das gewählt Umleitziel ungültig (bei der Auswahl des bereits aktuellen Umleitziels), bedient sich das ChangeServlet dem aktuellen Status aus der Datenbank (gestrichelte Pfeile). Index.wml WAPServlet Umleitziel Login DB ChangeServlet Auswahlmenü der möglichen Umleitzeile Status DefServlet WAP-Server Abbildung: 5.5 - 2 Projektarbeit 2000 - 11 - Anrufumleitung 5.6 Update der Datenbank auf das gewählte Umleitziel Das ChangeServlet ändert nun das vom Benutzer gewählte Umleitziel in der Datenbank. (Abbildung: 5.6 - 1) Index.wml WAPServlet Login, Umleitziel ChangeServlet DB DefServlet WAP-Server Abbildung: 5.6 - 1 5.7 Bestätigungsanzeige Das ChangeServlet bestätigt nun die gewählte Umleitung mit dem Umleitziel und der dazugehörigen Rufnummer (Abbildung: 5.7 - 1). Bei dem „Benutzerdefinierten“ Umleitziel führt das ChangeServlet die unter “5.8 Benutzerdefiniertes Umleitziel“ erklärte Aktion aus. Index.wml WAPServlet ChangeServlet Bestätigung mit Umleitziel und Rufnummer DB DefServlet WAP-Server Abbildung: 5.7 - 1 - 12 - Projektarbeit 2000 Funktionsprinzip 5.8 Benutzerdefiniertes Umleitziel Wählt der Benutzer das „Benutzerdefinierte“ Umleitziel, wird er aufgefordert, die Rufnummer einzutragen. (Abbildung: 5.8 - 1) Index.wml WAPServlet DB ChangeServlet Aufforderung zur Rufnummereingabe DefServlet WAP-Server Abbildung: 5.8 - 1 Der Benutzer schickt die eingegebene Rufnummer an das DefServlet. Dieses aktualisiert die Datenbank mit dem neuen Eintrag. (Abbildung: 5.8 - 2) Index.wml WAPServlet Login, Rufnummer Login, Rufnummer ChangeServlet DB DefServlet WAP-Server Abbildung: 5.8 - 2 Auch bei diesem Schritt wird zum Abschluss eine Bestätigung an den Benutzer gesendet. Hier erfolgt die Bestätigungsanzeige aber durch das DefServlet und nicht durch das ChangeServlet, was bei “5.7 Bestätigungsanzeige“ der Fall war. Projektarbeit 2000 - 13 - Anrufumleitung - 14 - Projektarbeit 2000 Server 6. Server 6.1 Apache Webserver Wir haben uns nach einigen Überlegungen und verschiedenen Diskussionen darauf geeinigt, den Webserver von Apache für die Realisierung unseres Projektes zu verwenden. Die überzeugendsten Vorteile waren die gute und relativ verständliche Dokumentation, die Kosten (nämlich gratis) und sicherlich auch die Tatsache, dass er der meistverbreiteste Server auf dem Internet ist. Wir haben die Version 1.3.12 verwendet. 6.2 Konfiguration 6.2.1 HTTP Die Konfiguration ist ziemlich einfach. Die Einstellungen stehen alle in einem File mit dem Namen „httpd.conf“, das im Verzeichnis „*\apache\conf“ zu finden ist. Für unseren Server haben wir folgende Anpassungen gemacht: ... # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # DocumentRoot "G:/ZHWAP" ... # This should be changed to whatever you set DocumentRoot to. # <Directory "G:/ZHWAP"> ... 6.2.2 WAP, WML Damit der Server auch WAP-Seiten darstellen kann, müssen die MIME-Types angepasst werden. Dieses File heisst „mime.types“. Es ist im selben Verzeichnis, wie das HTTP-Konfigurationsfile zu finden. Um den Server WAP-fähig zu machen, muss folgendes hinzugefügt werden: ... application/vnd.wap.wbxml application/vnd.wap.wmlc wmlc application/vnd.wap.wmlscriptc wmlsc ... text/vnd.wap.wml wml text/vnd.wap.wmlscript wsc text/vnd.wap.wmlscript wmls text/vnd.wap.wmlscript wmlsc ... 6.2.3 Java-Server Der Apache ist von Haus aus noch nicht Java-Servlet fähig und so muss der ApacheJServ installiert werden. Dies ist problemlos durchzuführen, denn die Installation nimmt alle benötigten Einstellungen automatisch vor. Wir haben die Version 1.1 verwendet. Projektarbeit 2000 - 15 - Anrufumleitung - 16 - Projektarbeit 2000 Datenbank 7. Datenbank Wir haben die Datenbank, welche über Servlets (ODCB, JDBC) angesprochen wird, mit dem Microsoft Access 97 SR-2 realisiert. Um die Datenbank zu administrieren, muss eine Access Version vorhanden sein, denn wir haben keine Administrationssoftware oder Tool dafür programmiert. 7.1 Entitäts Typen 7.1.1 Mitarbeiter Jeder Mitarbeiter, der die WAP-Anrufumleitungsanwendung benutzen will, muss zuerst eingetragen werden. Die Entität (Tabelle) Mitarbeiter umfasst folgende Attribute (Spalten): • Login ist unique und wird durch den DB-Administrator vergeben • Passwort wird vom DB-Administrator vergeben • Name Nachname des Benutzers • Vorname Vorname des Benutzers • Status Status der Umleitung, wird von der Entität Status zur Verfügung gestellt 7.1.2 Destination In dieser Entität sind die Umleitungsinformationen gespeichert. Der Administrator der Datenbank muss hier die verschiedenen Umleitungen eintragen, die ein Benutzer haben will oder haben darf. So kann vermieden werden, dass der WAP-Anwender Umleitungen auswählt, welche für ihn gar nicht möglich sind. Die Entität (Tabelle) Destination umfasst folgende Attribute (Spalten): • Key Schlüssel, welcher vom Access automatisch generiert wird • Nummer Nummer, auf welche die Umleitung erfolgen soll • UID Loginname des Users (es müssen bestehende Kürzel aus der Relation Mitarbeiter verwendet werden) • Ziel Ziel der Umleitung, wird von der Entität Status zur Verfügung gestellt 7.1.3 Status Im Status wird die Information gespeichert, welche Umleitungen im System überhaupt möglich sind. Die Entität (Tabelle) Status umfasst folgenes Attribut (Spalte): • Mode Arten, der möglichen Umleitungen Projektarbeit 2000 - 17 - Anrufumleitung 7.2 ER-Schema1 Passwort Nummer Key Name UID Login Destination Mitarbeiter Vorname 1 hat Umleitung n n n hat aktuellen hat aktuellen 1 1 Status Mode 7.3 Relationales Datenbankmodell Mitarbeiter Login Passwort Name Nummer UID Vorname Status Destination Key Ziel Status Mode 1. Entity-Relationship Model, nach Elmasri / Navathe - 18 - Projektarbeit 2000 Datenbank 7.4 Einbindung ins System Damit das Servlet auf die Access Datenbank zugreifen kann, muss sie unter den ODBC-Datenquellen im System eingebunden werden. (Abbildung: 7.4 - 1) Abbildung: 7.4 - 1 Projektarbeit 2000 - 19 - Anrufumleitung - 20 - Projektarbeit 2000 Programmierung 8. Programmierung Die Programmierung besteht aus einer WML-Einstiegsseite (index.wml) und drei Servlets (WAPServlet.class, ChangeServlet.class, DefServlet.class). Jedem Servlet werden mit „post“ die benötigten Parameter übergeben. 8.1 index.wml Das WML-File index.wml dient zum Einstieg in das System. Es zeigt zuerst das ZHWap-Logo und wechselt nach ca. 3 Sekunden zur Login-Seite. In zwei Inputfeldern können Loginname und Passwort eingegeben werden. Nach Betätigung des „Login“-Links werden die Werte der Inputfelder an das „WAPServlet“ gepostet. 8.2 WAPServlet.class Das WAPServlet überprüft die übergebenen Werte. Werden keine Werte übergeben, sendet das Servlet eine Fehlermeldung an den Benutzer und fordert ihn auf, sich erneut anzumelden. Werden gültige Daten empfangen, startet das Servlet anhand des Login und des Passwortes eine Datenbankabfrage über SQL. Sind die Loginangaben korrekt, wird dem Benutzer eine Statusseite mit seinem Namen und dem aktuellen Umleitziel geschickt. Sind die Loginangaben hingegen falsch, erhält der Benutzer eine Fehlermeldung und wird aufgefortert, sich erneut anzumelden. Bei der Anwahl des „aendern“-Links sendet das Servlet eine Liste der möglichen Umleitziele, die es anhand der Datenbankeinträge automatisch generiert. Nachdem der Benutzer ein Umleitziel ausgewählt hat und den Link „uebernehmen“ aktiviert, schickt das Servlet den Loginnamen und das gewählte Umleitziel mit post dem „ChangeServlet“. 8.3 ChangeServlet.class Das ChangeServlet überprüft die übergebenen Werte. Ist das Umleitziel nicht gültig (kann eintreten, wenn das Umleitziel nicht geändert wird), wird das aktuelle Umleitziel übernommen. Als nächstes wird das gewählte Umleitziel in die Datenbank geschrieben und die dazugehörige Rufnummer ausgelesen. Sofern der Benutzer nicht das Umleitziel „Benutzerdefiniert“ ausgewählt hat, wird ein Abschlussbildschirm mit der gewählten Umleitung und der dazugehörigen Rufnummer angezeigt. Wählt der Benutzer das Umleitziel „Benutzerdefiniert“, wird er aufgefordert, eine Zielrufnummer einzugeben. Danach postet das Servlet den Loginnamen und die benutzerdefinierte Rufnummer an das „DefServlet“. 8.4 DefServlet.class Das DefServlet überprüft die übergeben Werte. Ist die Rufnummer ungültig, wird eine Fehlermeldung angezeigt. Ist die Rufnummer gültig, wird die Datenbank mit dieser aktualisiert. Danach wird ein Abschlussbildschirm mit der gewählten Umleitrufnummer angezeigt. Projektarbeit 2000 - 21 - Anrufumleitung - 22 - Projektarbeit 2000 Testprotokoll 9. Testprotokoll Mit folgendem Testprotokoll wurde unsere Software auf mögliche Fehler getestet. Als Referenz benutzten wir das Nokia 7110 und den WinWAP-Browser. 9.1 Anwählen der ZHWap-Seite • ZHWap-Logo erscheint für ca. 3 Sekunden • Loginbildschirm erscheint Nokia 7110 WinWAP EF NEF EF NEF 9.2 Login Testuser-Account „Hans Muster“ • Es kann mit Login „hm“ und Passwort „test“ korrekt eingeloggt werden. Falscher Login • Bei der Eingabe eines falschen Loginnamen erscheint die Fehlermeldung „Falscher Login“. • Bei der Eingabe eines falschen Passworts erscheint die Fehlermeldung „Falscher Login“. • Bei leerem Formular erscheint „Falscher Login“. 9.3 Statusanzeige • Nach korrektem Login wird der Name, Vorname und der aktuelle Status angezeigt. • In der Seitenüberschrift wird „ZHWap: Kürzel“ angezeigt. Testbeispiel „ZHWap: hm“ • Mit „aendern“ erscheint die Seite mit der Auswahl der möglichen Umleitziele. 9.4 Auswahl der Umleitziele • Als Standardwert wird die aktuelle Umleitung im Auswahlmenü angezeigt. • Die möglichen (in der Datenbank definierten) Umleitziele können ausgewählt werden. • Ist in der Datenbank kein Umleitziel definiert (Benutzer muss aber registriert sein), wird nur „AUS“ und „Benutzerdefiniert“ angezeigt. • Wird kein neues Umleitziel gewählt, wird das aktuelle übernommen. 9.5 Umleitung AUS • Wird als Umleitziel „AUS“ gewählt, erscheint der Abschlussbildschirm „Umleitung ausgeschaltet. Sie koennen die Verbindung jetzt trennen! bye...“ Projektarbeit 2000 - 23 - Anrufumleitung 9.6 Umleitung „normal“ • Wird ein „normales“ Umleitziel gewählt (z.B. Home, Handy, usw.), so erscheint der Abschlussbildschirm mit dem gewählten Umleitziel und der dazugehörigen Rufnummer. Nokia 7110 WinWAP EF NEF EF NEF 9.7 Umleitung „Benutzerdefiniert“ • Wird das Umleitziel „Benutzerdefiniert“ gewählt, erscheint die Anzeige mit einem Eingabefeld für die benutzerdefinierte Rufnummer. • Wird die „Benutzerdefinierte“ Umleitung das erste Mal gewählt, so erscheint im Eingabefeld „KEINE NUMMER“. • Wird die „Benutzerdefinierte“ Umleitung erneut gewählt, erscheint im Eingabefeld die aktuelle Rufnummer der benutzerdefinierten Umleitung. • Im Eingabefeld für die Rufnummer können nur Zahlen eingegeben werden. • Wird keine Nummer eingetragen, erscheint die Fehlermeldung „KEINE NUMMER!“ • Wird die Nummer korrekt eingetragen, erscheint der Abschlussbildschirm mit der Rufnummer. 9.8 Kommentar Einige Punkte werden eventuell von andern WAP-Browsern, die sich nicht genau an die Spezifikationen von WAP 1.1 halten, nicht erfüllt: Zum Beispiel werden beim Nokia 7110 fette Textstellen nicht fett angezeigt, beim WinWAP-Browser ist es möglich, bei der Eingabe der benutzerdefinierten Rufnummer auch Buchstaben einzugeben, obwohl das Feld nur Zahlen akzeptieren sollte. Datum:____________________ - 24 - Visum:_______________________ Projektarbeit 2000 Kurzanleitung für die Inbetriebnahme des Systems 10. Kurzanleitung für die Inbetriebnahme des Systems Java 2 SDK, Standard Edition Version 1.2.2 muss bereits auf dem System installiert sein. Sie sollte sich im Verzeichnis c:\programme\jdk1.2.2 befinden. 10.1 Installation Java Servlet Development Kit • Das File jsdk20-win32.exe ausführen. • Das Java Servlet Development Kit ins Verzeichnis c:\programme\ installieren. 10.2 Installation Apache Server • Das File apache_1_3_12_win32.exe ausführen. • Den Apache Server standardmässig ins Verzeichnis c:\programme\ installieren. 10.3 Installation Apache JServ • Das File ApacheJServ-1_1.exe ausführen. • Mit „Java Virtual Machine“ ist das Programm java.exe gemeint, welches sich üblicherweise im Verzeichnis \jdk1.2.2\bin befindet. (Abbildung: 10.3 - 1) Abbildung: 10.3 - 1 Projektarbeit 2000 - 25 - Anrufumleitung • Als nächstes muss der Pfad des „Java Servlet Development Kit“ angegeben werden. (Abbildung: 10.3 - 2) Abbildung: 10.3 - 2 • Weiter muss angegeben werden, wo sich die Config-Files des Apache Server befinden. (Abbildung: 10.3 - 3) Abbildung: 10.3 - 3 • Nach dem verlangten Reboot des Systems kann der Apache-Server gestartet werden. Mit dem Link http://hostname.zhwin.ch/servlets/IsItWorking wird getestet, ob der Server nun servletfähig ist. - 26 - Projektarbeit 2000 Kurzanleitung für die Inbetriebnahme des Systems 10.4 Kopieren der Config-Files • In einem weiteren Schritt müssen die beiden Config-Files (httpd.conf und mime.types) ins Config-Verzeichnis des Apache-Servers kopiert werden. (C:\Programme\Apache Group\Apache\conf\). Die MIME-Type sind in diesen Files bereits angepasst. Jetzt sollte der Server auch WAP-fähig sein. 10.5 Kopieren der HTML- und WML Dateien • Die Dateien index.html und index.wml müssen ins DocumentRoot kopiert werden. Dieses ist im Config-File httpd.conf als G:\ZHWAP definiert. Bei einem anderen DocumentRoot Verzeichnis muss dieser Eintrag im httpd.conf geändert werden. 10.6 Kopieren der Bilder • Die Bilder (ZHWap.gif und ZHWap.wbmp) müssen ins Verzeichnis /pictures im DocumentRoot kopiert werden. 10.7 Kopieren der Servlets • Als nächstes müssen die kompilierten Servlets (WAPServlet.class, ChangeServlet.class und DefServlet.class) ins Servletverzeichnis kopiert werden (C:\Programme\Apache JServ 1.1\servlets). 10.8 Einbinden der Datenbank • Für den Zugriff auf die Access-Datenbank muss diese über ODBC ins System eingebunden werden. Dies geschieht in der Systemsteuerung unter ODBC-Datenquellen. Hier muss eine neue System-DSN angelegt werden. Für den „Data Soure Name“ muss zwingend zhwap gewählt werden. Unter Database gibt man das Verzeichnis an, in welchem sich das zhwap_database.mdb File befindet. (Abbildung: 10.8 - 1) Abbildung: 10.8 - 1 Projektarbeit 2000 - 27 - Anrufumleitung 10.9 Test der Funktionalität Sind alle Schritte richtig ausgeführt worden, kann mit einem Web-Browser die Seite index.html aufgerufen werden. Diese Seite dient ausschliesslich zum Test. Mit einem WAP-Browser wird über die Adresse http://hostname.zhwin.ch/index.wml ins System eingestiegen. - 28 - Projektarbeit 2000 Betriebsanleitung 11. Betriebsanleitung Die WAP-Seite kann auf jedem beliebigen WAP-Browser (Mobiltelefon, Handheld, usw.) dargestellt werden. 11.1 Seite anwählen Die Seite wird durch die entsprechende Adresse des WAPServers angewählt. (ZHWap: http://ksy119.zhwin.ch/index.wml) Folgender Begrüssungsbildschirm (Abbildung: 11.1 - 1) erscheint auf dem WAP-fähigen Browser. Abbildung: 11.1 - 1 11.2 Login Nach ca. 3 Sekunden erscheint automatisch das Login-Fenster (Abbildung: 11.2 - 1). Hier muss das Loginkürzel und das persönliche Passwort eingegeben werden. Danach werden die Angaben mit dem „Login“-Link an den Server übermittelt. (Beispiel: Login = hm, Passwort = test, für Hans Muster) Abbildung: 11.2 - 1 Wenn das Loginkürzel und das Passwort korrekt eingegeben worden sind, erscheint das Statusfenster (Abbildung: 11.2 2), welches den Benutzernamen und den aktuellen Umleitstatus anzeigt. Abbildung: 11.2 - 2 Projektarbeit 2000 TIP: Bei dieser Seite kann ein Bookmark gesetzt werden. Danach ist es möglich, ohne Loginprozedur auf das System zuzugreifen. - 29 - Anrufumleitung 11.3 Umleitung ändern (Normal) Durch Anwählen des „aendern“-Links gelangt man in das Untermenü, um die Anrufumleitung zu ändern oder um sie auszuschalten. (Abbildung: 11.3 - 1) Abbildung: 11.3 - 1 Wählt man nun das Feld mit der aktuellen Umleitung aus, erscheint ein Menü mit den möglichen Umleitungen. (Abbildung: 11.3 - 2) Abbildung: 11.3 - 2 ACHTUNG: Es werden nur die möglichen Umleitungen angezeigt. Es erscheinen nur die Umleitziele, welche in der Benutzerdatenbank durch den Datenbank-Administrator definiert wurden. Wurde eine Umleitung ausgewählt, muss sie nun mit „uebernehmen“ aktiviert werden. (Abbildung: 11.3 - 3) Abbildung: 11.3 - 3 Der Server bestätigt die Änderung mit einem AbschlussScreen (Abbildung: 11.3 - 4). Dieser zeigt die gewählte Umleitung mit der Nummer an. Nachdem diese Anzeige erscheint, kann die Verbindung beendet werden. Abbildung: 11.3 - 4 - 30 - Projektarbeit 2000 Betriebsanleitung 11.4 Umleitung ändern (Benutzerdefiniert) Durch Anwählen des „aendern“-Links gelangt man in das Untermenü, um die Anrufumleitung zu ändern oder auszuschalten. (Abbildung: 11.4 - 1) Abbildung: 11.4 - 1 Wählt man das Feld mit der aktuellen Umleitung aus, erscheint ein Menü mit den möglichen Umleitungen (Abbildung: 11.4 - 2). Hier wird nun die Umleitung „Benutzerdefiniert“ gewählt. Abbildung: 11.4 - 2 Wurde eine Umleitung „Benutzerdefiniert“ ausgewählt, muss sie mit „uebernehmen“ aktiviert werden. (Abbildung: 11.4 - 3) Abbildung: 11.4 - 3 Nun gelangt man in das Menü, in welchem die benutzerdefinierte Nummer definiert wird (Abbildung: 11.4 - 4). Hier muss eine Rufnummer eingetragen werden. Ist bereits eine Rufnummer eingetragen worden, kann sie geändert werden. Die eingegebene Rufnummer muss mit „uebernehmen“ aktiviert werden. Abbildung: 11.4 - 4 Projektarbeit 2000 - 31 - Anrufumleitung Der Server bestätigt die Änderung mit einem AbschlussScreen (Abbildung: 11.4 - 5). Dieser zeigt die gewählte Umleitungsnummer an. Nachdem diese Anzeige erscheint, kann die Verbindung beendet werden. Abbildung: 11.4 - 5 11.5 Umleitung ausschalten Nach dem Login erscheint der Status-Screen. (Abbildung: 11.5 - 1) Auch hier gelangt man mit dem „aendern“-Link in das Untermenü, um die Anrufumleitung zu ändern oder auszuschalten. (Abbildung: 11.5 - 2) Abbildung: 11.5 - 1 Wählt man das Feld mit der aktuellen Umleitung, erscheint ein Menü mit den möglichen Umleitungen. (Abbildung: 11.5 - 3) Abbildung: 11.5 - 2 Hier kann die Umleitung „AUS“ gewählt werden, um die Umleitung zu deaktivieren. Abbildung: 11.5 - 3 - 32 - Projektarbeit 2000 Betriebsanleitung Der Zustand „AUS“ muss mit „uebernehmen“ aktiviert werden. (Abbildung: 11.5 - 4) Abbildung: 11.5 - 4 Der Server bestätigt die Änderung mit einem AbschlussScreen (Abbildung: 11.5 - 5). Nachdem diese Anzeige erscheint, kann die Verbindung beendet werden. Abbildung: 11.5 - 5 Projektarbeit 2000 - 33 - Anrufumleitung - 34 - Projektarbeit 2000 Entwicklungstools und WAP-Browser 12. Entwicklungstools und WAP-Browser 12.1 Nokia WAP Toolkit Für unser Projekt benutzten wir die Version 1.3beta des Nokia WAP Toolkit. Im Hintergrund benötigt die Software JavaTM Run Time Envirment 1.2.2. Abbildung: 12.1 - 1 Nokia stellt ein konfortables Entwicklungstool für die WAP-Programmierung zu Verfügung. Im WML-Editor (Abbildung: 12.1 - 1) werden die Schlüsselwörter verschiedenfarbig dargestellt. Dies ermöglicht eine strukturierte und saubere Darstellung bei der Programmierung. Anschliessen besteht die Möglichkeit, den WML-Code zu compilieren und die Syntax-Fehler anzuzeigen. Wir benutzten dieses Hilfsmittel, um den von Hand programmierten WML-Code in den Servlets zu verifiziern. Zum Teil schlichen sich Syntax-Fehler ein, die beim Betrachten mit einem WAP-Browser nicht sichtbar Projektarbeit 2000 - 35 - Anrufumleitung wurden. Das Nokia WAP Toolkit bietet weiter die Möglichkeit, die programmierte WAP-Seite auf einem integrierten Simulator zu testen. Dieser stellt ein WAP-fähiges Mobiltelefon dar, welches alle in WAP 1.1 festgelegten Spezifikationen erfüllt. Wichtig für den Simulator sind folgende Codezeilen: <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/ wml_1.1.xml"> <!-- Source Generated by WML Deck Decoder --> Ohne diesen Header ist es nicht möglich, die WAPSeiten auf dem Simulator zu testen. Für einen konventionellen WAP-Browser sind diese Zeilen nicht notwendig, müssen aber auch nicht entfernt werden. Das Nokia Toolkit ist sehr benutzerfreundlich und läuft, obwohl es noch eine Betaversion ist, sehr stabil. Dieses Entwicklertool unterstützt auch die Programmierung vom WML-Script und beinhaltet einen einfachen WBMP-Editor. Diese Funktionen wurden aber von uns nicht genutzt. Abbildung: 12.1 - 2 12.2 Kawa Die Servlets programmierten und kompilierten wir mit Kawa, einem konventionellen JAVAEntwicklertool. Wir benutzten die Version 3.22 mit JDK 1.2.2. - 36 - Projektarbeit 2000 Entwicklungstools und WAP-Browser 12.3 pic_2_wbmp Um BMP-Bilder in WBMP-Bilder zu konvertieren, verwendeten wir pic_2_wbmp Version 1.0 (Abbildung: 12.3 - 1) von Ginco, ein komfortables und einfaches Konventierungsprogramm. Das von Nokia im Toolkit 1.3beta integrierte Tool genügte unseren Anforderungen nicht. Abbildung: 12.3 - 1 12.4 WinWAP Während der Entwicklung stellte sich heraus, dass sich der PC-basierende WAPBrowser WinWAP (Abbildung: 12.4 - 1) von Slob-Trot Software am besten eignete, um die programmierten Seiten einfach und schnell zu testen. Er ist sehr einfach zu bedienen und es ist möglich, den Source-Code der WMLSeite schnell und unkompliziert in einem Textfenster darzustellen. Wir verwendeten die registrierte Version 2.3 Light. Abbildung: 12.4 - 1 Projektarbeit 2000 - 37 - Anrufumleitung 12.5 YOURWAP.com Ein weiterer WAP-Browser, den wir einsetzten, war YOURWAP.com Version 1.16 (Abbildung: 12.5 - 1) von o3sis Information Technology. YOURWAP.com ist ein WEB/ WAP-basierender gratis Dienst. Das gelieferte Programm erlaubt es, auf WEB- und auf WAP-Seiten zuzugreifen. Wir nutzten dieses Tool hauptsächlich zur Überprüfung der Darstellung und für die Screen-Shots, die wir in die Bedienungsanleitung einfügten. Das Programm simuliert das Nokia 7110 ziemlich realistisch. Wir mussten jedoch bei der Darstellung kleine Abweichungen feststellen. Abbildung: 12.5 - 1 - 38 - Projektarbeit 2000 Entwicklungstools und WAP-Browser 12.6 Nokia 7110 Mit dem 7110 (Abbildung: 12.6 - 1) brachte Nokia das erste Mobiltelefon mit WAP 1.1 auf den Markt. Wir nutzten dieses Gerät, um unsere Seiten im Feldversuch zu testen. Unser Testgerät bedient sich der Firmware Version 4.77. Leider mussten wir feststellen, dass diese Firmware noch nicht stabil läuft. In der Testphase kam es manchmal sogar zu Totalabstürzen. Weiter entnahmen wir dem „Service Developer‘s Guide for the Nokia 7110“, dass folgende Tags, die zur Optimierung des Layouts der WML-Seite dienen, nicht unterstützt werden: FIELDSET, B, U, I, BIG, SMALL, EM, STRONG Abbildung: 12.6 - 1 Weiter besitzt der WAP-Browser im Nokia 7110 folgende Einschränkungen: • Links befinden sich immer auf einer eigenen Zeile. • Bilder sind immer auf einer eigenen Zeile. • Bilder sind immer zentriert. • Der Text ist immer linksbündig. • Zeilenumbruch erfolgt immer automatisch. • Inputfelder sind immer auf einer eigenen Zeile. • Tabellen werden folgendermassen dargestellt: Beispiel: 123 A B Img auf dem Nokia 7110: 1 2 3 A B Img Diese Einschränkung hat nur das Nokia 7110. Das Ericsson R320s kann diese Tags ohne Probleme verarbeiten. Auch die getesteten PC-basierenden WAP-Browser konnten diese Befehle darstellen. Schade, dass Nokia diese „Probleme“ des 7110 bis zum heutigen Tag noch nicht beseitigen konnte, was dem Telefon natürlich einen Minuspunkt einspielt. Es bleibt zu hoffen, dass Nokia eine Firmware mit einem neuen WAP-Browser realisiert, der alle Möglichkeiten der WML-Sprache ausnutzen kann. Projektarbeit 2000 - 39 - Anrufumleitung - 40 - Projektarbeit 2000 Grundlagen zu WML 13. Grundlagen zu WML Aufgrund des knappen Platzes auf Handy-Displays wird bei WML-Dokumenten die Seite (genannt "Deck") in mehrere kleinere Abschnitte unterteilt. Diese heissen "Card". Wegen der Übertragungsraten wird ein Deck komplett übertragen und im Speicher abgelegt. Die erste "Card" wird angezeigt. Ähnlich wie in HTML innerhalb einer Seite, kann zwischen diesen Cards gesprungen werden. Da sich diese bereits im Speicher befinden, ist es unnötig, eine neue Verbindung herzustellen. Beim Programmieren von WML-Seiten muss man sich folgendes vorstellen: Man nehme einen Stapel von Karteikarten (das Deck). Auf jeder Karte stehen die Informationen und man kann von Karte (Card) zu Karte springen. Wird ein anderer Stapel (eine andere WML-Seite) genommen, dauert der Sprung länger. Aus diesem Grund sollten die zusammenhängenden Seiten möglichst in einen Kartenstapel platziert werden. Bevor wir nun zur Struktur von WML-Seiten und den eigentlichen Befehlen kommen, ein paar grundsätzliche Richtlinien: • Endung der WML-Datei ist logischerweise "*.wml". • Umlaute sind in WML noch gefährlicher als in HTML. Entweder müssen sie mit den entsprechenden Kodierungen (Ü zu &Uuml;,...) maskiert werden oder man verwenden anstatt Ü - Ue, Ä - Ae,... Es kann aber auch versucht werden, die Umlaute zu vermeiden, was etwas schwieriger sein sollte. • WAP-Browser sind nicht sehr tolerant, was die Schreibweise der Tags betrifft. Während viele in HTML die Tags lieber komplett in Grossbuchstaben schreiben (wegen der besseren Lesbarkeit), sollten dies in WML unterlassen werden. Tags sollten immer klein geschrieben werden. • Tags werden meist mit <tag> begonnen und mit </tag> beendet. Benötigt der Tag kein abschliessendes Element, wird der Schrägstrich bereits in das erste Element aufgenommen: <tag eigenschaft=""/>. Für eine Leerzeile brauch man zum Beispiel nur <p/> zu schreiben. • Es ist kein Extra-Web-Server notwendig, aber zwei Einstellungen müssen dennoch gemacht werden. text/vnd.wap.wml - .wml image/vnd.img.wbmp - .wbmp Während Header bei einer HTML-Seite noch nicht Pflicht sind, sollten dies bei einer WML-Seite nicht vergessen werden. Der Header lautet: "[POYHUVLRQ "! '2&7<3(ZPO38%/,&:$3)2580'7':0/(1 KWWSZZZZDSIRUXPRUJ'7'ZPOB[PO! Die erste Zeile weist auf die Abstammung von XML hin. Jeder XML-Browser sollte auch in der Lage sein, WML-Seiten anzuzeigen. Ein Deck wird wie folgt gekennzeichnet: ZPO! ZPO! Projektarbeit 2000 - 41 - Anrufumleitung Innerhalb eines Decks befinden sich nun verschiedene Cards. Diese werden ebenfalls über ein Tag abgegrenzt, das folgendermassen aussieht: FDUGLG WHVWFDUGWLWOH 8HEHUVFKULIWGHU&DUG! S!:LHJHZRKQWNHQQ]HLFKQHWGDVHLQHQ7H[WDEVDW]'HU7H[WPXVVDXI:0/ 6HLWHQLQGHQ$EVDW]WDJVVWHKHQS! FDUG! Die "id" sollte nicht länger als 8 Zeichen gross sein. Damit kann dann ähnlich einem Anker in HTML auf die Card zugegriffen werden, mit "#cardid". Textabsätze werden mit <p></p> eingefasst. Es kann auch mit 'align=""' die Ausrichtung angegeben werden. Möglich sind "right", "left" oder "center". 13.1 Links Dies funktioniert wie in HTML. Interne Links auf anderen Cards eines Decks können so erreicht werden: DKUHI FDUG!=XU&DUGD! Externe Links können natürlich ebenso gesetzt werden. Hierzu verwenden man den relativen oder absoluten Pfad, wie von HTML gewohnt. DKUHI ZPOGHFNZPO!=XP'HFND! DKUHI KWWSZDSKDIDVGHZPO!)DKUSODQDXVNXQIWGHU%DKQD! 13.2 Tabellen Auch hier gleichen sich HTML und WML sehr. Eine Beispiel-Tabelle sieht wie folgt aus: WDEOHWLWOH 7HVW7DEHOOHFROXPQV ! WU!WG!=HOOHWG!WG!=HOOHWG!WU! WU!WG!=HOOHWG!WG!=HOOHWG!WU! WU!WG!=HOOHWG!WG!=HOOHWG!WU! WDEOH! Die Angabe der Spalten mit "columns=" ist Pflicht. Das Verschachteln von Tabellen ist laut den Spezifikationen (WML 1.1) nicht erlaubt. - 42 - Projektarbeit 2000 Grundlagen zu WML 13.3 Textauszeichnungen Ähnlich wie in HTML kann auch in WML Texte in der Form besonders hervorgehoben werden. Diese Tags werden aber nach unseren Informationen nicht von allen Anbietern unterstützt. E!'LHVHU7H[WZLUGIHWWEROGGDUJHVWHOOWE! L!'LHVHU7H[WZLUGNXUVLYLWDOLFDQJH]HLJWL! X!'LHVHU7H[WLVWXQWHUVWULFKHQX! Wie in HTML kann die Unterstreichung von Textpassagen zur Verwechslung mit einem Link führen. Daher sollte man die Verwendung der Unterstreichung vermeiden. Die Informationen über die WML-Tags haben wir der offiziellen Spezifikation entnommen. Wir wissen aber leider nicht, ob und wie diese Vorgaben von den Anbietern der WML-Browser (beziehungsweise der Handyhersteller) umgesetzt werden. 13.4 Einbindung von Bildern Es ist auch möglich, Bilder in die Cards mit einzubeziehen. Allerdings müssen diese Bilder in einem speziellen Format vorhanden sein: ".wbmp". Es gibt noch sehr wenige Programme, die dieses Format unterstützen. Die Grösse solcher Bilder darf sich meist nur in zweistelligen Pixeln bewegen. Das heisst, dass zum Beispiel für das Nokia 7110 eine solche Grafik nur 84 X 48 gross sein darf. Das ist natürlich von Handy zu Handy unterschiedlich. Früher oder später werden auch Palms und andere PDAs WML unterstützen. Dort steht dann mehr Platz zur Verfügung. Am besten man bietet verschiedene Versionen an: eine mit Grafiken und eine Nur-Text-Version. Ausserdem haben die Grafiken nur eine Farbtiefe von 1 Bit, also Schwarz-Weiss-Grafiken. Nokia stellt ein Konventierungstool (http://7110.nokia.de/wapkurs/wbmp/ wbmp_tools.zip) zur Verfügung. Dieses Tool arbeitet aber nur auf der Dos-Ebene. Der Aufbau des Tags ist ähnlich zu HTML, ebenso die möglichen Eigenschaften des Tags. Hier ein Beispiel: LPJVUF WHVWZEPSDOW %HVFKUHLEXQJGHV%LOGHV YVSDFH KVSDFH DOLJQ ERWWRPKHLJKW ZLGWK ! Der Alternativ-Text wird immer dann verwendet, wenn der Browser (zum Beipsiel ein Handy) keine Bilder darstellen kann oder das Bild nicht vorhanden ist. Weiterhin kann "vspace" (oben und unten) und "hspace" (links und rechts) verwendet werden, um zusätzlichen Platz um das Bild herum zu reservieren. Die Eigenschaft "align" dient wie gewohnt zur Ausrichtung des Bildes, "height" und "width" geben die Höhe und die Breite an. Diese Angabe wird auch in WML dazu verwendet, den Platz für das Bild zu reservieren. Dadurch wird die Card schneller aufgebaut. Projektarbeit 2000 - 43 - Anrufumleitung 13.5 Menü/Buttons In WML kann auch eine Art Menü erstellt werden. Die Darstellung ist aber dem anzeigenden Gerät vorbehalten. Bei Handys wird dies meist am Ende der Seite links und rechts angezeigt. An der selben Stelle kann mit Extra-Tasten diese Funktionen schnell ausgewählt werden. Dazu sollte dieser Code am Ende einer Card stehen: GRW\SH DFFHSWODEHO RNQDPH :HLWHU! JRKUHI FDUG! GR! Die Eigenschaft "type" soll für den Browser ein Hinweis sein, wozu dieser spezielle Link gedacht ist. Durch die Spezifikationen sind einige Typen vordefiniert. Wie diese allerdings durch die WML-Browser umgesetzt werden, bleibt abzuwarten. Folgende Typen gibt es: • accept Annahme; akzeptieren - dient zum Beispiel der Bestätigung von Abfragen. • prev Zurück - Ähnlich dem Back-Buttons in HTML-Browsern. • help Hilfe - Hiermit kann zum Beispiel ein Link zu einer Hilfeseite eingebaut werden. • reset Zurücksetzen - Zum Beispiel um ein Formular zu löschen. • options Optionen - Für zusätzliche Einstellungen. • delete Löschen - Zum Löschen eines Elementes oder der aktuellen Auswahl. Innerhalb des Do-Elementes stehen Tasks. Folgende Tasks sind möglich: • go Hiermit wird eine URL oder eine andere Card aufgerufen. • prev Damit wird die vorhergehende URL aufgerufen. Ähnlich dem Back-Button bei HTML-Browsern. • refresh Dieser Task lädt die aktuelle Seite erneut. • noop Dadurch macht der Browser "nichts". Dies dient zum Löschen von do-Elementen auf Card-Ebene. Dazu später mehr. Wollen Sie einen solchen Menüpunkt auf allen Cards eines Decks anzeigen, können Sie ihn auf Deck-Ebene erstellen. Der folgende Abschnitt muss in diesem Fall vor der ersten Card stehen, als Vorlage für alle weiteren Cards. WHPSODWH! GRW\SH RSWLRQVODEHO =XUXHFNQDPH SUHY! SUHY! GR! WHPSODWH! - 44 - Projektarbeit 2000 Grundlagen zu WML In einer Card können nun diesen Menüpunkt verwendet, überschrieben oder gelöscht werden. Ist in der Card kein do-Element mit dem gleichen Namen vorhanden, wird dieses Element auch in der Card verwendet. Zum Überschreiben des allgemeinen do-Elementes wird in der Card ein neues Element mit dem gleichen Namen definiert. Dadurch können verschiedene Optionen für spezielle Cards festgelegt werden. Soll ein do-Element auf einer Card nicht angezeigt werden, wird in der Card ein do-Element mit dem noop-Task erstellt. 13.6 Formulare In WML können auch Formulare eingesetzt werden. Da die Übermittelung an ein CGISkript auch möglich ist, können Datenbankabfragen oder andere dynamisch erzeugte Seiten auch mit WML erstellt werden. Für Formulare stehen Auswahllisten (Select), Eingabefelder (Input) zur Verfügung. Auswahlliste (Select) In einer Select-Liste können wie in HTML auch mehrere Einträge ausgewählt werden. Dazu muss ebenfalls 'multiple="true"' in das Select-Tag aufgenommen werden. Mit "name" können die Ergebnisvariable angegeben werden, in der die Auswahl gespeichert werden soll. Mit "value" kann eine vorgegebene Auswahl angezeigt werden. Mit "iname" und "ivalue" kann die Indexpositionen genutzt werden. In "iname" gibt man die Variable an, in der die Indexposition der Auswahl gespeichert wird. Mit "ivalue" kann man Indexpositionen angeben, die schon beim Anzeigen der Seite ausgewählt sein sollen. Zur Verdeutlichung ein kleines Beispiel. VHOHFWPXOWLSOH IDOVHQDPH WLHUYDOXH GRJ! RSWLRQYDOXH FDW!.DW]H RSWLRQYDOXH GRJ!+XQG RSWLRQYDOXH KRUVH!3IHUG VHOHFW! Hier wären die Ergebnisvariablen "tier" und der voreingestellte Wert "dog", das entspricht der Auswahl des Listeneintrages "Hund". Wählt man nun "Katze" aus der Liste, bekommt die Variable "tier" den Wert "cat". Im folgenden Beispiel kann man mehrere Elemente aus der Liste auswählen: OWVHOHFWPXOWLSOH WUXHQDPH WLHULQDPH LQGH[WLHULYDOXH ! RSWLRQYDOXH FDW!.DW]H RSWLRQYDOXH GRJ!+XQG RSWLRQYDOXH KRUVH!3IHUG VHOHFW! Durch ivalue="2;3" werden "Hund" und "Pferd" bereits markiert angezeigt. Wählt der Benutzer "Katze" und "Pferd" aus, hat die Variable "tier" den Wert "cat;horse" und die Variable "indextier" hat den Wert "1;3". Projektarbeit 2000 - 45 - Anrufumleitung 13.7 Eingabefelder (Input) Hiermit kann man ein Eingabefeld in die Seite einbauen. Neben den üblichen Eigenschaften "name, type, value" kann man auch das Format der einzugebenden Daten festlegen. Mit "name" gibt man die Variable an, in der die Eingabe gespeichert wird. "value" kann einen Text beinhalten, der beim Aufrufen der Seite im Feld angezeigt wird. Die Eigenschaft "type" ist entweder "text" oder "password". Mit der Eigenschaft "format" kann man ein bestimmtes Format fest vorgeben. Bestimmte Zeichen stehen dabei für ganze Gruppen von Buchstaben, Ziffern und Sonderzeichen. Nähere Informationen zu möglichen Codes findet man in den Spezifikationen (WML Reference 1.1, Seite 43). 13.8 Ereignisbehandlung WML beherrscht auch eine Art von Ereignissbehandlung. Es gibt verschiedene Arten von Ereignissen (events) "ontimer", "onenterforward", "onenterbackward" und "onpick". Bis auf "onpick" sind die Ereignisse auf Cards bezogen. "onpick" dagegen kann man nur bei Elementen in Auswahllisten verwenden. Dabei wird das Ereignis "onpick" jedesmal dann aufgerufen, wenn der Benutzer ein Element der Auswahlliste markiert. Mit Hilfe des Ereignisses kann eine URL aufgerufen werden. So kann man "onpick" zur Navigation verwenden. VHOHFW! RSWLRQRQSLFN KWWSZZZWLSSVWULFNVGH!7LSSV7ULFNV RSWLRQRQSLFN KWWSZZZDNDGHPLHGH!$NDGHPLHGH VHOHFW! Die Ereignisse "onenterforward" und "onenterbackward" werden ausgelöst, wenn die Card aufgerufen wird. "onenterforward" wird ausgelöst, wenn die Card mit Hilfe eines Links oder per Eingabe, also direkt, aufgerufen wird. "onenterbackward" dagegen wird ausgelöst, wenn die Card über eine Aktion der History (Verlauf) erneut gestartet wird. Dies kann zum Beispiel mit Hilfe eines prev-Tasks sein. Was bei Eintreten eines Ereignisses zu tun ist, kann man auf zwei verschiedenen Wegen festlegen. Wenn bei Eintreten nur eine URL zu starten ist, kann man diese Variante verwenden: FDUGRQHQWHUIRUZDUG XUO!S!+DOORS!FDUG! - 46 - Projektarbeit 2000 Grundlagen zu WML Die zweite Variante macht genau das Gleiche, bietet aber die Möglichkeit, nicht nur eine URL zu starten: FDUG! RQHYHQWW\SH RQHQWHUIRUZDUG! JRKUHI XUO! RQHYHQW! S! +DOOR S! FDUG! Eine besondere Art eines Ereignisses ist "ontimer". Dieses Ereignis tritt auf, wenn ein vorher definierter Timer abgelaufen ist. So kann man zum Beispiel die Weiterschaltung nach X Sekunden etwas einfacher erstellen, ohne Metaangabe. FDUGRQWLPHU QH[W! WLPHUYDOXH ! S! 1DFKVHFJHKWHVZHLWHU S! FDUG! Die Angabe "timer value="100"" legt die Zehntel-Sekunden fest, also 10 Sekunden. 13.9 Auzeichnungsbefehle <?xml version="1.0"?> - definiert als erste Zeile die Kompatibilität zu XML-codierten Dateien. WML-Code soll auf diesem Weg auch stets als XML-Code interpretiert werden können. <!--Kommentar--> - wird wie im HTML zur Kommentierung z.B. nachfolgender Abschnitte genutzt. Z.B.: <!--hier beginnt die nächste Card-->. <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http:// www.wapforum.org/DTD/wml_1.1.xml"> - diese Zeile ist zwingend die zweite Zeile in einem WML-Dokument. Entscheident für den WML-Entwickler ist der zweite Teil der Zeile. Hier ist der Ort definiert, an welchem die WML-Version ihren Inhalten nach definiert ist. An der angegebenen Adresse ist genau definiert, welche Möglichkeiten in der entsprechenden WML-Version gegeben sind. Das Dokument ist mit einem normalen Internet-Browser erreichbar. <a href="http>://www.domain.tld/index.htm">Text</a> - die Definition eines externen Links. Steht ein externer Link innerhalb eines gesamten Absatzes, muss er nicht mit <p> und </p> umfasst werden. <ahref="#Cardname">Text</a> - das Nummernzeichen kennzeichnet einen internen Link. Ein interner Link verweist innerhalb eines Decks auf eine andere Card. 'Cardname' wird als 'card id' (siehe weiter hinten) definiert. Projektarbeit 2000 - 47 - Anrufumleitung <b> - b wie bold - zeichnet einen Text halbfett aus. Wird mit </b> abgeschlossen. Dieser Befehl wird nicht von allen Anbietern unterstützt. <big> - kennzeichnet einen besonders gross darzustellenden Text. Wird mit </big> abgeschlossen. Der Befehl wird nicht von allen Anbietern unterstützt. <br/> - bezeichnet einen Zeilenvorschub - der vergrösserte Abstand eines RETURNs im HTML entsteht bei <br/> nicht. Gleichwohl ist das <br/> schon alleine wegen der Schreibweise mit einem <br> im HTML zu verwechseln. Soll ein grösserer Abstand zwischen zwei Inhalten angezeigt werden, muss zweimal <br/> hinter- bzw. untereinander gesetzt werden. <card id="Cardname"> - wird zur Vergabe von Bezeichnungen für eine einzelne CARD benötigt. Unter einem DECK befinden sich immer ein oder mehrere Cards. Folglich benötigen die Cards eigene Bezeichnungen, um innerhalb des Decks angesteuert werden zu können. Cardnamen sollten nicht mehr als acht Zeichen umfassen und die Bezeichnung eindeutig sein. </card> - mit diesem Befehl wird der Inhalt einer Card beendet. Entweder beginnt danach die nächste Card mit <card> oder der Quellcode eines Decks endet mit </wml>. <em> - Möglichkeit zur Auszeichnung eines Textabschnitts. Wird mit </em> abgeschlossen. Dieser Befehl wird nicht von allen Anbietern unterstützt. <i> - i wie italic - zeichnet einen Text kursiv aus. Wird mit </i> abgeschlossen. Dieser Befehl wird nicht von allen Anbietern unterstützt. <img src="Bildname.wbmp" alt="Bildname"/> - so wird eine WBMP-Grafik in einen WML-Text eingebunden. Das Verfahren ist vom HTML her bekannt. Wichtig: Die altAnweisung MUSS vorgenommen werden, kann allerdings statt der Angabe des Bildnamens auch nur ein Leerzeichen enthalten. <meta name="..." content="..."> - wie in HTML können/sollten WML-Dokumente auch meta-tags umfassen. Mutmasslich handelt es sich dabei um die gleichen metanames. <p align="xxx"> - steht am Anfang eines Absatzes und definiert die Ausrichtung des nachfolgenden Textes; der Ausdruck xxx ist dabei durch die bekannten Möglichkeiten left, right, oder center zu ersetzen. </p> - beendet einen Absatz oder eine eigenständige Auszeichnungszeile. Die Angaben <p align="xxx"> und </p> sind vor und nach einem Absatz zwingend notwendig. <p> - steht zu Beginn einer eigenständigen Auszeichnungszeile, z.B. eines Links zu einer anderen Card. Fortlaufender Text wird nur als gesamter Absatz umfasst. Am Ende einer eigenständigen Zeile steht der Befehl </p>. <small> - kennzeichnet einen besonders klein darzustellenden Text. Wird mit </small> abgeschlossen. Der Befehl wird nicht von allen Anbietern unterstützt. - 48 - Projektarbeit 2000 Grundlagen zu WML <strong> - Möglichkeit zur Auszeichnung eines Textabschnitts. Wird mit </strong> abgeschlossen. Dieser Befehl wird nicht von allen Anbietern unterstützt. <title="Titelzeile"> - ist in ähnlicher Weise vom HTML bekannt. Die Befehle 'card id' und 'title' werden gemeinsam in einem Klammerausdruck in den Code geschrieben <card id="Cardname" title="Titelzeile">. <u> - u wie underlined (oder unterstrichen) - zeichnet einen Text mit einer Unterstreichung aus. Wird mit </u> abgeschlossen. Dieser Befehl wird nicht von allen Anbietern unterstützt. <wml> - steht zu Beginn eines Quellcodes, vergleichbar zu <html>. </wml> - endet der wml-Code. Wie der Begriff </HTML> einen HTML-Code abschliesst, so endet mit </wml> jeder WML-Code. Projektarbeit 2000 - 49 - Anrufumleitung - 50 - Projektarbeit 2000 Schlusswort 14. Schlusswort 14.1 Bewertung der Arbeit Da wir schon sehr früh diese Arbeit für uns reserviert hatten, konnten wir das Thema bearbeiten, welches uns interessiert. Dies war unser grosses Glück, denn es gibt nichts demotivierenderes, als etwas tun zu müssen, das uns nicht als interessant erscheint. Am 14. März 2000, dem Tag der ersten Besprechung mit dem verantwortlichen Dozenten A. Steffen, konnten wir uns zuerst kein Bild davon machen, was auf uns zukommen würde. Diese Unklarheiten wurden dann aber zum Glück durch weitere Überlegungen und Diskussionen aus der Welt geschafft. Wir legten uns gleich schon in der ersten Woche richtig ins Zeug und waren auch an der Schule, wenn der Stundenplan keine Vorlesungen zeigte. Dank den Assistenten fanden wir schnell den Einstieg und konnten das Projekt voll motiviert angehen und termingerecht abschliessen. WAP ist ein zukunftsorientiertes Gebiet und ist noch lange nicht an seine Grenzen gestossen. Dies motivierte uns immer wieder von neuem: Zum Beispiel merkten wir bei Problemdiskussionen in den Newsgroups und verschiedenen Foren, dass andere Entwickler dieselben Probleme hatten, wie wir. Meistens gab dann jemand einen kleinen Hinweis, der auch funktionierte. Im grossen und ganzen können wir sagen, dass uns viele kleine „Steine“ im Weg lagen, aber nie riesige, die wir nicht überwinden konnten. Der geplante Weg konnte so eingehalten werden. Wir haben sehr viel bei diesem Projekt über WAP und einer Serveranwendung gelernt und es hat uns Spass gemacht, zusammen zu arbeiten. Wenn wir das abgeschlossene Projekt betrachten, sind wir ein wenig stolz auf uns. Vor dem Beginn dieser PA hätten wir nie daran geglaubt, dass wir dies zusammen schaffen würden. 14.2 Teamarbeit und Umfeld Die Schule hat für die Projektarbeiten ein Schulzimmer (E416) umgebaut und mit Computern ausgestattet. In diesem Raum wurden insgesamt acht Arbeiten durchgeführt, d. h., es war einiges los, wenn alle Studenten anwesend waren (wenn auch nur zum Spielen :-) ). Es war aus diesem Grund nicht immer einfach, sich zu konzentrieren. Irgend jemand musste immer etwas diskutieren. Am Anfang ging es besser, weil viele die Arbeit vielleicht ein wenig auf die zu leichte Schulter genommen haben und selten hier waren. Dies merkte man vorallem nach den Ferien, als die Leute begriffen, dass noch sehr viel zu tun war und das Schulzimmer plötzlich rege besucht wurde. Aus diesem Grund war es während den letzten zwei Wochen selten ruhig. Als wir unsere Computer am ersten Tag zugewiesen bekamen, hatten wir ein bisschen Bedenken, denn alle Bildschirme waren mit Lautsprechern ausgestattet. Der Lärm war vorprogrammiert. Wir wurden aber eines besseren belehrt. Die Studenten hatten von zu Hause Kopfhörer mitgebracht und so konnte jeder seine Musik hören, ohne die anderen zu stören. An dieser Stelle ein Lob an Cyrus Kazemi und Zeynel Kocaman, die Assistenten, die Projektarbeit 2000 - 51 - Anrufumleitung uns bei der Arbeit unterstützt haben. Wir konnten zu jeder Zeit einen der beiden erreichen. Dies klappte dank ICQ sehr gut. Meistens dauerte es auch nicht lange und einer kam vorbei und konnte uns einige Tips geben. 14.3 Ausblick Unsere Arbeit zum Thema Anrufumleitung über WAP könnte man in eine Diplomarbeit ausweiten, denn wie im Pflichtenheft unter Erweiterungsmöglichkeiten bereits erwähnt, gibt es viele Dinge, welche zusätzlich implementiert werden könnten. Das bestimmt wichtigste wäre, die Umleitung über eine Telefonzentrale oder einen Gatekeeper zu schalten und nicht nur, wie hier bei diesem Projekt, virtuell anzuzeigen. Wir werden sehen... - 52 - Projektarbeit 2000 Anhang 15. Anhang 15.1 Menüführung 15.1.1 „normale“ Umleitung Projektarbeit 2000 - 53 - Anrufumleitung 15.1.2 benutzerdefinierte Umleitung 15.2 CD-ROM Auf dieser mitgelieferten CD befinden sich alle Programme und die dazugehörenden Config-Files, die wir für diese Projektarbeit verwendet haben. Um die Lizenzierung nicht zu verletzen, sind keine kostenpflichtige Programme darauf enthalten. (Abbildung: 15.2 - 1) Abbildung: 15.2 - 1 - 54 - Projektarbeit 2000