La trasformazione UML a EJB converte gli elementi di modello UML (Unified Modeling Language) in codice Java e bean enterprise. La trasformazione UML a EJB è la stessa della trasformazione UML a Java, ma può generare anche bean enterprise da elementi UML che sono contrassegnati con stereotipi dal profilo di trasformazione EJB.
È necessario acquisire familiarità con la trasformazione UML a Java prima di utilizzare la trasformazione UML a EJB.
Destinazione della trasformazione
Contenitore EJB di destinazione
Schede della configurazione della trasformazione UML a EJB
Interpretazione degli oggetti di origine
Enumerazione non contrassegnata
Supporto per elaborare relazioni tra gli elementi UML e classi Java o bean enterprise visualizzate
Supporto per le tecnologie di trasformazione comune
Integrazione con la funzionalità del team
Relazioni origine-destinazione
È possibile selezionare una o diverse voci dalla vista Esplora modello come origine per la trasformazione UML a EJB. La seguente tabella elenca gli elementi che la trasformazione accetta come origine valida:
Origine |
Risultato |
Modello UML |
Trasforma tutti i pacchetti, le classi e le interfacce nel modello |
Pacchetto UML |
Trasforma il pacchetto e tutte le classi e le interfacce in detto pacchetto |
Classe UML |
Trasforma la classe e tutti gli attributi, operazioni, classi ed interfacce in tale classe Nota: l'elemento principale della classe deve essere un pacchetto UML |
Interfaccia UML |
Trasforma l'interfaccia e tutti gli attributi, operazioni, classi e interfacce in tale interfaccia Nota: l'elemento principale dell'interfaccia deve essere un pacchetto UML |
Enumerazione UML |
Trasforma l'enumerazione e tutti i letterali di enumerazione Nota: l'elemento principale dell'enumerazione deve essere un pacchetto UML |
Per generare dei bean enterprise da un modello di origine, al modello di origine deve essere applicato il profilo di trasformazione EJB e gli elementi di modello devono essere contrassegnati con stereotipi dal profilo di trasformazione EJB.
La trasformazione UML a EJB accetta un singolo progetto EJB come destinazione. È possibile creare il progetto EJB con o senza un progetto client. La trasformazione genera il codice nella prima cartella di origine che rileva nel progetto EJB (di solito, ejbModule) e nella prima cartella di origine che rileva nel progetto client (di solito src), se esiste un progetto del client.
La versione del contenitore EJB che è associata al progetto EJB determina la trasformazione UML a EJB. Ciascuna versione del contenitore EJB ha diverse regole che devono essere seguite per il funzionamento corretto della trasformazione UML a EJB. La seguente tabella elenca le regole associate alle varie versioni di contenitori EJB:
Versione contenitore EJB |
Regole che influenzano la trasformazione |
2.1 |
I bean CMP (Container-managed persistence) 1.1 devono essere generati solo con interfacce remote |
2.0 |
I bean CMP 1.1 devono essere generati solo con interfacce remote |
1.1 |
|
Se non ci si attiene alle regole sopra indicate prima di eseguire la trasformazione, la trasformazione EJB non elabora il modello di origine e non esegue alcuna trasformazione.
Il profilo della trasformazione EJB definisce gli stereotipi interpretati dalla trasformazione UML a EJB per generare i bean enterprise. La seguente tabella elenca gli stereotipi definiti dal profilo di trasformazione EJB:
Stereotipo |
Elemento di destinazione |
Interpretazione della trasformazione UML a EJB |
<<entity>> |
Classe UML |
Rappresenta un bean di entità |
<<service>> |
Classe UML |
Rappresenta un bean di sessione con una proprietà di stereotipo, hasState, che è stato impostato inizialmente su false, che significa che il bean di sessione è senza stato. |
<<messageprocessor>> |
Classe UML |
Rappresenta un bean basato sui messaggi |
<<id>> |
Attributo UML |
Rappresenta un campo CMP o BMP da utilizzare come parte della chiave principale di un bean di entità |
<<query>> |
Operazione UML |
Rappresenta un metodo di query su un bean di entità |
Il profilo di trasformazione EJB definisce anche i seguenti vincoli:
Quando si convalida un modello con il profilo di trasformazione EJB, questi vincoli generano degli avvisi. Prima di eseguire la trasformazione UML a EJB, è necessario risolvere i problemi che generano avvisi. Gli avvisi non impediscono tuttavia all'utente di eseguire la trasformazione.
La finestra di configurazione della trasformazione EJB contiene sei schede: Destinazioni, Entità, Sessioni, Avanzate, Mappature e Comune. Questa sezione descrive il modo in cui le prime tre schede influenzano la trasformazione EJB.
È possibile utilizzare la scheda Destinazione per selezionare il progetto EJB di destinazione in cui la trasformazione EJB genera i file di output. È possibile creare un nuovo contenitore di destinazione anche se è disponibile un progetto EJB. Ciascun progetto è associato ad un singolo contenitore EJB. La trasformazione EJB supporta tutte le versioni di contenitore EJB disponibili fornite dalla procedura guidata per i progetti EJB.
La versione del contenitore di progetto EJB di destinazione potrebbe limitare le opzioni disponibili nelle schede Entità e Sessione. Per ulteriori informazioni sulle limitazioni di ciascun tipo di contenitore EJB, consultare la sezione Contenitore EJB di destinazione.
È possibile utilizzare la scheda Entità per personalizzare i bean di entità appena generati. È possibile configurare due diverse opzioni sulla scheda Entità: Tipo del bean di entità e Interfaccia bean di entità. La seguente figura mostra la scheda Entità nella finestra di configurazione della trasformazione EJB:
In base alla versione del contenitore EJB nel progetto, è possibile selezionare solo determinate combinazioni di proprietà prima di potere eseguire la trasformazione EJB. La seguente tabella elenca i tipi di bean di entità supportati dalla trasformazione, le interfacce che detti bean di entità supportano e la selezione di interfaccia predefinita:
Versione contenitore EJB |
Tipo di bean di entità |
Interfacce supportate per i bean di entità |
Selezione predefinita |
2.x |
CMP 2.x |
Locale e remota |
Solo le interfacce locali |
2.x |
CMP 1.1 |
Remota |
Solo le interfacce remote |
2.x |
BMP |
Locale e remota |
Solo le interfacce locali |
1.1 |
CMP 2.x |
Nessuna |
N/A |
1.1 |
CMP 1.1 |
Remota |
Solo le interfacce remote |
1.1 |
BMP |
Remota |
Solo le interfacce remote |
Le selezioni predefinite nella tabella riflettono il comportamento predefinito della procedura guidata per la creazione dei bean di entità.
Se si seleziona un'associazione errata di opzioni, viene visualizzato un messaggio di errore all'inizio della finestra di configurazione della trasformazione EJB e il pulsante Esegui che esegue la trasformazione non è disponibile. Quando si seleziona un'associazione valida di opzioni, il pulsante Esegui diventa disponibile e scompare il messaggio di errore.
È possibile utilizzare la scheda Sessione per personalizzare la generazione di interfacce per i bean di sessione appena generati. La seguente figura mostra la scheda Sessione nella finestra di configurazione della trasformazione EJB:
In base alla versione del contenitore EJB nel progetto, è possibile selezionare solo determinate combinazioni di proprietà prima di potere eseguire la trasformazione EJB. La seguente tabella elenca le interfacce supportate dalla trasformazione per i bean di sessione, in base alla versione del contenitore EJB, e la selezione di interfaccia predefinita:
Versione contenitore EJB |
Interfacce supportate per i bean di sessione |
Selezione predefinita |
1.1 |
Remota |
Solo le interfacce remote |
2.0 |
Locale e remota |
Solo le interfacce remote |
2.1 |
Locale e remota |
Solo le interfacce remote |
Se si seleziona un'associazione errata di opzioni, viene visualizzato un messaggio di errore all'inizio della finestra di configurazione della trasformazione EJB e il pulsante Esegui che esegue la trasformazione non è disponibile. Quando si seleziona un'associazione valida di opzioni, il pulsante Esegui diventa disponibile e scompare il messaggio di errore.
Per informazioni sulla scheda Avanzate, consultare la documentazione Trasformazione UML a Java.
Questa sezione descrive come la trasformazione UML a EJB interpreta gli elementi in un modello UML e gli elementi generati dalla trasformazione come output.
La trasformazione UML a EJB interpreta i tipi primitivi nello stesso modo in cui sono interpretati dalla trasformazione UML a Java. Per ulteriori informazioni, consultare la documentazione Trasformazione UML a Java.
La trasformazione UML a EJB interpreta i pacchetti nello stesso modo in cui sono interpretati dalla trasformazione UML a Java: li trasforma in pacchetti Java. Per ulteriori informazioni, consultare la documentazione Trasformazione UML a Java.
La trasformazione UML a EJB interpreta le classi non contrassegnate nello stesso modo in cui sono interpretati dalla trasformazione UML a Java: li trasforma in classi Java. Per ulteriori informazioni, consultare la documentazione Trasformazione UML a Java.
Se una classe non contrassegnata contiene gli attributi i cui tipi sono di classe con uno stereotipo <<entity>>, <<service>> o <<messageprocessor>>, la trasformazione non genera gli attributi. La trasformazione scrive invece un messaggio nel file di log che indica che l'attributo di origine non verrà trasformato.
La trasformazione UML a EJB interpreta le interfacce non contrassegnate nello stesso modo in cui sono interpretati dalla trasformazione UML a Java: li trasforma in interfacce Java. Per ulteriori informazioni, consultare la documentazione Trasformazione UML a Java.
Se un'interfaccia non contrassegnata contiene gli attributi i cui tipi sono di classe con uno stereotipo <<entity>>, <<service>> o <<messageprocessor>>, la trasformazione non genera gli attributi. La trasformazione scrive invece un messaggio nel file di log che indica che l'attributo di origine non verrà trasformato.
La trasformazione UML a EJB interpreta l'enumerazione non contrassegnata nello stesso modo in cui sono interpretati dalla trasformazione UML a Java: li trasforma in interfacce Java. Per ulteriori informazioni, consultare la documentazione Trasformazione UML a Java.
La trasformazione UML a EJB trasforma una classe contrassegnata con lo stereotipo <<entity>> in un bean di entità CMP 2.x, CMP 1.1 oppure BMP con un nome bean uguale al nome della classe UML di origine. Il tipo del bean di entità generato corrisponde all'opzione selezionata dall'utente nella finestra di configurazione della trasformazione EJB, nella scheda Entità.
La trasformazione genera sempre le seguenti classi Java per i bean di entità:
La trasformazione genera le seguenti classi Java quando, nella scheda Entità, si fa clic su Solo interfacce remote:
La trasformazione genera le seguenti classi Java quando, nella scheda Entità, si fa clic su Solo interfacce locali:
La trasformazione genera le seguenti classi Java quando, nella scheda Entità, si fa clic su Interfacce locali e remote:
La trasformazione genera tutte le classi nella cartella del pacchetto generata per il pacchetto principale della classe UML di origine. Se si crea un modello UML senza pacchetti, la trasformazione genera un pacchetto predefinito, nominato ejbs.
La trasformazione genera i file di classe bean e di classe chiave nella struttura ad albero di origine del progetto EJB di destinazione.
La trasformazione genera i quattro file di interfaccia nella struttura ad albero di origine del progetto client del progetto EJB di destinazione. Se non esiste alcun progetto client, la trasformazione genera i file di interfaccia nel progetto EJB di destinazione.
La trasformazione aggiunge i dati che definiscono il bean entità al descrittore di distribuzione (ejb-jar.xml).
Relazioni di generalizzazione
Se la classe UML di origine per il bean di entità ha una relazione di generalizzazione (quale una relazione extends) con un'altra classe UML con lo stereotipo <<entity>>, il bean di entità che la classe rappresenta diventa la superclasse EJB per il bean di entità da generare.
Entrambi i bean di entità devono essere dello stesso tipo. Pertanto, entrambi i bean di entità devono essere CMP 2.x, CMP 1.1 oppure BMP. Ad esempio, se il bean di livello superiore è un bean di entità CMP 2.x, tutti i bean secondari devono essere dei bean di entità CMP 2.x. Se il bean di livello superiore non è dello stesso tipo del bean secondario previsto, la trasformazione genera il bean secondario senza una relazione di generalizzazione.
Relazioni di realizzazione
Se la classe UML di origine per il bean di entità ha delle relazioni di realizzazione (ad esempio delle relazioni implements) con gli elementi di interfaccia, le interfacce rappresentate dalle interfacce di origine sono implementate dalle quattro interfacce (remota, home, locale, home locale).
Attributi non contrassegnati - CMP 2.x
La trasformazione trasforma gli attributi nella classe UML di origine in campi CMP nel bean di entità con le proprietà elencate nella seguente tabella:
Proprietà campo CMP 2.x |
Valore campo CMP |
Nome |
Nome attributo UML, con il primo carattere del nome campo modificato in minuscolo |
Tipo |
Il tipo è stato determinato dal tipo di attributi (Consultare la tabella Mappe tipo.) |
Campo chiave |
False |
Genera il campo nella classe di implementazione del bean |
False |
Genera getter e setter |
True |
Promuove getter e setter alle interfacce locali |
True (se l'interfaccia locale esiste) |
Promuove getter e setter alle interfacce remote |
True (se l'interfaccia remota esiste) |
IsArray |
True se l'attributo UML ha un valore superiore finito |
Se il tipo di attributo è quello di un altro bean di entità CMP 2.x, la trasformazione non trasforma l'attributo in un campo CMP ma presume che l'attributo sia parte di un'associazione che deve essere trasformata in una relazione EJB. Tuttavia, se il tipo di attributo è quello di un altro bean enterprise che non è un bean di entità CMP 2.x, la trasformazione non trasforma l'attributo in un'associazione o un campo CMP. La trasformazione scrive invece un messaggio nel file di log che indica che l'attributo di origine non verrà trasformato.
Attributi non contrassegnati - CMP 1.1
La trasformazione trasforma gli attributi nella classe UML di origine in campi CMP nel bean di entità con le proprietà elencate nella seguente tabella:
Proprietà campo CMP 1.1 |
Valore campo CMP |
Nome |
Nome attributo UML, con il primo carattere del nome campo modificato in minuscolo |
Tipo |
Il tipo è stato determinato dal tipo di attributi (Consultare la tabella Mappe tipo.) |
Campo chiave |
False |
Genera il campo nella classe di implementazione del bean |
False |
Genera getter e setter |
True |
Promuove getter e setter alle interfacce locali |
False |
Promuove getter e setter alle interfacce remote |
True (sempre) |
IsArray |
True se l'attributo UML ha un valore superiore finito |
Se il tipo di attributo è quello di un altro bean di entità o bean enterprise, la trasformazione non trasforma l'attributo in un'associazione o un campo CMP. La trasformazione scrive invece un messaggio nel file di log che indica che l'attributo di origine non verrà trasformato.
Attributi non contrassegnati - BMP
La trasformazione trasforma gli attributi nella classe UML di origine in campi BMP nel bean di entità con le proprietà elencate nella seguente tabella:
Proprietà campo BMP |
Valore campo BMP |
Nome |
Nome attributo UML, con il primo carattere del nome campo modificato in minuscolo |
Tipo |
Il tipo è stato determinato dal tipo di attributi (Consultare la tabella Mappe tipo.) |
Campo chiave |
False |
Genera il campo nella classe di implementazione del bean |
True |
Genera getter e setter |
True |
Promuove getter e setter alle interfacce locali |
True (se l'interfaccia locale esiste) |
Promuove getter e setter alle interfacce remote |
True (se l'interfaccia remota esiste) |
IsArray |
True se l'attributo UML ha un valore superiore finito |
Se il tipo di attributo è quello di un altro bean di entità o EJB, la trasformazione non trasforma l'attributo in un'associazione o un campo BMP. La trasformazione scrive invece un messaggio nel file di log che indica che l'attributo di origine non verrà trasformato.
Attributi <<id>> - CMP 2.x e CMP 1.1
La trasformazione trasforma anche gli attributi sulla classe UML di origine contrassegnati con l'attributo <<id>> in campi CMP, ma con dei valori di proprietà differenti, come elencato nella seguente tabella. Questi campi CMP consentono la formazione della chiave principale.
Proprietà campo CMP 2.x e CMP 1.1 |
Valore campo CMP |
Nome |
Nome attributo UML, con il primo carattere del nome campo modificato in minuscolo |
Tipo |
Il tipo è stato determinato dal tipo di attributi (Consultare la tabella Mappe tipo.) |
Campo chiave |
True |
Genera il campo nella classe di implementazione del bean |
False |
Genera getter e setter |
True |
Promuove getter e setter alle interfacce locali |
False |
Promuove getter e setter alle interfacce remote |
False |
IsArray |
True se l'attributo UML ha un valore superiore finito |
Se il tipo di attributo è quello di un altro bean di entità o bean enterprise, la trasformazione non trasforma l'attributo in un'associazione o un campo chiave CMP. La trasformazione scrive invece un messaggio nel file di log che indica che l'attributo di origine non verrà trasformato.
Attributi <<id>> - BMP
La trasformazione trasforma anche gli attributi sulla classe UML di origine contrassegnati con l'<<id>> in campi BMP, ma con dei valori di proprietà differenti, come elencato nella seguente tabella. Questi campi BMP consentono la formazione della chiave principale.
Proprietà campo BMP |
Valore campo BMP |
Nome |
Nome attributo UML, con il primo carattere del nome campo modificato in minuscolo |
Tipo |
Il tipo è stato determinato dal tipo di attributi (Consultare la tabella Mappe tipo.) |
Campo chiave |
True |
Genera il campo nella classe di implementazione del bean |
True |
Genera getter e setter |
True |
Promuove getter e setter alle interfacce locali |
False |
Promuove getter e setter alle interfacce remote |
False |
IsArray |
True se l'attributo UML ha un valore superiore finito |
Se il tipo di attributo è quello di un altro bean di entità o bean enterprise, la trasformazione non trasforma l'attributo in un'associazione o un campo chiave BMP. La trasformazione scrive invece un messaggio nel file di log che indica che l'attributo di origine non verrà trasformato.
Come illustrato dalla seguente tabella, la trasformazione genera i campi CMP e BMP con i tipi basati sul tipo dell'attributo di origine:
Tipo attributo UML |
Tipo campo CMP/BMP |
booleano |
booleano |
byte |
byte |
char |
char |
float |
float |
int |
int |
lungo |
lungo |
breve |
breve |
Booleano |
java.lang.Boolean |
Byte |
java.lang.Byte |
Char |
java.lang.Char |
Float |
java.lang.Float |
Intero |
java.lang.Integer |
Lungo |
java.lang.Long |
Breve |
java.lang.Short |
Stringa |
java.lang.String |
altro |
Nome completo |
Operazioni non contrassegnate
La trasformazione trasforma le operazioni non contrassegnate nella classe UML di origine in metodi aziendali nel bean entità. Inizialmente, l'operazione viene trasformata in modo analogo ad un'operazione su una classe UML non contrassegnata. La trasformazione rispetta la denominazione in minuscolo creando il primo carattere del nome di metodo in minuscolo se è un carattere in maiuscolo valido. L'operazione trasformata viene aggiunta alle classi elencate nella seguente tabella, con qualche modifica.
Classe |
Modifiche metodo |
Classe bean |
Nessuna modifica |
Interfaccia locale |
Metodo interfaccia |
Interfaccia remota |
Il metodo interfaccia trasmette java.rmi.RemoteException |
Operazioni <<query>> - CMP 2.x
La trasformazione trasforma le operazioni di <<query>> nella classe UML di origine in una dei due tipi di metodi query: metodo finder e metodo select. I metodi select esistono solo nei bean di entità CMP 2.x.
La trasformazione genera i metodi finder nelle classi elencate nella seguente tabella, con qualche modifica:
Classe |
Modifiche metodo |
Interfaccia home locale (se le interfacce locali esistono) |
|
Interfaccia home remota (se le interfacce remote esistono) |
|
Nome operazione UML |
Nome metodo finder |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
Tipo di restituzione transform parsed Java |
Tipo di restituzione metodo finder |
Raccolta associata (quale Collection, List, Set e così via) |
java.util.Collection |
<nome classe origine>[] |
java.util.Collection |
<nome classe origine> OPPURE nullo |
|
<nome tipo definito dall'utente>[] |
java.util.Collection |
<nome classe non di origine (ad esempio, String, Integer e così via)>[] |
java.util.Collection |
<nome tipo definito dall'utente> |
Generare un metodo select invece di un metodo finder |
<non classe non di origine (ad esempio, String, Integer e così via)> |
Generare un metodo select invece di un metodo finder |
La trasformazione EJB crea un'attività che indica che occorre aggiungere manualmente una query al descrittore di distribuzione per ciascun metodo finder generato.
La trasformazione trasforma un'operazione query in un metodo select se la visibilità sull'operazione è privata oppure se il tipo di restituzione è diverso dal nome della classe UML di origine ed il tipo del bean di entità è CMP 2.x.
Visibilità operazione |
Tipo di restituzione |
Tipo metodo |
Privato |
Uguale al nome della classe di origine |
Seleziona metodo |
Nessun privato |
Uguale al nome della classe di origine |
Metodo utilità di ricerca |
Privato |
Non il nome della classe di origine |
Seleziona metodo |
Nessun privato |
Non il nome della classe di origine |
Seleziona metodo |
La trasformazione genera i metodi select nella classe bean, con le seguenti modifiche:
Nome operazione UML |
Nome del metodo Select |
xxx |
ejbSelectXxx |
selectXxx |
ejbSelectXxx |
SelectXxx |
ejbSelectXxx |
ejbSelectXxx |
ejbSelectXxx |
Tipo di restituzione transform parsed Java |
Tipo di restituzione metodo select |
Raccolta associata (quale Collection, List, Set e così via) |
Nome completo del tipo di raccolta (ad esempio, java.util.Collection) |
<nome classe origine>[] |
java.util.Collection |
<nome classe origine> OPPURE nullo |
Nome interfaccia locale |
<nome tipo definito dall'utente>[] |
java.util.Collection |
<nome classe non di origine (ad esempio, String, Integer e così via)>[] |
java.util.Collection |
<nome tipo definito dall'utente> |
Nome tipo definito dall'utente |
<non classe non di origine (ad esempio, String, Integer e così via)> |
Nome classe non di origine |
La trasformazione EJB crea un'attività che indica che occorre aggiungere manualmente una query al descrittore di distribuzione per ciascun metodo select generato.
operazioni <<query>> - CMP 1.1
La trasformazione trasforma le operazioni <<query>> sulla classe UML di origine in uno tipo di metodo query: i metodi finder. I bean di entità CMP 1.1 non supportano i metodi select, poiché essi sono disponibili solo per i bean di entità CMP 2.x. Pertanto, indipendentemente dal tipo di restituzione e dalla visibilità dell'operazione <<query>>, la trasformazione genera sempre un metodo finder nell'interfaccia home remota del bean di entità.
Come illustrato dalla seguente tabella, la trasformazione genera sempre metodi finder nell'interfaccia home remota, con qualche modifica:
Classe |
Modifiche metodo |
Interfaccia home remota |
|
Nome operazione UML |
Nome metodo finder |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
Tipo di restituzione transform parsed Java |
Tipo di restituzione metodo finder |
Raccolta associata (quale Collection, List, Set e così via) |
java.util.Collection |
<nome classe origine>[] |
java.util.Collection |
<nome classe origine> OPPURE nullo |
Nome interfaccia remota |
<nome tipo definito dall'utente>[] |
java.util.Collection |
<nome classe non di origine (ad esempio String, Integer e così via)>[] |
java.util.Collection |
<nome tipo definito dall'utente> |
Nome interfaccia remota |
<non classe non di origine (ad esempio, String, Integer e così via)> |
Nome interfaccia remota |
La trasformazione EJB crea un'attività che indica che occorre aggiungere manualmente una query al descrittore di distribuzione per ciascun metodo finder generato.
operazioni <<query>> - BMP
La trasformazione trasforma le operazioni <<query>> sulla classe UML di origine in uno tipo di metodo query: i metodi finder. I bean di entità BMP di qualsiasi versione non supportano i metodi select poiché sono disponibili solo per i bean di entità CMP 2.x. Pertanto, indipendentemente dal tipo di restituzione e dalla visibilità dell'operazione <<query>>, la trasformazione genera sempre un metodo finder nella classe di implementazione del bean. La trasformazione genera quindi i metodi finder nelle interfacce esistenti del bean di entità.
Come illustrato dalla seguente tabella, la trasformazione genera i metodi finder nelle seguenti classi, con qualche modifica:
Classe |
Modifiche metodo |
Interfaccia home locale |
|
Interfaccia home remota (se le interfacce remote esistono) |
|
Classe di implementazione del bean |
|
Nome operazione UML |
Nome metodo finder |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
ejbFindXxx |
findEjbFindXxx |
EjbFindXxx |
findEjbFindXxx |
Nome operazione UML |
Nome metodo finder |
xxx |
ejbFindXxx |
findXxx |
ejbFindXxx |
FindXxx |
ejbFindXxx |
ejbFindXxx |
ejbFindEjbFindXxx |
EjbFindXxx |
ejbFindEjbFindXxx |
Tipo di restituzione transform parsed Java |
Tipo di restituzione metodo finder |
Raccolta associata (quale Collection, List, Set e così via) |
java.util.Collection |
<nome classe origine>[] |
java.util.Collection |
<nome classe origine> OPPURE nullo |
|
<nome tipo definito dall'utente>[] |
java.util.Collection |
<nome classe non di origine (ad esempio, String, Integer e così via)>[] |
java.util.Collection |
<nome tipo definito dall'utente> |
|
<non classe non di origine (ad esempio, String, Integer e così via)> |
|
Tipo di restituzione transform parsed Java |
Tipo di restituzione metodo finder |
Raccolta associata (quale Collection, List, Set e così via) |
java.util.Collection |
<nome classe>[] |
java.util.Collection |
<nome classe> OPPURE nullo |
Nome classe chiave |
Classi interne
Ignorato.
Interfacce interne
Ignorato.
La trasformazione UML a EJB trasforma una classe con lo stereotipo <<service>> in un bean di sessione gestito dal contenitore, senza stato o con stato con un nome bean uguale al nome della classe UML di origine. La trasformazione genera sempre le seguenti classi Java per i bean di sessione:
La trasformazione genera le seguenti classi Java quando, nella scheda Sessioni, si fa clic su Solo interfacce remote:
La trasformazione genera le seguenti classi Java quando, nella scheda Sessioni, si fa clic su Solo interfacce locali:
La trasformazione genera le seguenti classi Java quando, nella scheda Sessioni, si fa clic su Interfacce locali e remote:
La trasformazione genera tutte le classi nella cartella del pacchetto generata per il pacchetto principale della classe UML di origine. Se si crea un modello UML senza pacchetti, la trasformazione crea un pacchetto predefinito, nominato ejbs.
La trasformazione genera il file della classe bean nella struttura ad albero del progetto EJB di destinazione.
La trasformazione genera i quattro file di interfaccia nella struttura ad albero di origine del progetto client del progetto EJB di destinazione. Se non esiste alcun progetto client, la trasformazione genera i file di interfaccia nel progetto EJB di destinazione.
La trasformazione aggiunge i dati che definiscono i bean di sessione per il descrittore di distribuzione (ejb-jar.xml).
Proprietà di stereotipo - hasState
Ciascuna classe UML con uno stereotipo <<service>> ha una proprietà stereotipo denominata hasState. Quando il valore di hasState è false, la trasformazione genera detta classe UML come un bean di sessione senza stato. Quando invece il valore di hasState è true, la trasformazione genera la classe UML come un bean di sessione con stato.
Nota: La proprietà stereotipo influenza solo le classi UML che la trasformazione genera come nuovi bean di sessione.
Per impostazione predefinita, la proprietà hasState ha un valore di false, che è congruente con le impostazioni predefinite nella procedura guidata per la creazione di bean di sessione.
Relazioni di generalizzazione
Se la classe UML di origine per il bean di sessione ha una relazione di generalizzazione (come ad esempio una relazione extends) con un'altra classe UML con lo stereotipo <<service>>, e detto stereotipo ha lo stesso valore di proprietà hasState, il bean di sessione rappresentato dalla classe diventa la superclasse EJB per il bean di sessione da generare.
Relazioni di realizzazione
Se la classe UML di origine per il bean di sessione ha delle relazioni di realizzazione (ad esempio delle relazioni implements) con gli elementi di interfaccia, le interfacce rappresentate dalle interfacce di origine sono implementate dalle quattro interfacce (remota, home, locale, home locale).
Attributi
La trasformazione trasforma gli attributi della classe UML di origine in proprietà Java nella classe bean. Per ulteriori informazioni su come sono trasformati gli attributi, consultare la documentazione Trasformazione UML a Java. La trasformazione rispetta la denominazione in minuscolo creando il primo carattere del nome della proprietà in minuscolo se è un carattere in maiuscolo valido.
Se il tipo dell'attributo è di un altro bean enterprise, la trasformazione EJB non genera un campo ed un'associazione per il bean di sessione. La trasformazione scrive invece un messaggio nel file di log che indica che l'attributo di origine non verrà trasformato.
Operazioni
La trasformazione trasforma le operazioni nella classe UML di origine in metodi aziendali sul bean di sessione. Inizialmente, l'operazione viene trasformata in modo analogo ad un'operazione su una classe UML non contrassegnata. Latrasformazione rispetta la denominazione in minuscolo creando il primo carattere del nome di metodo in minuscolo se è un carattere in maiuscolo valido. L'operazione trasformata viene aggiunta alle classi elencate nella seguente tabella, con qualche modifica.
Classe |
Modifiche metodo |
Classe bean |
Nessuna modifica |
Interfaccia locale |
Metodo interfaccia |
Interfaccia remota |
Il metodo interfaccia trasmette java.rmi.RemoteException |
La trasformazione si applica alle seguenti regole per determinare il tipo di restituzione dell'operazione in base ai parametri dell'operazione:
o L'operazione ha i parametri di output e di restituzione
o L'operazione ha più parametri di output
Classi interne
Ignorato.
Interfacce interne
Ignorato.
La trasformazione UML a EJB trasforma una classe con lo stereotipo <<messageprocessor>> in un bean basato sui messaggi con un nome bean uguale al nome della classe UML di origine e con i dati predefiniti. La trasformazione genera la seguente classe Java:
La trasformazione genera la classe nella cartella del pacchetto generata per il pacchetto principale della classe UML di origine. Se si crea un modello UML senza pacchetti, la trasformazione crea un pacchetto predefinito, nominato ejbs.
La trasformazione genera il file della classe bean nella struttura ad albero del progetto EJB di destinazione.
La trasformazione aggiunge dati che definiscono il bean basato sui messaggi al descrittore di distribuzione (ejb-jar.xml).
Relazioni di generalizzazione
Se la classe UML di origine per il bean di entità ha una relazione di generalizzazione (quale una relazione extends) con un'altra classe UML con lo stereotipo <<messageprocessor>>, il bean guidato da messaggi che la classe rappresenta diventa la superclasse EJB per il bean di entità da generare.
Relazioni di realizzazione
Ignorato.
Attributi
La trasformazione trasforma gli attributi della classe UML di origine in proprietà Java nella classe bean. Per ulteriori informazioni su come sono trasformati gli attributi, consultare la documentazione Trasformazione UML a Java. Se il tipo dell'attributo è di un altro bean enterprise, la trasformazione EJB non genera un campo ed un'associazione per il bean di sessione. La trasformazione scrive invece un messaggio nel file di log che indica che l'attributo di origine non verrà trasformato.
Operazioni
La trasformazione trasforma le operazioni sulla classe UML di origine in metodi Java tipici, come se il bean basato sui messaggi fosse una classe Java.
Classi interne
Ignorato.
Interfacce interne
Ignorato.
Di norma, la trasformazione trasforma le associazioni nello stesso modo della trasformazione UML a Java: trasforma gli attributi endpoint in proprietà Java.
Se un endpoint dell'associazione è una classe con uno stereotipo <<entity>>, <<service>> oppure <<messageprocessor>>, la trasformazione non trasforma detto endpoint. La trasformazione scrive invece un messaggio nel file di log nella directory dei metadati che indica che la proprietà endpoint non è stata trasformata. L'eccezione a questa ricorrenza è quando l'associazione si trova tra due classi con stereotipi <<entity>> ed entrambe le classi vengono generate come dei bean CMP 2.x. La trasformazione trasforma quindi l'associazione UML in una relazione EJB 2.0, che è nota anche come CMR (container-managed relationship). La seguente tabella illustra le associazioni tra le proprietà di associazione e le proprietà di relazione EJB:
Proprietà associazione |
Proprietà relazione EJB |
End1 |
BeanA |
End2 |
BeanB |
Nome End1 |
Nome CMR BeanB |
Nome End2 |
Nome CMR BeanA |
Navigabilità End1 |
Navigabilità BeanB |
Navigabilità End2 |
Navigabilità BeanA |
|
|
|
|
La seguente figura illustra due classi UML con gli stereotipi <<entity>>. L'associazione tra le classi viene generata in una CMR se la trasformazione genera entrambe le classi di entità come dei bean di entità CMP 2.x.
Dopo che si è verificata la trasformazione, il descrittore della distribuzione ha una voce per descrivere la CMR tra AEntity e BEntity. Come illustrato dalla seguente figura, il descrittore della distribuzione del progetto può visualizzare l'associazione tra i due bean di entità CMP 2.x:
La seguente tabella elenca come la trasformazione converte le dipendenze e genera i riferimenti EJB per le classi con uno stereotipo <<entity>>, <<service>> o <<messageprocessor>>.
Origine della dipendenza UML |
Destinazione della dipendenza UML |
Destinazione EJB |
Classe <<entity>> |
Classe <<entity>> |
Riferimento EJB |
Classe <<entity>> |
Classe <<service>> |
Riferimento EJB |
Classe <<messageprocessor>> |
Classe <<entity>> |
Riferimento EJB |
Classe <<messageprocessor>> |
Classe <<service>> |
Riferimento EJB |
Classe <<service>> |
Classe <<entity>> |
Riferimento EJB |
Classe <<service>> |
Classe <<service>> |
Riferimento EJB |
Quando un progetto J2EE (Java 2 Platform, Enterprise Edition) di destinazione include almeno un bean con lo stesso nome e spazio dei nomi di una classe UML nella trasformazione, si può verificare uno scenario di riapplicazione. Uno scenario di riapplicazione fa riferimento a quando il tipo del bean enterprise esistente corrisponde al tipo del bean enterprise da generare per la classe corrispondente nel modello UML.
Quando il tipo del bean enterprise da generare è incompatibile con il tipo del bean enterprise esistente, si verifica uno scenario di conflitto. In uno scenario di conflitto, la trasformazione UML a EJB non aggiorna il bean esistente e non genera un nuovo bean enterprise.
La seguente tabella elenca la risposta prevista della trasformazione a possibili scenari di riapplicazione per i bean di entità CMP 2.x:
Bean enterprise da generare |
Bean Enterprise esistente |
Scenario previsto |
Risposta della trasformazione |
CMP 2.x |
CMP 2.x |
Riapplicazione |
Aggiornare i campi ed i metodi CMP |
CMP 2.x |
CMP 1.1 |
Riapplicazione |
Aggiornare i campi ed i metodi campi CMP come se fosse uno scenario di riapplicazione da CMP 1.1 a CMP 1.1 regolare |
CMP 2.x |
BMP |
Riapplicazione |
Aggiornare i campi ed i metodi BMP come se fosse uno scenario di riapplicazione da BMP a BMP regolare |
CMP 2.x |
Sessione (con o senza stato) |
Conflitto |
Non modificare il bean di sessione |
CMP 2.x |
Basato sui messaggi |
Conflitto |
Non modificare il bean basato sui messaggi |
La seguente tabella elenca la risposta prevista della trasformazione a possibili scenari di riapplicazione per i bean di entità CMP 1.1:
Bean enterprise da generare |
Bean Enterprise esistente |
Scenario previsto |
Risposta della trasformazione |
CMP 1.1 |
CMP 2.x |
Riapplicazione |
Aggiornare i campi ed i metodi CMP come se fosse uno scenario di riapplicazione da CMP 2.x a CMP 2.x regolare |
CMP 1.1 |
CMP 1.1 |
Riapplicazione |
Aggiornare i campi ed i metodi CMP |
CMP 1.1 |
BMP |
Riapplicazione |
Aggiornare i campi, i metodi e le associazioni BMP come se fosse uno scenario di riapplicazione da BMP a BMP regolare |
CMP 1.1 |
Sessione (con o senza stato) |
Conflitto |
Non modificare il bean di sessione |
CMP 1.1 |
Basato sui messaggi |
Conflitto |
Non modificare il bean basato sui messaggi |
La seguente tabella elenca la risposta prevista della trasformazione a possibili scenari di riapplicazione per i bean di entità BMP:
Bean enterprise da generare |
Bean Enterprise esistente |
Scenario previsto |
Risposta della trasformazione |
BMP |
CMP 2.x |
Riapplicazione |
Aggiornare i campi ed i metodi CMP come se fosse uno scenario di riapplicazione da CMP 2.x a CMP 2.x regolare |
BMP |
CMP 1.1 |
Riapplicazione |
Aggiornare i campi ed i metodi CMP come se fosse uno scenario di riapplicazione da CMP 1.1 a CMP 1.1 regolare |
BMP |
BMP |
Riapplicazione |
Aggiornare i campi ed i metodi BMP |
BMP |
Sessione (con o senza stato) |
Conflitto |
Non modificare il bean di sessione |
BMP |
Basato sui messaggi |
Conflitto |
Non modificare il bean basato sui messaggi |
La seguente tabella elenca la risposta prevista della trasformazione a possibili scenari di riapplicazione per i bean di sessione:
Bean enterprise da generare |
Bean Enterprise esistente |
Scenario previsto |
Risposta della trasformazione |
Sessione (con o senza stato) |
CMP 2.x |
Conflitto |
Non modificare il bean CMP 2.x |
Sessione (con o senza stato) |
CMP 1.1 |
Conflitto |
Non modificareil bean CMP 1.1 |
Sessione (con o senza stato) |
BMP |
|
Non modificare il bean BMP |
Sessione (con stato) |
Sessione (solo con stato) |
Riapplicazione |
Aggiornare i campi ed i metodi del bean di sessione |
Sessione (con stato) |
Sessione (solo senza stato) |
Conflitto |
Non modificare il bean di sessione senza stato |
Sessione (senza stato) |
Sessione (solo con stato) |
Conflitto |
Non modificare il bean di sessione con stato |
Sessione (senza stato) |
Sessione (solo senza stato) |
Riapplicazione |
Aggiornare i campi ed i metodi del bean di sessione |
Sessione (con o senza stato) |
Basato sui messaggi |
Conflitto |
Non modificare il bean basato sui messaggi |
La seguente tabella elenca la risposta prevista della trasformazione a possibili scenari di riapplicazione per i bean guidati da messaggi:
Bean enterprise da generare |
Bean Enterprise esistente |
Scenario previsto |
Risposta della trasformazione |
Basato sui messaggi |
CMP 2.x |
Conflitto |
Non modificare il bean basato sui messaggi |
Basato sui messaggi |
CMP 1.1 |
Conflitto |
Non modificare il bean basato sui messaggi |
Basato sui messaggi |
BMP |
Conflitto |
Non modificare il bean basato sui messaggi |
Basato sui messaggi |
Sessione (con o senza stato) |
Conflitto |
Non modificare il bean basato sui messaggi |
Basato sui messaggi |
Basato sui messaggi |
Riapplicazione |
Aggiornare i campi ed i metodi del bean basato sui messaggi |
La seguente tabella elenca la risposta prevista della trasformazione a possibili scenari di riapplicazione per le classi UML non contrassegnate:
Stereotipo sulla classe UML |
Bean Enterprise esistente |
Scenario previsto |
Risposta della trasformazione |
Non contrassegnato |
CMP 2.x |
Riapplicazione |
Aggiornare i campi ed i metodi del bean di entità CMP 2.x nella sua interfaccia remota esistente |
Non contrassegnato |
CMP 1.1 |
Riapplicazione |
Aggiornare i campi ed i metodi del bean di entità CMP 1.1 nella sua interfaccia remota esistente |
Non contrassegnato |
BMP |
Riapplicazione |
Aggiornare i campi ed i metodi del bean di entità BMP nella sua interfaccia remota esistente |
Non contrassegnato |
Sessione (con o senza stato) |
Riapplicazione |
Aggiornare i campi ed i metodi della sessione nella sua interfaccia remota esistente |
Non contrassegnato |
Basato sui messaggi |
Riapplicazione |
Generare una tipica classe Java |
Negli scenari di riapplicazione per le classi UML non contrassegnate, gli aggiornamenti del codice per l'interfaccia remota del bean enterprise esistente causano degli errori di generazione nel progetto EJB. Questi errori di generazione si verificano perché il codice aggiornato nell'interfaccia remota non è conforme alle specifiche EJB per le interfacce remote. Se si intende sovrascrivere l'intero bean enterprise, occorre rimuovere il bean enterprise esistente prima di eseguire la trasformazione EJB.
Questa sezione tratta in maniera più dettagliata come la trasformazione risponde ad uno scenario di riapplicazione e fornisce ulteriori informazioni su cosa aspettarsi dalla trasformazione in seguito ad una riapplicazione.
Se si verifica uno scenario di riapplicazione per un bean di entità CMP 2.x, è possibile che si verifichino le seguenti modifiche:
Non si verificano le seguenti modifiche:
Se si verifica uno scenario di riapplicazione per un bean di entità CMP 1.1, potrebbero verificarsi le seguenti modifiche:
Non si verificano le seguenti modifiche:
Se si verifica uno scenario di riapplicazione per un bean di entità BMP, potrebbero verificarsi le seguenti modifiche:
Non si verificano le seguenti modifiche:
Se si verifica uno scenario di riapplicazione per un bean di sessione, potrebbero verificarsi le seguenti modifiche:
Non si verificano le seguenti modifiche:
Se si verifica uno scenario di riapplicazione per un bean guidati da messaggi, potrebbero verificarsi le seguenti modifiche:
Non si verificano le seguenti modifiche:
La seguente tabella elenca come la trasformazione UML a EJB elabora le relazioni:
Elemento di origine UML |
Elemento di destinazione visualizzato |
Tipo di relazione |
Risultato della trasformazione |
Classe con lo stereotipo <<entity>> o <<service>> |
Interfaccia Java (interfaccia UML) |
Implementazione |
I bean enterprise generati implementano l'interfaccia visualizzata |
Classe con lo stereotipo <<entity>> o <<service>> |
Interfaccia Java (interfaccia UML) |
Realizzazione |
I bean enterprise generati implementano l'interfaccia visualizzata |
Classe con lo stereotipo <<entity>> |
Bean di entità visualizzati (componente UML) |
Associazione |
Relazione CMR |
Classe con lo stereotipo <<entity>>, <<service>> o <<messageprocessor>> |
Bean di sessione o bean di entità visualizzati (componente UML) |
Dipendenza |
Riferimento EJB |
La trasformazione UML a EJB supporta l'integrazione con la funzionalità del team. Quando si esegue una trasformazione con un progetto di destinazione in un ambiente con controllo dell'origine, il sistema richiede di aggiungere nuovi file al controllo dell'origine e di estrarre i file esistenti.
La trasformazione UML a EJB fornisce un supporto di mappatura simile a quello fornito dalla trasformazione UML a Java. Per le informazioni su come impostare e utilizzare il modello di mappatura per eseguire una trasformazione, consultare la documentazione Trasformazione UML a Java.
Quando le classi di origine sono contrassegnate per la trasformazione in bean enterprise, la trasformazione utilizza il nome mappato della classe di origine come nome del bean per il bean enterprise generato.
Se la funzione Genera relazioni origine-destinazione è abilitata, la trasformazione aggiunge delle tag alla documentazione delle interfacce API delle interfacce e delle classi Java generate. Le tag contengono delle informazioni che abilitano le funzioni a determinare la traccia dei file generati fino all'elemento di origine UML originale.
Per i bean enterprise generati, tutti i file Java generati dalla trasformazione per un bean enterprise hanno delle tag di documentazione relativa alle interfacce API di origine-destinazione puntate alla classe di origine UML singola.
Termini di
utilizzo | Feedback
(C) Copyright IBM Corporation 2004, 2005. Tutti i diritti riservati.