WebTransactions Erstellung von W@P-Anwendungen
Transcrição
WebTransactions Erstellung von W@P-Anwendungen
WebTransactions Erstellung von W@P-Anwendungen Copyright © Fujitsu Technology Solutions 2009 Alle Rechte vorbehalten WebTransactions W@P 1 Einführung Inhalt 1 Einführung ______________________________________________________ 3 1.1 Was ist WAP ___________________________________________________________ 3 1.2 Architektur ____________________________________________________________ 3 1.2.1 1.2.2 WWW – Architektur_____________________________________________________________ 3 WAP – Architektur______________________________________________________________ 3 2 W@P-Anwendungen mit WebTransactions ___________________________ 5 2.1 WML und WTML ________________________________________________________ 5 2.1.1 2.1.2 2.1.3 Starttemplate__________________________________________________________________ 5 Eingabemöglichkeiten ___________________________________________________________ 5 Mastertemplate für WML-Templates ________________________________________________ 5 2.2 Entwicklung mit WebLab _________________________________________________ 7 2.3 Beispielanwendung _____________________________________________________ 8 3 Glossar/ Abkürzungen ____________________________________________ 9 4 Literatur _______________________________________________________ 10 Seite: 2/10 WebTransactions W@P 1 1.1 1 Einführung Einführung Was ist WAP Das Wireless Application Protocol positioniert sich am Schmelzpunkt zweier sich schnell entwickelnder Netzwerktechnologien, dem drahtlosen Datenmarkt und dem Internet. Es definiert Protokolle und Sprachen, die auf die beschränkte Hardwareausstattung der mobilen Endgeräte und die geringe Bandbreite der Mobilfunknetze zugeschnitten sind. Der WAP-Standard wird vom W@P-Forum herausgegeben (http://www.wapforum.com ). Hier sind alle bedeutenden Mobifunk-Provider und Handy-Hersteller organisiert (http://www.wapforum.com/who/members.htm ). Die aktuelle Version im Status "approved" ist WAP 1.1, Version 1.2 ist in Arbeit. 1.2 Architektur 1.2.1 WWW – Architektur Hier ist noch einmal kurz das klassische WWW-Modell dargestellt. Der Webbrowser stellt Anfragen an einen Web-Server, dieser liefert die Seite zurück. 1.2.2 WAP – Architektur WAP setzt mit einer Proxy-Lösung auf der vorhandenen Infrastruktur auf. Ein WAP-Gateway setzt das von den mobilen Endgeräten verwendete WTP (Wireless Transport Protocol) auf HTTP/TCP um und leitet die Anfrage auf den adressierten Web-Server um. Dieser Server muss die Seiten im richtigen Format zur Verfügung stellen, d.h. der Content-Provider muss Seite: 3/10 WebTransactions W@P 1 Einführung sein Angebot in WML (Wireless Markup Language) verfassen. Das Gateway komprimiert die Response (Umsetzung in WML-Bytecode) und die setzt das HTTP/TCP-Protokoll auf WTP um. Ein WAP-Netzwerk kann folgende Szenarien enthalten: • Ein Web-Server stellt Inhalte im WML-Format bereit. Mit dem Mobil-Client können diese Seiten über das Gateway des Providers abgerufen werden. • Ein Web-Server stellt Inhalte im traditionellen HTML-Format bereit. Ein zusätzlicher HTML-Filter wird eingerichtet, der vom WAP-Proxy angesprochen wird und die Originalseiten in WML konvertiert. Dieses Szenario ist sicher erstrebenswert, da so sehr einfach Web-Content als WAP-Content bereitstehen würde, allerdings gibt es noch keinen HTMLtoWML-Filter, der lesbare und ansehnliche Ausgaben auf einem Handy-Display erzeugt. • Die Mobilfunkprovider stellen WAP-Content direkt auf WTA-Servern (Wireless Telephony Application) zur Verfügung. Damit wird der Zugriff auf verschiedene providerspezifische Dienste (z.B. T-D1 News, Online-Banking, Mailbox-Konfiguration) vereinheitlicht. Für diese Dienste können so Bedienoberflächen bereitgestellt werden, ohne dass das Handy diese Dienste speziell unterstützen muss. Seite: 4/10 WebTransactions W@P 2 W@P-Anwendungen mit WebTransactions 2 W@P-Anwendungen mit WebTransactions 2.1 WML und WTML 2.1.1 Starttemplate Für die Generierung von WML statt HTML ist im Starttemplate nur eine kleine Anpassung vorzunehmen. Die Variable WT_SYSTEM.HTTP_DEFAULT_HEADER muss mit dem für WMLSeiten passenden HTTP-Header versorgt werden. Alle erzeugten Seiten werden dann mit diesem Header versehen: <wtOnCreateScript> <!-WT_SYSTEM.HTTP_DEFAULT_HEADER = 'Content-type: text/vnd.wap.wml\n\n'; //--> </wtOnCreateScript> 2.1.2 Eingabemöglichkeiten Es gibt zwar zwei Eingabe-Controls in WML (input und select), aber im Gegensatz zu HTML keine Formulare. Alle eingegebenen Werte stehen in $-Variablen zur Verfügung und müssen bei go. oder im link explizit mit angegeben werden. Als Erweiterung der Funktionalität stehen eine optionale Formatangabe für input-Felder und hierarchische select-Listen zur Verfügung. WT_SYSTEM.HREF, bzw. WT_SYSTEM.HREF_ASYNC kann mit einem kleinen Trick verwendet werden: die enthaltenen "&" müssen mit der replace-Methode in & umgewandelt werden. Hier ein kleines Beispiel aus dem Demo: <wml> <card id="order" title="Bestellen"> <p> Menge: <input type="text" name="menge" format="*N" size="2" maxlength="2"/> Kundennummer: <input type="text" name="kdnr" format="*N" size="8" maxlength="8"/> </p> <p> <a href="##WT_SYSTEM.HREF.replace(/&/g,'&')#&command=waren"> Zurück </a> <br/> <a href="##WT_SYSTEM.HREF.replace(/&/g,'&')#&menge=$(menge)&kdnr=$(kdnr)"> Abschicken </a> <br/> <a href="##WT_SYSTEM.HREF.replace(/&/g,'&')#&command=ende">Ende</a> </p> </card> </wml> 2.1.3 Mastertemplate für WML-Templates Für die Generierung von Automask und gecaptureten Templates in WML können Sie folgendes Mastertemplate verwenden: <wtOnCreateScript> <!-//{{WebLab(assignCommunicationObject) %%CommObj% = WT_HOST.%%CommObj%; if (%%CommObj%.WT_SYSTEM != null) Seite: 5/10 WebTransactions W@P 2 W@P-Anwendungen mit WebTransactions %%CommObj%_system = %%CommObj%.WT_SYSTEM; // commu. specific system object else %%CommObj%_system = WT_SYSTEM; // global system object //}} // propagate communication object to included WTML documents ////////////// lastLine = 1; function taggedOutput( hostObject ) { if ( hostObject.StartLine != lastLine ) { document.writeln('\n<br/>'); lastLine++; } output = hostObject.HTMLValue.replace(/\$/g,"$$"); if (hostObject.Intensity == 'Normal') output = '<b>' + output + '</b>'; if (hostObject.Blinking == 'Yes') output = '<i>' + output + '</i>'; if (hostObject.Underline == 'Yes') output = '<u>' + output + '</u>'; document.write( output ); } function taggedInput( hostObject ) { if ( hostObject.StartLine != lastLine ) { document.writeln('\n<br/>'); lastLine++; } currentLength = hostObject.Length; input = '<input type=' + (hostObject.Visible == 'No' ? '"password"' : '"text"' ); input += ' name="' + hostObject.Name + '" size="' + currentLength + '" maxlength="' + currentLength + '" value="' + hostObject.Value + '"/>'; document.write( input ); } //--> </wtOnCreateScript> <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card id="%%Format%" title="WebTransactions"> <p> %%LINES DisplayAttributes=Dynamic StaticText=No TaggedInput=Enforced TaggedOutput=Enforced% <wtOnCreateScript> <!-urlext = ''; for( element in wtInputFields ) { urlext += '&' + element + '=$' + element; } //--> </wtOnCreateScript> </p> <do type="accept"> <go href="##WT_SYSTEM.HREF.replace(/&/g,'&')+urlext#"/> </do> Seite: 6/10 WebTransactions W@P 2 W@P-Anwendungen mit WebTransactions </card> </wml> <wtRem** Script executed after post of WML page ***************************> <wtOnReceiveScript> <!-//{{WebLab(processPostedData) %%OnReceiveCopies% //}} //{{WebLab(processHostCommunication) %%CommObj%.send(); if (!WT_SYSTEM.ERROR) %%CommObj%.receive(); if ( WT_SYSTEM.ERROR && WT_SYSTEM.COMMUNICATION_ERROR_FORMAT ) setNextPage( WT_SYSTEM.COMMUNICATION_ERROR_FORMAT ); else { if( %%CommObj%_system.CAPTURED_FLD == "Yes" && %%CommObj%_system.APPLICATION_PREFIX ) setNextPage( %%CommObj%_system.APPLICATION_PREFIX + '@' + %%CommObj%_system.FLD ); else setNextPage( %%CommObj%_system.FLD ); } //}} //--> </wtOnReceiveScript> 2.2 Entwicklung mit WebLab Als Voraussetzung zur Entwicklung von W@P-Anwendungen unter WebTransactions benötigen Sie einen W@P-Browser auf dem Entwicklungsrechner. Diese Browser sind kostenlos im Internet erhältlich. Da diese Browser aber nicht über OLE/DDE-Schnittstellen verfügen, ist die Kopplung mit WebLab nicht ganz so komfortabel wie gewohnt. In den WebLab-Einstellung kann bei den Browsereinstellungen „Zwischenablage“ aktiviert werden. Es wird dann der URL, der sonst beim Sitzungsstart und bei der Neudarstellung automatisch dem Browser übergeben wird in die Zwischenablage kopiert. Diese Zeichenfolge kann dann einfach mit Strg-V in das entsprechende Eingabefeld des Browsers kopiert werden. Für wiederholtes Regenerate kann auch die Reload-Funktion des Browsers verwendet werden, da sich bei gleichbleibendem Template der URL für das Regenerate nicht ändert. Wird in der Zeile Pfad bei den Browsereinstellungen der Pfad zum W@P-Browser eingeben, so wird dieser für den Sitzungsstart automatisch aufgerufen. Der URL muss dann nach dem oben beschriebenen Verfahren „händisch“ übertragen werden. Vorgehen: Folgendes Beispiel benutzt den UP.Simulator von Phone.com (http://www.phone.com) Wählen Sie im Weblab den Befehl "Optionen/Einstellungen". Wählen Sie auf der Registerkarte "Programme" als Browser "kein Browser" und tragen Sie bei "Pfad" die UP.Simulator.exe-Datei ein. Seite: 7/10 WebTransactions W@P Starten Sie die Sitzung wie immer, der UP.Simulator wird automatisch geladen. Setzen Sie nun den Focus in das Feld "Go" und drücken Sie "Strg-V" und anschließend "Return". Die WebTransactions-Sitzung wird gestartet und sie können im Browser auf das zu ändernde Template navigieren. Ändern Sie das Template im WebLab und rufen Sie den Befehl "Im Browser aktualisieren" auf. Markieren Sie im UP.Simulator wieder das Feld "Go", drücken Sie "Strg-V" und schicken Sie die eingefügte URL mit Return ab, die Neudarstellung wird dann durchgeführt. Wenn Sie am gleichen Template gleich noch eine Änderung machen, können Sie nach dem Abspeichern im WebLab direkt im UP.Simualtor den Befehl "Edit/Reload (F9)" für die Neudarstellung aufrufen. 2.3 2 W@P-Anwendungen mit WebTransactions Beispielanwendung Als Beispielanwendung finden Sie im PackAndGo-Archiv WAP-Demo.zip ein kleines Bestellsystem für Werkzeuge, Die wichtigsten W@P-Techniken im Zusammenhang mit WebTransactions werden in den Templates erläutert. Seite: 8/10 WebTransactions W@P 3 3 Glossar/ Abkürzungen Glossar/ Abkürzungen HTTP XML mime WTScript WTML WAE WAP Hypertext Transfer Protocol Extensible Markup Language Multipurpose Internet Mail Extensions WebTransactions Script (entspricht dem Javascript Sprachkern) WebTransactions Markup Language Wireless Application Environment Wireless Application Protocoll WDP WML WSP WTA WTLS WTP Wireless Datagram Protocol Wireless Markup Language Wireless Session Protocol Wireless Telephony Application Wireless Transport Layer Security Wireless Transaction Protocol Seite: 9/10 WebTransactions W@P 4 4 Literatur Literatur [1] W@P White Paper, Wireless Internet Today, June 1999 [2] WAP WML, WAP Forum, Version 16-Jun-1999 [3] WebTransactions V3.0, Templatesprache, Manual August 1999 Seite: 10/10