Ampliar Azure Logic Apps Migration Agent a otras plataformas mediante la creación de analizadores personalizados (versión preliminar)

Se aplica a: Azure Logic Apps (Estándar)

Note

Esta característica de versión preliminar está sujeta a los Términos de uso complementarios para las versiones preliminares de Microsoft Azure.

Si su organización usa una plataforma de integración que la extensión Azure Logic Apps Migration Agent en Visual Studio Code no admite actualmente, como TIBCO BusinessWorks, IBM IIB/ACE, Dell Boomi o Workato, puede ampliar el agente creando y agregando un analizador personalizado para esa plataforma. La extensión usa una arquitectura de analizador basada en el Registro que admite analizadores integrados y externos, por lo que puede agregar compatibilidad con la plataforma sin modificar la canalización de migración principal.

En este artículo se muestra cómo crear y agregar un analizador personalizado que transforma los artefactos de la plataforma de integración de origen en el formato común de representación intermedia (IR) del agente de migración. En este documento JSON se describen los artefactos de forma neutra de la plataforma y se permite al agente procesar los artefactos a través de las cinco fases de migración.

Prerequisites

Antes de empezar, asegúrese de que tiene los siguientes recursos:

Requirement Description
Node.js 18 o posterior Entorno de tiempo de ejecución de JavaScript multiplataforma, gratuito y de código abierto
Visual Studio Code 1.85.0 o posterior Experiencia de desarrollo local
API de extensión Visual Studio Code API que le permite crear extensiones para Visual Studio Code
Extensión del agente de migración de Azure Logic Apps Extensión necesaria con el agente de migración para Visual Studio Code
extensión Azure Logic Apps (Estándar) Dependencia necesaria para la extensión del agente de migración de Azure Logic Apps
Familiaridad con TypeScript Un lenguaje de programación fuertemente tipado que se basa en JavaScript
Proyecto de integración de origen El proyecto de integración de origen y los archivos de artefactos de la plataforma donde desea obtener soporte

Arquitectura del analizador

Para agregar compatibilidad con la plataforma al agente de migración, use los siguientes enfoques:

Approach Recomendado Description
Analizador sintáctico incorporado: Contribuir al repositorio de GitHub de la extensión Agregue un analizador y aptitudes directamente al proyecto. Integración completa con las cinco fases de migración. Este enfoque se recomienda porque los analizadores integrados se envían con la extensión, usan la misma canalización de CI/CD y pueden acceder a todas las API internas.
Extensión del analizador externo No Cree una extensión de Visual Studio Code independiente que registre analizadores a través de la API del complemento. Cubre solo la fase de descubrimiento.

Todos los analizadores transforman los artefactos de la plataforma de origen en un formato de IR común como un documento JSON. El agente de migración usa el formato IR en las fases de planificación, conversión y validación. El registro del analizador admite complementos de analizador integrados y externos:

Analizadores integrados Plugins de analizador externo
BizTalk (.btproj, .odx)
BizTalk (.btm, .xsd)
BizTalk (.btp)
MuleSoft (stub)
Analizadores de plataformas de socios
Analizadores comunitarios

Diagrama que muestra cómo los complementos integrados y externos del analizador se integran en el formato de documento de IR común utilizado por las fases de migración.

Paso 1: Agregar un analizador integrado

  1. En src/parsers/<your-platform>/, cree un nuevo módulo de analizador.

    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. Asegúrese de que cada analizador implementa la IParser interfaz .

    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 el analizador en 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>());
    }
    

    Sugerencia

    Como referencia completa y funcional, use la implementación del analizador de BizTalk en src/parsers/biztalk/.

Paso 2: Agregar aptitudes específicas de la plataforma

Como archivos Markdown, las habilidades proporcionan instrucciones de inteligencia artificial para cada etapa de migración. Indican a los agentes de GitHub Copilot cómo analizar, planear y convertir artefactos para su plataforma específica.

Para buscar estas capacidades, consulte en resources/skills/ con variantes específicas de la 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 archivo SKILL.md utiliza YAML como frontmatter seguida de contenido en formato Markdown, por ejemplo:

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

