Extend Azure Logic Apps Migration Agent na inne platformy poprzez tworzenie własnych parserów

Dotyczy: Azure Logic Apps (Standard)

Jeśli Twoja organizacja korzysta z platformy integracyjnej, której rozszerzenie Azure Logic Apps Migration Agent w Visual Studio Code obecnie nie obsługuje, takiej jak IBM IIB/ACE, Dell Boomi czy Workato, możesz rozwiązać agenta, tworząc i dodając niestandardowy parser dla tej platformy. Wersja 1.12.1 zawiera zarejestrowane wsparcie dla BizTalk Server, MuleSoft Anypoint oraz TIBCO BusinessWorks. Rozszerzenie wykorzystuje architekturę parsera opartą na rejestrze, która obsługuje zarówno wbudowane, jak i zewnętrzne parsery.

W tym artykule pokazano, jak utworzyć i dodać niestandardowy analizator, który przekształca artefakty platformy integracji źródłowej do wspólnego formatu pośredniej reprezentacji (IR) agenta migracji. Ten dokument JSON opisuje artefakty w sposób neutralny dla platformy. Wbudowany parser z wymaganymi umiejętnościami specyficznymi dla platformy może uczestniczyć we wszystkich pięciu etapach migracji. Zewnętrzne rozszerzenie parsera obejmuje tylko Discovery.

Wymagania wstępne

Przed rozpoczęciem upewnij się, że masz następujące zasoby:

Wymóg Opis
Node.js 18 lub nowsza Bezpłatne, wieloplatformowe środowisko uruchomieniowe JavaScript typu open source
Visual Studio Code 1.85.0 lub nowszy Lokalne środowisko programistyczne
API rozszerzeń Visual Studio Code Interfejs API, który umożliwia tworzenie rozszerzeń dla Visual Studio Code
Rozszerzenie agenta migracji Azure Logic Apps Wymagane rozszerzenie z agentem migracji dla Visual Studio Code
rozszerzenie Azure Logic Apps (Standardowe) Wymagana zależność rozszerzenia agenta migracji Azure Logic Apps
Znajomość języka TypeScript Silnie typizowany język programowania, który opiera się na JavaScript
Projekt integracji źródłowej Źródłowy projekt integracji i pliki artefaktów dla platformy, na której potrzebujesz wsparcia

Architektura analizatora

Aby dodać obsługę platformy do agenta migracji, użyj następujących metod:

Approach Zalecane Opis
Wbudowany analizator: Przyczyń się do repozytorium GitHub rozszerzenia Yes Dodaj analizator i umiejętności bezpośrednio do projektu. Pełna integracja ze wszystkimi pięcioma etapami migracji. Jest to zalecane, ponieważ wbudowane parsery są dostarczane z rozszerzeniem, używają tego samego pipeline'u CI/CD i mogą uzyskiwać dostęp do wszystkich wewnętrznych interfejsów API.
Rozszerzenie analizatora zewnętrznego No Utwórz oddzielne rozszerzenie Visual Studio Code, które rejestruje analizatory poprzez API wtyczki. Obejmuje tylko etap odkrywania.

Wszystkie analizatory przekształcają artefakty platformy źródłowej na wspólny format IR w formie dokumentu JSON. Agent migracji używa formatu IR na etapach planowania, konwersji i walidacji. Rejestr analizatora obsługuje zarówno wbudowane, jak i zewnętrzne wtyczki analizatora:

Wbudowane analizatory Wtyczki parsera zewnętrznego
BizTalk Server (.btp, .btm, .xsd, .xml, .hidx, binding .brl, .bre, .asmx, .odx, .btproj)

MuleSoft Anypoint (pom.xml, Mule flow .xml, .dwl)

TIBCO BusinessWorks (tibco.xml, TIBCO.xml, module.bwm, .process, .bwp)
Analizatory platformy partnerów
Analizatory społeczności

Parser specyfikacji MuleSoft RAML i OpenAPI oraz ogólny parser XML to zalążki w wersji 1.12.1.

Diagram przedstawiający, w jaki sposób wbudowane i zewnętrzne wtyczki parsera zasilają wspólny format dokumentu IR używany przez etapy migracji.

Krok 1. Dodawanie wbudowanego analizatora

  1. W obszarze src/parsers/<your-platform>/utwórz nowy moduł analizatora.

    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. Upewnij się, że każdy analizator implementuje interfejs IParser.

    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. Zarejestruj analizator w pliku 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>());
    }
    

    Wskazówka

    Aby uzyskać w pełni działające odniesienie, użyj implementacji analizatora BizTalk w programie src/parsers/biztalk/.

Krok 2. Dodawanie umiejętności specyficznych dla platformy

Jako pliki Markdown, kompetencje zapewniają instrukcje dotyczące sztucznej inteligencji dla każdego etapu migracji. Informują oni agentów GitHub Copilot, jak analizować, planować i konwertować artefakty dla określonej platformy.

Aby znaleźć te umiejętności, sprawdź resources/skills/ dla wariantów specyficznych dla platformy.

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)

