Avançar para a área de conteúdo

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Todas as informações enviadas são seguras.

  • Fechar [x]

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Todas as informações enviadas são seguras.

  • Fechar [x]

Customize a transformação de texto para modelo com as ferramentas de edição do Rational Software Architect : Crie e execute o projeto de transformação JET

Marya Berfeld, Staff Software Verification Developer, IBM
author photo
Marya Berfeld trabalha com verificação de software em ferramentas de modelagem com o IBM Rational desde 2000. Ela trabalhou no teste de vários recursos de modelagem e publicou um artigo sobre transformações de Java para UML no Rational Software Architect no developerWorks em 2008
Darren Coffin, Software Verification Developer, IBM
author photo
Darren Coffin trabalha com verificação de software em ferramentas de modelagem com o IBM Rational desde 1999. Ele trabalhou intensivamente no teste de um grande número de recursos e diagramas de modelagem. É formado pela Universidade de Trent, com diploma em Estudos da Computação e Estudos de Recursos Ambientais.

Resumo:  Siga este exemplo do fluxo de trabalho do recurso Transformation Authoring ao integrar o uso de Java Emitter Templates (JET) com o editor de transformação modelo-para-modelo no release do software IBM® Rational® Software Architect para WebSphere® , IBM® Rational® Software Architect Standard Edition e IBM® Rational® Software Modeler 7.5.5.

Visualizar mais conteúdo nesta série

Data:  14/Abr/2011
Nível:  Intermediário Também disponível em :   Inglês
Atividade:  1054 visualizações
Comentários:  


Introdução

Nota:

As ferramentas discutidas neste artigo não estão incluídas em uma instalação padrão do Rational Software Architect. É preciso instalar o componente de criação Transformation opcional.

Um dos fluxos de trabalho típicos no uso da ferramenta de projeto e desenvolvimento IBM® Rational® Software Architect para desenvolvimento direcionado por modelo é criar um modelo de Linguagem de Modelagem Unificada (UML) para representar um modelo particular. Esta ferramenta também fornece várias transformações predefinidas que converterão um modelo UML em qualquer uma das linguagens de programação suportadas. No entanto, em vez de usar uma das transformações fornecidas, é possível criar sua própria transformação, que converterá o modelo de acordo com as regras que você definir.

Os recursos de extensibilidade no Rational Software Architect fornecem ferramentas para criar transformações Java™ Emitter Template (JET) e especificar suas próprias regras para a geração de saída a partir das transformações. JET é uma linguagem de modelo desenvolvida pela IBM. Ao usar transformações JET, é possível gerar, rápida e facilmente, uma transformação modelo-para-texto com base em modelos. Com o kit de ferramentas JET, é possível gerar arquivos de texto a partir de um modelo usando modelos que contenham texto e comandos JET (tags). Transformações JET automatizam o processo repetitivo de geração de texto.

Este artigo orienta você pelas etapas de criação de uma nova transformação JET para criar um projeto Java que representa uma biblioteca de livros.


Crie e configure o projeto de transformação JET

Para usar a tecnologia JET a fim de criar as transformações, o especialista do domínio de destino deverá fornecer um projeto Exemplar para o autor da transformação. O projeto Exemplar representa o formato desejado da saída da transformação. A melhor prática é criar um projeto Exemplar para representar o máximo de detalhes possível do formato para a saída necessária. O projeto precisa ser importado para a área de trabalho do Rational Software Architect.

Para os fins deste artigo, um projeto Java ™ (MyLibrary) simples que contém uma classe Java (BookTitle) dentro de um pacote (books) é o exemplo. Quando a transformação JET é criada e executada, a saída esperada da transformação será um projeto Java que contém uma ou mais classes Java dentro de um pacote.

A Figura 1 mostra o projeto Java exemplar usado neste artigo.


Figura 1. O projeto Java exemplar


Para desenvolver a transformação JET que aceitará um modelo UML como origem e gerará um projeto Java como alvo, é preciso criar um novo JET Project com Exemplar Authoring no Rational Software Architect:

  1. Selecione File > New > Project a partir do menu principal.
  2. Na categoria JET Transformations, especifique JET Project com Exemplar Authoring.
  3. Nomeie o projeto com.test.my.transform.
  4. Aceite os padrões na página seguinte e, a seguir, clique em Next.
  5. Na página Transformation Scope, selecione o projeto MyLibrary e, a seguir, clique em Finish.

