Skip to main content
Glama
vikram-vn
by vikram-vn

CPQ-BML VS Code 拡張機能

Oracle CPQ BigMachines Language (BML) のための、プロフェッショナルで多機能な Visual Studio Code 拡張機能です。この拡張機能は CPQ プロフェッショナル向けの究極の開発環境として、IntelliSense、シンタックスハイライト、堅牢な診断/リンティング、ワークスペース全体のフォーマット、リモート REST 統合、MCP による AI 支援を提供します。


📖 目次


Related MCP server: Salesforce CLI MCP Server

✨ 機能概要

  • 🎨 BML カラーテーマ: 4つのカスタマイズされたエディタテーマを提供し、深いセマンティックトークンの配色を実現します。

  • 💡 IntelliSense: コンテキストに応じた自動補完、シグネチャヘルプ、パラメータのツールチップを提供します。

  • 🔍 リンターと診断: セキュリティ(SQL インジェクション、ハードコードされたシークレット)、Oracle 公式の BML ドキュメントで確認された確実なコンパイル/ランタイムエラー、非推奨 API、論理エラーに対する 70 以上のリアルタイムチェックを提供します。

  • 📖 オフラインヘルプビューア: Docusaurus 風にレンダリングされたドキュメント(:::note/:::warning のコールアウト付き)が、任意のホバーツールチップから即座に開きます。インターネット接続は不要です。

  • 🛠 ワークスペース全体のフォーマット: ディレクトリまたは対象フォルダを再帰的に整形します。

  • REST 統合: リモートの CPQ インスタンス上で BML 関数の同期、コンパイル、検証、デバッグ、デプロイを直接行います。

  • 🤖 AI エージェント接続 (MCP): 安全なローカル Model Context Protocol (MCP) サーバーを使用して、AI によるビルドやデバッグを実現します。

  • 🧠 AI エージェントスキル (AgentSkills.io): Claude Code などの AI アシスタントに深い CPQ および BML のドメイン知識を注入するための、プリコンパイル済みのセマンティックスキルを 8 個同梱しています。

  • 📝 Better Comments: タスク、タグ、ディレクティブ、関数ヘッダーに対して明確な視覚スタイルを提供します。


🔍 主要機能

1. 言語サポートと IntelliSense

  • リッチなシンタックスハイライト: BML メソッド、制御フロー文(ifelifelsefor)、データベースクエリ(bmql)、演算子、リテラルに対する完全な文法サポートを提供します。

  • スニペットライブラリ: ループ構造、一般的な文字列操作、JSON 操作、システム関数に対する、コンテキストに応じた即時のコードスケルトンを提供します。

  • オートコンプリートとツールチップ: 入力に応じてシグネチャ、戻り値の型、パラメータのチェックリストが表示され、Oracle CPQ の仕様に一致します。

  • オフラインヘルプビューア: 組み込み関数のすべてのホバーツールチップには、高速で自己完結型のドキュメントパネルを開く 📖 オフラインヘルプを読む リンクが含まれています。インターネット接続は不要です。Docusaurus スタイルの :::note/:::tip/:::warning コールアウトを、生のマークダウンテキストではなく、適切な色付きボックスとしてレンダリングします。エディタのテーマに合わせられ、複数回開いても単一のパネルを再利用するため、毎回プレビューを再起動することなく、繰り返しの参照が即座に行えます。

  • スペルチェッカー統合: cspell.json 定義を事前構成して、スペルエラーを発生させることなく、CPQ 固有の関数(strtojavadatejsonarrayrefidbmql など)を自動的にサポートします。


2. ワークスペースフォーマッタとビューティファイア

  • 再帰的フォーマット: CPQ-BML: Beautify / Format All BML Files in WorkspacecpqBml.beautifyWorkspace)を実行して、BML ファイルを再帰的にフォーマットします。

  • フォルダターゲット UI: マルチセレクトのクイックピックピッカーがワークスペースのルートパスとフォルダを表示し、特定のモジュールを対象にできます。

  • CPQ の規約: インデント、スペース、ブレースのレイアウトを標準化し、キーワード not をコンパイラ必須の NOT に自動置換するなどの大文字ルールを強制します。

  • 柔軟な構成: フォーマッタの動作は、ローカルの .bmlbeautifyrc JSON ファイルを使用して特定のディレクトリごとに上書きできます。


