Transformação de UML para EJB

 

A transformação de UML para EJB transforma elementos de modelo UML (Unified Modeling Language) em beans corporativos e código Java. A transformação de UML para EJB é igual à Transformação de UML para Java, exceto que também pode gerar beans corporativos de elementos UML que são marcados com estereótipos a partir do perfil da transformação EJB.

 

Você deve estar familiarizado com a Transformação de UML para Java antes de utilizar a transformação de UML para EJB.

 

Detalhes da Transformação

 

Origem da Transformação

Destino da Transformação

Contêiner EJB de Destino

Perfil da Transformação EJB

Guias de Configuração da Transformação de UML para EJB

Guia Destino

Guia Entidade

Guia Sessão

Guia Avançado

Interpretação de Objetos de Origem

Tipos Primitivos

Pacotes

Classes Não Marcadas

Interfaces Não Marcadas

Enumeração Não Marcada

Classes <<entity>>

Classes <<service>>

Classes <<messageprocesso>>

Associações

Referências EJB

Reaplicação de Cenários

Suporte para Processar Relacionamentos entre Elementos de UML e Beans Corporativos Visualizados ou Classes Java

Suporte para Tecnologias de Transformação Comuns

Integração com a Funcionalidade de Equipe

Mapeamento da Transformação

Relacionamentos de Origem para Destino

 

 

Origem da Transformação

Você pode selecionar um ou vários itens na visualização Explorador de Modelos como a origem da transformação de UML para EJB. A tabela a seguir lista os itens aceitos pela transformação como uma origem válida:

 

Origem

Resultado

Modelo UML

Transforma todos os pacotes, classes e interfaces contidos no modelo

Pacote UML

Transforma o pacote e todas as classes e interfaces contidos no pacote

Classe UML

Transforma a classe e todos os atributos, operações, classes e interfaces nessa classe

Nota: O pai da classe deve ser um pacote UML

Interface UML

Transforma a interface e todos os atributos, operações, classes e interfaces nessa interface

Nota: O pai da interface deve ser um pacote UML

Enumeração UML

Transforma a enumeração e todos os literais da enumeração

Nota: O pai da enumeração deve ser um pacote UML

 

Para gerar beans corporativos a partir de um modelo de origem, o modelo de origem deve ter o perfil da transformação EJB aplicado e os elementos do modelo devem ser marcados com os estereótipos do perfil da transformação EJB.

 

Destino da Transformação

A transformação de UML para EJB aceita um único projeto EJB como seu destino. Você pode criar o projeto EJB com ou sem um projeto cliente. A transformação gera código na primeira pasta de origem detectada no projeto EJB (normalmente ejbModule) e na primeira pasta de origem detectada no projeto cliente (normalmente src), se existir.

 

Contêiner EJB de Destino

A versão do contêiner EJB que está associada ao projeto EJB afeta a transformação de UML para EJB. Cada versão do contêiner EJB possui regras diferentes que devem ser seguidas para que a transformação de UML para EJB funcione e seja processada corretamente. A tabela a seguir lista as regras que estão associadas às diferentes versões de contêineres EJB:

 

Versão do contêiner EJB

Regras que afetam a transformação

2.1

Beans CMP (persistência gerenciada por contêiner) 1.1 devem ser gerados apenas com interfaces remotas

2.0

Beans CMP 1.1 devem ser gerados apenas com interfaces remotas

1.1

  • Os beans CMP 2.x não podem ser gerados
  • Beans CMP 1.1 devem ser gerados apenas com interfaces remotas
  • Beans BMP (Persistência Gerenciada por Contêiner) devem ser gerados apenas com interfaces remotas
  • Beans de sessão devem ser gerados apenas com interfaces remotas
  • Beans orientados a mensagens não podem ser gerados

 

Se as regras citadas não forem seguidas antes da execução da transformação, a transformação EJB não processará o modelo de origem e não transformará nada.

 

Perfil da Transformação EJB

O perfil de transformação EJB define estereótipos que a transformação de UML para EJB interpreta para gerar beans corporativos. A tabela a seguir lista os estereótipos que o perfil da transformação EJB define:

 

Estereótipo

Elemento de destino

Interpretação da Transformação de UML para EJB

<<Entidade>>

Classe UML

Representa um bean de entidade

<<service>>

Classe UML

Representa um bean de sessão com uma propriedade de estereótipo, hasState, definida inicialmente como false, significando que o bean de sessão é sem preservação de estado.

<<messageprocessor>>

Classe UML

Representa um bean orientado a mensagens

<<id>>

Atributo UML

Representa um campo CMP ou BMP a ser utilizado como parte da chave principal de um bean de entidade

<<Query>>

Operação UML

Representa um método de consulta em um bean de entidade

 

O perfil da transformação EJB também define as restrições a seguir:

 

 

Quando você validar um modelo com o perfil da transformação EJB, essas restrições gerarão avisos. Antes de executar a transformação de UML para EJB, você deverá corrigir os problemas que geram os avisos. Entretanto, os avisos não impedem que você execute a transformação.

 

Guias de Configuração da Transformação de UML para EJB

 

A janela de configuração da transformação EJB contém seis guias: Destino, Entidade, Sessão, Avançado, Mapeamento e Comum. Esta seção descreve como as três primeiras guias afetarão a transformação EJB.

 

Guia Destino

 

Você pode utilizar a guia Destino para selecionar o projeto EJB de destino no qual a transformação EJB gerará os arquivos de saída. Você pode criar um novo contêiner de destino mesmo que um projeto EJB esteja disponível. Cada projeto é associado a um único contêiner EJB. A transformação EJB suporta todas as versões de contêiner EJB disponíveis que o assistente de projetos EJB fornecerá.

A versão do contêiner de projetos EJB de destino pode restringir as opções disponíveis nas guias Entidade e Sessão. Para obter informações adicionais sobre as restrições de cada tipo de contêiner EJB, consulte a seção Contêiner EJB de Destino.

 