O projeto criado contém o arquivo transform.tma que será usado neste exercício principalmente para desenvolver a transformação desejada. Ele é aberto, automaticamente, na visualização do editor, com suas guias: Schema e Overview. A guia Overview (Figura 2) exibe informações gerais sobre a transformação.


Figura 2. Guia Overview com informações gerais sobre o projeto JET


Você trabalhará na guia Schema (Figura 3) para desenvolver as ações de saída da transformação.


Figura 3. O editor do JET com o projeto de criação Exemplar


Como primeira etapa, o projeto Exemplar deve ser analisado. Ele poderá conter artefatos os quais você não planeja gerar em sua saída. Em nosso exemplo, não queremos que a transformação gere arquivos .class. A geração dessas classes será realizada no projeto Java de destino, automaticamente, com base nos arquivos .java.

Para excluir BookTitle.class a partir do esquema Exemplar:

  1. Clique com o botão direito em BookTitle.class na janela Transform Authoring.
  2. Selecione Delete a partir do menu.

Na Figura 4, a versão final do projeto Exemplar é mostrada no editor de Schema da transformação.


Figura 4. O projeto Exemplar final


Desenvolva as ações de esquema de entrada e saída

Agora, você está pronto para desenvolver o esquema de entrada e as ações de saída para que possa gerar a saída da transformação automaticamente.

Para especificar a geração do projeto Java de destino:

  1. Clique com o botão direito do mouse na entrada root no painel "Define the transformation input schema and output actions" e selecione New >Type no menu de contexto.
  2. Dê ao novo tipo o nome projectInfo.
  3. Adicione um novo projeto chamado my.project ao tipo projectInfo.
  4. Para criar ações de saída, arraste os arquivos classpath e .project do painel Exemplar para o nó my.project no painel Transform Input and output actions.
  5. No painel Transformation input schema and output actions, renomeie os arquivos criados como .project e .classpath.

Os arquivos agora estão adicionados ao painel "Transformation input schema and output actions". No painel Exemplar, serão exibidos ícones próximos aos nós dos arquivos .project e .classpath. Isto indica que ações foram criadas para esses elementos (consulte a Figura 5).


Figura 5. Os arquivos .classpath e .project no Transformation Input schema


Visualização maior da Figura 5.

  1. Caso não veja a visualização Properties em sua área de trabalho, clique com o botão direito do mouse em qualquer elemento adicionado no painel "Transformation input schema and output actions" e selecione Show Properties View no menu de contexto.
  2. Adicione um atributo chamado name no tipo projectInfo.

A transformação criada deverá ser flexível, de forma que possa gerar projetos com vários nomes para diferentes bibliotecas. Para ativar esta flexibilidade:

Nota:

É possível ignorar as etapas 10, 11 e 12 e a ferramenta preencherá posteriormente o texto exemplar automaticamente.

  1. Clique com o botão direito do mouse no tipo projectInfo no painel "Define the transformation input schema and output actions" e selecione New > Attribute no menu de contexto.
  2. Nomeie o novo atributo de name.
  3. (Opcional) Clique com o botão direito do mouse no atributo name e selecione Edit Exemplar Text no menu de contexto.
  4. Na janela Edit Exemplar Text, adicione o nome do projeto MyLibrary ao atributo name (Figura 6).
  5. Clique em Add e, a seguir, em OK.

Figura 6. Definindo o texto exemplar


O nome do projeto exemplar é exibido na visualização Properties, sob o campo Exemplar Text (consulte a Figura 7).


Figura 7. As propriedades do atributo name editado


Substitua a sequência de texto Exemplar Text

Esta sequência de texto Exemplar Text pode ser automaticamente substituída com o nome que quiser usar para o projeto quando você estiver preparado para executar a transformação. O projeto de saída será gerado com o nome definido pelo usuário especificado no modelo de origem.

Siga essas etapas para especificar que o Exemplar Text deverá ser substituído de acordo com a entrada do usuário quando a transformação for executada:

  1. Selecione o projeto my.project .
  2. Na visualização Properties, na seção Action Parameters, clique com o botão direito do mouse no valor para o Name .
  3. Selecione Replace with model reference (consulte a Figura 8).

Figura 8. Atualizando o parâmetro nome do projeto


Visualização maior da Figura 8.

  1. Na janela de diálogo "Replace with Model References", selecione o atributo name no tipo projectInfo e, a seguir, clique em OK (Figura 9).

Figura 9. Selecionando o atributo "name"


