Detalhes da Amostra de Transformação de Modelo para Texto

Esta amostra contém as três transformações a seguir:

Transformação

Descrição

Classe para Texto -> Console Esta transformação aceita uma classe UML como sua origem e grava uma descrição da classe (o nome da classe e seus atributos e operações e os parâmetros das operações) na visualização Console.
Classe para Texto -> Arquivo Esta transformação é igual à transformação de Classe para Texto no Console, mas grava os resultados em um arquivo em vez de gravá-los na visualização Console.
Estado para JSP Esta transformação aceita uma máquina de estado como sua origem e gera uma página JSP para cada estado que possui um estereótipo do perfil ScreenFlow.

Para entender como as transformações são construídas, você deve executar as transformações e explorar o código fonte. Ao ler o código fonte, você deve seguir estas orientações:

  • Primeiro observe as classes Java que implementam as regras. As classes aparecem em pacotes cujos nomes terminam com .rules.
  • Um conjunto de regras é combinado em uma ou mais transformações. As transformações são implementadas pelas classes Java em pacotes cujos nomes terminam com .transforms. Você poderá primeiro ler o código para as classes de transformação e, em seguida, ler o código para as transformações de raiz.
  • Por último, observe o arquivo de manifesto do plug-in, plugin.xml, e o código para a classe TransformationProvider para compreender como as transformações estão conectadas ao Serviço de Transformação.

Transformação de Classe para Texto

Esta transformação aceita uma classe UML, um pacote ou um modelo como sua origem e grava os nomes das classes e seus atributos e operações e os parâmetros das operações na visualização Console ou em um arquivo. Se você escolher um modelo ou um pacote como a origem, a transformação gravará os detalhes de todas as classes que o modelo ou pacote contém.

Esta transformação tem duas variações:

  1. Classe para Texto -> Console: Esta transformação grava a saída na visualização Console e não precisa de um destino.

    Esta amostra de transformação mostra como executar o seguinte:

    • Criar regras simples e combiná-las em uma ou mais transformações
    • Criar um provedor de transformação
    • Descrever uma transformação e seu provedor no arquivo de manifesto de plug-in, plugin.xml

  2. Classe para Texto -> Arquivo: Esta transformação grava a saída na visualização Console e requer um projeto como seu destino. Por padrão, ela cria um arquivo denominado class2text.txt na pasta ClassToTextOutput, no projeto que especificado. Você pode utilizar a propriedade de transformação, Nome do Arquivo de Destino, para alterar o nome padrão do arquivo.

    Esta amostra de transformação mostra como executar estas tarefas adicionais:

    • Descrever as propriedades de transformação no arquivo de manifesto de plug-in, plugin.xml
    • Manipular as propriedades de transformação em uma regra


Transformação de Estado para JSP

Esta transformação aceita um estado UML em uma máquina de estado como sua origem e gera uma página da Web na forma de um arquivo JSP utilizando o JET (Java Emitter Templates). Se você escolher uma máquina de estado ou uma região como a origem, a transformação gerará um arquivo JSP para cada estado na máquina de estado ou na região que possui um estereótipo do perfil ScreenFlow aplicado.

Esta amostra de transformação mostra como executar o seguinte:

  • Utilizar estereótipos e palavras-chave para acionar as regras seletivamente
  • Combinar funcionalidade do JET e a transformação para gerar texto

Para preparar a máquina de estado de origem para a transformação, você deve aplicar o perfil ScreenFlow ao modelo UML que contém a máquina de estado e e marcar a máquina de estado, aplicando os estereótipos no perfil ScrrenFlow a seus estados. O perfil ScreenFlow contém quatro estereótipos: form, editform, selectlist e display. Esses estereótipos determinam o estilo de exibição do conteúdo dinâmico da página gerada. A amostra utiliza os estereótipos para determinar se o estilo de exibição é um formulário editável ou uma lista selecionável e assim por diante. Se você aplicar mais de um estereótipo a um estado, a transformação considerará apenas o primeiro estereótipo.

A amostra também utiliza as propriedades dos estereótipos para determinar os dados que são trocados por meio das páginas JSP. A transformação gerará uma página JSP que corresponda a um estado apenas se um dos quatro estereótipos for aplicado ao estado. Se os arquivos JSP já existirem, a transformação não os sobrescreverá quando for executada. Você pode alterar se a transformação deve sobrescrever os arquivos, definindo o valor da propriedade de transformação Sobrescrever Arquivos de Saída para true.

Perfil ScreenFlow

A tabela a seguir mostra os estereótipos no perfil ScreenFlow e suas propriedades. Os valores na tabela são apenas para fins ilustrativos.

Estereótipo

Classe-base

Propriedades:Valores

Descrição

display
<<display>>
Estado entity:Contact
fields:name, address
Indica que a página JSP gerada exibe os detalhes do contado: nome e endereço
editform
<<editform>>
Estado entity:Contact
fields:name, address
Indica que a página JSP gerada contém um formulário editável no qual um usuário pode digitar ou editar detalhes do contato: nome e endereço
form
<<form>>
Estado fields:userName Indica que a página JSP gerada contém um formulário para digitar o nome do usuário
selectlist
<<selectlist>>
Estado entity:Contact
fields:name, address
selectfield:id
Indica que a página JSP gerada contém uma lista de contatos que podem ser utilizados para selecionar um contato com um ID específico