Guia Entidade

Você pode utilizar a guia Entidade para personalizar os beans de entidade recém-gerados. É possível configurar duas opções diferentes na guia Entidade: Tipo do bean de entidade e Interface do bean de entidade. A figura a seguir mostra a guia Entidade na janela de configuração da transformação EJB:

 

 

 

Dependendo da versão do contêiner EJB no projeto, é possível selecionar apenas determinadas combinações de propriedades antes de executar a transformação EJB. A tabela a seguir lista os tipos de beans de entidade suportados pela transformação, as interfaces suportadas pelos beans de entidade e a seleção da interface padrão:

 

Versão do contêiner EJB

Tipo de bean de entidade

Interfaces suportadas pelos beans de entidade

Seleção padrão

2.x

CMP 2.x

Local e remota

Somente interfaces locais

2.x

CMP 1.1

Remota

Somente interfaces remotas

2.x

BMP

Local e remota

Somente interfaces locais

1.1

CMP 2.x

Nenhum

N/D

1.1

CMP 1.1

Remota

Somente interfaces remotas

1.1

BMP

Remota

Somente interfaces remotas

 

As seleções padrão na tabela refletem o comportamento padrão do assistente de criação do bean de entidade.

 

Se você selecionar uma combinação inválida de opções, será exibida uma mensagem de erro no início da janela de configuração da transformação EJB e o botão Executar que executa a transformação ficará indisponível. Quando você selecionar uma combinação válida de opções, o botão Executar ficará disponível e a mensagem de erro desaparecerá.

 

Guia Sessão

Você pode utilizar a guia Sessão para personalizar a geração de interfaces para beans de sessão recém-gerados. A figura a seguir mostra a guia Sessão na janela de configuração da transformação EJB:

 

 

 

Dependendo da versão do contêiner EJB no projeto, é possível selecionar apenas determinadas combinações de propriedades antes de executar a transformação EJB. A tabela a seguir lista as interfaces suportadas pela transformação para os beans de sessão, de acordo com a versão do contêiner, e a seleção da interface padrão:

 

Versão do contêiner EJB

Interfaces suportadas pelos beans de sessão

Seleção padrão

1.1

Remota

Somente interfaces remotas

2.0

Local e remota

Somente interfaces remotas

2.1

Local e remota

Somente interfaces remotas

 

Se você selecionar uma combinação inválida de opções, será exibida uma mensagem de erro no início da janela de configuração da transformação EJB e o botão Executar que executa a transformação ficará indisponível. Quando você selecionar uma combinação válida de opções, o botão Executar ficará disponível e a mensagem de erro desaparecerá.

 

Guia Avançado

Para obter informações sobre a guia Avançado, consulte a documentação Transformação de UML para Java.

 

Interpretação de Objetos de Origem

Esta seção descreve como a transformação de UML para EJB interpreta os elementos em um modelo UML e o que a transformação gera como saída.

Tipos Primitivos

A transformação de UML para EJB interpreta os tipos primitivos da mesma maneira que a Transformação de UML para Java. Para obter informações adicionais, consulte a documentação Transformação de UML para Java.

 

Pacotes

A transformação de UML para EJB interpreta os pacotes da mesma maneira que a Transformação de UML para Java e os transforma em pacotes Java. Para obter informações adicionais, consulte a documentação Transformação de UML para Java.

 

Classes Não Marcadas

A transformação de UML para EJB interpreta as classes não marcadas da mesma maneira que a Transformação de UML para Java e as transforma em classes Java. Para obter informações adicionais, consulte a documentação Transformação de UML para Java.

 

Se uma classe não marcada contiver atributos cujo tipo for de uma classe com estereótipo <<entity>>, <<service>> ou <<messageprocessor>>, a transformação não gerará os atributos. Em vez disso, a transformação gravará uma mensagem no arquivo de log indicando que o atributo de origem não será transformado.

Interfaces Não Marcadas

A transformação de UML para EJB interpreta as interfaces não marcadas da mesma maneira que a Transformação de UML para Java e as transforma em interfaces Java. Para obter informações adicionais, consulte a documentação Transformação de UML para Java.

 

Se uma interface não marcada contiver atributos cujo tipo for de uma classe com um estereótipo <<entity>>, <<service>> ou <<messageprocessor>>, a transformação não gerará os atributos. Em vez disso, a transformação gravará uma mensagem no arquivo de log indicando que o atributo de origem não será transformado.

Enumeração Não Marcada

A transformação de UML para EJB interpreta as enumeração não marcada da mesma maneira que a Transformação de UML para Java e as transforma em interfaces Java. Para obter informações adicionais, consulte a documentação Transformação de UML para Java.

 

Classes <<entity>>

A transformação de UML para EJB transforma uma classe marcada com o estereótipo <<entity>> em um bean de entidade CMP 2.x, CMP 1.1 ou BMP com um nome de bean igual ao nome da classe UML de origem. O tipo de bean de entidade gerado corresponde à opção selecionada na janela de configuração da transformação EJB, na guia Entidade.

 

A transformação sempre gera as classes Java a seguir para beans de entidade:

 

A transformação gera as classes Java a seguir quando, na guia Entidade, você clica em Somente interfaces remotas:

 

A transformação gera as classes Java a seguir quando, na guia Entidade, você clica em Somente interfaces locais:

 

A transformação gera as classes Java a seguir quando, na guia Entidade, você clica em Interfaces locais e remotas:

 

A transformação gera todas as classes na pasta de pacote que é gerada para o pacote-pai da classe UML de origem. Se você criar um modelo UML sem pacotes, a transformação gerará um pacote padrão denominado ejbs.

 

A transformação gera os arquivos de classe do bean e de classe da chave na árvore de origem do projeto EJB de destino.

 

