Breid Azure Logic Apps Migratieagent uit naar andere platforms door aangepaste parsers te maken (preview)

Van toepassing op: Azure Logic Apps (Standard)

Note

Deze preview-functie is onderhevig aan de aanvullende gebruiksvoorwaarden voor Microsoft Azure Previews.

Als uw organisatie gebruikmaakt van een integratieplatform dat de Azure Logic Apps Migration Agent-extensie in Visual Studio Code momenteel geen ondersteuning biedt, zoals TIBCO BusinessWorks, IBM IIB/ACE, Dell Boomi of Workato, kunt u de agent uitbreiden door een aangepaste parser voor dat platform te maken en toe te voegen. De extensie maakt gebruik van een op register gebaseerde parserarchitectuur die zowel ingebouwde als externe parsers ondersteunt, zodat u platformondersteuning kunt toevoegen zonder de kernmigratiepijplijn te wijzigen.

In dit artikel wordt beschreven hoe u een aangepaste parser maakt en toevoegt waarmee de artefacten van uw bronintegratieplatform worden getransformeerd in de gemeenschappelijke indeling voor tussenliggende representatie (IR) van de migratieagent. Dit JSON-document beschrijft artefacten op een platformneutrale manier en laat de agent uw artefacten verwerken via alle vijf migratiefasen.

Prerequisites

Voordat u begint, moet u ervoor zorgen dat u over de volgende resources beschikt:

Requirement Description
Node.js 18 of hoger Gratis, opensource- en platformoverschrijdende JavaScript-runtime-omgeving
Visual Studio Code 1.85.0 of hoger Ervaring voor lokale ontwikkeling
Visual Studio Code-extensie-API API waarmee u extensies voor Visual Studio Code kunt bouwen
Azure Logic Apps Migration Agent extension Vereiste extensie met migratieagent voor Visual Studio Code
Azure Logic Apps (Standard)-extensie Vereiste afhankelijkheid voor de Azure Logic Apps Migration Agent-extensie
Bekendheid met TypeScript Een sterk getypte programmeertaal die is gebaseerd op JavaScript
Bronintegratieproject Het bronintegratieproject en artefactbestanden voor het platform waar u ondersteuning wilt

Parserarchitectuur

Gebruik de volgende methoden om platformondersteuning toe te voegen aan de migratieagent:

Approach Aanbevolen Description
Built-in parser: Bijdragen aan de extension GitHub opslagplaats Yes Voeg rechtstreeks een parser en vaardigheden toe aan het project. Volledige integratie met alle vijf de migratiefasen. Deze methode wordt aanbevolen omdat ingebouwde parsers met de extensie worden verzonden, dezelfde CI/CD-pijplijn gebruiken en toegang hebben tot alle interne API's.
Extensie voor externe parser No Maak een afzonderlijke Visual Studio Code-extensie die parsers registreert via de api van de invoegtoepassing. Behandelt alleen de Discovery-fase.

Alle parsers transformeren bronplatformartefacten in een gemeenschappelijke IR-indeling als een JSON-document. De migratieagent gebruikt de IR-indeling in de plannings-, conversie- en validatiefasen. Het parserregister ondersteunt zowel ingebouwde als externe parser-invoegtoepassingen:

Ingebouwde parsers Externe parser-invoegtoepassingen
BizTalk (.btproj, .odx)
BizTalk (.btm, .xsd)
BizTalk (.btp)
MuleSoft (stub)
Parsers voor partnerplatformen
Communityparsers

Diagram waarin wordt getoond hoe ingebouwde en externe parser-invoegtoepassingen worden ingevoerd in de algemene IR-documentindeling die wordt gebruikt door migratiefasen.

Stap 1: Een ingebouwde parser toevoegen

  1. Maak onder src/parsers/<your-platform>/Een nieuwe parsermodule.

    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. Zorg ervoor dat elke parser de IParser interface implementeert.

    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. Registreer uw parser in 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>());
    }
    

    Tip

    Gebruik als volledig werkende referentie de BizTalk Parser-implementatie in src/parsers/biztalk/.

Stap 2: Platformspecifieke vaardigheden toevoegen

Als Markdown-bestanden bieden vaardigheden AI-instructies voor elke migratiefase. Ze vertellen de GitHub Copilot agents hoe ze artefacten voor uw specifieke platform kunnen analyseren, plannen en converteren.

Als u deze vaardigheden wilt vinden, kijkt u onder resources/skills/ met platformspecifieke varianten.

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)

