Os padrões de design descrevem uma solução padrão para um problema recorrente de desenvolvimento de software e fornecem soluções que podem ser aplicadas em muitas situações. Se você reutilizar designs utilizando padrões de design, é possível aumentar a qualidade e a confiabilidade da solução.
Uma especificação de padrão descreve o problema que um padrão soluciona, o contexto no qual a solução proposta é apropriada e fornece uma descrição abstrata da solução. O processo de aplicação dessa abstração a um problema ewspecífico é chamado de aplicação de padrão. Uma ferramenta que auxilia na aplicação de padrão é chamada de uma implementação de padrão. Uma implementação de padrão possibilita descrever uma aplicação de padrão em termos de abstrações na especificação de padrão. É possível utilizar a implementação de padrão para gerar os artefatos, como atquivos, pastas e projetos, que formam sua solução. Dependendo do padrão de design, você pode especificar lógica adicional nos artefatos gerados.
JET e a funcionalidade de autoria de transformação de JET suportam implementações onde a entrada é descrita em um modelo estruturado e a solução de padrão gerada consiste em arquivos de texto. Essas implementações de padrão também são chamadas de transformações de modelo em texto.
As transformações de modelo JET em texto aceitam documentos de Extensible Markup Language (XML) e modelos Eclipse Modeling Framework (EMF) como entrada e produzem arquivos, pastas e projetos Eclipse como saída. Os tipos de entrada e saída que a transformação de JET produz são extensíveis utilizando-se o JET Software Development Kit (SDK).
Para criar transformações de JET, você deve instalar o componente de Autoria de Transformação.
Para criar uma transformação de modelo em texto utilizando a funcionalidade de autoria de transformação de JET, você executa as seguintes etapas de alto nível:
O esquema de entrada de transformação e as ações JET são coletivamente chamadas de modelo de transformação e são exibidas na área do editor. A maioria das transformações de JET são criadas repetindo-se as etapas 2, 3 e 4, conforme necessário.
Um esquema de entrada de transformação descreve a estrutura da entrada para a transformação. O esquema de entrada é exibido como uma hierarquia de tipos e atributos de elementos.
Apesar de JET poder ler modelos que têm esquemas de entrada muito complexos, para facilitar o processo de autoria, a funcionalidade para a autoria de transformações de JET está restrita à definição de esquemas básicos.
Não é permitido especificar cardinalidades com a funcionalidade de autoria de transformação de JET. Toda retenção de elemento é de zero para muitos. Por exemplo, um esquema de entrada pode especificar que manuais contêm capítulos, mas o esquema de entrada não pode especificar o número de capítulos que os manuais contêm.
Por exemplo, é possível criar um mapeamento de entrada de transformação de UML em JET que chame a transformação de JET. Esse mapeamento permite desenvolver uma transformação de JET com um esquema básico de entrada, mas permite que usuários de transformações descrevam a entrada, utilizando Extensible Markup Language (UML).
Nota: Não é permitido especificar o metamodelo UML como o modelo de origem em um mapeamento.
Quando as abstrações do padrão de design são capturadas no esquema de entrada, você deve determinar como os artefatos na solução de referência, também chamados de exemplar, derivam desse esquema. As ações de transformação, também chamadas de ações JET, criam projetos, pastas e arquivos. Quando a transformação de JET é executada, uma ação JET é chamada toda vez que um elemento desse tipo é encontrado na entrada de transformação.
Cada ação JET tem parâmetros de ação que controlam como a ação se comporta. Esses parâmetros são configurados para valores que recriam o artefato exemplar que cria a ação JET. Geralmente, você customiza esses valores de parâmetros para incluir os valores extraídos da entrada da transformação.
Ações de arquivo JET criam conteúdo de arquivo avaliando um modelo JET. Ao atualizar o projeto, esses modelos são criados se não existirem. O conteúdo inicial dos modelos é o mesmo que o conteúdo no arquivo exemplar especificado na criação da ação de arquivo correspondente. É possível modificar o modelo gerado para gerar o conteúdo customizado para a entrada de transformação.
Ao justificar artefatos exemplares no modelo de transformação, é possível excluir um artefato da área do editor se a transformação não gerar um tipo específico de artefato. O arquivo físico, a pasta ou o projeto excluído não é afetado. Você também pode ignorar um artefato, o que permite que o artefato permaneça na área do editor e permite desfazer a ação ignorar e associar o artefato ao esquema de entrada da transformação.
As ações e os modelos JET criados quando da autoria de uma transformação são cópias dos artefatos exemplares. Geralmente, você modifica os parâmetros da ação e o conteúdo do modelo para especificar os valores na entrada da transformação.
É possível substituir texto selecionado por referências à entrada de transformação ao editar os valores de parâmetros das ações JET.
Referências de entrada da transformação são no formato de expressões de XML Path (XPath). XPath, que é um padrão do World Wide Web Consortium, é projetado para documentos XML; no entanto, JET adapta esse padrão para suportar diversos tipos de modelos de entrada.
Expressões XPath integradas a valores de parâmetros de ação são colocadas entre chaves ({ }) e, quando você substituir variáveis por referências de modelo, essas expressões são exibidas em um formato {$variable/@attribute}, onde variable é o nome de um elemento de modelo de entrada e attribute é o nome de um atributo no elemento. Cada elemento de modelo de entrada tem um nome de variável XPath associado. Por padrão, o ambiente de autoria mantém o nome da variável sincronizado com o nome do elemento.
Apesar de a funcionalidade de autoria criar expressões XPath básicas, JET fornece uma implementação abrangente da especificação XPath 1.0 e inclui um conjunto de funções XPath que podem manipular valores da entrada da transformação. Por exemplo, a expressão XPath {lower-case($person/@name)} converte a referência de entrada $person/@name para minúsculas.
As funções XPath podem ser utilizadas em qualquer lugar que uma expressão XPath seja permitida.
Verifique a visualização Problemas para obter informações detalhadas sobre os marcadores JET.
É possível criar atributos derivados para eliminar os cálculos repetitivos. Um atributo derivado é um atributo de um elemento de esquema de entrada que é gerado por um cálculo, em vez de fornecido como entrada de transformação. O cálculo pode fazer referência a outros elementos e atributos no esquema de entrada. É possível criar atributos derivados diretamente ao editar um modelo de mapeamento de transformação ou sempre que você inserir referências do modelo de transformação.
Durante a passagem da entrada da transformação, os cálculos de atributos derivados e os cálculos para parâmetros de ação JET associados a um elemento de esquema de entrada podem fazer referência às variáveis XPath que referem-se ao elemento atual e a cada uma das variáveis pertencentes aos elementos ascendentes.
Para auxiliá-lo a identificar o texto nos modelos que devem ser substituídos por referências à entrada da transformação, as substituições de texto especificadas são monitoradas. Toda vez que você substituir uma cadeia de texto por uma referência específica à entrada da transformação, esse texto é armazenado como texto exemplar no modelo de entrada da transformação, que você pode visualizar, incluir ou remover. Esse texto também é utilizado para criar marcadores JET de Substituição, que realça texto que é semelhante ao texto nos modelos JET que a transformação gera. É possível resolver os marcadores JET de Substituição utilizando o mecanismo Eclipse Quick Fix. Essa funcionalidade possibilita substituir o texto pela tage JET apropriada ou ignorar o marcador, pois nenhuma alteração é necessária no texto.
É possível criar uma estrutura de interface e projeto UML que transforma um modelo UML em um modelo de entrada JET que pode ser utilizado como entrada para uma transformação de JET. Essa funcionalidade pode ser utilizada para representar graficamente modelos não-gráficos que funcionam como a entrada para transformações de JET. Por exemplo, você pode criar essa infra-estrutura para criar uma interface UML para um modelo não-gráfico, como um padrão de bean Java baseado em JET.
A transformação de mapeamento de modelo em modelo transforma um modelo UML em um modelo de entrada JET.
O perfil UML nesse projeto define os estereótipos e as extensões para o modelo UML que funciona como entrada para a transformação de modelo em modelo. O projeto do perfil UML gerado é compatível com a funcionalidade das ferramentas do perfil UML.
Esse projeto contém a interface de programação de aplicativos (API) de Java para o modelo de entrada JET gerado.
Esse projeto de recurso faz referência à transformação de modelo em texto JET que transforma o modelo de entrada JET gerado e o projeto EMF que contém a API de Java para o modelo de entrada JET gerado. É possível exportar esse projeto utilizando a funcionalidade de exportação Eclipse Deployable Feature.