A transformação gera os quatro arquivos de interface na árvore de origem do projeto cliente do projeto EJB de destino. Se não existir nenhum projeto cliente, a transformação gerará os arquivos de interface no projeto EJB de destino.

 

A transformação inclui dados que definem o bean de entidade para o descritor de implementação (ejb-jar.xml).

 

Relacionamentos de Generalização

Se a classe UML de origem do bean de entidade tiver um relacionamento de generalização (por exemplo, um relacionamento de extensão) com outra classe UML com o estereótipo <<entity>>, o bean de entidade representado pela classe se tornará a superclasse EJB do bean de entidade a ser gerado.

 

Ambos os beans de entidade devem ter o mesmo tipo. Portanto, os dois deverão ser CMP 2.x, CMP 1.1 ou BMP. Por exemplo, se o superbean for um bean de entidade CMP 2.x, todos os beans-filho deverão ser beans de entidade CMP 2.x. Se o superbean não tiver o mesmo tipo que o bean-filho esperado, a transformação gerará o bean-filho sem um relacionamento de generalização.

 

Relacionamentos de Realização

Se a classe UML de origem do bean de entidade tiver relacionamentos de realização (por exemplo, relacionamentos de implementação) com elementos da interface, as interfaces representadas pelas interfaces de origem serão implementadas pelas quatro interfaces (remota, home, local, home local).

 

Atributos Não Marcados - CMP 2.x

A transformação transforma atributos na classe UML de origem em campos CMP no bean de entidade, com as propriedades listadas na tabela a seguir:

 

 

Propriedade do campo CMP 2.x

Valor do campo CMP

Nome

Nome do atributo UML, com o primeiro caractere do nome do campo alterado para letra minúscula

Tipo

Tipo determinado a partir do tipo de atributo (consulte a tabela Mapa de Tipo.)

Campo de chave

Falso

Gerar campo na classe de implementação do bean

Falso

Gerar getter e setter

Verdadeiro

Promover getter e setter para interfaces locais

Verdadeiro (se existirem interfaces locais)

Promover getter e setter para interfaces remotas

Verdadeiro (se existirem interfaces remotas)

IsArray

Verdadeiro se o atributo UML tiver um valor superior finito

 

Se o tipo de atributo for aquele de outro bean de entidade CMP 2.x, a transformação não transformará o atributo em um campo CMP, mas assumirá que ele faça parte de uma associação que deve ser transformada em um relacionamento EJB. Entretanto, se o tipo de atributo for aquele de outro bean corporativo que não é um bean de entidade CMP 2.x, a transformação não transformará o atributo em um campo CMP ou em uma associação. Em vez disso, a transformação gravará uma mensagem no arquivo de log indicando que o atributo de origem não será transformado.

 

Atributos Não Marcados - CMP 1.1

A transformação transforma atributos na classe UML de origem em campos CMP no bean de entidade, com as propriedades listadas na tabela a seguir:

 

Propriedade do campo CMP 1.1

Valor do campo CMP

Nome

Nome do atributo UML, com o primeiro caractere do nome do campo alterado para letra minúscula

Tipo

Tipo determinado a partir do tipo de atributo (consulte a tabela Mapa de Tipo.)

Campo de chave

Falso

Gerar campo na classe de implementação do bean

Falso

Gerar getter e setter

Verdadeiro

Promover getter e setter para interfaces locais

Falso

Promover getter e setter para interfaces remotas

Verdadeiro (sempre)

IsArray

Verdadeiro se o atributo UML tiver um valor superior finito

 

Se o tipo de atributo for aquele de outro bean de entidade ou bean corporativo, a transformação não transformará o atributo em um campo CMP ou em uma associação. Em vez disso, a transformação gravará uma mensagem no arquivo de log indicando que o atributo de origem não será transformado.

 

Atributos Não Marcados - BMP

A transformação transforma atributos na classe UML de origem em campos BMP no bean de entidade, com as propriedades listadas na tabela a seguir:

 

Propriedade do campo BMP

Valor do campo BMP

Nome

Nome do atributo UML, com o primeiro caractere do nome do campo alterado para letra minúscula

Tipo

Tipo determinado a partir do tipo de atributo (consulte a tabela Mapa de Tipo.)

Campo de chave

Falso

Gerar campo na classe de implementação do bean

Verdadeiro

Gerar getter e setter

Verdadeiro

Promover getter e setter para interfaces locais

Verdadeiro (se existirem interfaces locais)

Promover getter e setter para interfaces remotas

Verdadeiro (se existirem interfaces remotas)

IsArray

Verdadeiro se o atributo UML tiver um valor superior finito

 

Se o tipo de atributo for aquele de outro bean de entidade ou EJB, a transformação não transformará o atributo em um campo BMP ou em uma associação. Em vez disso, a transformação gravará uma mensagem no arquivo de log indicando que o atributo de origem não será transformado.

 

 

Atributos <<id>> - CMP 2.x e CMP 1.1

A transformação também transforma atributos na classe UML de origem marcados com o atributo <<id>> em campos CMP, mas com valores de propriedades diferentes, conforme listado na tabela a seguir. Esses campos CMP ajudam a formar a chave principal.

 

Propriedade dos campos CMP 2.x e CMP 1.1

Valor do campo CMP

Nome

Nome do atributo UML, com o primeiro caractere do nome do campo alterado para letra minúscula

Tipo

Tipo determinado a partir do tipo de atributo (consulte a tabela Mapa de Tipo.)

Campo de chave

Verdadeiro

Gerar campo na classe de implementação do bean

Falso

Gerar getter e setter

Verdadeiro

Promover getter e setter para interfaces locais

Falso

Promover getter e setter para interfaces remotas

Falso

IsArray

Verdadeiro se o atributo UML tiver um valor superior finito

 

Se o tipo de atributo for aquele de outro bean de entidade ou bean corporativo, a transformação não transformará o atributo em um campo de chave CMP ou em uma associação. Em vez disso, a transformação gravará uma mensagem no arquivo de log indicando que o atributo de origem não será transformado.

 

