Eclipse RCP parte 1: Progettare il Modello

 

In questo tutorial vedremo come usare Eclipse Modeling Framework per gestire il Modello di un'applicazione.

Se non avete già installato EMF e i relativi tools, seguite le istruzioni indicate sul tutorial "Eclipse: installare EMF".

 

 

Il modello Library che useremo come esempio è preso dal Tutorial ufficiale di EMF: esso è costituito da due entità, Author Book.
Per gli obiettivi di questo tutorial il modello è stato semplificato in questo modo:

Author: ha un attibuto String name
Book: ha un attibuto String title e un attributo author di tipo Author

Ok, iniziamo col creare un nuovo (File->New->Other...Empty EMF Project

 

Creating a New Empty EMF Project

 

diamogli un nome (es. com.rcpvision.rcptutorial.model) e clicchiamo Finish.

Selezioniamo la cartella model creata dallo wizard EMF, tasto destro New->Other->Ecore Tools->Ecore Diagram

 

Creating a New Ecore Diagram

premiamo Next, cambiamo  (dovremmo leggere "Create Ecore Diagram" come titolo della dialog) il valore del campo File name in "Library.ecore_diagram", e premiamo di nuovo Next.

Al prossimo passo (dovremmo leggere "Create Ecore Domain Model" come titolo della dialog), lasciamo il valore preselezionato (che dovrebbe essere "Library.ecore") nel campo File name e premiamo Finish.

Ci troveremo davanti ad un foglio bianco dove possiamo letteralmente disegnare il nostro modello.

Mentre editiamo questo file .ecorediag, il corrispondente file .ecore verrà automaticamente aggiornato. 

Notate che il file .ecore è il domain file principale di EMF e che saremmo potuti partire da esso per gestire il modello.In questo tutorial invece abbiamo deciso di esplorare l'utilizzo degli Ecore Dialog Tools ed avere quindi il file .ecore automaticamente generato e sincronizzato in seguito all'editing del diagramma.

Creating a New Ecore Diagram

iniziamo quindi trascinando un oggetto EClass dalla Palette sulla pagina bianca e rinominiamolo in Author

Editing EClassEditing EClass

poi muoviamo il cursore sopra il box e selezioniamo l'icona corrispondente all'azione "Add EAttribute"

Renaming EClass name

e rinominiamo l'attributo in name

Editing EClassEditing EClass

poi eseguiamo tasto destro sull'attributo name e selezioniamo Show Properties View

Editing EClass

andiamo alla Properties View, clicchiamo il tasto a destra del campo EType

Editing EClass

 

facciamo la stessa cosa per l'entità Book e il suo attributo String title.

Library diagram

ora, per aggiungere all'entità Book un attributo con riferimento ad Author, clicchiamo sull'icona EReference sulla Palette

Library diagram

poi clicchiamo sull'entità Book

Library diagram

e rilasciamo il mouse sull'entità Author

Library diagram

rinominiamo il riferimento come author

Editing EClassEditing EClass

Notate che abbiamo appena creato un legame 0..1 chiamato author da Book ad Author.

Se ora salviamo il file .ecorediag e apriamo il file .ecore, vedremo questo

Library diagram

 

Potreste preferire gestire il Modello EMF direttamente attraverso l'editing di questo file .ecore (potete trovare un esempio nel tutorial "Eclipse RCP: come creare e persistere un EMF Model"), è semplicemente una questione di preferenze.
La cosa importante è che ora abbiamo un Ecore Model pronto a partire. Si, partire, ma per dove? La risposta è: per generare il sorgente del Modello.
Finora infatti non abbiamo scritto nemmeno una singola linea di codice, ma noi sappiamo che prima o poi ne avremo bisogno.

Per questo motivo selezioniamo il file .ecore, tasto destro New->Other...,

Editing EClass

selezioniamo EMF Generator Model

Editing EClass

clicchiamo Next

Editing EClass

clicchiamo Next di nuovo

Editing EClass

e di nuovo

Editing EClass

ora clicchiamo il tasto Load , poi Next

Editing EClass

Finish.

Alla fine abbiamo ottenuto un file Genmodel :

Editing EClass

dal quale possiamo generare il sorgente del Modello, semplicemente con tasto destro e selezionando Generate Model Code

Editing EClass

ed ... ecco il codice del Modello, scritto per voi da EMF!

Editing EClass

Prendetevi un po' di tempo per dare un'occhiata al codice generato e chiedetevi quanto tempo ci sarebbe voluto per creare a mano tale codice (considerate ad esempio che questo codice contempla, fra le altre cose, un meccanismo di notifica associato ad ogni metodo setter, solo per menzionare un aspetto).
Date anche un'occhiata verso la fine del tutorial "Eclipse RCP: come creare e persistere un EMF Model" per vedere come un Modello EMF puo' essere usato (è soltanto uno degli esempi possibili).

Vediamo ora come EMF sia efficace quando si tratta di mantenere un Modello, cioè, quando si rende necessario modificare il Modello stesso.

Per far ciò, immaginiamo di renderci conto, all'improvviso, che un'entità Book può avere più di un Author! Dunque, abbiamo bisogno di una Collection al posto di un semplice attributo!
Ma abbiamo EMF! Quindi semplicemente faremo questo: selezioniamo il legame autore da Book ad Author e cambiamo il valore di Upper Bound da 1 a * (illimitato)

 

Editing EClass

salviamo, riapriamo il file Genmodel e facciamo di nuovo tasto destro sulla root dell'albero e Generate Model Code

Editing EClass

per avere il codice del Modello aggiornato.

 

Quali sono dunque i vantaggi dell'introduzione di EMF ?

  • il Modello può essere progettato da un non-sviluppatore (magari l'analista, che probabilmente ha una profonda conoscenza del dominio applicativo del Cliente, acquisita magari in decenni di esperienza, ma non conosce quasi per nulla un linguaggio di programmazione, per non parlare di Java)

  • il codice del Modello viene generato automaticamente a tempo zero (o meglio: il tempo viene speso nella progettazione del Modello) 

  • il codice del Modello viene creato e mantenuto in sincronia col progetto del Modello automaticamente, quindi è potenzialmente ridotto a zero il rischio di scrivere codice non corretto.

 

Commenti

avatar Bob
0
 
 
Thanks for a nice guide. The information is very essential and you presented it very clearly. I try to optimize my work as well as it is possible, that is why I follow all such posts. That is why thanks a lot for a nice explanation.
Nome *
Inserisci l'e-mail per la verifica
URL
ChronoComments by Joomla Professional Solutions
Invia commento
Cancella
Nome *
Inserisci l'e-mail per la verifica
URL
ChronoComments by Joomla Professional Solutions
Invia commento