Como resultado, o valor do parâmetro de ação name do projeto chamado my.project é substituído pela tag {$projectInfo/@name} (Figura 10).


Figura 10. Valor substituído do parâmetro de ação "name"


Especifique as ações de transformação para gerar artefatos

Agora, você especificará as ações de transformação para gerar artefatos do projeto.

Para gerar um arquivo Java para cada item de biblioteca, uma ação de saída precisa ser criada e vinculada ao arquivo Java exemplar. Para tanto, adicione um novo tipo chamado "item" ao tipo "projectInfo" e especifique a geração da classe Java:

  1. No painel "Transformation input schema and output actions", clique com o botão direito do mouse no tipo projectInfo.
  2. No menu de contexto, selecione New > Type.
  3. Nomeie o novo tipo.
  4. Arraste o arquivo BookTitle.java do painel Exemplar para o tipo.
  5. Nomeie o arquivo myBookTitle.java.

O novo arquivo myBookTitle.java agora está adicionado ao painel "Transformation input schema and output actions". Um ícone é exibido próximo a BookTitle.java no painel Exemplar, indicando que este arquivo está vinculado ao novo arquivo myBookTitle.java no outro painel. Note que, na visualização Properties na seção Action, é possível adicionar condições para geração, bem como uma descrição de qualquer um dos artefatos gerados (consulte a Figura 10).

Salve o esquema criado e atualize o projeto:

  1. No menu principal, selecione File > Save All.
  2. Na visualização do editor no painel "Transformation input schema and output actions", clique com o botão direito do mouse no tipo root e selecione Update Project (Figura 11).

Figura 11. Selecione Update Project no menu


As pastas para cada tipo serão geradas, contendo modelos JET que especificam a geração de cada arquivo necessário (Figura 12).


Figura 12. Modelos JET gerados


O arquivo de modelo main.jet contém tags que especificam a geração dos arquivos .project, .classpath e myBookTitle.java (Figura 13).


Figura 13. Tags de modelo geradas no modelo main.jet


Visualização maior da Figura 13.

Substitua cadeias de caractere codificadas permanentemente por expressões xPath

Para adicionar flexibilidade na geração de uma variedade de resultados de saída, várias cadeiras de caracteres codificadas permanentemente em modelos JET podem ser atualizadas com expressões xPath. Aqui, descreveremos algumas das opções possíveis como exemplo, bem como o fluxo de trabalho recomendado.

  1. No painel "Transformation input schema and output actions", selecione o arquivo myBookTiltle.java (Figura 14).
  2. Na visualização Properties, em "Action parameters", selecione o valor MyLibrary/books da propriedade path , clique com o botão direito do mouse nela e selecione o item de menu "Replace with Model Reference" .

Figura 14. Seleção da cadeia de caracteres a ser substituída com referências do modelo em Properties

Visualização maior da Figura 14.

A Figura 15 mostra a janela de diálogo resultante: Replace with Model References.


Figura 15. A janela Replace with Model References


Nesta janela de diálogo, é possível selecionar um atributo existente ou criar um novo atributo. Aqui, demonstraremos a criação de um novo atributo que descreverá a geração do nome do pacote.

  1. Selecione o tipo projectInfo .
  2. Clique em New.

Ao clicar no botão New , a caixa de diálogo "Create New Derived Attribute" será exibida (Figura 16). Nesta janela, é possível definir o atributo com o valor derivado do cálculo. O campo name do atributo deverá ser preenchido por você, o usuário. O campo exemplar text é preenchido com a cadeia de caracteres selecionada quando o diálogo foi chamado e a mesma cadeia de caracteres é gravada, por padrão, no valor Calculation. Deixe o valor padrão para este exercício, mas, em uma transformação do real, é possível substituí-la com uma expressão XPath.


Figura 16. Criando um atributo derivado


  1. Inclua a cadeia de caracteres pkgDir no campo de texto "Attribute name".
  2. Clique em OK para fechar a janela "Create New Derived Attribute".
  3. Clique em OK para fechar a janela "Replace with Model References".

O novo atributo derivado, pkgDir, é criado e exibido no painel do editor "Transformation input schema and output actions" (Figura 17).


Figura 17. Atributo derivado recém-criado, pkgDir


O valor da propriedade path para myBookTitle.java é atualizado com o parâmetro do atributo derivado gerado (Figura 18).


Figura 18. O valor do caminho com um parâmetro substituído


Visualização maior da Figura 18.

O autor da transformação também deverá fornecer a capacidade de gerar várias classes Java.

