Alguém que não o autor da transformação de destino pode criar uma extensão de transformação.
Para estender uma transformação, você deve verificar se as propriedades extensible e public da transformação de destino estão configuradas como true; também deverá obter as informações do ponto de extensão e o identificador da transformação de destino, além dos identificadores das transfigurações na transformação de destino. Você pode obter essas informações no documento especificado na propriedade document no arquivo de manifesto da transformação de destino.
Também é possível especificar o identificador de uma transformação de destino que não esteja no espaço de trabalho atual, no entanto, não é possível executar a extensão executando a transformação de destino até que seja registrada.
Depois de criar uma extensão de transformação, você pode declarar as regras, os extratores, as transfigurações e as propriedades que aprimoram o comportamento da transformação de destino. Declarar esses elementos não especifica sua ordem de processamento na extensão de transformação. Para cada regra, extrator ou transfiguração declarado, um elemento RuleDefinition, ExtractorDefinition ou TransformDefinition é incluído no elemento TransformationExtension. Ao executar a transformação de destino, a funcionalidade da transformação núcleo tenta carregar a classe especificada do elemento e inclui uma instância do elemento na instância da transformação de destino.
Ao criar uma extensão de transformação, é possível estender várias transfigurações. As transfigurações estendidas, também chamadas de transfigurações de destino, devem existir na transformação de destino. Ao especificar uma transfiguração a ser estendida, um elemento ExtendTransform é incluído no arquivo de manifesto do plug-in da extensão de transformação.
Depois de declarar as regras, os extratores e as transfigurações da extensão de transformação, você pode especificar sua ordem de execução em uma transfiguração de destino. Uma transfiguração extensível contém uma lista de elementos, que é um índice baseado em zero. Essa lista especifica a ordem em que o mecanismo de transformação executa os elementos na transfiguração. Ao incluir um elemento em uma transfiguração de destino, você pode indicar onde inserir o elemento nos elementos existentes da transfiguração de destino especificando um valor de índice ou indicando qual elemento será executado depois do novo elemento:
Se você não especificar um valor de índice, o elemento será inserido no final da transfiguração de destino.
Depois que você definir os elementos na extensão de transformação, especificar as transfigurações que serão estendidas e incluir elementos nas transfigurações de destino, você poderá compilar o plug-in de extensão de transformação e testá-lo em um ambiente de trabalho de tempo de execução. Durante as fases de desenvolvimento e teste da criação da extensão de transformação, você pode ativar ou desativar elementos TransformationExtension individuais. Depois de implementar o plug-in que contém a extensão de transformação, assegure-se de que cada elemento TransformationExtension esteja ativado.
Para executar a extensão de transformação, é necessário executar a transformação de destino. Quando uma instância da transformação de destino é solicitada, o serviço de transformação incorpora todas as extensões associadas nessa instância da transformação de destino.
Se várias extensões de transformação estenderem a mesma transfiguração, e se os valores de índice dos elementos de transfiguração entrarem em conflito ou não existirem, a ordem de execução dos elementos será determinada pela análise do arquivo de manifesto de plug-ins executado pelo Eclipse na inicialização.