適用対象: Azure Logic Apps (Standard)
Note
このプレビュー機能は、 Microsoft Azure プレビューの追加使用条件に従います。
組織で、Visual Studio Codeの Azure Logic Apps Migration Agent 拡張機能で現在サポートされていない統合プラットフォーム (TIBCO BusinessWorks、IBM IIB/ACE、Dell Boomi、Workato など) を使用している場合は、そのプラットフォームのカスタム パーサーを作成して追加することで、エージェントを拡張できます。 この拡張機能では、組み込みパーサーと外部パーサーの両方をサポートするレジストリ ベースのパーサー アーキテクチャが使用されるため、コア移行パイプラインを変更せずにプラットフォームのサポートを追加できます。
この記事では、ソース統合プラットフォームの成果物を移行エージェントの一般的な中間表現 (IR) 形式に変換するカスタム パーサーを作成して追加する方法について説明します。 この JSON ドキュメントでは、プラットフォームに依存しない方法で成果物について説明し、エージェントが 5 つの移行ステージすべてを通じて成果物を処理できるようにします。
前提条件
開始する前に、次のリソースがあることを確認します。
| Requirement | 説明 |
|---|---|
| Node.js 18 以降 | 無料のオープンソースのクロスプラットフォーム JavaScript ランタイム環境 |
| Visual Studio Code 1.85.0 以降 | ローカル開発エクスペリエンス |
| Visual Studio Code Extension 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 (.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>()); }ヒント
完全に動作するリファレンスとして、
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' | '<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 assistant = vscode.extensions.getExtension('microsoft.logicapps-migration-assistant');
if (assistant) {
const api = await assistant.activate();
api.registerParser(new MyPlatformParser(), {
priority: 10,
});
}
}
パーサー プラグイン API
| メソッドまたはプロパティ | 説明 |
|---|---|
version |
拡張機能のバージョン (読み取り専用) |
registerParser(parser, options?) |
パーサーをレジストリに登録します。 |
unregisterParser(id) |
登録済みのパーサーを削除します。 |
getParserRegistry() |
パーサー レジストリに直接アクセスします。 |
hasParser(id) |
パーサーが登録されているかどうかを確認します。 |
getExternalParsers() |
登録済みの外部パーサーに関する情報を取得します。 |