Estender Aplicativos Lógicos do Azure Agente de Migração para outras plataformas criando analisadores personalizados (versão prévia)

Aplica-se a: Aplicativos Lógicos do Azure (Standard)

Note

Este recurso de visualização está sujeito aos Termos de Uso Complementares para Visualizações do Microsoft Azure.

Se sua organização usar uma plataforma de integração à qual a extensão do agente de migração Aplicativos Lógicos do Azure no Visual Studio Code atualmente não oferece suporte, como TIBCO BusinessWorks, IBM IIB/ACE, Dell Boomi ou Workato, você pode estender o agente criando e adicionando um analisador personalizado para essa plataforma. A extensão usa uma arquitetura de analisador baseada em registro que dá suporte a analisadores internos e externos, para que você possa adicionar suporte à plataforma sem modificar o pipeline de migração principal.

Este artigo mostra como criar e adicionar um analisador personalizado que transforma os artefatos da plataforma de integração de origem no formato comum de Representação Intermediária (IR) do agente de migração. Este documento JSON descreve artefatos de forma neutra em plataforma e permite que o agente processe seus artefatos em todos os cinco estágios de migração.

Pré-requisitos

Antes de começar, verifique se você tem os seguintes recursos:

Requirement Description
Node.js 18 ou posterior Ambiente de runtime javaScript gratuito, de software livre e multiplataforma
Visual Studio Code 1.85.0 ou posterior Experiência de desenvolvimento local
Visual Studio Code API de Extensão API que permite criar extensões para Visual Studio Code
extensão do Agente de Migração do Aplicativos Lógicos do Azure Extensão necessária com agente de migração para Visual Studio Code
Extensão Aplicativos Lógicos do Azure (Standard) Dependência necessária para a extensão do Agente de Migração Aplicativos Lógicos do Azure
Familiaridade com TypeScript Uma linguagem de programação fortemente tipada que se baseia no JavaScript
Projeto de integração de origem O projeto de integração da fonte e os arquivos de artefatos para a plataforma para a qual você precisa de suporte

Arquitetura do analisador sintático

Para adicionar suporte de plataforma ao agente de migração, use as seguintes abordagens:

Approach Recomendado Description
Compilador embutido: contribua para o repositório GitHub do extension Sim Adicione um analisador e habilidades diretamente ao projeto. Integração completa com todos os cinco estágios de migração. Essa abordagem é recomendada porque os analisadores sintáticos internos vêm junto com a extensão, utilizam o mesmo pipeline de CI/CD e podem acessar todas as APIs internas.
Extensão do analisador externo No Crie uma extensão Visual Studio Code separada que registre analisadores por meio da API de plug-in. Abrange apenas o estágio de descoberta.

Todos os analisadores transformam artefatos da plataforma de origem em um formato IR comum como um documento JSON. O agente de migração usa o formato IR nos estágios de planejamento, conversão e validação. O registro do analisador dá suporte a plug-ins internos e externos do analisador:

Analisadores incorporados Plugins de parsers externos
BizTalk (.btproj, .odx)
BizTalk (.btm, .xsd)
BizTalk (.btp)
MuleSoft (stub)
Analisadores de plataformas parceiras
Analisadores de comunidade

Diagrama que mostra como os plugins internos e externos do analisador contribuem para o formato de documento IR comum usado pelos estágios de migração.

Etapa 1: Adicionar um analisador interno

  1. Em src/parsers/<your-platform>/, crie um novo módulo analisador.

    src/parsers/
    ├── biztalk/              # Reference implementation
    │   ├── index.ts
    │   ├── types.ts
    │   ├── BizTalkProjectParser.ts
    │   ├── BizTalkOrchestrationParser.ts
    │   └── ...
    ├── <your-platform>/      # Your new parser
    │   ├── index.ts
    │   ├── types.ts
    │   └── <your-platform-parser-name>.ts
    
  2. Verifique se cada analisador implementa a IParser interface.

    import { IParser, ParserCapabilities, ParseResult, ParseOptions } from '../types';
    import { IRDocument, createEmptyIRDocument } from '../../ir/types';
    
    export class YourPlatformParser implements IParser {
        get capabilities(): ParserCapabilities {
            return {
                platform: '<your-platform>',
                fileExtensions: ['.<your-extension>'],
                fileTypes: ['flow'],
                supportsFolder: false,
                description: 'Parses <your-platform> integration flows.',
            };
        }
    
        canParse(filePath: string): boolean {
            return filePath.endsWith('.<your-extension>');
        }
    
        async parse(
            filePath: string,
            options?: ParseOptions
        ): Promise<ParseResult> {
            const ir = createEmptyIRDocument();
            // Parse the source file and populate the IR document.
            // For the complete schema, see docs/IRSchema.md.
            return { ir, stats: { /* parsing statistics */ } };
        }
    }
    
  3. Registre o analisador em src/parsers/index.ts.

    import { <your-platform-parser-name> } from './<your-platform>';
    
    export function initializeParsers(): void {
        // ... existing parsers ...
        defaultParserRegistry.register(new <your-platform-parser-name>());
    }
    

    Dica

    Como uma referência completamente funcional, use a implementação do analisador BizTalk em src/parsers/biztalk/.

Etapa 2: Adicionar habilidades específicas da plataforma

Como arquivos markdown, as habilidades fornecem instruções de IA para cada estágio de migração. Eles informam aos agentes GitHub Copilot como analisar, planejar e converter artefatos para sua plataforma específica.

Para encontrar essas habilidades, procure em resources/skills/ com variantes específicas da plataforma.