3. BML リンターとリアルタイム診断

この拡張機能には、CPQ にアップロードする前に欠陥、アンチパターン、脆弱性を検出するためのカスタム BML ネイティブ静的アナライザが含まれています:

Linter ルールカテゴリ

診断チェックと検証

推奨事項 / 修正

BMQL 安全性

bmql(...) クエリ内の文字列連結(SQL インジェクションリスク)。SELECT * の使用。WHERE 句なしの UPDATE/MODIFY/DELETE(テーブル全体を暗黙的に変更またはクリアする)。WHERE なしの SELECT ... DISTINCT/ORDER BY(結果セットが 1,000 レコードで暗黙的に上限/切り捨て)。WHERE なしの単純な SELECT(無制限の結果セット)。

安全な $variable プレースホルダー構文を使用し、明示的な列をリストし、テーブル全体のクリア/スキャンが意図的でない限り WHERE 句を追加する。

API 非推奨

strtodategettabledatagetpartsdata などの古いメソッドをフラグ付けします。

strtojavadate と安全な bmql データベースクエリを提案します。

Oracle 定数

JS 固有の NaN 参照を検出します。

CPQ 互換の jNaN を自動提案します。

return 文

欠落した return パス、または無効な Commerce BML return(区切り文字 | の欠落)をチェックします。

有効な BML return 文と区切り文字パターンを強制します。

配列境界の安全性

先行する sizeofarray() チェックなしで split() 配列インデックスへのアクセスを検出します。

インデックスアクセスの前に配列サイズの検証を強制します。

解析検証

変数に対する安全でない atoi() および atof() 変換をフラグ付けします。

最初に isnumber() で数値ステータスを確認することを提案します。

保証されたコンパイル/実行時エラー

Oracle 自身の BML ドキュメントに対して検証された、データに関係なく 常に 失敗するパターン:atoi("")/atof("")(常にスロー)、引数なしの isnumber()(コンパイルエラー - isnumber("") は問題ない)、replace(str, "", new)(空の検索パターンは常にスロー)、string("literal")(コンパイルエラー - string() は Float/Integer/Boolean のみキャスト)、float[-9] のような負のリテラル配列サイズ(実行時例外)、Util/Commerce ライブラリ関数が自身の名前で呼び出される(再帰的自己参照は常にコンパイルに失敗)。

それぞれに 1 行の決定的な修正があります。これらはリテラル引数に対してのみ発火し、実行時に静的に知ることができない変数には決して発火しないため、構造上ゼロ誤検知です。

文書化された関数制限

logtime() のタグ引数が 128 文字を超える(暗黙的に切り捨て)。globaldictset()minTimeToLive が文書化された 0 < n < 525600 の範囲外。jsonput() にリテラル文字列 "null" または {...}/[...] でラップされた値が渡される(どちらも書かれたとおりに保存されず、引用符が暗黙的に削除される)。booleananytype、または 2 次元ディクショナリに対して values() が呼び出される(サポート外)。

リテラル引数を調整して、その関数の文書化された動作の範囲内に収めます。

セキュリティとシークレット

文字列リテラル内のハードコードされた URL。ハードコードされた資格情報 - password/apiKey/secret/token のような名前の変数に、直接非自明な文字列リテラルが割り当てられている(一般的なプレースホルダー値と関数由来の値はノイズを避けるために除外)。

URL をデータテーブルまたはシステム変数に抽出し、シークレットをリテラルソースコードではなくシステム変数または安全な構成に保存します。

ロジックとスタイル

空の制御フロー(ifelifelsefor)、マジックリテラル(01210100 を除く)、および厳密なセミコロン規則。

定数に名前を付け、ブロックを正しくフォーマットすることを推奨します。

パフォーマンス

ネストされたループ、ループ内の BMQL クエリ、ループ内の文字列連結、同じテーブルに対する繰り返し/重複した BMQL クエリ。

クエリをループの外に移動し、文字列累積には StringBuildersbappend/sbtostring)を使用し、繰り返しクエリをキャッシュします。

設計と複雑さ

ネスト深度 > 3、循環的複雑度 > 15(カウントされる分岐点:if/elif/for/and/or)。