Paso 3: Mapee su plataforma a los componentes (estándar) de Azure Logic Apps

  1. Revise la tabla siguiente para crear las asignaciones de adaptadores:

    < your-platform> componente Azure Logic Apps equivalente ¿Nativo? Notas
    Agente de escucha de HTTP Desencadenador HTTP Integrado
    Conector de base de datos Conector de SQL Server Integrado
  2. Para cada aptitud de la tabla siguiente, cree la variante de aptitud necesaria <your-platform>/SKILL.md :

    Sugerencia

    Copie las habilidades de una plataforma compatible, como biztalk/SKILL.md, como punto de partida y adapte el contenido para su plataforma.

    Agente de GitHub Copilot Habilidad propósito
    @migration-analyser detect-logical-groups Reglas para agrupar artefactos en grupos de flujo lógicos
    @migration-analyser analyse-source-design Reglas para analizar la arquitectura de origen y generar visualizaciones
    @migration-analyser dependency-and-decompilation-analysis Reglas para identificar las dependencias que faltan
    Todos los agentes source-to-logic-apps-mapping Asignación de componentes por componente de origen a Azure Logic Apps
    @migration-planner logic-apps-planning-rules Reglas para generar planes de migración
    @migration-converter conversion-task-plan-rules Reglas para crear tareas de conversión
    @migration-converter scaffold-logic-apps-project Reglas para la esquematización de la estructura del proyecto de aplicación lógica estándar
    @migration-converter workflow-json-generation-rules Reglas para generar workflow.json archivos
    @migration-converter connections-json-generation-rules Reglas para generar el connections.json archivo
    @migration-converter dotnet-local-functions-logic-apps Reglas para generar funciones locales de .NET
    @migration-converter no-stubs-code-generation Reglas para asegurarse de que el código generado está completo
    @migration-converter runtime-validation-and-testing Reglas para la validación y las pruebas en tiempo de ejecución
    @migration-converter cloud-deployment-and-testing Reglas para la implementación y pruebas en la nube

Paso 4: Registrar la plataforma

  1. En el archivo src/types/platforms.ts, agregue sus plataformas a la lista de plataformas admitidas.

    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. En el src/stages/discovery/PlatformDetector.ts archivo, agregue la lógica de detección.

  3. En el src/stages/discovery/SourceFolderService.ts archivo, agregue los patrones de archivo.

Paso 5 (opcional): Adición de ejemplos de IR

Para documentar cómo los artefactos de su plataforma se asignan al esquema de IR, agregue un archivo docs/IRExamples_YourPlatform.md. Existen los ejemplos siguientes y sirven como plantillas:

Ejemplo Description
docs/IRExamples_BizTalk.md Referencia de BizTalk
docs/IRExamples_MuleSoft.md Referencia de MuleSoft
docs/IRExamples_Boomi.md Ejemplo de Dell Boomi
docs/IRExamples_IBMIIB.md Ejemplo de IBM IIB/ACE
docs/IRExamples_TIBCO.md Ejemplo de TIBCO BusinessWorks
docs/IRExamples_Workato.md Ejemplo de Workato

Alternativa: extensión del analizador externo

Las extensiones del analizador externo solo cubren la fase de detección del agente de migración donde el agente analiza los archivos de origen. Las aptitudes, la detección de plataformas y la planeación y conversión con tecnología de inteligencia artificial requieren que contribuya directamente al repositorio de GitHub de extension.

Sin embargo, si prefiere no contribuir directamente al repositorio, cree una extensión de Visual Studio Code independiente que registre analizadores mediante la API del complemento 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 del complemento de analizador

Método o propiedad Description
version Versión de la extensión (solo lectura)
registerParser(parser, options?) Registre un analizador con el Registro.
unregisterParser(id) Quite un analizador registrado.
getParserRegistry() Acceda directamente al registro del analizador.
hasParser(id) Compruebe si un analizador está registrado.
getExternalParsers() Obtenga información sobre analizadores externos registrados.

Pasos siguientes