Każdy SKILL.md plik używa frontmatteru YAML, a następnie zawartości markdown, na przykład:

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

Krok 3: Zmapuj swoją platformę na składniki Azure Logic Apps (Standard)

  1. Przejrzyj poniższą tabelę, aby utworzyć mapowania adapterów.

    < Twoja platforma> Składnik odpowiednik Azure Logic Apps Macierzystego? Notatki
    Odbiornik HTTP Wyzwalacz HTTP Yes Built-in
    Łącznik bazy danych Łącznik programu SQL Server Yes Built-in
  2. Dla każdej umiejętności z poniższej tabeli utwórz wymagany <your-platform>/SKILL.md wariant umiejętności:

    Wskazówka

    Skopiuj umiejętności dla obsługiwanej platformy, takiej jak biztalk/SKILL.md, jako punkt wyjścia i dostosuj zawartość dla danej platformy.

    agent funkcji Copilot usługi GitHub Umiejętności Purpose
    @migration-analyser detect-logical-groups Reguły grupowania artefaktów w logiczne grupy przepływów
    @migration-analyser analyse-source-design Reguły analizowania architektury źródła i generowania wizualizacji
    @migration-analyser dependency-and-decompilation-analysis Reguły identyfikowania brakujących zależności
    Wszyscy agenci source-to-logic-apps-mapping Mapowanie składników według składników ze źródła na Azure Logic Apps
    @migration-planner logic-apps-planning-rules Reguły generowania planów migracji
    @migration-converter conversion-task-plan-rules Reguły tworzenia zadań konwersji
    @migration-converter scaffold-logic-apps-project Reguły tworzenia szkieletu struktury projektu standardowej aplikacji logiki
    @migration-converter workflow-json-generation-rules Reguły generowania workflow.json plików
    @migration-converter connections-json-generation-rules Reguły generowania connections.json pliku
    @migration-converter dotnet-local-functions-logic-apps Reguły generowania .NET funkcji lokalnych
    @migration-converter no-stubs-code-generation Reguły zapewniające, że wygenerowany kod jest kompletny
    @migration-converter runtime-validation-and-testing Reguły sprawdzania poprawności i testowania środowiska uruchomieniowego
    @migration-converter cloud-deployment-and-testing Reguły wdrażania i testowania w chmurze

Krok 4. Rejestrowanie platformy

  1. src/types/platforms.ts W pliku dodaj platformę do listy obsługiwanych platform.

     export type SourcePlatform = 'biztalk' | 'mulesoft' | 'tibco' | '<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. src/stages/discovery/PlatformDetector.ts W pliku dodaj logikę wykrywania.

  3. W pliku src/stages/discovery/SourceFolderService.ts dodaj wzorce plików.

Krok 5 (opcjonalnie): Dodawanie przykładów środowiska IR

Aby udokumentować sposób mapowania artefaktów platformy na schemat IR, dodaj plik docs/IRExamples_YourPlatform.md. Istnieją następujące przykłady i służą jako szablony:

Przykład Opis
docs/IRExamples_BizTalk.md Dokumentacja referencyjna BizTalk
docs/IRExamples_MuleSoft.md Dokumentacja firmy MuleSoft
docs/IRExamples_Boomi.md Przykład firmy Dell Boomi
docs/IRExamples_IBMIIB.md Przykład IBM IIB/ACE
docs/IRExamples_TIBCO.md Przykład TIBCO BusinessWorks
docs/IRExamples_Workato.md Przykład Workato

Alternatywa: Rozszerzenie analizatora zewnętrznego

Rozszerzenia analizatora zewnętrznego obejmują tylko etap odnajdywania agenta migracji, w którym agent analizuje pliki źródłowe. Umiejętności, wykrywanie platformy i planowanie i konwersja oparta na sztucznej inteligencji wymagają bezpośredniego współtworzenia repozytorium GitHub extension.

Jeśli jednak nie chcesz bezpośrednio współtworzyć repozytorium, utwórz oddzielne rozszerzenie Visual Studio Code, które rejestruje analizatory przy użyciu interfejsu API wtyczki parse:

import * as vscode from 'vscode';

export async function activate(context: vscode.ExtensionContext) {
    const agent = vscode.extensions.getExtension('ms-azuretools.logicapps-migration-agent');

    if (agent) {
        const api = await agent.activate();
        api.registerParser(new MyPlatformParser(), {
            priority: 10,
        });
    }
}

API wtyczki parsera

Metoda lub właściwość Opis
version Wersja rozszerzenia (tylko do odczytu)
registerParser(parser, options?) Zarejestruj analizator w rejestrze.
unregisterParser(id) Usuń zarejestrowany analizator.
getParserRegistry() Bezpośredni dostęp do rejestru analizatora.
hasParser(id) Sprawdź, czy analizator jest zarejestrowany.
getExternalParsers() Uzyskaj informacje o zarejestrowanych analizatorach zewnętrznych.

Następne kroki