Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 |
Stap 1: Een ingebouwde parser toevoegen
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>.tsZorg ervoor dat elke parser de
IParserinterface 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 */ } }; } }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
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 Maak voor elke vaardigheid in de volgende tabel de vereiste
<your-platform>/SKILL.mdvaardigheidsvariant: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-analyserdetect-logical-groupsRegels voor het groeperen van artefacten in logische stroomgroepen @migration-analyseranalyse-source-designRegels voor het analyseren van de bronarchitectuur en het genereren van visualisaties @migration-analyserdependency-and-decompilation-analysisRegels voor het identificeren van ontbrekende afhankelijkheden Alle agents source-to-logic-apps-mappingComponent-voor-component toewijzing van de bron naar Azure Logic Apps @migration-plannerlogic-apps-planning-rulesRegels voor het genereren van migratieplannen @migration-converterconversion-task-plan-rulesRegels voor het maken van conversietaken @migration-converterscaffold-logic-apps-projectRegels voor het opzetten van de projectstructuur van de standaard logische app @migration-converterworkflow-json-generation-rulesRegels voor het genereren van workflow.jsonbestanden@migration-converterconnections-json-generation-rulesRegels voor het genereren van het connections.jsonbestand@migration-converterdotnet-local-functions-logic-appsRegels voor het genereren van .NET lokale functies @migration-converterno-stubs-code-generationRegels om ervoor te zorgen dat gegenereerde code is voltooid @migration-converterruntime-validation-and-testingRegels voor runtimevalidatie en -tests @migration-convertercloud-deployment-and-testingRegels voor cloudimplementatie en testen
Stap 4: Uw platform registreren
Voeg in het
src/types/platforms.tsbestand 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>'], }, ];Voeg in het
src/stages/discovery/PlatformDetector.tsbestand de detectielogica toe.Voeg in het
src/stages/discovery/SourceFolderService.tsbestand 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. |