深くネストされたブロックをヘルパー関数にリファクタリングします。

スタイル

1 行に複数のステートメント、開き/閉じ括弧の配置、引数を括弧で囲まない not、ガードされていない print() 呼び出し、200 文字を超えるコード行(BMQL クエリ行は例外 - クエリ文字列は行をまたいでラップできない)。

1 行 1 ステートメント、折りたたみ括弧スタイル、not(x) 構文、デバッグフラグでガードされた print、および行長制限を強制します。

安全性

リテラル浮動小数点数との直接等価比較(==/!=)、リテラルゼロによる除算、ループ本体外の break/continue、禁止された _config_attributes/_config_attr_text システム変数。

浮動小数点比較には許容差しきい値を使用し、除算をガードし、誤って配置されたループ制御ステートメントを削除し、サポートされている CPQ 属性を使用します。

構文エラー

配列要素の代入(arr[i] = v は BML でサポートされていない)、非オブジェクト値に対する無効なメンバーアクセスまたはメソッド呼び出し(例:x.lengthx.doSomething())、型引数なしの dict() 呼び出し。

配列には append()/insert() を使用し、ドット記法の代わりに BML 組み込み関数(sizeofarray()jsonget() など)を使用し、dict() に型を指定します(例:dict("string"))。

関数呼び出し

不明な裸の関数名(「もしかして」のタイポ提案付き)、Oracle の組み込みシグネチャに対する誤った引数数、引数のリテラル型の不一致、不明なワークスペース util.* / commerce.* 関数参照 - util ライブラリフォルダー(util.<Folder>.<name>(...))にグループ化された関数を含む。

クイックフィックスを適用して関数名を修正し、期待される引数の数と型に一致させます。

デッドコードとロジック

常に真/常に偽の条件、無条件の return/break/continue/throwerror の後、またはすべての分岐がすでに終了している if/elif/else チェーンの後の到達不能コード、重複した elif 分岐条件、グループ化括弧なしで混在する AND/OR、孤立した else { if ... }elif を使用)、効果のない裸の比較(= のタイポの可能性)。到達不能コードと未使用変数は、下線だけではなくエディターでフェードアウト表示されます(VS Code の標準的な「不要なコード」スタイル)。

デッドブランチを削除またはリファクタリングし、演算子の優先順位に明示的な括弧を追加し、else { if }elif に置き換え、意図した場所で代入 = を使用します。

変数チェック

型一貫性違反(競合するリテラル型で変数が再割り当て)、同じファイル内での代入前の変数読み取り(no-undef/useBeforeDefine、util ライブラリのみ)、読み取り専用の CPQ システム変数(_user_*_site_*)への代入、メタデータサイドカーの型不一致。

代入全体で一貫したリテラル型を確保し、使用前に変数を初期化し、読み取り専用のシステム変数に書き込まないでください。

インライン抑制

コメントを使用して、特定のリンタールールをきめ細かくバイパスできます。ディレクティブは大文字と小文字を区別せず、行コメントとブロックコメントの両方で機能します:

// bml-lint-disable-file               ← suppress everything in this file
// bml-lint-disable                    ← start of suppressed block
// bml-lint-enable                     ← end of suppressed block
x = 10 / 0; // bml-lint-disable-line  ← suppress diagnostics on this line
/* bml-lint-disable-next-line */       ← suppress all diagnostics on the next line
// bml-lint-disable-next-line bml-operator-fix, bml-spelling-error
x = 10 / 0;                            ← only those two codes are suppressed

サポートされているディレクティブスタイル:

ディレクティブ

スコープ

// bml-lint-disable-file [code ...]

配置場所に関係なく、ファイル全体

// bml-lint-disable [code ...]

この位置から対応する bml-lint-enable まで

// bml-lint-enable [code ...]

以前の bml-lint-disable を再度有効にする

// bml-lint-disable-line [code ...]

コメントが置かれている行

// bml-lint-disable-next-line [code ...]

直後の行

/* bml-lint-disable-line */

同じ行のブロックコメント

/* bml-lint-disable-next-line */

対象の行の前にあるブロックコメント