Atributos <<id>> - BMP

A transformação também transforma atributos na classe UML de origem marcados com <<id>> em campos BMP, mas com valores de propriedades diferentes, conforme listado na tabela a seguir. Esses campos BMP ajudam a formar a chave principal.

 

Propriedade do campo BMP

Valor do campo BMP

Nome

Nome do atributo UML, com o primeiro caractere do nome do campo alterado para letra minúscula

Tipo

Tipo determinado a partir do tipo de atributo (consulte a tabela Mapa de Tipo.)

Campo de chave

Verdadeiro

Gerar campo na classe de implementação do bean

Verdadeiro

Gerar getter e setter

Verdadeiro

Promover getter e setter para interfaces locais

Falso

Promover getter e setter para interfaces remotas

Falso

IsArray

Verdadeiro se o atributo UML tiver um valor superior finito

 

Se o tipo de atributo for aquele de outro bean de entidade ou bean corporativo, a transformação não transformará o atributo em um campo de chave BMP ou em uma associação. Em vez disso, a transformação gravará uma mensagem no arquivo de log indicando que o atributo de origem não será transformado.

 

Mapa de Tipos dos Campos CMP e BMP

Conforme ilustra a tabela a seguir, a transformação gera os campos CMP e BMP com tipos baseados no tipo de atributo de origem:

 

Tipo de atributo UML

Tipo de campo CMP/BMP

booleano

booleano

byte

byte

caractere

caractere

flutuante

flutuante

int

int

longo

longo

curto

curto

Booleano

java.lang.Boolean

Byte

java.lang.Byte

Caractere

java.lang.Char

Flutuante

java.lang.Float

Inteiro

java.lang.Integer

Longo

java.lang.Long

Curto

java.lang.Short

Cadeia

java.lang.String

outro

Nome completo

 

Operações Não Marcadas

A transformação transforma operações não marcadas na classe UML de origem em métodos de negócios no bean de entidade. Inicialmente, a operação é transformada da mesma maneira que uma operação em uma classe UML não marcada. A transformação reforça a nomenclatura com letras minúsculas tornando o primeiro caractere do nome do método em letra minúscula, se ele for um caractere em letra maiúscula válido. A operação transformada é incluída nas classes listadas na tabela a seguir, com algumas modificações.

 

Classe

Modificações de métodos

Classe de bean

Sem alteração

Interface local

Método de interface

Interface remota

Método de interface, emite java.rmi.RemoteException

 

Operações <<query>> - CMP 2.x

A transformação transforma operações <<query>> na classe UML de origem em um dos dois tipos de métodos de consulta: métodos localizadores e métodos de seleção. Os métodos de seleção existem somente em beans de entidade CMP 2.x.

 

A transformação gera métodos localizadores nas classes listadas na tabela a seguir, com algumas modificações:

 

Classe

Modificações de métodos

Interface home local

(se existirem interfaces locais)

Interface home remota

(se existirem interfaces remotas)

  • Nome de findXxx (Consulte a tabela Nome do Localizador.)
  • Emite javax.ejb.FinderException
  • Emite java.rmi.RemoteException

 

Nome do Localizador

 

Nome da operação UML

Nome do método localizador

xxx

findXxx

findXxx

findXxx

FindXxx

findXxx

 

Tipo de Retorno do Localizador da Interface Home

 

Tipo de retorno analisado pela transformação Java

Tipo de retorno do método localizador

Coleta mapeada (como Coleta, Lista, Conjunto e assim por diante)

java.util.Collection

<nome da classe de origem>[]

java.util.Collection

<nome da classe de origem> OU nulo

  • Nome da interface local
  • Nome da interface remota

<nome do tipo definido pelo usuário>[]

java.util.Collection

<diferente do nome da classe de origem (por exemplo, Cadeia, Inteiro, etc.)>[]

java.util.Collection

<nome do tipo definido pelo usuário>

Gerar um método de seleção em vez de um método localizador

<diferente do nome da classe de origem (por exemplo, Cadeia, Inteiro, etc.)>

Gerar um método de seleção em vez de um método localizador

 

A transformação EJB cria uma tarefa que indica que você precisa incluir manualmente uma consulta no descritor de implementação de cada método localizador gerado.

 

A transformação transformará uma operação de consulta em um método de seleção se a visibilidade da operação for privada ou se o tipo de retorno for diferente do nome da classe UML de origem e o tipo de bean de entidade for CMP 2.x.

 

Visibilidade da operação

Tipo de retorno

Tipo de método

Privado

Igual ao nome da classe de origem

Método de seleção

Não privado

Igual ao nome da classe de origem

Método localizador

Privado

Diferente do nome da classe de origem

Método de seleção

Não privado

Diferente do nome da classe de origem

Método de seleção

 

A transformação gera métodos de seleção na classe de bean, com as modificações a seguir:

 

Nome da Seleção

 

Nome da operação UML

Nome do método de seleção

xxx

ejbSelectXxx

selectXxx

ejbSelectXxx

SelectXxx

ejbSelectXxx

ejbSelectXxx

ejbSelectXxx

 

Tipo de Retorno da Seleção

 

Tipo de retorno analisado pela transformação Java

Tipo de retorno do método de seleção

Coleta mapeada (como Coleta, Lista, Conjunto e assim por diante)

Nome completo do tipo de coleta (por exemplo, java.util.Collection)

<nome da classe de origem>[]

java.util.Collection

<nome da classe de origem> OU nulo

Nome da interface local

<nome do tipo definido pelo usuário>[]

java.util.Collection

<diferente do nome da classe de origem (por exemplo, Cadeia, Inteiro, etc.)>[]

java.util.Collection

<nome do tipo definido pelo usuário>

Nome do tipo definido pelo usuário

<diferente do nome da classe de origem (por exemplo, Cadeia, Inteiro, etc.)>

