Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 | Sí | 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 |
Paso 1: Agregar un analizador integrado
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>.tsAsegúrese de que cada analizador implementa la
IParserinterfaz .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 */ } }; } }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
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 Sí Integrado Conector de base de datos Conector de SQL Server Sí Integrado 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-analyserdetect-logical-groupsReglas para agrupar artefactos en grupos de flujo lógicos @migration-analyseranalyse-source-designReglas para analizar la arquitectura de origen y generar visualizaciones @migration-analyserdependency-and-decompilation-analysisReglas para identificar las dependencias que faltan Todos los agentes source-to-logic-apps-mappingAsignación de componentes por componente de origen a Azure Logic Apps @migration-plannerlogic-apps-planning-rulesReglas para generar planes de migración @migration-converterconversion-task-plan-rulesReglas para crear tareas de conversión @migration-converterscaffold-logic-apps-projectReglas para la esquematización de la estructura del proyecto de aplicación lógica estándar @migration-converterworkflow-json-generation-rulesReglas para generar workflow.jsonarchivos@migration-converterconnections-json-generation-rulesReglas para generar el connections.jsonarchivo@migration-converterdotnet-local-functions-logic-appsReglas para generar funciones locales de .NET @migration-converterno-stubs-code-generationReglas para asegurarse de que el código generado está completo @migration-converterruntime-validation-and-testingReglas para la validación y las pruebas en tiempo de ejecución @migration-convertercloud-deployment-and-testingReglas para la implementación y pruebas en la nube
Paso 4: Registrar la plataforma
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>'], }, ];En el
src/stages/discovery/PlatformDetector.tsarchivo, agregue la lógica de detección.En el
src/stages/discovery/SourceFolderService.tsarchivo, 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. |