Erweitern Azure Logic Apps Migrations-Agents auf andere Plattformen durch Erstellen von benutzerdefinierten Parsern (Vorschau)

Gilt für: Azure Logic Apps (Standard)

Note

Dieses Vorschaufeature unterliegt den ergänzenden Nutzungsbedingungen für Microsoft Azure Previews.

Wenn Ihre Organisation eine Integrationsplattform verwendet, die die Erweiterung Azure Logic Apps Migration Agent in Visual Studio Code derzeit nicht unterstützt, z. B. TIBCO BusinessWorks, IBM IIB/ACE, Dell Boomi oder Workato, können Sie den Agent erweitern, indem Sie einen benutzerdefinierten Parser für diese Plattform erstellen und hinzufügen. Die Erweiterung verwendet eine registrierungsbasierte Parserarchitektur, die sowohl integrierte als auch externe Parser unterstützt, sodass Sie Plattformunterstützung hinzufügen können, ohne die Kernmigrationspipeline zu ändern.

In diesem Artikel wird gezeigt, wie Sie einen benutzerdefinierten Parser erstellen und hinzufügen, der die Artefakte Ihrer Quellintegrationsplattform in das allgemeine Ir-Format (Intermediate Representation) des Migrations-Agents transformiert. Dieses JSON-Dokument beschreibt Artefakte auf plattformneutrale Weise und ermöglicht es dem Agent, Ihre Artefakte über alle fünf Migrationsphasen zu verarbeiten.

Prerequisites

Bevor Sie beginnen, stellen Sie sicher, dass Sie über die folgenden Ressourcen verfügen:

Anforderung Beschreibung
Node.js 18 oder höher Kostenlose, Open-Source-, plattformübergreifende JavaScript-Laufzeitumgebung
Visual Studio Code 1.85.0 oder höher Lokale Entwicklungserfahrung
Visual Studio Code-Erweiterungs-API API, mit der Sie Erweiterungen für Visual Studio Code erstellen können
Azure Logic Apps Migrations-Agent-Erweiterung Erforderliche Erweiterung mit Migrations-Agent für Visual Studio Code
Azure Logic Apps (Standard)-Erweiterung Erforderliche Abhängigkeiten für die Erweiterung des Azure Logic Apps Migration Agent
Vertrautheit mit TypeScript Eine stark typisierte Programmiersprache, die auf JavaScript aufbaut
Quellintegrationsprojekt Das Quellintegrationsprojekt und Artefaktdateien für die Plattform, auf der Sie Unterstützung benötigen

Parserarchitektur

Verwenden Sie die folgenden Ansätze, um dem Migrations-Agent Plattformunterstützung hinzuzufügen:

Approach Empfohlen Beschreibung
Eingebauter Parser: Mitwirken am GitHub-Repository der Erweiterung Ja Fügen Sie dem Projekt direkt einen Parser und Fähigkeiten hinzu. Vollständige Integration mit allen fünf Migrationsphasen. Dieser Ansatz wird empfohlen, da integrierte Parser mit der Erweiterung ausgeliefert werden, dieselbe CI/CD-Pipeline verwenden und auf alle internen APIs zugreifen können.
Externe Parsererweiterung No Erstellen Sie eine separate Visual Studio Code Erweiterung, die Parser über die Plug-In-API registriert. Deckt nur die Ermittlungsphase ab.

Alle Parser transformieren Quellplattformartefakte in ein gemeinsames IR-Format als JSON-Dokument. Der Migrations-Agent verwendet das IR-Format in den Phasen Planung, Konvertierung und Validierung. Die Parserregistrierung unterstützt integrierte und externe Parser-Plug-Ins:

Integrierte Parser Plug-Ins für externe Parser
BizTalk (.btproj, .odx)
BizTalk (.btm, .xsd)
BizTalk (.btp)
MuleSoft (Stub)
Partnerplattform-Parser
Community-Parser

Diagramm, das zeigt, wie integrierte und externe Parser-Plug-Ins in das allgemeine IR-Dokumentformat eingespeist werden, das von Migrationsphasen verwendet wird.

Schritt 1: Hinzufügen eines integrierten Parsers

  1. Erstellen Sie unter src/parsers/<your-platform>/ ein neues 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. Stellen Sie sicher, dass jeder Parser die IParser Schnittstelle implementiert.

    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. Registrieren Sie Ihren 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>());
    }
    

    Tipp

    Verwenden Sie als voll funktionsfähige Referenz die BizTalk-Parserimplementierung in src/parsers/biztalk/.

Schritt 2: Hinzufügen plattformspezifischer Fähigkeiten

Als Markdown-Dateien bieten Fähigkeiten KI-Anweisungen für jede Migrationsstufe. Sie teilen den GitHub Copilot Agents mit, wie Artefakte für Ihre spezifische Plattform analysiert, geplant und konvertiert werden.

