Itinerary Designer を拡張する
Itinerary Designerは、Microsoft Visual Studio 用のビジュアル ドメイン固有言語 (DSL) です。これにより、Microsoft BizTalk ESB Toolkit で使用するスケジュールのグラフィカル モデリングが可能になります。 デザイナーは、開発者が新しい機能や新しい構成オプションを有効にするためにカスタム拡張機能を記述できるさまざまな拡張ポイントを公開します。
カスタム スケジュール エクスポーターの作成
Itinerary Designerのアーキテクチャでは、データをシリアル化して保持するカスタム モデル エクスポーターを作成できます。
メッセージング サービス用のカスタム エクステンダーの作成
Itinerary Designerのアーキテクチャでは、Messaging Services で使用するプロパティ バッグにプロパティを追加するために使用できる、Itinerary Service モデル要素のカスタム エクステンダーを作成できます。
このようなエクステンダーを作成する方法のサンプルについては、「Designer機能拡張サンプルのインストールと実行」を参照してください。
Orchestration-Based スケジュール サービスのカスタム エクステンダーの作成
Itinerary Designerのアーキテクチャでは、オーケストレーション ベースの旅程サービスで使用するためにプロパティをプロパティ バッグに追加するために使用できる、Itinerary Service モデル要素のカスタム エクステンダーを作成できます。
このようなエクステンダーを作成する方法のサンプルについては、「Designer機能拡張サンプルのインストールと実行」を参照してください。
カスタム リゾルバー エクステンダーの作成
Itinerary Designerのアーキテクチャでは、カスタム リゾルバーの構成用のカスタム エクステンダーを作成できます。 これらのエクステンダーは、リゾルバー 接続文字列で名前と値のペアを構成するためのグラフィカル インターフェイスを提供します。このインターフェイスは、特定のリゾルバー エクステンダー クラスのプロパティにマップされます。
このようなエクステンダーを作成する方法のサンプルについては、「Designer機能拡張サンプルのインストールと実行」を参照してください。
カスタム アダプター プロパティ用のマニフェスト ファイルの作成
カスタム アダプター プロバイダーを作成する場合は、エンドポイント構成プロパティを表示するリゾルバー エクステンダーに対して、アダプター プロバイダーのデザイナー サポートも提供する必要があります。 デザイナーのサポートを有効にするには、アダプター プロバイダー マニフェスト ファイルを作成する必要があります。
アダプター プロバイダー マニフェスト ファイルは、特定のアダプター プロバイダーに関連付けられているプロパティ、その型、説明、およびそれらが見つかるアセンブリを定義します。 これらのマニフェスト ファイルは、一意の名前 (FTPPropertyManifest.xml など) を持つ Itinerary Designer バイナリ (Microsoft.Practices.Itineary.DslPackage.dll など) と同じフォルダーに配置する必要があります。
アダプター プロバイダー マニフェスト ファイルの参照インスタンスを次に示します。カスタム マニフェスト ファイルも同様に構造化する必要があります。
<?xml version="1.0" encoding="utf-8" ?>
<adapterPropertyManifest adapterName="FTP">
<aliases>
<alias name="globalPropertySchemas" value="Microsoft.BizTalk.GlobalPropertySchemas, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</aliases>
<properties>
<property name="UserName" type="FTP.UserName" description="The user name for the connection." encrypted="true" assembly="globalPropertySchemas" />
<property name="Password" type="FTP.Password" description="The password for the conection." encrypted="true" assembly="globalPropertySchemas" />
<property name="MaxConnections" type="FTP.MaxConnections" description="The maximun number of connections." assembly="globalPropertySchemas" />
<property name="EventArgs" type="System.EventArgs" assembly="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</properties>
</adapterPropertyManifest>
カスタム フィルター エクステンダーの作成
Itinerary Designerのアーキテクチャでは、カスタム フィルターの構成用のカスタム エクステンダーを作成できます。 これらのエクステンダーは、フィルター 接続文字列で名前と値のペアを構成するためのグラフィカル インターフェイスを提供します。このインターフェイスは、特定のフィルター エクステンダー クラスのプロパティにマップされます。
/Samples/Designer 機能拡張サンプル/エクステンダー.Itinerary.OrchestrationSample/Extenders.Itinerary.OrchestrationSample/Extenders.Itinerary.OrchestrationSample
/Samples/Designer 機能拡張サンプル/エクステンダー.Resolvers.ResolverSample/Extenders.Resolvers.ResolverSample
カスタム検証規則の作成
Itinerary Designerによって導入された最後の重要な拡張機能は、ドメイン固有言語 (DSL) に関して、モデル検証規則を指定して実装できる検証メカニズムです。 メカニズムは DSL 検証フレームワークに "フック" し、ユーザーがモデルのショートカット メニューで [検証 ] または [ すべて検証 ] をクリックするとアクティブになります。 これにより、DSL フレームワークの DslCommandSet オブジェクトが呼び出され、次に、Itinerary Designerで検証エンジンが呼び出されます。
ValidationEngine クラスは、エンタープライズ ライブラリ検証アプリケーション ブロックを使用してモデル要素の検証を実行し、検証エラーを Microsoft Visual Studio IDE の [エラー一覧] ウィンドウに記録します。 モデル内の要素の種類ごとに実行する必要がある検証は、エンタープライズ ライブラリ構成ファイルで定義されます。 ファイルは Ruleset.config という名前で、すべての Itinerary Designer バイナリが配置されているバイナリ フォルダーにあります。 次の例は、構成ファイルのフラグメントであり、 UddiResolver エクステンダーの 2 つの検証規則 (名前付き検証コントロール) が含まれています。1 つは ServerUrl プロパティ用、1 つは ServiceKey プロパティ用です。
<!--
UddiResolver
-->
<type assemblyName="Microsoft.Practices.Services.Extenders.Resolvers.UDDI"
name="Microsoft.Practices.Services.Extenders.Resolvers.UDDI.UddiResolver">
<ruleset name="Menu">
<properties>
<property name="ServerUrl">
<validator type="Microsoft.Practices.Modeling.Validation.NotEmptyStringValidator, Microsoft.Practices.Modeling.Validation"
messageTemplate="The '{1}' property value should not be empty or null."
name="UddiResolver.ServerUrl not null validator"/>
</property>
<property name="ServiceKey">
<validator type="Microsoft.Practices.Modeling.Validation.NotEmptyStringValidator, Microsoft.Practices.Modeling.Validation"
messageTemplate="The '{1}' property value should not be empty or null."
name="UddiResolver.ServiceKey not null validator"/>
</property>
</properties>
</ruleset>
</type>
各ルールは、ルールを実装する検証コントロールを識別します。 Itinerary Designerには、バリデーター クラスの大規模なセットが付属しています。 これらはすべて、Designer バイナリ フォルダーの Microsoft.Practices.Modeling.Validation プロジェクトにあります。
この検証メカニズムを使用した最終的な結果は、Itinerary Designerユーザーは、指定されたルールと検証コントロールを変更するか、独自のルールと検証コントロールを追加することによって、モデルの検証方法を変更できることです。 これは、次の 2 つの手順を実行することで、DSL を開いたり、変更したり、再構築したり、再デプロイしたりすることなく行うことができます。
検証クラスを作成し、 Microsoft.Practices.Modeling.Validation.dll ライブラリがあるバイナリ フォルダー内のライブラリに配置します。
Rules.config ファイルにエントリを追加して、検証コントロールを適用するモデル要素クラスのプロパティを定義します。