ドメイン固有言語のカスタマイズおよび拡張
Visual Studio SDK 視覚化およびモデリングの VMSDK () はツールをシミュレートすることを定義できる複数のレベルを提供します :
DSL 定義 (DSL) 図を使用してドメイン固有言語を定義します。 すぐにグラフィカル的な表記で読みやすい XML 形式とコードおよびそのほかの成果物を生成するために必要な基本的なツールと DSL を作成できます。
詳細については、「方法: ドメイン固有言語を定義する」を参照してください。
DSL 定義の高度な機能を使用してDSL を最適化します。 たとえば追加のリンクをユーザーが要素を作成すると表示できます。 これらの手法はDSL 定義に主に使用されますがプログラム コードの行が必要です。
プログラム コードを使用してモデリング ツールを拡張します。 VMSDK にはDSL 定義から生成されたコードの拡張機能を統合しやすくするように設計されています。 詳細については、「ドメイン固有言語をカスタマイズするコードの記述」を参照してください。
注意
更新する場合はDSL の定義ファイルはソリューションをリビルドする前にソリューション エクスプローラーのツール バーの [ENT0ENT] をクリックし忘れたいません。
このセクションの内容
この効果を実現します。 |
このトピックを参照してください |
---|---|
ユーザーが図形の色とスタイル プロパティを設定することができます。 |
シェイプまたはコネクタのクラスを右クリックしをポイントしてを *** Add Exposed *** 項目をクリックします。 「図の外観のカスタマイズ」を参照してください。 |
図に最初の高さと幅などのプロパティを同様にモデル要素の外観クラスの異なる色ツールヒント共有します。 |
シェイプまたはコネクタのクラスの継承を使用します。 図形の派生クラスおよび派生ドメイン間のマッピングは親のマッピングの詳細を継承します。 または同じ図形にマップは異なるドメインのクラスです。 |
モデル要素のクラスは構造体のコンテキストで表示されます。 |
同じドメインのクラスに複数の図形クラスをマップします。 ソリューションをビルドするとエラー レポートに従って使用する形状を決定するように要求されたコードを記述します。 |
色をづければフォント形式などの機能は現在の状態を示します。 |
「シェイプおよびコネクタの更新とモデルへの反映」を参照してください。 公開されたプロパティを更新する規則を作成します。 「規則によって変更内容がモデル内に反映される」を参照してください。 リンクの矢印またはフォントなどの外に出ていない機能を更新するにはを使用 OnAssociatedPropertyChanged ()。 |
図形のアイコンに状態を示す名前に変更されます。 |
ユース ケースの詳細] ウィンドウ デコレータのマッピングの表示を設定します。 同じ場所に複数のイメージ デコレータを検索します。 詳細については、「シェイプおよびコネクタの更新とモデルへの反映」を参照してください。 またオーバーライド ImageField.GetDisplayImage()。 「ImageField」の例を参照してください。 |
すべての図形の背景イメージを設定します。 |
固定された ImageField を追加するに InitializeInstanceResources () をオーバーライドします。 「図の外観のカスタマイズ」を参照してください。 |
入れ子の深さへの図形 |
再帰的な埋め込むツリーを設定します。 図形の格納に BoundsRules を定義します。 「図の外観のカスタマイズ」を参照してください。 |
要素の境界の固定位置にそれを追加します。 |
define 図の小さいポートによって表される終了要素が埋め込まれています。 ポートを修正するにはBoundsRules を使用します。 回路図のサンプルを参照 Visualization and Modeling SDK してください。 |
テキスト フィールドを他の値から取得した値を表示します。 |
計算したりカスタム ストレージのドメインのプロパティにテキスト デコレータをマップします。 詳細については、「計算プロパティおよびカスタム格納プロパティ」を参照してください。 |
モデル要素または図形間の変更を反映します。 |
「ドメイン固有言語における検証」を参照してください。 |
伝達がストアの外部で Visual Studio の他の拡張機能に変更します。 |
「イベント ハンドラーによって変更内容がモデル外に反映される」を参照してください。 |
[プロパティ] ウィンドウに関連する要素のプロパティが表示されます。 |
プロパティを前方に設定します。 「プロパティ ウィンドウのカスタマイズ」を参照してください。 |
プロパティのカテゴリ |
プロパティ ウィンドウはカテゴリと呼ばれるセクションに分かれています。 ドメインのプロパティの カテゴリ を設定します。 同じカテゴリ名を持つプロパティは同じセクションに表示されます。 顧客間の関係またはロール カテゴリ を設定できます。 |
ドメインのプロパティにコントロールのユーザーのアクセス |
設定します。実行時にドメインのプロパティがプロパティ ウィンドウに表示されないようにするに *** Is Browsable *** が false。 デコレータはショートサーキット メッセージを送信するために対応付けることができます。 *** Is UI Read Only *** はユーザーがドメインのプロパティは変更されません。 ドメインのプロパティにプログラムでアクセスは影響を受けません。 |
DSL モデル エクスプローラーのノードの名前アイコンと表示を変更します。 |
「モデル エクスプローラーのカスタマイズ」を参照してください。 |
のコピー切り取り貼り付け |
DSL エクスプローラーの [ENT1ENT] ノードの ENT0ENT [入力] プロパティの設定します。 |
要素をコピーするたびに参照のリンクとターゲットをコピーします。 たとえば項目にアタッチされたコメント コピー。 |
ソースのロールの ENT0ENT [入力] プロパティの設定します (DSL 定義図のドメイン リレーションシップの 1 辺で行によって表される)。 ProcessOnCopy をより複雑な効果を実現するためにオーバーライドするコードを記述します。 「コピー動作のカスタマイズ」を参照してください。 |
要素を削除する場合削除または関連要素を再リンクしてください。 |
顧客ロール間の関係 *** Propagates Delete *** の値を設定します。 より複雑な効果についてはShouldVisitRelationship をオーバーライドします MyDslDeleteClosure の ShouldVisitRolePlayer のメソッドはDomainModel.cs で定義されているクラス。 「削除動作のカスタマイズ」を参照してください。 |
コピーおよびドラッグ アンド ドロップの図形のレイアウトと外観を維持します。 |
コピー ElementGroupPrototype にシェイプとコネクタを追加します。 オーバーライドする最も簡単な方法は ElementOperations.CreateElementGroupPrototype()。 「コピー動作のカスタマイズ」を参照してください。 |
現在のカーソル位置など選択した場所の図形を貼り付けます。 |
ElementOperations.Merge(). 場所の特定のバージョンを使用する ClipboardCommandSet.ProcessOnCopy() オーバーライドは コピー動作のカスタマイズ が表示されます。 |
貼り付けの追加のリンクを作成します。 |
オーバーライド ClipboardCommandSet.ProcessOnPasteCommand () |
この図ユースまたは他の UML 図と Windows の要素からのドラッグ アンド ドロップを有効にします。 |
「方法: ドラッグ アンド ドロップ ハンドラーを追加する」を参照してください。 |
親にドラッグすると子の図形にポートなどドラッグされる図形またはツールを使用します。 |
親への接続オブジェクトを転送するターゲット オブジェクト クラスの要素のマージのディレクティブを定義します。 「要素作成処理および要素移動処理のカスタマイズ」を参照してください。 |
図形を許可するか図形にドラッグすると[ツール] リンクを追加または作成されたオブジェクトにします。 たとえばコメントがリンク アイテムにドロップようにします。 |
ターゲット ドメイン クラスの要素のマージのディレクティブを定義し生成するリンクを定義します。 複雑な場合カスタム コードを追加できます。 「要素作成処理および要素移動処理のカスタマイズ」を参照してください。 |
1 個のツールを使用して要素のグループを作成します。 たとえば固定セットのポートを持つコンポーネントです。 |
ToolboxHelper.cs のツールボックスの初期化メソッドをオーバーライドします。 要素および関係の (EGP) リンクを含む要素のグループのプロトタイプを作成します。 「ツールおよびツールボックスのカスタマイズ」を参照してください。 EGP をインスタンス化するときにプリンシパルが含まれEGP の図形を移植する場合またはポート シェイプを配置するに BoundsRules を定義します。 「BoundsRules によってシェイプの位置とサイズが制限される」を参照してください。 |
リレーションシップの種類を複数インスタンスを作成するために1 種類の接続のツールを使用します。 |
ツールに (LCD) よって起動されるビルダーへの接続の接続のディレクティブを追加します。 たとえば2 個の要素の型の関係の種類を決定します。 これを要素の状態に応じてら決してもカスタム コードを追加できます。 「ツールおよびツールボックスのカスタマイズ」を参照してください。 |
粘着可能性のあるツール (ユーザーは多くのシェイプまたはコネクタを続けて作成するためのツールをダブル クリックできます。 |
DSL のエクスプローラーでEditor のノードを選択します。 [プロパティ] ウィンドウで*** Uses Sticky Toolbox Items *** を設定します。 |
メニュー コマンドを定義します。 |
「方法: ドメイン固有言語における標準のメニュー コマンドを修正する」を参照してください。 |
モデルの検証規則を抑制します。 |
「ドメイン固有言語における検証」を参照してください。 |
DSL のコードは構成ファイルまたはドキュメントを生成します。 |
|
モデルがファイルにどのように格納される方法をカスタマイズします。 |
「ファイル格納処理および XML シリアル化処理のカスタマイズ」を参照してください。 |
データベースまたは他のメディアにモデルを保存します。 |
オーバーライド YourLanguageDocData 「ファイル格納処理および XML シリアル化処理のカスタマイズ」を参照してください。 |
1 アプリケーションの一部として機能するように複数のユースを統合します。 |
「Visual Studio Modelbus によるモデルの統合」を参照してください。 |
DSL が第三者によって伸ばされるようにする拡張子を制御します。 |
|
参照
概念
Modeling SDK for Visual Studio - ドメイン固有言語