Para permitir isto, crie um novo atributo name para o tipo da mesma forma que descrevemos anteriormente para o tipo projectInfo . Substitua o nome do arquivo codificado permanentemente com um atributo criado para o parâmetro path de myBookTitle.java .

  1. Selecione myBookTitle.java no painel do editor "Transformation input schema and output actions".
  2. Selecione o nome de arquivo BookTitle no valor do caminho na visualização Property.
  3. Clique com o botão direito do mouse no nome de arquivo BookTitle no valor do caminho na visualização Properties.
  4. Selecione o item do menu de contexto "Replace with Model Reference".
  5. Na janela de diálogo "Replace with Model References", selecione o atributo name que pertence ao tipo.

Como resultado, o caminho codificado permanentemente é substituído com uma cadeia de caracteres que contém uma expressão XPath (Figura 19). Isto dá a flexibilidade para o usuário da transformação de gerar várias classes Java com nomes diferentes.


Figura 19. O valor do caminho com o nome do arquivo substituído


Visualização maior da Figura 19.

  1. Salve o esquema criado.
  2. Na visualização do editor no painel "Transformation input schema and output actions", clique com o botão direito do mouse no tipo root e selecione Update Project.

Os modelos JET serão atualizados. A seguinte expressão XPath será adicionada ao modelo main.jet:

<ws:file
                path="{$projectInfo/@pkgDir}/{$item/@name}.java" replace="true"
                template="templates/item/myBookTitle.java.jet"/>

Edite os modelos para customizar a saída da transformação

Nota:

Para obter mais informações sobre este processo, leia Strategic Reuse with Asset-Based Development (uma publicação da IBM Redbooks, maio de 2008) e os tutoriais de modelo JET no Web site Eclipse.org.

Até este ponto, você estava desenvolvendo a transformação usando o editor de criação JET. Agora, com os esboços do modelo gerados, é preciso ajustá-los para permitir a geração do conteúdo da saída da transformação, de acordo com os requisitos de seu projeto.

Aqui, demonstraremos como é possível usar as ferramentas de edição fornecidas no conjunto de ferramentas do Rational Software Architect.

Para ajudá-lo na edição de modelos, a ferramenta indica cadeias de caracteres detectadas dentro do modelo que podem ser substituídas com artefatos de transformação. Os sinais de informações são exibidos na Project Explorer view (Figura 20). Ao abrir o modelo indicado, o texto a ser substituído está sublinhado. Ao passar o mouse sobre o texto sublinhado, uma cadeia de caractere de ajuda com uma ação sugerida é exibida.


Figura 20. A sugestão da assistência


Visualização maior da Figura 20.

  1. Selecione o texto sublinhado.
  2. Clique com o botão direito do mouse e selecione Find/Replace with Model References (Figura 21).
  3. Na janela de diálogo "Find/Replace with Model References", é possível selecionar o atributo sugerido ou qualquer outro atributo existente, ou criar um novo atributo.
    Para esta demonstração, selecionamos o atributo destacado sugerido, name, sob o tipo.
  4. Clique em Replace e, a seguir, clique em Close.

Figura 21. Substituindo o nome usando uma cadeia de caracteres gerada automaticamente


O texto selecionado no modelo será substituído com esta tag do JET:

<c:get select="$item/@name" />

É possível, neste ponto, substituir qualquer texto com a tag do JET. Nos modelos project.jet e main.jet anexados ao projeto de exemplo (consulte a seção Download ), substituímos o nome do projeto codificado permanentemente com esta expressão XPath:

<c:get select="$projectInfo/@name"
                />

Nota:
Os sinais de informações em Project Explorer desaparecerão quando todas as atualizações sugeridas forem realizadas e quaisquer modelos atualizados forem salvos.


Execute a transformação

Você criou uma transformação JET básica e agora está pronto para executá-la.

Para testar a transformação, crie um arquivo contendo a entrada dela. A edição do IBM® Rational® Software Architect para WebSphere® fornece as ferramentas para gerar um arquivo de entrada de teste com base no esquema XSD que foi gerado no projeto de criação da transformação. Siga estas etapas para gerar o arquivo de entrada:

  1. Selecione File > New > Other > XML > XML File e, a seguir, Next..
    Nota:
    Talvez seja necessário selecionar a caixa de opções Show All Wizards na janela de diálogo New para tornar esta opção disponível.
  2. Confirme a ativação das capacidades se aparecer uma caixa de diálogo pedindo que o faça.
  3. Selecione o projeto com.test.my.transform como contêiner, insira MyTest.xml como nome e clique em Next..
  4. Selecione o botão de opções Create XML file from an XML schema file e clique em Next..
  5. Clique no botão de opções Select file from Workspace .
  6. No projeto com.test.my.transform , selecione o arquivo schema.xsd e, a seguir, clique em Next..
  7. Marque todas as caixas de seleção e, a seguir, clique em Finish.
  8. Insira os dados necessários no arquivo MyTest.xml gerado e, a seguir, salve e feche o arquivo.

