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 &amp; 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,'&amp;')#&amp;command=waren">
Zurück
</a>
<br/>
<a href="##WT_SYSTEM.HREF.replace(/&/g,'&amp;')#&amp;menge=$(menge)&amp;kdnr=$(kdnr)">
Abschicken
</a>
<br/>
<a href="##WT_SYSTEM.HREF.replace(/&/g,'&amp;')#&amp;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 += '&amp;' + element + '=$' + element;
}
//-->
</wtOnCreateScript>
</p>
<do type="accept">
<go href="##WT_SYSTEM.HREF.replace(/&/g,'&amp;')+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