Utöka Azure Logic Apps Migration Agent till andra plattformar genom att skapa anpassade parsers (förhandsversion)

Gäller för: Azure Logic Apps (Standard)

Note

Den här förhandsgranskningsfunktionen omfattas av de kompletterande användningsvillkoren för Förhandsversioner av Microsoft Azure.

Om din organisation använder en integrationsplattform som Azure Logic Apps Migration Agent-tillägget i Visual Studio Code för närvarande inte stöder, till exempel TIBCO BusinessWorks, IBM IIB/ACE, Dell Boomi eller Workato, kan du utöka agenten genom att skapa och lägga till en anpassad parser för den plattformen. Tillägget använder en registerbaserad parserarkitektur som stöder både inbyggda och externa parsers, så att du kan lägga till plattformsstöd utan att ändra pipelinen för kärnmigrering.

Den här artikeln visar hur du skapar och lägger till en anpassad parser som omvandlar källintegreringsplattformens artefakter till migreringsagentens gemensamma IR-format (Intermediate Representation). Det här JSON-dokumentet beskriver artefakter på ett plattformsneutralt sätt och låter agenten bearbeta dina artefakter genom alla fem migreringsstegen.

Prerequisites

Kontrollera att du har följande resurser innan du börjar:

Krav Description
Node.js 18 eller senare Kostnadsfri JavaScript-körningsmiljö med öppen källkod och plattformsoberoende
Visual Studio Code 1.85.0 eller senare Lokal utvecklingsupplevelse
Visual Studio Code Extension API API som gör att du kan skapa tillägg för Visual Studio Code
Tillägg för Azure Logic Apps Migration Agent Obligatoriskt tillägg med migreringsagenten för Visual Studio Code
Azure Logic Apps (Standard) tillägg Obligatoriskt beroende för tillägget Azure Logic Apps Migration Agent
Kunskaper om TypeScript Ett starkt skrivet programmeringsspråk som bygger på JavaScript
Källintegreringsprojekt Källintegreringsprojektet och artefaktfilerna för plattformen där du vill ha stöd

Parser-arkitektur

Om du vill lägga till plattformsstöd till migreringsagenten använder du följande metoder:

Approach Rekommenderad Description
Built-in parser: Bidra till GitHub-repository för tillägget Yes Lägg till en parser och kompetenser direkt i projektet. Fullständig integrering med alla fem migreringsstegen. Den här metoden rekommenderas eftersom inbyggda parsers levereras med tillägget, använder samma CI/CD-pipeline och har åtkomst till alla interna API:er.
Tillägg för extern parsning No Skapa ett separat Visual Studio Code tillägg som registrerar parsers via plugin-API:et. Omfattar endast discovertystadiet.

Alla parsare omvandlar källplattformsartefakter till ett gemensamt IR-format som ett JSON-dokument. Migreringsagenten använder IR-formatet i planerings-, konverterings- och valideringsstegen. Parser-registret stöder både inbyggda och externa parser-plugin-program:

Inbyggda tolkar Plugin-program för extern parsning
BizTalk (.btproj, .odx)
BizTalk (.btm, .xsd)
BizTalk (.btp)
MuleSoft (stub)
Parsare för partnerplattform
Communityparsare

Diagram som visar hur inbyggda och externa parser-plugin-program matas in i det gemensamma IR-dokumentformatet som används av migreringssteg.

Steg 1: Lägg till en inbyggd parser

  1. Under src/parsers/<your-platform>/ skapar du en ny parsermodul.

    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. Kontrollera att varje parser implementerar IParser gränssnittet.

    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. Registrera parsern i 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>());
    }
    

    Tips

    Som en fullständigt fungerande referens använder du BizTalk-parserimplementeringen i src/parsers/biztalk/.

Steg 2: Lägga till plattformsspecifika färdigheter

Som Markdown-filer ger färdigheter AI-instruktioner för varje migreringssteg. De berättar för GitHub Copilot agenter hur de ska analysera, planera och konvertera artefakter för din specifika plattform.