A Figura 22 mostra o arquivo de entrada sugerido.


Figura 22. Arquivo de entrada da transformação sugerido


A transformação está pronta para ser executada.

  1. No Project Explorer, clique com o botão direito do mouse no arquivo MyTest.xml e selecione Run As no menu.
  2. Selecione Run Configuration.
  3. Na janela Run Configurations, clique duas vezes em JET Transformation.
  4. Assegure-se de que o arquivo MyTest.xml esteja listado como Transformation Input (Figura 23).
  5. Clique em Run.

Figura 23. Definindo uma configuração de transformação de teste


Visualização maior da Figura 23.

Quando a transformação é executada, o novo projeto chamado BookLibrary é criado. Ele contém arquivos Java nomeados como especificado no arquivo MyTest.xml (Figura 24).


Figura 24. Os arquivos gerados pela execução da transformação


O conjunto de ferramentas Rational Software Architect pode ser usado de forma similar para elaborar adicionalmente o esquema de entrada e as ações de saída da transformação.


Etapas seguintes

Este artigo forneceu instruções passo a passo sobre como definir uma transformação básica com base nos modelos JET. Esta transformação eficiente definida pelo usuário pode simplificar o processo de desenvolvimento com base em ativos e ajudar na reutilização de código.

No próximo artigo desta série em duas partes, demonstraremos como usar as ferramentas do Rational Software Architect para gerar perfis específicos para o domínio de destino da transformação e como implementar a transformação em sua área de trabalho.

Assegure-se de verificar a seção Recursos para saber onde você pode aprender mais.



Download

DescriçãoNomeTamanhoMétodo de download
Example project filesartifacts04c.zip28KBHTTP

Informações sobre métodos de download


Recursos

Aprender

Obter produtos e tecnologias

Discutir

Sobre os autores

author photo

Marya Berfeld trabalha com verificação de software em ferramentas de modelagem com o IBM Rational desde 2000. Ela trabalhou no teste de vários recursos de modelagem e publicou um artigo sobre transformações de Java para UML no Rational Software Architect no developerWorks em 2008

author photo

Darren Coffin trabalha com verificação de software em ferramentas de modelagem com o IBM Rational desde 1999. Ele trabalhou intensivamente no teste de um grande número de recursos e diagramas de modelagem. É formado pela Universidade de Trent, com diploma em Estudos da Computação e Estudos de Recursos Ambientais.

Ajuda para Relatar Abuso

Relatar abuso

Obrigado. Esta entrada foi sinalizada para atenção do moderador.


Ajuda para Relatar Abuso

Relatar abuso

Falha no envio do Relatório de abuso. Tente novamente mais tarde.


developerWorks: Registre-se


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Selecione seu nome de exibição

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

(Deve possuir de 3 a 31 caracteres.)


Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Classificar este artigo

Comentários

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Rational
ArticleID=647402
ArticleTitle=Customize a transformação de texto para modelo com as ferramentas de edição do Rational Software Architect : Crie e execute o projeto de transformação JET
publish-date=04142011
author1-email=mberfeld@ca.ibm.com
author1-email-cc=
author2-email=dcoffin@ca.ibm.com
author2-email-cc=

Conheça a IBM da sua cidade

Virtual Branch Office Brasil

A IBM está mais perto do que você imagina!


Tags

Help
Use o campo de pesquisa para encontrar todos os tipos de conteúdo no My developerWorks com essa tag.

Use a barra de rolagem para ver mais ou menos tags.

Tags populares mostra as principais tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Minhas tags mostra suas tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Use o campo de pesquisa para localizar todos os tipos de conteúdo no Meu developerWorks com essa tag. Tags populares mostra as tags principais para essa zona de conteúdo particular (por exemplo, tecnologia Java, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere). Minhas tags mostra as suas tags para essa zona de conteúdo em particular (por exemplo, tecnologia Java, Linux, WebSphere).