Estenda o Azure Logic Apps Migration Agent para outras plataformas criando parsers personalizados (pré-visualização)

Aplica-se a: Aplicativos Lógicos do Azure (Padrão)

Note

Esta funcionalidade de pré-visualização está sujeita aos Termos Suplementares de Utilização para Prévisualizações do Microsoft Azure.

Se a sua organização utiliza uma plataforma de integração que a extensão Azure Logic Apps Migration Agent no Visual Studio Code atualmente não suporta, como TIBCO BusinessWorks, IBM IIB/ACE, Dell Boomi ou Workato, pode estender o agente criando e adicionando um parser personalizado para essa plataforma. A extensão utiliza uma arquitetura de parser baseada em registo que suporta tanto analisadores integrados como externos, permitindo adicionar suporte à plataforma sem modificar o pipeline de migração do núcleo.

Este artigo mostra como criar e adicionar um parser personalizado que transforme os artefactos da sua plataforma de integração de origem no formato comum de Representação Intermédia (IR) do agente de migração. Este documento JSON descreve artefactos de forma neutra em relação à plataforma e permite ao agente processar os seus artefactos através das 5 fases de migração.

Pré-requisitos

Antes de começar, certifique-se de que dispõe dos seguintes recursos:

Requisito Description
Node.js 18 anos ou depois Ambiente de execução JavaScript gratuito, de código aberto 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 o Visual Studio Code
Extensão do Agente de Migração do Azure Logic Apps Extensão necessária com agente de migração para Visual Studio Code
Extensão do Azure Logic Apps (Padrão) Dependência necessária para a extensão Azure Logic Apps Migration Agent
Familiaridade com o TypeScript Uma linguagem de programação fortemente tipada que se baseia em JavaScript
Projeto de integração de código-fonte O projeto de integração de código-fonte e os ficheiros de artefactos para a plataforma onde pretende suporte técnico

Arquitetura de análise sintáctica

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

Approach Recomendado Description
Parser incorporado: Contribuir no repositório GitHub da extensão Yes Adiciona um parser e competências diretamente ao projeto. Integração total com as cinco fases de migração. Esta abordagem é recomendada porque os parsers integrados vêm com a extensão, usam o mesmo pipeline CI/CD e podem aceder a todas as APIs internas.
Extensão do parser externo No Crie uma extensão Visual Studio Code separada que registre parsers através da API do plugin. Abrange apenas a fase de Descoberta.

Todos os analisadores transformam artefactos da plataforma de origem num formato IR comum como um documento JSON. O agente de migração utiliza o formato IR nas fases de planeamento, conversão e validação. O registo do parser suporta tanto plugins de parser incorporados como externos:

Analisadores incorporados Plugins de parser externos
BizTalk (.btproj, .odx)
BizTalk (.btm, .xsd)
BizTalk (.btp)
MuleSoft (esboço)
Parsers de plataformas parceiras
Parsers comunitários

Diagrama que mostra como os plugins de parser incorporados e externos alimentam o formato comum de documentos IR usado pelas fases de migração.

Passo 1: Adicionar um parser integrado

  1. Em src/parsers/<your-platform>/, crie um novo módulo de 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. Certifica-te de que cada parser 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. Registe o teu parser 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>());
    }
    

    Sugestão

    Utilize como uma referência totalmente funcional a implementação do parser BizTalk em src/parsers/biztalk/.

Passo 2: Adicionar competências específicas da plataforma

Como ficheiros Markdown, as competências fornecem instruções de IA para cada etapa de migração. Eles dizem aos agentes do GitHub Copilot como analisar, planear e converter artefactos para a sua plataforma específica.

Para encontrar estas competências, veja abaixo resources/skills/ variantes específicas de 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 ficheiro SKILL.md utiliza metadados YAML seguido por conteú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).
---

Passo 3: Mapeie a sua plataforma para componentes Azure Logic Apps (Standard)

  1. Consulte a tabela seguinte para criar os mapeamentos dos adaptadores:

    < your-platform> Componente Azure Logic Apps equivalente Nativo? Notes
    Ouvinte HTTP Acionador HTTP Yes Built-in
    Conector de base de dados Conector do SQL Server Yes Built-in
  2. Para cada competência na tabela seguinte, crie a variante de competência necessária <your-platform>/SKILL.md.

    Sugestão

    Copie as competências de uma plataforma suportada, como biztalk/SKILL.md, como ponto de partida, e adapte o conteúdo para a sua plataforma.

    GitHub agente do Copilot Competência Purpose
    @migration-analyser detect-logical-groups Regras para agrupar artefactos em grupos lógicos de fluxo
    @migration-analyser analyse-source-design Regras para análise da arquitetura fonte e geração de visualizações
    @migration-analyser dependency-and-decompilation-analysis Regras para identificar dependências em falta
    Todos os agentes source-to-logic-apps-mapping Mapeamento componente a componente da origem para os Azure Logic Apps
    @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 a estrutura do projeto de aplicação lógica padrão
    @migration-converter workflow-json-generation-rules Regras para gerar workflow.json ficheiros
    @migration-converter connections-json-generation-rules Regras para gerar o connections.json ficheiro
    @migration-converter dotnet-local-functions-logic-apps Regras para gerar funções locais .NET
    @migration-converter no-stubs-code-generation Regras para garantir que o código gerado está completo
    @migration-converter runtime-validation-and-testing Regras para validação e teste em tempo de execução
    @migration-converter cloud-deployment-and-testing Regras para implementação e testes na cloud

Passo 4: Registe a tua plataforma

  1. No src/types/platforms.ts arquivo, adicione a sua plataforma à lista das 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 src/stages/discovery/PlatformDetector.ts ficheiro, adiciona a lógica de deteção.

  3. No ficheiro src/stages/discovery/SourceFolderService.ts, adiciona os padrões de ficheiros.

Passo 5 (opcional): Adicionar exemplos de RI

Para documentar como os artefactos da sua plataforma correspondem ao esquema IR, adicione um docs/IRExamples_YourPlatform.md ficheiro. Existem os seguintes exemplos que servem como modelos:

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

Alternativa: Extensão de parser externo

Extensões de parser externo cobrem apenas a fase de Descoberta do agente de migração, onde o agente analisa os seus ficheiros fonte. Competências, deteção de plataformas e planeamento e conversão com suporte por IA exigem que contribua diretamente para o repositório GitHub da extensão.

No entanto, se preferires não contribuir diretamente para o repositório, cria uma extensão de Visual Studio Code separada que regista os parsers usando a API do plugin 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 plugins de analisador

Método ou propriedade Description
version Versão de extensão (apenas leitura)
registerParser(parser, options?) Registe um analisador no registo.
unregisterParser(id) Remover um parser registado.
getParserRegistry() Acede diretamente ao registo do parser.
hasParser(id) Verifique se um parser está registado.
getExternalParsers() Obtenha informações sobre parsers externos registados.

Passos seguintes