Om du vill hitta de här färdigheterna kan du titta under resources/skills/ med plattformsspecifika varianter.

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)

Varje SKILL.md fil använder YAML-frontmatter följt av Markdown-innehåll, till exempel:

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

Steg 3: Mappa din plattform till Azure Logic Apps (Standard) komponenter

  1. Se över följande tabell för att skapa adaptermappningar:

    < din-plattform> komponent Azure Logic Apps-motsvarighet Inbyggd? Noteringar
    HTTP-lyssnare HTTP-utlösare Yes Built-in
    Databasanslutning Anslutningsapp för SQL Server Yes Built-in
  2. För varje färdighet i följande tabell skapar du den nödvändiga <your-platform>/SKILL.md kunskapsvarianten:

    Tips

    Kopiera färdigheterna för en plattform som stöds, till exempel biztalk/SKILL.md, som en startpunkt och anpassa innehållet för din plattform.

    GitHub Copilot-agent Färdighet Purpose
    @migration-analyser detect-logical-groups Regler för att gruppera artefakter i logiska flödesgrupper
    @migration-analyser analyse-source-design Regler för att analysera källarkitektur och generera visualiseringar
    @migration-analyser dependency-and-decompilation-analysis Regler för att identifiera saknade beroenden
    Alla agenter source-to-logic-apps-mapping Komponent-för-komponent-mappning från källa till Azure Logic Apps
    @migration-planner logic-apps-planning-rules Regler för att generera migreringsplaner
    @migration-converter conversion-task-plan-rules Regler för att skapa konverteringsuppgifter
    @migration-converter scaffold-logic-apps-project Regler för att skapa en struktur för standardlogikappen
    @migration-converter workflow-json-generation-rules Regler för att generera workflow.json filer
    @migration-converter connections-json-generation-rules Regler för att generera connections.json filen
    @migration-converter dotnet-local-functions-logic-apps Regler för att generera .NET lokala funktioner
    @migration-converter no-stubs-code-generation Regler för att säkerställa att den genererade koden är klar
    @migration-converter runtime-validation-and-testing Regler för exekveringsverifiering och testning
    @migration-converter cloud-deployment-and-testing Regler för distribution och testning av molnet

Steg 4: Registrera din plattform

  1. src/types/platforms.ts Lägg till din plattform i listan plattformar som stöds i filen.

    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. Lägg till identifieringslogik i src/stages/discovery/PlatformDetector.ts filen.

  3. Lägg till filens mönster i src/stages/discovery/SourceFolderService.ts-filen.

Steg 5 (valfritt): Lägg till IR-exempel

Om du vill dokumentera hur plattformens artefakter mappas till IR-schemat lägger du till en docs/IRExamples_YourPlatform.md fil. Följande exempel finns och fungerar som mallar:

Exempel Description
docs/IRExamples_BizTalk.md BizTalk-referens
docs/IRExamples_MuleSoft.md MuleSoft-referens
docs/IRExamples_Boomi.md Dell Boomi-exempel
docs/IRExamples_IBMIIB.md IBM IIB/ACE-exempel
docs/IRExamples_TIBCO.md TIBCO BusinessWorks-exempel
docs/IRExamples_Workato.md Workato-exempel

Alternativ: Tillägg för extern parsning

Externa parsertillägg täcker endast migreringsagentens identifieringssteg där agenten parsar dina källfiler. Kunskaper, plattformsidentifiering och AI-baserad planering och konvertering kräver att du direkt bidrar till extensionens GitHub-lagringsplats.

Men om du inte vill bidra direkt till lagringsplatsen skapar du ett separat Visual Studio Code tillägg som registrerar parsers med hjälp av api:et parse plugin:

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,
        });
    }
}

Parser-plugin-API

Metod eller egenskap Description
version Tilläggsversion (skrivskyddad)
registerParser(parser, options?) Registrera en parser med registret.
unregisterParser(id) Ta bort en registrerad parser.
getParserRegistry() Direktåtkomst till parserregistret.
hasParser(id) Kontrollera om en parser är registrerad.
getExternalParsers() Hämta information om registrerade externa parsers.

Nästa steg