Diferente do nome da classe de origem

 

A transformação EJB cria uma tarefa que indica que você precisa incluir manualmente uma consulta no descritor de implementação de cada método de seleção gerado.

 

Operações <<query>> - CMP 1.1

A transformação transforma operações <<query>> na classe UML de origem em um tipo de método de consulta: métodos localizadores. Os beans de entidade CMP 1.1 não suportam métodos de seleção, uma vez que estão disponíveis apenas para os beans de entidade CMP 2.x. Portanto, independentemente do tipo de retorno e da visibilidade da operação de <<query>>, a transformação sempre gerará um método localizador na interface home remota do bean de entidade.

 

Conforme ilustra a tabela a seguir, a transformação sempre gera métodos localizadores na interface home remota, com algumas modificações:

 

Classe

Modificações de métodos

Interface home remota

 

Nome do Localizador da Interface Home Remota

 

Nome da operação UML

Nome do método localizador

xxx

findXxx

findXxx

findXxx

FindXxx

findXxx

 

Tipo de Retorno do Localizador da Interface Home Remota

 

Tipo de retorno analisado pela transformação Java

Tipo de retorno do método localizador

Coleta mapeada (como Coleta, Lista, Conjunto e assim por diante)

java.util.Collection

<nome da classe de origem>[]

java.util.Collection

<nome da classe de origem> OU nulo

Nome da interface remota

<nome do tipo definido pelo usuário>[]

java.util.Collection

<diferente do nome da classe de origem (por exemplo, Cadeia, Inteiro, etc.)>[]

java.util.Collection

<nome do tipo definido pelo usuário>

Nome da interface remota

<diferente do nome da classe de origem (por exemplo, Cadeia, Inteiro, etc.)>

Nome da interface remota

 

A transformação EJB cria uma tarefa que indica que você precisa incluir manualmente uma consulta no descritor de implementação de cada método localizador gerado.

 

Operações <<query>> - BMP

A transformação transforma operações <<query>> na classe UML de origem em um tipo de método de consulta: métodos localizadores. Os beans de entidade BMP de qualquer versão não suportam métodos de seleção, uma vez que estão disponíveis apenas para os beans de entidade CMP 2.x. Portanto, independentemente do tipo de retorno e da visibilidade da operação <<query>>, a transformação sempre gerará um método localizador na classe de implementação do bean. A transformação gerará então métodos localizadores nas interfaces existentes do bean de entidade.

 

Conforme ilustra a tabela a seguir, a transformação gera métodos localizadores nas classes a seguir, com algumas modificações:

 

Classe

Modificações de métodos

Interface home local
(se existirem interfaces locais)

Interface home remota

(se existirem interfaces remotas)

Classe de implementação do bean

 

Nome do Localizador da Interface Home

 

Nome da operação UML

Nome do método localizador

xxx

findXxx

findXxx

findXxx

FindXxx

findXxx

ejbFindXxx

findEjbFindXxx

EjbFindXxx

findEjbFindXxx

 

Nome do Localizador da Classe Bean

 

Nome da operação UML

Nome do método localizador

xxx

ejbFindXxx

findXxx

ejbFindXxx

FindXxx

ejbFindXxx

ejbFindXxx

ejbFindEjbFindXxx

EjbFindXxx

ejbFindEjbFindXxx

 

Tipo de Retorno do Localizador da Interface Home

 

Tipo de retorno analisado pela transformação Java

Tipo de retorno do método localizador

Coleta mapeada (como Coleta, Lista, Conjunto e assim por diante)

java.util.Collection

<nome da classe de origem>[]

java.util.Collection

<nome da classe de origem> OU nulo

  • Nome da interface local
  • Nome da interface remota

<nome do tipo definido pelo usuário>[]

java.util.Collection

<diferente do nome da classe de origem (por exemplo, Cadeia, Inteiro, etc.)>[]

java.util.Collection

<nome do tipo definido pelo usuário>

  • Nome da interface local
  • Nome da interface remota

<diferente do nome da classe de origem (por exemplo, Cadeia, Inteiro, etc.)>

  • Nome da interface local
  • Nome da interface remota

 

Tipo de Retorno do Localizador da Classe Bean

 

Tipo de retorno analisado pela transformação Java

Tipo de retorno do método localizador

Coleta mapeada (como Coleta, Lista, Conjunto e assim por diante)

java.util.Collection

<nome da classe>[]

java.util.Collection

<nome da classe> OU nulo

Nome da classe da chave

 

Classes Internas

Ignorado.

 

Interfaces Internas

Ignorado.

 

Classes <<service>>

A transformação de UML para EJB transforma uma classe com o estereótipo <<service>> em um bean de sessão gerenciado por contêiner, sem preservação de estado ou com preservação de estado, com um nome de bean que seja igual àquele da classe UML de origem. A transformação sempre gera as classes Java a seguir para beans de sessão:

 

A transformação gera as classes Java a seguir quando, na guia Sessão, você clica em Somente interfaces remotas:

 

A transformação gera as classes Java a seguir quando, na guia Sessão, você clica em Somente interfaces locais:

 

A transformação gera as classes Java a seguir quando, na guia Sessão, você clica em Interfaces locais e remotas:

 

A transformação gera todas as classes na pasta de pacote que é gerada para o pacote-pai da classe UML de origem. Se você criar um modelo UML sem pacotes, a transformação criará um pacote padrão denominado ejbs.

 

A transformação gera o arquivo de classe de bean na árvore de origem do projeto EJB de destino.

 

A transformação gera os quatro arquivos de interface na árvore de origem do projeto cliente do projeto EJB de destino. Se não existir nenhum projeto cliente, a transformação gerará os arquivos de interface no projeto EJB de destino.

 

A transformação inclui dados que definem o bean de sessão para o descritor de implementação (ejb-jar.xml).

 

 

Propriedade de Estereótipo - hasState

