你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

通过创建自定义分析程序将Azure 逻辑应用迁移代理扩展到其他平台(预览版)

适用于:Azure 逻辑应用(标准)

注释

此预览版功能受 Microsoft Azure 预览版补充使用条款的约束。

如果你的组织使用的集成平台(例如 TIBCO BusinessWorks、IBM IIB/ACE、Dell Boomi 或 Workato)目前还不被 Visual Studio Code 中的 Azure 逻辑应用 迁移代理扩展所支持,可以通过为该平台创建并添加自定义分析程序来扩展该代理。 该扩展使用支持内置分析器和外部分析器的基于注册表的分析器体系结构,因此无需修改核心迁移管道即可添加平台支持。

本文介绍如何创建和添加自定义解析器,用于将源集成平台的项目转换为迁移代理的通用IR(中间表示)格式。 此 JSON 文档以非平台中立的方式描述项目,并允许代理通过所有 5 个迁移阶段处理项目。

Prerequisites

在开始之前,请确保具有以下资源:

Requirement Description
Node.js 18 或更高版本 免费、开源、跨平台 JavaScript 运行时环境
Visual Studio Code 1.85.0 或更高版本 本地开发体验
Visual Studio Code 扩展 API 用于生成Visual Studio Code扩展的 API
Azure 逻辑应用迁移代理扩展 Visual Studio Code 迁移智能体所需的扩展
Azure 逻辑应用(标准)扩展 Azure 逻辑应用迁移代理扩展所需的依赖项
熟悉 TypeScript 利用 JavaScript 的强类型编程语言
源集成项目 您希望支持的平台的源集成项目和工件文件

分析器体系结构

若要向迁移代理添加平台支持,请使用以下方法:

Approach 推荐 Description
内置分析器:参与扩展的GitHub存储库 是的 将分析器和技能直接添加到项目。 与所有五个迁移阶段完全集成。 建议使用此方法,因为内置分析程序随扩展一起提供,使用相同的 CI/CD 管道,并且可以访问所有内部 API。
外部分析器扩展 创建一个单独的Visual Studio Code扩展,通过插件 API 注册解析器。 仅涵盖发现阶段。

所有分析程序都以 JSON 文档的形式将源平台项目转换为通用 IR 格式。 迁移代理在规划、转换和验证阶段使用 IR 格式。 分析器注册表支持内置和外部分析程序插件:

内置分析程序 外部分析程序插件
BizTalk (.btproj.odx
BizTalk (.btm.xsd
BizTalk (.btp
MuleSoft(存根)
合作伙伴平台解析器
社区解析器

此图表显示内置和外部分析程序插件如何馈送成迁移阶段使用的常见 IR 文档格式。

步骤 1:添加内置分析器

  1. 在下面 src/parsers/<your-platform>/,创建新的分析器模块。

    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. 确保每个分析程序实现 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. 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>());
    }
    

    小窍门

    作为完整的可运行参考,请使用 src/parsers/biztalk/ 中的 BizTalk 分析器实现。

步骤 2:添加特定于平台的技能

作为 Markdown 文件,技能为每个迁移阶段提供 AI 指南。 他们向GitHub Copilot代理说明如何分析、制定计划并转换适合您特定平台的构件。

若要查找这些技能,请在含平台特定变体的 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)

每个 SKILL.md 文件都使用 YAML 文件头,接着是 Markdown 内容。例如:

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

步骤 3:将平台映射到Azure 逻辑应用(标准)组件

  1. 查看下表以创建适配器映射:

    < your-platform> 组件 Azure 逻辑应用 等效项 原生? 注释
    HTTP 侦听器 HTTP 触发器 是的 内置
    数据库连接器 SQL Server 连接器 是的 内置
  2. 对于下表中的每个技能,请创建所需的 <your-platform>/SKILL.md 技能变体:

    小窍门

    首先,复制 biztalk/SKILL.md 等受支持平台的技能,然后根据平台调整内容。

    GitHub Copilot 智能体 技能 Purpose
    @migration-analyser detect-logical-groups 对工件进行分组以形成逻辑流组的规则
    @migration-analyser analyse-source-design 用于分析源体系结构和生成可视化效果的规则
    @migration-analyser dependency-and-decompilation-analysis 标识缺失依赖项的规则
    所有代理 source-to-logic-apps-mapping 从源到 Azure 逻辑应用 的逐个组件映射
    @migration-planner logic-apps-planning-rules 生成迁移计划的规则
    @migration-converter conversion-task-plan-rules 创建转换任务的规则
    @migration-converter scaffold-logic-apps-project 标准逻辑应用项目结构搭建规则
    @migration-converter workflow-json-generation-rules 生成 workflow.json 文件的规则
    @migration-converter connections-json-generation-rules 生成 connections.json 文件的规则
    @migration-converter dotnet-local-functions-logic-apps 生成.NET本地函数的规则
    @migration-converter no-stubs-code-generation 确保生成的代码完成的规则
    @migration-converter runtime-validation-and-testing 运行时验证和测试规则
    @migration-converter cloud-deployment-and-testing 云部署和测试规则

步骤 4:注册平台

  1. src/types/platforms.ts 文件中,将平台添加到支持的平台列表中。

    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. src/stages/discovery/PlatformDetector.ts 文件中,添加检测逻辑。

  3. src/stages/discovery/SourceFolderService.ts 文件中,添加文件模式。

步骤 5 (可选):添加 IR 示例

若要记录平台的项目如何映射到 IR 架构,请添加文件 docs/IRExamples_YourPlatform.md 。 以下示例存在并充当模板:

示例 Description
docs/IRExamples_BizTalk.md BizTalk 参考
docs/IRExamples_MuleSoft.md MuleSoft 参考
docs/IRExamples_Boomi.md Dell Boomi 示例
docs/IRExamples_IBMIIB.md IBM IIB/ACE 示例
docs/IRExamples_TIBCO.md TIBCO BusinessWorks 示例
docs/IRExamples_Workato.md Workato 示例

替代方法:外部分析器扩展

外部扩展程序仅涵盖迁移代理的发现阶段,在此阶段,代理解析您的源文件。 技能、平台检测以及由 AI 提供支持的规划和转换,都要求你直接参与 扩展插件的 GitHub 存储库

但是,如果您不想直接贡献到存储库,请使用 parse 插件 API创建一个独立的 Visual Studio Code 扩展来注册解析器:

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

方法或属性 Description
version 扩展版本(只读)
registerParser(parser, options?) 向注册中心注册解析器。
unregisterParser(id) 删除已注册解析器。
getParserRegistry() 直接访问分析器注册表。
hasParser(id) 检查是否注册了解析器。
getExternalParsers() 获取有关已注册的外部分析程序的信息。

后续步骤