resources/skills/
├── detect-logical-groups/
│   ├── biztalk/SKILL.md
│   ├── mulesoft/SKILL.md
│   └── <your-platform>/SKILL.md
├── source-to-logic-apps-mapping/
│   ├── biztalk/SKILL.md
│   ├── mulesoft/SKILL.md
│   └── <your-platform>/SKILL.md
└── ... (13 skills total)

Cada SKILL.md arquivo usa o frontmatter YAML seguido pelo conteúdo do Markdown, por exemplo:

---
name: source-to-logic-apps-mapping
description: >-
   Component mapping for \<*your-platform*\> components to their equivalents in Azure Logic Apps (Standard).
---

Etapa 3: Mapear sua plataforma para componentes Aplicativos Lógicos do Azure (Standard)

  1. Examine a tabela a seguir para criar os mapeamentos do adaptador:

    < sua plataforma> Componente Aplicativos Lógicos do Azure equivalente Nativo? Notes
    Escutador HTTP Gatilho HTTP Sim Interna
    Conector de banco de dados Conector do SQL Server Sim Interna
  2. Para cada habilidade na tabela a seguir, crie a variante de habilidade necessária <your-platform>/SKILL.md :

    Dica

    Copie as habilidades para uma plataforma com suporte, como biztalk/SKILL.md, como ponto de partida e adapte o conteúdo para sua plataforma.

    Agente do GitHub Copilot Skill Purpose
    @migration-analyser detect-logical-groups Regras para agrupar artefatos em grupos de fluxo lógico
    @migration-analyser analyse-source-design Regras para analisar a arquitetura de origem e gerar visualizações
    @migration-analyser dependency-and-decompilation-analysis Regras para identificar dependências ausentes
    Todos os agentes source-to-logic-apps-mapping Mapeamento componente por componente da origem para o Aplicativos Lógicos do Azure
    @migration-planner logic-apps-planning-rules Regras para gerar planos de migração
    @migration-converter conversion-task-plan-rules Regras para criar tarefas de conversão
    @migration-converter scaffold-logic-apps-project Regras para estruturar o scaffolding da estrutura de projeto do aplicativo lógico Standard
    @migration-converter workflow-json-generation-rules Regras para gerar workflow.json arquivos
    @migration-converter connections-json-generation-rules Regras para gerar o connections.json arquivo
    @migration-converter dotnet-local-functions-logic-apps Regras para gerar .NET funções locais
    @migration-converter no-stubs-code-generation Regras para garantir que o código gerado seja concluído
    @migration-converter runtime-validation-and-testing Regras para validação e teste de runtime
    @migration-converter cloud-deployment-and-testing Regras para implantação e teste de nuvem

Etapa 4: Registrar sua plataforma

  1. No arquivo src/types/platforms.ts, adicione sua plataforma à lista de plataformas suportadas.

    export type SourcePlatform = 'biztalk' | 'mulesoft' | '<your-platform>';
    
    export const SUPPORTED_PLATFORMS: PlatformInfo[] = [
        // ... existing platforms ...
        {
            id: '<your-platform>',
            label: '<your-platform-name>',
            description: '<your-platform> version <version-number>',
            icon: '$(server)',
            filePatterns: ['.<your-extension>', '.<your-config>'],
        },
    ];
    
  2. No arquivo src/stages/discovery/PlatformDetector.ts, adicione a lógica de detecção.

  3. No arquivo src/stages/discovery/SourceFolderService.ts, adicione os padrões de arquivo.

Etapa 5 (opcional): adicionar exemplos de IR

Para documentar como os artefatos da plataforma são mapeados para o esquema IR, adicione um arquivo docs/IRExamples_YourPlatform.md. Os exemplos a seguir existem e servem como modelos:

Exemplo Description
docs/IRExamples_BizTalk.md Referência do BizTalk
docs/IRExamples_MuleSoft.md Referência do MuleSoft
docs/IRExamples_Boomi.md Exemplo de Dell Boomi
docs/IRExamples_IBMIIB.md Exemplo de IBM IIB/ACE
docs/IRExamples_TIBCO.md Exemplo de TIBCO BusinessWorks
docs/IRExamples_Workato.md Exemplo de Workato

Alternativa: Extensão do analisador externo

As extensões do analisador externo abrangem apenas o estágio de descoberta do agente de migração em que o agente analisa seus arquivos de origem. Habilidades, detecção de plataforma e planejamento e conversão alimentados por IA exigem que você contribua diretamente para o repositório do GitHub da extensão.

No entanto, se você preferir não contribuir diretamente com o repositório, crie uma extensão Visual Studio Code separada que registre analisadores usando a API do plug-in parse:

import * as vscode from 'vscode';

export async function activate(context: vscode.ExtensionContext) {
    const assistant = vscode.extensions.getExtension('microsoft.logicapps-migration-assistant');

    if (assistant) {
        const api = await assistant.activate();
        api.registerParser(new MyPlatformParser(), {
            priority: 10,
        });
    }
}

API de plug-in do analisador

Método ou propriedade Description
version Versão da extensão (somente leitura)
registerParser(parser, options?) Registre um analisador com o registro.
unregisterParser(id) Remova um analisador registrado.
getParserRegistry() Acesse diretamente o registro do analisador.
hasParser(id) Verifique se um analisador está registrado.
getExternalParsers() Obtenha informações sobre analisadores externos registrados.
  • Automação de migração de plataformas de integração para Aplicativos Lógicos do Azure

Próximas Etapas