Cada classe UML com um estereótipo <<service>> possui uma propriedade de estereótipo denominada hasState. Quando o valor de hasState for false, a transformação gerará essa classe UML como um bean de sessão sem preservação de estado. De modo contrário, quando o valor de hasState for verdadeiro, a transformação gerará a classe UML como um bean de sessão com preservação de estado.

 

Nota: A propriedade de estereótipo afeta somente aquelas classes UML que a transformação gera como novos beans de sessão.

 

Por padrão, o valor da propriedade hasState é false, que é consistente com as definições padrão no assistente de criação do bean de sessão.

 

Relacionamentos de Generalização

Se a classe UML de origem do bean de sessão tiver um relacionamento de generalização (por exemplo, um relacionamento de extensão) com outra classe UML com o estereótipo <<service>> e esse estereótipo tiver o mesmo valor da propriedade hasState, o bean de sessão representado pela classe se tornará a superclasse EJB do bean de sessão a ser gerado.

 

Relacionamentos de Realização

Se a classe UML de origem do bean de sessão tiver relacionamentos de realização (por exemplo, relacionamentos de implementação) com elementos da interface, as interfaces representadas pelas interfaces de origem serão implementadas pelas quatro interfaces (remota, home, local, home local).

 

Atributos

A transformação transforma atributos na classe UML de origem em propriedades Java na classe de bean. Para obter informações adicionais sobre como os atributos são transformados, consulte a documentação Transformação de UML para Java. A transformação reforça a nomenclatura com letras minúsculas tornando o primeiro caractere do nome da propriedade em letra minúscula, se ele for um caractere em letra maiúscula válido.

 

 

Se o tipo do atributo for de outro bean corporativo, a transformação EJB não gerará um campo e uma associação para o bean de sessão. Em vez disso, a transformação gravará uma mensagem no arquivo de log indicando que o atributo de origem não será transformado.

 

Operações

A transformação transforma operações na classe UML de origem em métodos de negócios no bean de sessão. Inicialmente, a operação é transformada da mesma maneira que uma operação em uma classe UML não marcada. A transformação reforça a nomenclatura com letras minúsculas tornando o primeiro caractere do nome do método em letra minúscula, se ele for um caractere em letra maiúscula válido. A operação transformada é incluída nas classes listadas na tabela a seguir, com algumas modificações.

 

Classe

Modificações de métodos

Classe de bean

Sem alteração

Interface local

Método de interface

Interface remota

Método de interface, emite java.rmi.RemoteException

 

A transformação aplica as seguintes regras para determinar o tipo de retorno da operação com base nos parâmetros da operação:

 

Classes Internas

Ignorado.

 

Interfaces Internas

Ignorado.

 

Classes <<messageprocessor>>

A transformação de UML para EJB transforma uma classe com o estereótipo <<messageprocessor>> em um bean orientado a mensagens com um nome de bean que seja igual àquele da classe UML de origem e que tenha dados padrão. A transformação gera a seguinte classe Java:

 

A transformação gera a classe na pasta do pacote que é gerada para o pacote-pai da classe UML de origem. Se você criar um modelo UML sem pacotes, a transformação criará um pacote padrão denominado ejbs.

 

A transformação gera o arquivo de classe de bean na árvore de origem do projeto EJB de destino.

 

A transformação inclui dados que definem o bean orientado a mensagens para o descritor de implementação (ejb-jar.xml).

 

Relacionamentos de Generalização

Se a classe UML de origem do bean orientado a mensagens tiver um relacionamento de generalização (por exemplo, um relacionamento de extensão) com outra classe UML com o estereótipo <<messageprocessor>>, o bean orientado a mensagens representado pela classe se tornará a superclasse EJB do bean de entidade a ser gerado.

 

Relacionamentos de Realização

Ignorado.

 

Atributos

A transformação transforma atributos na classe UML de origem em propriedades Java na classe de bean. Para obter informações adicionais sobre como os atributos são transformados, consulte a documentação Transformação de UML para Java. Se o tipo do atributo for de outro bean corporativo, a transformação EJB não gerará um campo e uma associação para o bean de sessão. Em vez disso, a transformação gravará uma mensagem no arquivo de log indicando que o atributo de origem não será transformado.

 

Operações

A transformação transforma operações na classe UML de origem em métodos Java comuns, como se o bean orientado a mensagens fosse uma classe Java.

 

Classes Internas

Ignorado.

 

Interfaces Internas

Ignorado.

 

Associações

Normalmente, a transformação transforma as associações da mesma maneira que a transformação de UML para Java: ela transforma os atributos de nó de extremidade em propriedades Java.

 

Se um nó de extremidade da associação for uma classe com um estereótipo <<entity>>, <<service>> ou <<messageprocessor>>, a transformação não o transformará. Em vez disso, a transformação gravará uma mensagem no arquivo de log no diretório de metadados indicando que a propriedade de nó de extremidade não foi transformada. A exceção a esta ocorrência ocorre quando a associação está entre duas classes com estereótipos <<entity>> e ambas são geradas como beans CMP 2.x. Desse modo, a transformação transformará a associação UML em um relacionamento EJB 2.0, que também é conhecido como um CMR (relacionamento gerenciado por contêiner). A tabela a seguir ilustra os mapeamentos entre as propriedades de associação e as propriedades de relacionamentos EJB:

 

Propriedade de associação

Propriedade de relacionamento EJB

End1

BeanA

End2

BeanB

Nome de End1

Nome CMR de BeanB

Nome de End2

Nome CMR de BeanA

Navegabilidade de End1

Navegabilidade de BeanB

Navegabilidade de End2

Navegabilidade de BeanA

  • Valor superior de End1 = 1
  • Valor superior de End1 = -1
  • Multiplicidade de BeanB = 1
  • Multiplicidade de BeanB = -1, tipo CMR de BeanA = java.lang.Collection
  • Valor superior de End2 = 1
  • Valor superior de End2 = -1
  • Multiplicidade de BeanA = 1
  • Multiplicidade de BeanA = -1, tipo CMR de BeanB = java.lang.Collection

 

