ExtGWT (nota anche come GXT) [Sen12a] `e una libreria per GWT, svi- luppata sempre da Sencha Inc. come ExtJS (vedi sezione 2.2), e rilasciata nel luglio 20084, che fornisce anch’essa un’ampia collezione di widget, templates
e layout. Tutti i componenti sono compatibili coi browser pi`u diffusi, Explo- rer, Firefox, Safari, Chrome e Opera, e sono conformi alla specifica del W3C sull’accessibilit`a WAI-ARIA5, e alla cosiddetta “Sezione 508”6, una serie di
linee guida sull’accessibilit`a pubblicate dal governo americano.
Essenzialmente ExtGWT `e ExtJS in ambiente GWT, almeno dal punto di vista grafico. ExtGWT fornisce sostanzialmente gli stessi widget forniti da ExtJS: gli stessi nomi dei campi o dei metodi sono uniformi tra le due librerie.
La scelta di utilizzare ExtGWT non `e stata mia, bens`ı era la richiesta fon- damentale alla base della proposta di tesi di Wincor Nixdorf: sviluppare mediante ExtGWT un web desktop graficamente analogo a quello gi`a in loro possesso di NRGine (vedi sezione 1.2), sviluppato con ExtJS. Tuttavia, dato
3http://www.zdnet.com/blog/burnette
4http://www.sencha.com/blog/ext-gwt-v10-released 5http://www.w3.org/TR/wai-aria/
2.4 ExtGWT
buttonBar.add(new Button("Click me",
2 new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
4 MessageBox box = new MessageBox();
box.setTitle("Save Changes?");
6 box.setMessage("You are closing a tab that has unsaved changes. Would you like to save your changes?"); box.setButtons(MessageBox.YESNOCANCEL); 8 box.setIcon(MessageBox.QUESTION); box.addCallback(l); 10 box.show(); } 12 }));
Figura 2.7: Codice GWT/ExtGWT per aprire la finestra di dialogo in figura 2.2. Si pu`o osservare la somiglianza col codice ExtJS per lo
stesso scopo, riportato in figura 2.3
appunto il grande parallelismo, in quanto a interfacce utente e a funzionalit`a, tra le due librerie, sarebbe stato difficile fare una scelta differente.
Le motivazioni che hanno portato Wincor Nixdorf a orientarsi verso la valu- tazione della sostituzione del web desktop esistente con uno nuovo sebbene analogo, sono state affini a quelle che abbiamo gi`a visto nella sezione 2.3 es- sere le ragioni alla base dello sviluppo da parte di Google di GWT stesso: la complessit`a di una grande applicazione scritta in AJAX, con la conseguente difficolt`a a mantenerla e ad estenderla.
Le somiglianze tra ExtJS e ExtGWT sono solo nella forma e non nella sostanza: la prima, come abbiamo visto, `e JavaScript, mentre la seconda `e una libreria per Google Web Toolkit, dunque Java: oltre all’estetica delle in- terfacce utenti, per il programmatore si tratta di un universo completamente differente.
L’esistenza sul mercato di ExtGWT permette a Wincor Nixdorf un cambio di tecnologia per il loro web desktop, senza un cambio nell’aspetto e nel look and feel delle interfacce.
Al momento ExtGWT si trova alla versione 2.2.5, rilasciata nel settembre 2011. Una versione 3 `e stata annunciata, e ne `e stata distribuita la sua terza beta release lo scorso 14 febbraio 2012. Nessuna data `e stata annunciata per il rilascio della versione stabile.
Capitolo 3
Progettazione
Dopo un primo periodo trascorso documentandomi sulle tecnologie che avrei utilizzato, ho rivolto la mia attenzione alla progettazione del prototipo che avrei in un secondo momento sviluppato.
Questo capitolo riassume le informazioni raccolte durante la fase di proget- tazione e le scelte effettuate.
Nella sezione 3.1 riformuler`o l’obiettivo del progetto di tesi, illustrando, sep- pure in modo generale, i requisiti del prototipo. Nella sezione 3.2 illustrer`o l’architettura proposta, in termini di macro componenti.
Proseguir`o poi con lo spiegare le scelte progettuali relative alla gestione dei guasti, alla performance e alla gestione degli errori, rispettivamente nella se- zione 3.3, 3.4 e 3.5. Terminer`o indicando, nella sezione 3.6 quali scelte ho preso sotto l’aspetto della sicurezza, e, nella sezione 3.7, come ho deciso di introdurre un meccanismo di internazionalizzazione.
3.1
Requisiti
Il progetto di tesi richiedeva lo sviluppo di quattro interfacce grafiche: una finestra per la procedura di login, un web desktop con un menu, attivabile dal classico pulsante start in basso a sinistra sullo stile a cui Windows ci ha abituato, una finestra con griglia e una finestra con forms. Bozze per tali interfacce sono raffigurate in figura 3.1.
abbastanza preciso le interfacce del web desktop gi`a in uso, con solo alcune modifiche che mi sono state esplicitamente richieste per migliorare l’usabilit`a.
Solo le interfacce avrebbero dovuto essere prodotte: per tutte le funzio- nalit`a ci si sarebbe dovuti rivolgere ai livelli business e logic di NRGine, illustrati in sezione 1.2, che gi`a le fornivano. Ovviamente riscrivere determi- nate parti era ammissibile, ma l’idea era riutilizzare quanto gi`a disponibile e concentrarsi sulle interfacce.
I requisiti per ogni singola interfaccia grafica non saranno qui riportati, per due ragioni: in primo luogo, tali requisiti sono stati formulati in modo informale, come sottoinsieme delle caratteristiche e delle funzionalit`a delle interfacce preesistenti, e in secondo luogo per ragioni di privacy di Wincor Nixdorf.
Una descrizione generale delle interfacce e delle loro funzionalit`a sar`a fornita nella sezione 4.5.
La caratteristica essenziale che il prototipo avrebbe dovuto avere, oltre ovviamente all’aderenza ai requisiti appena citati, `e la mantenibilit`a.
Per ottenerla, come linee guida generali si `e stabilito di:
• limitare le connessioni tra i diversi componenti del sistema, e anche tra le diverse classi, di modo da ridurre le dipendenze reciproche, e far s`ı che una modifica incidesse il meno possibile su altri componenti/classi.
• utilizzare noti schemi di design (design pattern) e mantenere la strut- tura del progetto semplice da comprendere.
• documentare estensivamente il progetto internamente, anche mediante lo strumento del Javadoc1.
Tali indicazioni trovano applicazione oltre che nella struttura dell’architet- tura, che andr`o ora a descrivere, anche nell’organizzazione del codice vero e proprio, la quale sar`a invece affrontata nel capitolo 4.
1http://www.oracle.com/technetwork/java/javase/documentation/ index-jsp-135444.html
3.1 Requisiti - + Browser -+ Login Username : Password : submit reset env : - + Browser menu entry 1 entry 1 entry 1 entry 1 entry 1 entry 1 entry 1 entry 1 entry 1 entry 1 entry 1 entry 1 - + Browser menu -+ Grid - + Browser menu -+ Form Username : Password : env : 10 Applications 10 Documents Minimize when double-clicking
Surname email Name
http://www... http://www...
http://www... http://www...
Figura 3.1: Bozza dell’interfaccia grafica. La prima immagine in alto a sinistra mostra lo schizzo della schermata con la finestra di login, mentre l’immagine in alto a destra mostra il web desktop con il menu
espanso. Nella riga pi`u in basso, a sinistra abbiamo l’abbozzo di una finestra con griglia (dentro il web desktop), mentre a destra di una