適用対象: Azure Logic Apps (Standard)
もし組織がVisual Studio CodeのAzure Logic Apps Migration Agent拡張機能が現在サポートしていない統合プラットフォーム(IBM IIB/ACE、DELL Boomi、Workatoなど)を使っている場合、そのプラットフォーム用のカスタムパーサーを作成・追加することでエージェントを拡張できます。 バージョン1.12.1には、BizTalk Server、MuleSoft Anypoint、TIBCO BusinessWorksの登録サポートが含まれています。 この拡張機能はレジストリベースのパーサーアーキテクチャを採用しており、組み込みおよび外部パーサの両方をサポートしています。
この記事では、ソース統合プラットフォームの成果物を移行エージェントの一般的な中間表現 (IR) 形式に変換するカスタム パーサーを作成して追加する方法について説明します。 このJSONドキュメントは、プラットフォームに依存しない形でアーティファクトを記述しています。 プラットフォーム固有のスキルを備えた組み込みパーサは、5つの移行段階すべてに参加できます。 外部パーサ拡張はディスカバリーのみをカバーします。
前提条件
開始する前に、次のリソースがあることを確認します。
| Requirement | 説明 |
|---|---|
| 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 (Standard) 拡張機能 | Azure Logic Apps Migration Agent 拡張機能に必要な依存関係 |
| TypeScript に関する知識 | JavaScript 上に構築される厳密に型指定されたプログラミング言語 |
| ソース統合プロジェクト | サポートが必要なプラットフォームのソース統合プロジェクトと成果物ファイル |
パーサー アーキテクチャ
移行エージェントにプラットフォーム サポートを追加するには、次の方法を使用します。
| Approach | 推奨 | 説明 |
|---|---|---|
| 組み込みパーサー: extension のGitHub リポジトリに貢献します | Yes | パーサーとスキルをプロジェクトに直接追加します。 5 つの移行ステージすべてとの完全な統合。 組み込みのパーサーには拡張機能が付属しており、同じ CI/CD パイプラインを使用し、すべての内部 API にアクセスできるため、この方法をお勧めします。 |
| 外部パーサー拡張機能 | いいえ | プラグイン API を使用してパーサーを登録する個別のVisual Studio Code拡張機能を作成します。 探索ステージのみを対象とします。 |
すべてのパーサーは、ソース プラットフォーム成果物を JSON ドキュメントとして共通の IR 形式に変換します。 移行エージェントは、計画、変換、検証の各段階で IR 形式を使用します。 パーサー レジストリは、組み込みパーサー プラグインと外部パーサー プラグインの両方をサポートします。
| 組み込みのパーサー | 外部パーサー プラグイン |
|---|---|
BizTalk Server(.btproj、.odx、.btm、.xsd、.btp、バインディング.xml、.hidx、.bre、.brl、.asmx)MuleSoft Anypoint( pom.xml、Mule Flow .xml、 .dwl) TIBCOビジネスワークス( tibco.xml、 TIBCO.xml、 module.bwm、 .process、 .bwp) |
パートナープラットフォームパーサー コミュニティ パーサー |
MuleSoftのRAMLおよびOpenAPI仕様パーサー、そして汎用XMLパーサーはバージョン1.12.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各パーサーが
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>()); }ヒント
完全に動作するリファレンスとして、
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 frontmatter とそれに続く 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 (Standard) コンポーネントにマップする
次の表を確認して、アダプター マッピングを作成します。
< your-platform> コンポーネント Azure Logic Apps に相当するもの ネイティブ。 注記 HTTP リスナー HTTP トリガー Yes Built-in データベース コネクタ SQL Server コネクタ Yes Built-in 次の表の各スキルに対して、必要な
<your-platform>/SKILL.mdスキルバリアントを作成します。ヒント
サポートされているプラットフォーム (
biztalk/SKILL.mdなど) のスキルを出発点としてコピーし、プラットフォームに合わせてコンテンツを調整します。GitHub Copilot エージェント Skill 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-rulesworkflow.jsonファイルを生成するための規則@migration-converterconnections-json-generation-rulesconnections.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' | 'tibco' | '<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 ファイルを追加します。 次の例が存在し、テンプレートとして機能します。
| 例 | 説明 |
|---|---|
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 リポジトリに直接貢献する必要があります。
ただし、リポジトリに直接貢献しない場合は、
import * as vscode from 'vscode';
export async function activate(context: vscode.ExtensionContext) {
const agent = vscode.extensions.getExtension('ms-azuretools.logicapps-migration-agent');
if (agent) {
const api = await agent.activate();
api.registerParser(new MyPlatformParser(), {
priority: 10,
});
}
}
パーサー プラグイン API
| メソッドまたはプロパティ | 説明 |
|---|---|
version |
拡張機能のバージョン (読み取り専用) |
registerParser(parser, options?) |
パーサーをレジストリに登録します。 |
unregisterParser(id) |
登録済みのパーサーを削除します。 |
getParserRegistry() |
パーサー レジストリに直接アクセスします。 |
hasParser(id) |
パーサーが登録されているかどうかを確認します。 |
getExternalParsers() |
登録済みの外部パーサーに関する情報を取得します。 |