사용자 지정 파서를 만들어 Azure Logic Apps 마이그레이션 에이전트를 다른 플랫폼으로 확장(미리 보기)

적용 대상: Azure Logic Apps(표준)

조직에서 Visual Studio Code Azure Logic Apps 마이그레이션 에이전트 확장이 현재 지원하지 않는 통합 플랫폼을 사용하는 경우(예: TIBCO BusinessWorks, IBM IIB/ACE, Dell Boomi 또는 Workato) 해당 플랫폼에 대한 사용자 지정 파서가 만들어지고 추가되어 에이전트를 확장할 수 있습니다. 확장은 기본 제공 및 외부 파서를 모두 지원하는 레지스트리 기반 파서 아키텍처를 사용하므로 핵심 마이그레이션 파이프라인을 수정하지 않고 플랫폼 지원을 추가할 수 있습니다.

이 문서에서는 원본 통합 플랫폼의 아티팩트를 마이그레이션 에이전트의 일반적인 IR(중간 표현) 형식으로 변환하는 사용자 지정 파서 만들기 및 추가하는 방법을 보여 줍니다. 이 JSON 문서에서는 플랫폼 중립적인 방식으로 아티팩트를 설명하고 에이전트가 5개의 마이그레이션 단계를 모두 통해 아티팩트를 처리할 수 있도록 합니다.

사전 요구 사항

시작하기 전에 다음 리소스가 있는지 확인합니다.

요구 사항 Description
Node.js 18 이상 무료 오픈 소스 플랫폼 간 JavaScript 런타임 환경
Visual Studio Code 1.85.0 이상 로컬 개발 환경
Visual Studio Code 확장 API Visual Studio Code 대한 확장을 빌드할 수 있는 API
Azure Logic Apps 마이그레이션 에이전트 확장 Visual Studio Code에서 마이그레이션 에이전트와 함께 사용하는 필수 확장 프로그램
Azure Logic Apps(표준) 확장 Azure Logic Apps 마이그레이션 에이전트 확장에 대한 필수 종속성
TypeScript에 대한 숙지 JavaScript를 기반으로 하는 강력한 형식의 프로그래밍 언어
원본 통합 프로젝트 지원을 원하는 플랫폼의 원본 통합 프로젝트 및 아티팩트 파일

파서 아키텍처

마이그레이션 에이전트에 플랫폼 지원을 추가하려면 다음 방법을 사용합니다.

Approach 권장 Description
Built-in 파서: extension의 GitHub 리포지토리에 기여하세요 프로젝트에 직접 파서 및 기술을 추가합니다. 5개의 마이그레이션 단계 모두와 전체 통합 이 방법은 기본 제공 파서가 확장과 함께 제공되고 동일한 CI/CD 파이프라인을 사용하며 모든 내부 API에 액세스할 수 있기 때문에 권장됩니다.
외부 파서 확장 No 플러그 인 API를 통해 파서를 등록하는 별도의 Visual Studio Code 확장을 만듭니다. 디스커버리 단계만 다룹니다.

모든 파서는 원본 플랫폼 아티팩트를 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>());
    }
    

    팁 (조언)

    에서 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 Logic Apps(표준) 구성 요소에 매핑

  1. 다음 표를 검토하여 어댑터 매핑을 만듭니다.

    < your-platform> 플랫폼 구성 요소 Azure Logic Apps 대응 네이티브? 비고
    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 Logic Apps로의 구성 요소별 매핑
    @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 기반 계획 및 변환을 수행하려면 extension의 GitHub 리포지토리 직접 기여해야 합니다.

그러나 리포지토리에 직접 기여하지 않으려면 파스 플러그 인 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() 등록된 외부 파서에 대한 정보를 가져옵니다.

다음 단계