적용 대상: Azure Logic Apps(표준)
메모
이 미리 보기 기능은 Microsoft Azure 미리 보기에 대한 추가 사용 약관의 적용을 받습니다.
조직에서 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(스텁) |
파트너 플랫폼 분석기 커뮤니티 파서 |
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각 파서가
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 */ } }; } }파서를
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(표준) 구성 요소에 매핑
다음 표를 검토하여 어댑터 매핑을 만듭니다.
< your-platform> 플랫폼 구성 요소 Azure Logic Apps 대응 네이티브? 비고 HTTP 수신기 HTTP 트리거 예 기본 제공 데이터베이스 커넥터 SQL Server 커넥터 예 기본 제공 다음 표의 각 기술에 대해 필요한
<your-platform>/SKILL.md기술 변형을 만듭니다.팁 (조언)
지원되는 플랫폼(예:
biztalk/SKILL.md시작 지점)에 대한 기술을 복사하고 플랫폼에 맞게 콘텐츠를 조정합니다.GitHub Copilot 에이전트 기술 Purpose @migration-analyserdetect-logical-groups아티팩트 그룹을 논리 흐름 그룹으로 그룹화하기 위한 규칙 @migration-analyseranalyse-source-design원본 아키텍처 분석 및 시각화 생성 규칙 @migration-analyserdependency-and-decompilation-analysis누락된 종속성을 식별하기 위한 규칙 모든 에이전트 source-to-logic-apps-mapping원본에서 Azure Logic Apps로의 구성 요소별 매핑 @migration-plannerlogic-apps-planning-rules마이그레이션 계획 생성 규칙 @migration-converterconversion-task-plan-rules변환 작업을 만들기 위한 규칙 @migration-converterscaffold-logic-apps-project표준 논리 앱 프로젝트 구조 스캐폴딩 규칙 @migration-converterworkflow-json-generation-rules파일 생성 workflow.json규칙@migration-converterconnections-json-generation-rules파일 생성 connections.json규칙@migration-converterdotnet-local-functions-logic-apps.NET 로컬 함수 생성 규칙 @migration-converterno-stubs-code-generation생성된 코드가 완료되었는지 확인하는 규칙 @migration-converterruntime-validation-and-testing런타임 유효성 검사 및 테스트 규칙 @migration-convertercloud-deployment-and-testing클라우드 배포 및 테스트 규칙
4단계: 플랫폼 등록
파일에서
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>'], }, ];파일의
src/stages/discovery/PlatformDetector.ts에 검색 논리를 추가합니다.파일에서
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() |
등록된 외부 파서에 대한 정보를 가져옵니다. |