Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Krok 1. Dodawanie wbudowanego analizatora
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>.tsUpewnij 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 */ } }; } }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)
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 Dla każdej umiejętności z poniższej tabeli utwórz wymagany
<your-platform>/SKILL.mdwariant 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-analyserdetect-logical-groupsReguły grupowania artefaktów w logiczne grupy przepływów @migration-analyseranalyse-source-designReguły analizowania architektury źródła i generowania wizualizacji @migration-analyserdependency-and-decompilation-analysisReguły identyfikowania brakujących zależności Wszyscy agenci source-to-logic-apps-mappingMapowanie składników według składników ze źródła na Azure Logic Apps @migration-plannerlogic-apps-planning-rulesReguły generowania planów migracji @migration-converterconversion-task-plan-rulesReguły tworzenia zadań konwersji @migration-converterscaffold-logic-apps-projectReguły tworzenia szkieletu struktury projektu standardowej aplikacji logiki @migration-converterworkflow-json-generation-rulesReguły generowania workflow.jsonplików@migration-converterconnections-json-generation-rulesReguły generowania connections.jsonpliku@migration-converterdotnet-local-functions-logic-appsReguły generowania .NET funkcji lokalnych @migration-converterno-stubs-code-generationReguły zapewniające, że wygenerowany kod jest kompletny @migration-converterruntime-validation-and-testingReguły sprawdzania poprawności i testowania środowiska uruchomieniowego @migration-convertercloud-deployment-and-testingReguły wdrażania i testowania w chmurze
Krok 4. Rejestrowanie platformy
src/types/platforms.tsW 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>'], }, ];src/stages/discovery/PlatformDetector.tsW pliku dodaj logikę wykrywania.W pliku
src/stages/discovery/SourceFolderService.tsdodaj 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. |