Um diese Fähigkeiten zu finden, betrachten Sie die plattformspezifischen Varianten unter resources/skills/.

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)

Jede SKILL.md Datei verwendet YAML-Frontmatter gefolgt von Markdown-Inhalten, z. B.:

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

Schritt 3: Zuordnen Ihrer Plattform zu Azure Logic Apps (Standard)-Komponenten

  1. Überprüfen Sie die folgende Tabelle, um die Adapterzuordnungen zu erstellen:

    < Ihre Plattform> Komponente Azure Logic Apps Entsprechung Nativ? Hinweise
    HTTP-Listener HTTP-Trigger Ja Integriert
    Datenbankkonnektor SQL Server-Connector Ja Integriert
  2. Erstellen Sie für jede Fähigkeit in der folgenden Tabelle die erforderliche <your-platform>/SKILL.md Qualifikationsvariante:

    Tipp

    Kopieren Sie die Funktionen für eine unterstützte Plattform, wie z. B. biztalk/SKILL.md, als Ausgangspunkt und passen Sie die Inhalte für Ihre Plattform an.

    GitHub Copilot Agent Qualifikation Purpose
    @migration-analyser detect-logical-groups Regeln zum Gruppieren von Artefakten in logische Flussgruppen
    @migration-analyser analyse-source-design Regeln zum Analysieren der Quellarchitektur und zum Generieren von Visualisierungen
    @migration-analyser dependency-and-decompilation-analysis Regeln zum Identifizieren fehlender Abhängigkeiten
    Alle Agents source-to-logic-apps-mapping Komponenten-nach-Komponenten-Zuordnung von Quelle zu Azure Logic Apps
    @migration-planner logic-apps-planning-rules Regeln zum Generieren von Migrationsplänen
    @migration-converter conversion-task-plan-rules Regeln zum Erstellen von Konvertierungsaufgaben
    @migration-converter scaffold-logic-apps-project Regeln für das Gerüst der Standardlogik-App-Projektstruktur
    @migration-converter workflow-json-generation-rules Regeln zum Generieren von workflow.json Dateien
    @migration-converter connections-json-generation-rules Regeln zum Generieren der connections.json Datei
    @migration-converter dotnet-local-functions-logic-apps Regeln zum Generieren von .NET lokalen Funktionen
    @migration-converter no-stubs-code-generation Regeln für die Sicherstellung, dass der generierte Code vollständig ist
    @migration-converter runtime-validation-and-testing Regeln für Laufzeitüberprüfung und -tests
    @migration-converter cloud-deployment-and-testing Regeln für cloudbasierte Bereitstellung und Tests

Schritt 4: Registrieren Ihrer Plattform

  1. Fügen Sie in der src/types/platforms.ts Datei Ihre Plattform zur Liste der unterstützten Plattformen hinzu.

    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. Fügen Sie in der src/stages/discovery/PlatformDetector.ts Datei die Erkennungslogik hinzu.

  3. Fügen Sie in der src/stages/discovery/SourceFolderService.ts Datei die Dateimuster hinzu.

Schritt 5 (optional): Hinzufügen von IR-Beispielen

Um zu dokumentieren, wie die Artefakte Ihrer Plattform dem IR-Schema zugeordnet sind, fügen Sie eine docs/IRExamples_YourPlatform.md Datei hinzu. Die folgenden Beispiele sind vorhanden und dienen als Vorlagen:

Beispiel Beschreibung
docs/IRExamples_BizTalk.md BizTalk-Referenz
docs/IRExamples_MuleSoft.md MuleSoft-Referenz
docs/IRExamples_Boomi.md Dell Boomi-Beispiel
docs/IRExamples_IBMIIB.md IBM IIB/ACE-Beispiel
docs/IRExamples_TIBCO.md TIBCO BusinessWorks(Beispiel)
docs/IRExamples_Workato.md Workato-Beispiel

Alternative: Externe Parsererweiterung

Externe Parsererweiterungen decken nur die Ermittlungsphase des Migrations-Agents ab, in der der Agent Ihre Quelldateien analysiert. Fähigkeiten, Plattformerkennung und KI-basierte Planung und Konvertierung erfordern, dass Sie direkt zum Extension GitHub Repository beitragen.

Wenn Sie jedoch lieber nicht direkt zum Repository beitragen möchten, erstellen Sie eine separate Visual Studio Code Erweiterung, die Parser mithilfe der parse-Plug-In-API registriert:

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-Plug-In-API

Methode oder Eigenschaft Beschreibung
version Erweiterungsversion (Nur-Lesen)
registerParser(parser, options?) Registrieren Sie einen Parser im Register.
unregisterParser(id) Entfernen Sie einen registrierten Parser.
getParserRegistry() Greifen Sie direkt auf die Parserregistrierung zu.
hasParser(id) Überprüfen Sie, ob ein Parser registriert ist.
getExternalParsers() Abrufen von Informationen zu registrierten externen Parsern.

Nächste Schritte