A figura a seguir ilustra duas classes UML com estereótipos <<entity>>. A associação entre as classes será gerada em um CMR se a transformação gerar ambas as classes de entidade como beans de entidade CMP 2.x.

 

 

 

Depois que a transformação ocorrer, o descritor de implementação terá uma entrada para descrever o CMR entre AEntity e BEntity. Como ilustra a figura a seguir, o descritor de implementação do projeto pode exibir a associação entre os dois beans de entidade CMP 2.x:

 

 

 

 

 

Referências EJB

A seguinte tabela lista como a transformação transforma dependências e gera referências EJB para classes com um estereótipo <<entity>>, <<service>> ou <<messageprocessor>>.

 

Origem da Dependência UML

Destino da Dependência UML

Destino do EJB

Classe <<entity>>

Classe <<entity>>

Referência EJB

Classe <<entity>>

Classe <<service>>

Referência EJB

Classe <<messageprocessor>>

Classe <<entity>>

Referência EJB

Classe <<messageprocessor>>

Classe <<service>>

Referência EJB

Classe <<service>>

Classe <<entity>>

Referência EJB

Classe <<service>>

Classe <<service>>

Referência EJB

 

 

 

 

Reaplicação de Cenários

Quando um projeto J2EE (Java 2 Platform, Enterprise Edition) de destino incluir pelo menos um bean com o mesmo nome e espaço de nomes como uma classe UML na transformação, poderá ocorrer um cenário de reaplicação. Um cenário de reaplicação refere-se a quando o tipo do bean corporativo existente corresponde ao tipo do bean corporativo a ser gerado para a classe correspondente no modelo UML.

 

Quando o tipo do bean corporativo a ser gerado for incompatível com o tipo do bean corporativo existente, ocorrerá um cenário de confronto. Em um cenário de confronto, a transformação de UML para EJB não atualizará o bean existente e não gerará um novo bean corporativo.

 

A tabela a seguir lista a resposta esperada da transformação para possíveis cenários de reaplicação de beans de entidade CMP 2.x:

 

Bean corporativo a ser gerado

Bean corporativo existente

Cenário esperado

Resposta da transformação

CMP 2.x

CMP 2.x

Reaplicação

Atualizar campos CMP e métodos

CMP 2.x

CMP 1.1

Reaplicação

Atualizar campos CMP e métodos como se fossem um cenário de reaplicação comum de CMP 1.1 para CMP 1.1

CMP 2.x

BMP

Reaplicação

Atualizar campos BMP e métodos como se fossem um cenário de reaplicação BMP para BMP comum

CMP 2.x

Sessão (com ou sem preservação de estado)

Confronto

Deixar o bean de sessão intacto

CMP 2.x

Orientado a mensagens

Confronto

Deixar o bean orientado a mensagens intacto

 

A tabela a seguir lista a resposta esperada da transformação para possíveis cenários de reaplicação de beans de entidade CMP 1.1:

 

Bean corporativo a ser gerado

Bean corporativo existente

Cenário esperado

Resposta da transformação

CMP 1.1

CMP 2.x

Reaplicação

Atualizar campos CMP e métodos como se fossem um cenário de reaplicação CMP 2.x para CMP 2.x comum

CMP 1.1

CMP 1.1

Reaplicação

Atualizar campos CMP e métodos

CMP 1.1

BMP

Reaplicação

Atualizar campos BMP, métodos e associações como se fossem um cenário de reaplicação BMP para BMP comum

CMP 1.1

Sessão (com ou sem preservação de estado)

Confronto

Deixar o bean de sessão intacto

CMP 1.1

Orientado a mensagens

Confronto

Deixar o bean orientado a mensagens intacto

 

A tabela a seguir lista a resposta esperada da transformação para possíveis cenários de reaplicação de beans de entidade BMP:

 

Bean corporativo a ser gerado

Bean corporativo existente

Cenário esperado

Resposta da transformação

BMP

CMP 2.x

Reaplicação

Atualizar campos CMP e métodos como se fossem um cenário de reaplicação CMP 2.x para CMP 2.x comum

BMP

CMP 1.1

Reaplicação

Atualizar campos CMP e métodos como se fossem um cenário de reaplicação CMP 1.1 para CMP 1.1 comum

BMP

BMP

Reaplicação

Atualizar campos BMP e métodos

BMP

Sessão (com ou sem preservação de estado)

Confronto

Deixar o bean de sessão intacto

BMP

Orientado a mensagens

Confronto

Deixar o bean orientado a mensagens intacto

 

A tabela a seguir lista a resposta esperada da transformação para possíveis cenários de reaplicação de beans de sessão:

 

Bean corporativo a ser gerado

Bean corporativo existente

Cenário esperado

Resposta da transformação

Sessão (com ou sem preservação de estado)

CMP 2.x

Confronto

Deixar o bean CMP 2.x intacto

Sessão (com ou sem preservação de estado)

CMP 1.1

Confronto

Deixar o beanCMP 1.1 intacto

Sessão (com ou sem preservação de estado)

BMP

 

Deixar o bean BMP intacto

Sessão (com preservação de estado)

Sessão

(apenas com preservação de estado)

Reaplicação

Atualizar os campos e os métodos do bean de sessão

Sessão (com preservação de estado)

Sessão

(apenas sem preservação de estado)

Confronto

Deixar o bean de sessão sem preservação de estado intacto

Sessão (sem preservação de estado)

Sessão

(apenas com preservação de estado)

Confronto

Deixar o bean de sessão com preservação de estado intacto

Sessão (sem preservação de estado)

Sessão

(apenas sem preservação de estado)

Reaplicação

Atualizar os campos e os métodos do bean de sessão

Sessão (com ou sem preservação de estado)

