Étendre l'Agent de migration Azure Logic Apps à d’autres plateformes en créant des analyseurs personnalisés (aperçu)

S’applique à : Azure Logic Apps (Standard)

Note

Cette fonctionnalité en préversion est soumise aux conditions d’utilisation supplémentaires pour les préversions de Microsoft Azure.

Si votre organisation utilise une plateforme d'intégration que l'extension Azure Logic Apps Migration Agent dans Visual Studio Code ne prend actuellement pas en charge, comme TIBCO BusinessWorks, IBM IIB/ACE, Dell Boomi ou Workato, vous pouvez étendre l'agent en créant et en ajoutant un analyseur personnalisé pour cette plateforme. L’extension utilise une architecture d’analyseur basée sur le Registre qui prend en charge les analyseurs intégrés et externes. Vous pouvez donc ajouter la prise en charge de la plateforme sans modifier le pipeline de migration principal.

Cet article explique comment créer et ajouter un analyseur personnalisé qui transforme les artefacts de votre plateforme d’intégration source en format de représentation intermédiaire commune (IR) de l’agent de migration. Ce document JSON décrit les artefacts de manière neutre par la plateforme et permet à l’agent de traiter vos artefacts via toutes les 5 étapes de migration.

Prerequisites

Avant de commencer, vérifiez que vous disposez des ressources suivantes :

Requirement Description
Node.js 18 ou version ultérieure Environnement d’exécution JavaScript gratuit, open source et multiplateforme
Visual Studio Code 1.85.0 ou version ultérieure Expérience de développement local
API d’extension Visual Studio Code API qui vous permet de générer des extensions pour Visual Studio Code
extension Azure Logic Apps Migration Agent Extension requise avec l’agent de migration pour Visual Studio Code
extension Azure Logic Apps (Standard) Dépendance requise pour l’extension Azure Logic Apps Migration Agent
Familiarité avec TypeScript Langage de programmation fortement typé qui s’appuie sur JavaScript
Projet d’intégration source Le projet d'intégration de sources et les fichiers d'artefacts pour la plateforme pour laquelle vous souhaitez obtenir un support.

Architecture de l’analyseur

Pour ajouter la prise en charge de la plateforme à l’agent de migration, utilisez les approches suivantes :

Approach Recommandé Description
analyseur intégré : Contribuer au dépôt GitHub de l'extension Oui Ajoutez un analyseur et des compétences directement au projet. Intégration complète avec les cinq étapes de migration. Cette approche est recommandée, car les analyseurs intégrés sont fournis avec l’extension, utilisent le même pipeline CI/CD et peuvent accéder à toutes les API internes.
Extension de l’analyseur externe Non Créez une extension Visual Studio Code distincte qui inscrit les analyseurs via l’API du plug-in. Couvre uniquement l’étape de découverte.

Tous les analyseurs transforment les artefacts de plateforme source en un format IR commun sous forme de document JSON. L’agent de migration utilise le format IR dans les phases de planification, de conversion et de validation. Le registre d’analyseur prend en charge les plug-ins intégrés et externes :

Analyseurs intégrés Plug-ins d’analyseur externe
BizTalk (.btproj, .odx)
BizTalk (.btm, .xsd)
BizTalk (.btp)
MuleSoft (stub)
Analyseurs de plateforme partenaires
Analyseurs communautaires

Diagramme montrant comment les plug-ins intégrés et externes d’analyseur alimentent le format de document IR commun utilisé par les étapes de migration.

Étape 1 : Ajouter un analyseur intégré

  1. Sous src/parsers/<your-platform>/, créez un module d’analyseur.

    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. Vérifiez que chaque analyseur implémente l’interface 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. Inscrivez votre analyseur dans 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>());
    }
    

    Conseil / Astuce

    En tant que référence opérationnelle complète, utilisez l’implémentation de l’analyseur BizTalk dans src/parsers/biztalk/.

Étape 2 : Ajouter des compétences spécifiques à la plateforme

En tant que fichiers Markdown, les compétences fournissent des instructions IA pour chaque étape de migration. Ils indiquent aux agents GitHub Copilot comment analyser, planifier et convertir des artefacts pour votre plateforme spécifique.

Pour trouver ces compétences, regardez sous resources/skills/ pour les variantes spécifiques à la plateforme.

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)