Elk SKILL.md bestand maakt gebruik van YAML-frontmatter gevolgd door Markdown-inhoud, bijvoorbeeld:

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

Stap 3: uw platform afstemmen op Azure Logic Apps (Standaard)-onderdelen

  1. Bekijk de volgende tabel voor het instellen van de adaptertoewijzingen.

    < uw platform> Component Azure Logic Apps-equivalent Native? Aantekeningen
    HTTP-listener HTTP-trigger Yes Built-in
    Database connector sqlserver-connector Yes Built-in
  2. Maak voor elke vaardigheid in de volgende tabel de vereiste <your-platform>/SKILL.md vaardigheidsvariant:

    Tip

    Kopieer de vaardigheden voor een ondersteund platform, zoals biztalk/SKILL.md, als uitgangspunt en pas de inhoud voor uw platform aan.

    GitHub Copilot-agent Vaardigheid Purpose
    @migration-analyser detect-logical-groups Regels voor het groeperen van artefacten in logische stroomgroepen
    @migration-analyser analyse-source-design Regels voor het analyseren van de bronarchitectuur en het genereren van visualisaties
    @migration-analyser dependency-and-decompilation-analysis Regels voor het identificeren van ontbrekende afhankelijkheden
    Alle agents source-to-logic-apps-mapping Component-voor-component toewijzing van de bron naar Azure Logic Apps
    @migration-planner logic-apps-planning-rules Regels voor het genereren van migratieplannen
    @migration-converter conversion-task-plan-rules Regels voor het maken van conversietaken
    @migration-converter scaffold-logic-apps-project Regels voor het opzetten van de projectstructuur van de standaard logische app
    @migration-converter workflow-json-generation-rules Regels voor het genereren van workflow.json bestanden
    @migration-converter connections-json-generation-rules Regels voor het genereren van het connections.json bestand
    @migration-converter dotnet-local-functions-logic-apps Regels voor het genereren van .NET lokale functies
    @migration-converter no-stubs-code-generation Regels om ervoor te zorgen dat gegenereerde code is voltooid
    @migration-converter runtime-validation-and-testing Regels voor runtimevalidatie en -tests
    @migration-converter cloud-deployment-and-testing Regels voor cloudimplementatie en testen

Stap 4: Uw platform registreren

  1. Voeg in het src/types/platforms.ts bestand uw platform toe aan de lijst met ondersteunde platforms.

    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. Voeg in het src/stages/discovery/PlatformDetector.ts bestand de detectielogica toe.

  3. Voeg in het src/stages/discovery/SourceFolderService.ts bestand de bestandspatronen toe.

Stap 5 (optioneel): IR-voorbeelden toevoegen

Als u wilt documenteren hoe de artefacten van uw platform worden toegewezen aan het IR-schema, voegt u een docs/IRExamples_YourPlatform.md bestand toe. De volgende voorbeelden bestaan en fungeren als sjablonen:

Voorbeeld Description
docs/IRExamples_BizTalk.md BizTalk-verwijzing
docs/IRExamples_MuleSoft.md MuleSoft-referentie
docs/IRExamples_Boomi.md Dell Boomi-voorbeeld
docs/IRExamples_IBMIIB.md VOORBEELD VAN IBM IIB/ACE
docs/IRExamples_TIBCO.md TIBCO BusinessWorks-voorbeeld
docs/IRExamples_Workato.md Workato-voorbeeld

Alternatief: Externe parserextensie

Externe parserextensies hebben alleen betrekking op de detectiefase van de migratieagent, waarbij de agent uw bronbestanden parseert. Voor vaardigheden, platformdetectie en door AI gemaakte planning en conversie moet u rechtstreeks bijdragen aan de extension's GitHub opslagplaats.

Als u echter liever niet rechtstreeks een bijdrage levert aan de opslagplaats, maakt u een afzonderlijke Visual Studio Code-extensie waarmee parsers worden geregistreerd met behulp van de parse plugin-API:

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 voor parserinvoegtoepassing

Methode of eigenschap Description
version Extensieversie (alleen-lezen)
registerParser(parser, options?) Registreer een parser bij het register.
unregisterParser(id) Verwijder een geregistreerde parser.
getParserRegistry() Rechtstreeks toegang tot het parserregister.
hasParser(id) Controleer of een parser is geregistreerd.
getExternalParsers() Informatie ophalen over geregistreerde externe parsers.

Volgende stappen