Trasformazione UML a EJB

 

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.

 

Dettagli della trasformazione

 

Origine della trasformazione

Destinazione della trasformazione

Contenitore EJB di destinazione

Profilo di trasformazione EJB

Schede della configurazione della trasformazione UML a EJB

Scheda Destinazioni

Scheda Entità

Scheda Sessioni

Scheda Avanzate

Interpretazione degli oggetti di origine

Tipi primitivi

Pacchetti

classi non contrassegnate

Interfacce non contrassegnate

Enumerazione non contrassegnata

Classi <<entity>>

Classi <<service>>

Classi <<messageprocessor>>

Associazioni

Riferimenti EJB

Scenari di riapplicazione

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

Mappatura trasformazione

Relazioni origine-destinazione

 

 

Origine della trasformazione

È 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.

 

Destinazione della trasformazione

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.

 

Contenitore EJB di destinazione

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

  • Impossibile generare i bean CMP 2.x
  • I bean CMP 1.1 devono essere generati solo con interfacce remote
  • I bean BMP (Bean-managed persistence) devono essere generati solo con le interfacce remote
  • I bean di sessione devono essere generati solo con le interfacce remote
  • Impossibile generare i bean guidati da messaggi

 

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.

 

Profilo di trasformazione EJB

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.

 

Schede della configurazione della trasformazione UML a EJB

 

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.

 

Scheda Destinazioni

 

È 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.

 

Scheda Entità

È 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.

 

Scheda Sessioni

È 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.

 

Scheda Avanzate

Per informazioni sulla scheda Avanzate, consultare la documentazione Trasformazione UML a Java.

 

Interpretazione degli oggetti di origine

Questa sezione descrive come la trasformazione UML a EJB interpreta gli elementi in un modello UML e gli elementi generati dalla trasformazione come output.

Tipi primitivi

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.

 

Pacchetti

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.

 

Classi non contrassegnate

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.

Interfacce non contrassegnate

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.

Enumerazione non contrassegnata

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.

 

Classi <<entity>>

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.

 

Associazione tipi campi CMP e BMP

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)

  • None di findXxx (Consultare la tabella Nome finder.)
  • Trasmette javax.ejb.FinderException
  • Rileva java.rmi.RemoteException

 

Nome finder

 

Nome operazione UML

Nome metodo finder

xxx

findXxx

findXxx

findXxx

FindXxx

findXxx

 

Tipo di restituzione finder dell'interfaccia home

 

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 locale
  • 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>

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 select

 

Nome operazione UML

Nome del metodo Select

xxx

ejbSelectXxx

selectXxx

ejbSelectXxx

SelectXxx

ejbSelectXxx

ejbSelectXxx

ejbSelectXxx

 

Tipo di restituzione select

 

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 del finder dell'interfaccia home remota

 

Nome operazione UML

Nome metodo finder

xxx

findXxx

findXxx

findXxx

FindXxx

findXxx

 

Tipo di restituzione finder interfaccia home remota

 

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
(se le interfacce locali esistono)

Interfaccia home remota

(se le interfacce remote esistono)

Classe di implementazione del bean

 

Nome finder interfaccia home

 

Nome operazione UML

Nome metodo finder

xxx

findXxx

findXxx

findXxx

FindXxx

findXxx

ejbFindXxx

findEjbFindXxx

EjbFindXxx

findEjbFindXxx

 

Nome finder classe bean

 

Nome operazione UML

Nome metodo finder

xxx

ejbFindXxx

findXxx

ejbFindXxx

FindXxx

ejbFindXxx

ejbFindXxx

ejbFindEjbFindXxx

EjbFindXxx

ejbFindEjbFindXxx

 

Tipo di restituzione finder interfaccia home

 

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 locale
  • 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 locale
  • Nome interfaccia remota

<non classe non di origine (ad esempio, String, Integer e così via)>

  • Nome interfaccia locale
  • Nome interfaccia remota

 

Tipo di restituzione finder classe bean

 

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.

 

Classi <<service>>

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:

 

Classi interne

Ignorato.

 

Interfacce interne

Ignorato.

 

Classi <<messageprocessor>>

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.

 

Associazioni

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

  • Valore superiore End1 = 1
  • Valore superiore End1 = -1
  • Molteplicità BeanB = 1
  • Molteplicità BeanB = -1, Tipo CMR BeanA = java.lang.Collection
  • Valore superiore End2 = 1
  • Valore superiore End2 = -1
  • Molteplicità BeanA = 1
  • Molteplicità BeanA = -1, Tipo CMR BeanB = java.lang.Collection

 

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:

 

 

 

 

 

Riferimenti EJB

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

 

 

 

 

Scenari di riapplicazione

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.

 

Spiegazione dettagliata della risposta della trasformazione

 

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.

 

Bean di entità CMP 2.x

 

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:

 

Bean di entità CMP 1.1

 

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:

 

 

Bean di entità BMP

 

Se si verifica uno scenario di riapplicazione per un bean di entità BMP, potrebbero verificarsi le seguenti modifiche:

 

Non si verificano le seguenti modifiche:

 

Bean di sessione con o senza stato

 

Se si verifica uno scenario di riapplicazione per un bean di sessione, potrebbero verificarsi le seguenti modifiche:

 

Non si verificano le seguenti modifiche:

 

Bean guidati da messaggi

 

Se si verifica uno scenario di riapplicazione per un bean guidati da messaggi, potrebbero verificarsi le seguenti modifiche:

 

Non si verificano le seguenti modifiche:

 

Supporto per elaborare relazioni tra gli elementi UML e classi Java o bean enterprise visualizzate

 

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

 

Supporto per le tecnologie di trasformazione comune

 

Integrazione con la funzionalità del team

 

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.

Mappatura trasformazione

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.

Relazioni origine-destinazione

 

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.