Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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 |
Passo 1: Adicionar um parser integrado
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>.tsCertifica-te de que cada parser implementa a
IParserinterface.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 */ } }; } }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)
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 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-analyserdetect-logical-groupsRegras para agrupar artefactos em grupos lógicos de fluxo @migration-analyseranalyse-source-designRegras para análise da arquitetura fonte e geração de visualizações @migration-analyserdependency-and-decompilation-analysisRegras para identificar dependências em falta Todos os agentes source-to-logic-apps-mappingMapeamento componente a componente da origem para os Azure Logic Apps @migration-plannerlogic-apps-planning-rulesRegras para gerar planos de migração @migration-converterconversion-task-plan-rulesRegras para criar tarefas de conversão @migration-converterscaffold-logic-apps-projectRegras para estruturar a estrutura do projeto de aplicação lógica padrão @migration-converterworkflow-json-generation-rulesRegras para gerar workflow.jsonficheiros@migration-converterconnections-json-generation-rulesRegras para gerar o connections.jsonficheiro@migration-converterdotnet-local-functions-logic-appsRegras para gerar funções locais .NET @migration-converterno-stubs-code-generationRegras para garantir que o código gerado está completo @migration-converterruntime-validation-and-testingRegras para validação e teste em tempo de execução @migration-convertercloud-deployment-and-testingRegras para implementação e testes na cloud
Passo 4: Registe a tua plataforma
No
src/types/platforms.tsarquivo, 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>'], }, ];No
src/stages/discovery/PlatformDetector.tsficheiro, adiciona a lógica de deteção.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. |