Chaque SKILL.md fichier utilise le frontmatter YAML suivi du contenu Markdown, par exemple :

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

Étape 3 : Mapper votre plateforme aux composants Azure Logic Apps (Standard)

  1. Passez en revue le tableau suivant pour créer les mappages d’adaptateurs :

    < votre plateforme> Composant équivalent Azure Logic Apps Natif? Remarques
    Écouteur HTTP Déclencheur HTTP Oui Intégré
    Connecteur de base de données Connecteur SQL Server Oui Intégré
  2. Pour chaque compétence du tableau suivant, créez la variante de compétence requise <your-platform>/SKILL.md :

    Conseil / Astuce

    Copiez les compétences d'une plateforme prise en charge, telle que biztalk/SKILL.md, comme point de départ, et adaptez le contenu pour votre plateforme.

    GitHub assistant Copilot Skill Objectif
    @migration-analyser detect-logical-groups Règles de regroupement d’artefacts en groupes de flux logiques
    @migration-analyser analyse-source-design Règles d’analyse de l’architecture source et de génération de visualisations
    @migration-analyser dependency-and-decompilation-analysis Règles d’identification des dépendances manquantes
    Tous les agents source-to-logic-apps-mapping Mappage composant par composant depuis la source vers Azure Logic Apps
    @migration-planner logic-apps-planning-rules Règles de génération de plans de migration
    @migration-converter conversion-task-plan-rules Règles de création de tâches de conversion
    @migration-converter scaffold-logic-apps-project Règles pour l'échafaudage de la structure de projet de l'application Logic Standard
    @migration-converter workflow-json-generation-rules Règles de génération de workflow.json fichiers
    @migration-converter connections-json-generation-rules Règles de génération du connections.json fichier
    @migration-converter dotnet-local-functions-logic-apps Règles de génération de fonctions locales .NET
    @migration-converter no-stubs-code-generation Règles permettant de s’assurer que le code généré est terminé
    @migration-converter runtime-validation-and-testing Règles de validation et de test du runtime
    @migration-converter cloud-deployment-and-testing Règles de déploiement et de test cloud

Étape 4 : Inscrire votre plateforme

  1. Dans le src/types/platforms.ts fichier, ajoutez votre plateforme à la liste des plateformes prises en charge.

    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. Dans le src/stages/discovery/PlatformDetector.ts fichier, ajoutez la logique de détection.

  3. Dans le src/stages/discovery/SourceFolderService.ts fichier, ajoutez les modèles de fichier.

Étape 5 (facultative) : Ajouter des exemples ir

Pour documenter la façon dont les artefacts de votre plateforme correspondent au schéma IR, ajoutez un fichier docs/IRExamples_YourPlatform.md. Les exemples suivants existent et servent de modèles :

Exemple Description
docs/IRExamples_BizTalk.md Informations de référence sur BizTalk
docs/IRExamples_MuleSoft.md Informations de référence sur MuleSoft
docs/IRExamples_Boomi.md Exemple Dell Boomi
docs/IRExamples_IBMIIB.md Exemple IBM IIB/ACE
docs/IRExamples_TIBCO.md Exemple TIBCO BusinessWorks
docs/IRExamples_Workato.md Exemple Workato

Alternative : Extension de l’analyseur externe

Les extensions d’analyseur externe couvrent uniquement l’étape de découverte de l’agent de migration où l’agent analyse vos fichiers sources. Les compétences, la détection de plateforme et la planification et la conversion optimisées par l'IA nécessitent que vous contribuiez directement au référentiel GitHub de l'extension.

Toutefois, si vous préférez ne pas contribuer directement au référentiel, créez une extension Visual Studio Code distincte qui inscrit les analyseurs à l’aide de l’API de plug-in parse :

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 de module d’analyseur

Méthode ou propriété Description
version Version d'extension (lecture seule)
registerParser(parser, options?) Inscrivez un analyseur auprès du Registre.
unregisterParser(id) Supprimez un parser inscrit.
getParserRegistry() Accédez directement au registre de l’analyseur.
hasParser(id) Vérifiez si un analyseur est inscrit.
getExternalParsers() Obtenez des informations sur les analyseurs externes inscrits.
  • Migration automatisée depuis les plateformes d’intégration vers Azure Logic Apps

Étapes suivantes