[!TIP] コードリストを省略するとすべての診断が抑制されます。1つ以上の bml-* コードを指定すると、それらの特定のルールのみが抑制されます。多くの診断では、電球アイコンのクイックフィックスCtrl+. または Cmd+.)が利用可能で、セミコロンのスタイル、変数のタイプミス、フォーマットエラー、非推奨APIを即座に自動解決できます。


4. Better Comments とドキュメントヘッダー

コメントをカテゴリ別のタスク、ステータス、または視覚的なコールアウトとしてスタイル設定することで、コードの可読性を高めます。

カスタムタグのスタイリング

コメントプレフィックス

色 / 視覚的表現

目的 / 意味

// !

鮮やかな赤(高コントラスト)

重大な警告、注意、またはセキュリティ通知

// ?

ソフトブルー(斜体)

質問、設計レビュー、または未解決のパス

// *

鮮やかな緑(斜体)

強調されたメモ、重要なポイント、または重要な情報

// //

控えめな取り消し線

コメントアウトされたデッドコードブロック

// TODO:

明るいオレンジ

実装予定のタスク

// FIXME: / BUG:

薄い赤(太字)

修正が必要なコードのバグまたは問題

// WARNING:

黄色(太字)

重要度の高いアクション警告

// HACK: / XXX:

オレンジ(太字&下線)

一時的な回避策または注意領域

// NOTE: / OPTIMIZE:

ティール(太字)

パフォーマンスの提案または一般的なコンテキスト

// IDEA:

設計提案または潜在的な改善

ディレクティブとブロックヘッダー

  • Lint&フォーマットディレクティブ: // bml-lint-disable-line/* beautify ignore:start */ のようなコメントは、特徴的な紫色のボーダーでスタイル設定され、制御タグを視認しつつ邪魔にならないようにします。

  • 標準ドキュメントヘッダー: Function Name:Description:Inputs:、または Returns: で始まる関数ドキュメントブロックは、自動的にグループ化され、水色の斜体フォントで色付けされます。


5. インタラクティブ設定ダッシュボードWebView

CPQ-BML: Open SettingscpqBml.settings.open)を使用して、カスタムグラフィカルダッシュボードで接続と機能を設定します:

  • 接続タブ: サーバーのサイトURL、認証方式、アクティブなAPI認証情報を入力します。

  • 環境タブ: 複数のサンドボックス(例:DevTestUATProduction)を保存して、アクティブなターゲットを切り替えます。

  • 機能タブ: クリーンなUIで、リンティングルール、Better Commentsのスタイリング、一般的な拡張機能アシスタントを切り替えます。

  • セキュアストレージ統合: VS Code Secret Storage API に直接接続します。認証情報、パスワード、トークンはOSのキーチェーンに保存され、平文の設定ファイルに書き込まれることはありません。

  • 接続テスト: ワンクリックチェックで、設定を適用する直前にリモート認証情報とサイト接続を検証します。


6. リモートREST統合と同期

CPQ開発ワークフローをローカルエディター内で完全に実行します:

  • コードのプル: リモートサーバーからユーティリティライブラリ関数とコマースプロセス関数(cpqBml.rest.pullLibraryFunctionscpqBml.rest.pullCommerceFunctions)を、それらのメタデータとともに取得します。

  • リモート検証とコンパイル: CPQ-BML: Validate Current File Against CPQ を実行して、アクティブなドキュメントに対してOracleのサーバーサイドコンパイラを起動し、構文診断をローカルに表示します。

  • サンドボックスデバッガー: CPQ-BML: Debug Current Function on CPQ を実行して、パラメータピッカーダイアログを起動し、テスト値をサンドボックスランタイムに送信して、ターミナルで標準出力を確認します。

  • デプロイコントロール: 個別ファイルの保存、ユーティリティライブラリの一括デプロイ、または完全なコマースプロセス構成を使用して、変更したコードを即座にデプロイします。


7. AI統合用Model Context Protocol(MCP)サーバー

この拡張機能は、組み込みのセキュアなModel Context Protocol(MCP)サーバーを実行し、AIコーディングアシスタント(Claude Codeなど)がワークスペース内のコードを安全に検査、デバッグ、デプロイできるようにします。