Orientado a mensagens

Confronto

Deixar o bean orientado a mensagens intacto

 

A tabela a seguir lista a resposta esperada da transformação para possíveis cenários de reaplicação de beans orientados a mensagens:

 

Bean corporativo a ser gerado

Bean corporativo existente

Cenário esperado

Resposta da transformação

Orientado a mensagens

CMP 2.x

Confronto

Deixar o bean orientado a mensagens intacto

Orientado a mensagens

CMP 1.1

Confronto

Deixar o bean orientado a mensagens intacto

Orientado a mensagens

BMP

Confronto

Deixar o bean orientado a mensagens intacto

Orientado a mensagens

Sessão (com ou sem preservação de estado)

Confronto

Deixar o bean orientado a mensagens intacto

Orientado a mensagens

Orientado a mensagens

Reaplicação

Atualizar os campos e os métodos do bean orientado a mensagens

 

A tabela a seguir lista a resposta esperada da transformação para possíveis cenários de classes UML não marcadas:

 

Estereótipo na classe UML

Bean corporativo existente

Cenário esperado

Resposta da transformação

Não marcado

CMP 2.x

Reaplicação

Atualizar os campos e os métodos do bean de entidade CMP 2.x em sua interface remota existente

Não marcado

CMP 1.1

Reaplicação

Atualizar os campos e os métodos do bean de entidade CMP 1.1 em sua interface remota existente

Não marcado

BMP

Reaplicação

Atualizar os campos e os métodos do bean de entidade BMP em sua interface remota existente

Não marcado

Sessão (com ou sem preservação de estado)

Reaplicação

Atualizar os campos e os métodos da Sessão em sua interface remota existente

Não marcado

Orientado a mensagens

Reaplicação

Gerar uma classe Java comum

 

Nos cenários de reaplicação de classes UML não marcadas, as atualizações de código para a interface remota do bean corporativo existente causam erros de construção no projeto EJB. Esses erros de construção ocorrem porque o código atualizado na interface remota não está de acordo com as especificações EJB para interfaces remotas. Se você pretende sobrescrever o bean corporativo inteiro, deverá remover o bean corporativo existente antes de executar a transformação EJB.

 

Explicação Detalhada da Resposta da Transformação

 

Esta seção discute a resposta da transformação a um cenário de reaplicação em mais detalhes e fornece informações adicionais sobre o que esperar da transformação após uma reaplicação.

 

Beans de Entidade CMP 2.x

 

Se ocorrer um cenário de reaplicação para um bean de entidade CMP 2.x, poderão ocorrer as modificações a seguir:

 

As modificações a seguir não deverão ocorrer:

 

Beans de Entidade CMP 1.1

 

Se ocorrer um cenário de reaplicação para um bean de entidade CMP 1.1, poderão ocorrer as modificações a seguir:

 

As modificações a seguir não deverão ocorrer:

 

 

Beans de Entidade BMP

 

Se ocorrer um cenário de reaplicação para um bean de entidade BMP, poderão ocorrer as modificações a seguir:

 

As modificações a seguir não deverão ocorrer:

 

Beans de Sessão Sem ou Com Preservação de Estado

 

Se ocorrer um cenário de reaplicação para um bean de sessão, poderão ocorrer as modificações a seguir:

 

As modificações a seguir não deverão ocorrer:

 

Beans Orientados a Mensagens

 

Se ocorrer um cenário de reaplicação para um bean orientado a mensagens, poderão ocorrer as modificações a seguir:

 

As modificações a seguir não deverão ocorrer:

 

Suporte para Processar Relacionamentos entre Elementos de UML e Beans Corporativos Visualizados ou Classes Java

 

A tabela a seguir lista como a transformação de UML para EJB processa relacionamentos:

 

Elemento de origem UML

Elemento de origem visualizado

Tipo de relacionamento

Resultado da Transformação

Classe com estereótipo <<entity>> ou <<service>>

Interface Java (Interface UML)

Implementação

O bean corporativo gerado implementa a interface visualizada

Classe com estereótipo <<entity>> ou <<service>>

Interface Java (Interface UML)

Realização

O bean corporativo gerado implementa a interface visualizada

Classe com estereótipo <<entity>>

Bean de entidade visualizado (componente UML)

Associação

Relacionamento CMR

Classe com estereótipo <<entity>>, <<service>> ou <<messageprocessor>>

Bean de entidade ou bean de sessão visualizado (componente UML)

Dependência

Referência EJB

 

Suporte para Tecnologias de Transformação Comum

 

Integração com Funcionalidade de Equipe

 

A transformação de UML para EJB suporta a integração com a funcionalidade de equipe. Quando a transformação com um projeto de destino é executada em um ambiente controlado pela origem, o sistema avisa para incluir novos arquivos no controle de origem e para efetuar o registro de saída de arquivos existentes.

Mapeamento da Transformação

A transformação de UML para EJB fornece suporte de mapeamento semelhante àquele fornecido pela transformação de UML para Java. Para obter informações sobre como configurar e utilizar um modelo de mapeamento para executar uma transformação, consulte a documentação Transformação de UML para Java.

 

Quando as classes de origem são marcadas para serem transformadas em beans corporativos, a transformação utiliza o nome mapeado da classe de origem como o nome do bean para o bean corporativo gerado.

Relacionamentos de Origem para Destino

 

Se o recurso Gerar Relacionamentos de Origem para Destino estiver ativado, a transformação incluirá tags na documentação da API das classes e interfaces Java geradas. As tags contêm informações que permitem que as ferramentas rastreiem os arquivos gerados para o elemento de origem UML original.

 

Para beans corporativos gerados, todos os arquivos Java que a transformação gera para um bean corporativo possuem as tags da documentação API de origem para destino que apontam para a única classe de origem UML.

 

Termos de uso | Feedback
(C) Direitos Autorais IBM Corporation 2004, 2005. Todos os Direitos Reservados.