graph TD
    subgraph External Environment
        AI[AI Client / Claude Code]
    end
    subgraph VS Code Host
        MCP[MCP Server <br> 127.0.0.1:47821]
        Ext[CPQ-BML Extension]
        Sec[OS Keychain / Secret Storage]
    end
    subgraph Cloud Service
        CPQ[Oracle CPQ Sandbox / Instance]
    end

    AI -- "MCP JSON-RPC Protocol" --> MCP
    MCP -- "Internal Bridge (No Auth Shared)" --> Ext
    Ext -- "Retrieves Credentials" --> Sec
    Ext -- "REST API Requests" --> CPQ

セキュリティモデル

認証情報、クッキー、シークレットトークンは、拡張機能のセキュアなコンテキスト内に保持されます。MCPサーバーはこれらの値をAIクライアントに公開しません。MCPサーバーは単に実行役として機能し、ローカル拡張機能インスタンスを介してリクエストをルーティングするだけです。

AI作業の分離

AIエージェントがMCPを介してファイルの変更またはダウンロードを要求すると、拡張機能は分離された [variableName]-AI.bml 作業コピーを作成します。これにより、エージェントがローカルスクリプトを上書きするのを防ぎ、コミット前にdiffツールで変更を確認できます。

公開されているMCPツール

  • list_util_functions:リモートのユーティリティライブラリ関数をすべて列挙します。

  • list_commerce_functions:CPQインスタンス上のすべてのコマーススクリプトを一覧表示します。

  • pull_function:標準BMLを取得し、ローカルに .bml ファイルと -meta.json ファイルとして保存します。

  • save_function:更新をCPQ環境に適用します。

  • validate_function:CPQサーバーコンパイラに問い合わせて変更を検証します。

  • debug_function:テストパラメータを使用して関数をリモートで実行します。

  • deploy_function / mass_deploy_util_functions:個別またはバッチ単位の関数をデプロイします。

  • deploy_commerce_process:プロセス構成全体を公開します。

  • create_util_function:新しいユーティリティ関数をスキャフォールドして公開します。

  • create_override:標準(システム)関数の編集可能なオーバーライドを作成します - 検証、保存、またはデプロイの前に必要です。

  • remove_override:オーバーライドされた標準関数をCPQのシステムバージョンに戻します(破壊的操作のため、confirm:true が必要です)。


8. AIエージェントスキル統合(AgentSkills.io)

CPQ-BMLには、AgentSkills.io 仕様に基づいて設計されたプリコンパイル済みの「Agent Skills」セットが同梱されています。これにより、ワークスペースと対話する際にこれらのスキルをネイティブに解析するAIコーディングアシスタント(Claude CodeやCursorなど)に、深いドメイン知識が注入されます。

ゼロ構成セットアップ:

拡張機能の設定でMCPサーバーを有効にすると、CPQ-BMLはこれらのスキルをワークスペースに自動的に登録します。手動で実行するセットアップコマンドはありません!

拡張機能パッケージを小さく保ち、ワークスペースをクリーンに保つために:

  • 大規模なセマンティックナレッジベースは、ビルド時に高度に最適化された .br アーカイブに圧縮されます。

  • 実行時には、拡張機能はこの知識をセキュアなVS Code Global Storageディレクトリに透過的に展開します。

  • ワークスペースにポインターファイル(例:.agents/skills.jsonCLAUDE.md.cursorrules)を自動的にプロビジョニングし、AIアシスタントを

コマンド ID

タイトル

説明

エディタツールバーショートカット

cpqBml.settings.open

CPQ-BML: Open Settings

WebView ダッシュボードを起動します

-

cpqBml.beautifyWorkspace

CPQ-BML: Beautify / Format All BML Files in Workspace

ワークスペースを再帰的にフォーマットします

-

cpqBml.rest.changeEnvironment

CPQ-BML: Change Environment

クイックピックで環境を切り替えます

-

cpqBml.rest.setPassword

CPQ-BML: Set CPQ Password

Basic 認証用のパスワードを安全に保存します

-

cpqBml.rest.setAuthToken

CPQ-BML: Set CPQ Auth Token

Bearer トークン認証情報を安全に保存します

-

cpqBml.rest.pullLibraryFunctions

CPQ-BML: Pull Util Library Functions from CPQ

ユーティリティ BML 関数をダウンロードします

-

cpqBml.rest.pullCommerceFunctions

CPQ-BML: Pull Commerce Functions from CPQ

コマース BML スクリプトをダウンロードします

-

cpqBml.rest.validateCurrentFile

CPQ-BML: Validate Current File Against CPQ

アクティブな BML ファイルをサーバー上でコンパイルします

$(check)

cpqBml.rest.debugCurrentFile

CPQ-BML: Debug Current Function on CPQ

ライブランナーダイアログを起動します

$(play)

cpqBml.rest.saveCurrentFile

CPQ-BML: Save Current File to CPQ

バッファの変更をリモート CPQ に保存します

$(cloud-upload)

cpqBml.rest.createBmlFunction

CPQ-BML: Create BML Function

BML 関数をローカル/リモートでスキャフォールドします

-

cpqBml.rest.deployCurrentFile

CPQ-BML: Deploy Current Util Function to CPQ

ユーティリティスクリプトをサーバー上に公開します

$(rocket)

cpqBml.rest.deployUtilFunctions

CPQ-BML: Mass Deploy Util Library Functions

ローカルのユーティリティファイルをバッチでプッシュします

-

cpqBml.rest.deployCommerceProcess

CPQ-BML: Deploy Commerce Process Setup

アクティブなプロセス設定をデプロイします

$(rocket)

cpqBml.rest.createOverride

CPQ-BML: Create Override

標準ファイルをローカルでオーバーライドします

$(repo-forked)

cpqBml.rest.removeOverride

CPQ-BML: Remove Override

アクティブなローカルオーバーライドファイルを破棄します

$(discard)

cpqBml.rest.clearResults

CPQ-BML: Clear Results Terminal

ログパネルの出力を消去します

$(clear-all)

cpqBml.mcp.showInfo

CPQ-BML: Show MCP Server Connection Info

ローカル MCP アクセスエンドポイント URL を表示します

-

cpqBml.openHelpTopic

CPQ-BML: Open BML Offline Help Topic

高速オフラインドキュメントビューアを開きます(通常はホバーツールチップの Read Offline Help リンクから起動されます)

-


⚙ 構成設定

VS Code の settings.json または設定エディタ UI で以下のオプションを構成します:

{
  "cpqBml.connection.enabled": true,
  "cpqBml.connection.siteUrl": "example.bigmachines.com",
  "cpqBml.connection.authMethod": "basic",
  "cpqBml.connection.username": "api_developer",
  "cpqBml.connection.environments": [
    {
      "name": "Dev Sandbox",
      "siteUrl": "dev.bigmachines.com",
      "username": "api_developer",
      "authMethod": "basic"
    }
  ],
  "cpqBml.rest.restVersion": "v18",
  "cpqBml.rest.commerceProcess": "oraclecpqo",
  "cpqBml.rest.commerceDocument": "transaction",
  "cpqBml.rest.pullFolder": "library",
  "cpqBml.features.lint": true,
  "cpqBml.features.comments": true,
  "cpqBml.mcp.enable": false,
  "cpqBml.mcp.port": 47821,
  "cpqBml.mcp.logToTerminal": false,
  "cpqBml.debug.logRestDetails": false,
  "cpqBml.debug.logOutputToFile": false
}

🔧 フォーマッタ設定 (.bmlbeautifyrc)

任意のディレクトリに .bmlbeautifyrc 構成ファイルを配置すると、BML フォーマッタのルールをカスタマイズできます。オプションは JS-beautify の構造に基づいてモデル化されています:

{
  "indent_size": 2,
  "brace_style": "collapse",
  "preserve_newlines": true,
  "max_preserve_newlines": 1,
  "space_before_conditional": true
}

📂 プロジェクト構造

このプロジェクトは、BML エディタサービス、REST ネットワーキング、テストユーティリティ、AI 統合を明確に分離したモジュール設計構造になっています:

├── app/                              # Extension Core Source Code
│   └── lang/                         # Language Intelligence & Tooling
│       ├── beautify/                 # Code Formatter & Beautification Engine
│       │   ├── commandWorkspace.js   # Workspace-wide mass formatter
│       │   ├── docHeader.js          # Auto-insert /// doc block comment completion
│       │   └── index.js              # Formatting core config/integration
│       ├── comments/                 # Better Comments parser (tags, directives, headers)
│       ├── intellisense/             # IntelliSense (autocompletions, hovers, signatures)
│       │   ├── index.js              # Go to definition, References, Rename registrations
│       │   ├── workspaceIndex.js     # Codebase scanner indexing util.* & commerce.*
│       │   ├── helpViewer.js         # Fast offline docs webview (Docusaurus-style ::: admonitions)
│       │   └── custom-snippets.json  # Smart snippet database
│       ├── lint/                     # Real-time Native Static Diagnostics
│       │   ├── lint.js               # Central rule runner pipeline
│       │   ├── nullSafety.js         # Checks nullable results of bmql() / get()
│       │   ├── infiniteLoop.js       # Identifies empty or non-populating loops
│       │   └── best-practices/       # BMQL safety, security, doc-verified guaranteed failures, etc.
│       ├── mcp/                      # Model Context Protocol AI Tool Integration
│       │   ├── server.js             # Local MCP server implementation
│       │   └── tools/                # Declarative AI helper tools
│       ├── metrics/                  # Code quality analysis WebView Dashboard
│       │   ├── complexity.js         # Cyclomatic complexity & nesting depth calculations
│       │   ├── report.js             # Metrics accumulator logic
│       │   └── reportWebview.js      # WebView layout rendering
│       ├── rest/                     # Oracle CPQ REST Client Integration
│       ├── settings-panel/           # Extension settings GUI dashboard WebView
│       ├── testing/                  # Safe sandboxed local execution & unit testing
│       │   ├── runner.js             # Sidecar *.bmltest.json executor
│       │   └── snapshot.js           # Regression snapshot comparisons
│       └── xslt/                     # XSLT formatting, & linking features
│
├── test/                             # Automated Test Suites
│   ├── linter/                       # Tests for suppressions & core linter behaviors
│   ├── mcp/                          # Tests for local MCP tool server
│   └── rest/                         # Offline mocked testing for CPQ REST sync
│
├── extension.js                      # Extension Activation/Deactivation Entry-point
├── package.json                      # VS Code Extension manifest & command declarations
└── README.md                         # Project documentation

🚀 インストールとセットアップ

  1. マーケットプレイスからインストール: VS Code の拡張機能パネル (Ctrl+Shift+X / Cmd+Shift+X) で「CPQ-BML」を検索し、Install をクリックします。

  2. 初期オンボーディング: 初回ロード時に Settings Dashboard が自動的に起動します。

  3. 環境のセットアップ: サイトの詳細を入力し、認証方法を選択して、接続を確認します。

  4. 認証情報の安全な保存: CPQ-BML: Set CPQ Password または CPQ-BML: Set CPQ Auth Token コマンドを使用して、パスワードやキーを安全に保存します。


💻 ローカル開発

この拡張機能を実行、カスタマイズ、または貢献したい場合:

前提条件

  • Node.js (v22 以降を推奨)

  • Visual Studio Code

手順

  1. リポジトリのクローン:

    git clone https://github.com/vikram-vn/cpq-bml.git
    cd cpq-bml
  2. 依存関係のインストール:

    npm install
  3. プロジェクトのコンパイル:

    npm run compile
  4. 拡張機能ホストの実行: VS Code でルートワークスペースを開き、F5 を押します(または Run and Debug -> Launch Extension に移動します)。拡張機能開発ホストウィンドウが開き、BML サポートをすぐにテストできます。


📄 ライセンスと変更履歴

  • ライセンス: このプロジェクトは MIT License の下でライセンスされています。

  • 変更履歴: 詳細なバージョン履歴、追加機能、更新内容は CHANGELOG.md で確認できます。

  • 免責事項: この拡張機能は独立したコミュニティプロジェクトであり、Oracle Corporation または BigMachines とは提携、スポンサー、承認、または関連していません。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI assistants to perform Business Central AL development tasks including language server operations, container management, Git version control, and file system operations for professional BC development workflows.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with Salesforce organizations through project-based CLI integration, allowing execution of Apex, SOQL queries, object descriptions, and org management using local Salesforce DX project configurations.
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to develop within a local project workspace by reading and modifying files, running commands and tests, checking Git state, and persisting progress as history sessions that can be restored in later conversations.
    -