カスタム Functoid (BizTalk Server サンプル)
カスタム Functoid サンプルは、BizTalk マッパー用のカスタム Functoid を記述する方法を示します。 Functoid は Visual Studio ツールボックスに追加できます。 Functoid は、BizTalk マッパーにフォーカスがある場合にツールボックスに表示されます。
カスタム Functoid が認識されるには、BizTalk マッパー アセンブリ内に存在する必要があります。 カスタム Functoid は、C# や Visual Basic などの .NET 準拠の任意の言語で記述できます。
また、カスタム Functoid は クラスから Microsoft.BizTalk.BaseFunctoids
派生する必要があり、一部のメソッドをオーバーライドすることによって実装を提供する必要があります。 (クラスはBaseFunctoid
、BizTalk Serverに含まれる Microsoft.BizTalk.BaseFunctoids.dll アセンブリで定義されます)。
このサンプルの処理
Custom Functoid サンプルでは、いくつかの Functoid が実装されています。各 Functoid は クラスから BaseFunctoid
派生し、いくつかのメソッドをオーバーライドします。
カスタム Functoid を実装する場合、そのインライン コードを公開できます。 インライン コードは、Functoid の計算を実行します。 プロジェクトのビルド時に、BizTalk マッパー コンパイラは Functoid からインライン コードを抽出し、コンパイル済みの XSLT に埋め込みます。
カスタム Functoid がインライン コードを公開しない場合、カスタム Functoid を格納するアセンブリを呼び出す XSLT が BizTalk マッパーによって生成されます。 この場合、カスタム Functoid アセンブリは、XSLT エンジンで検出できるようにグローバル アセンブリ キャッシュ (GAC) で使用可能である必要があります。 また、カスタム Functoid の GUID 属性が一意であることも必要です。 BizTalk マッパーは GUID を使用して、読み込むアセンブリを識別します。
重要
カスタム Functoid サンプル コードを再利用して独自の Functoid を実装する場合は、GUID 属性を一意のものに変更する必要があります。
このサンプルの場所
<Samples Path>\XmlTools\CustomFunctoid
次の表は、このサンプルのファイルとその目的を示しています。
ファイル | 説明 |
---|---|
AssemblyInfo.cs | アセンブリ情報 C# ソース コード。 |
CBuildArray.bmp | ツールボックス ビットマップ。 |
CConcat.bmp | ツールボックス ビットマップ。 |
CExtractArray.bmp | ツールボックス ビットマップ。 |
Cleanup.bat | アセンブリの展開を解除し、アセンブリをグローバル アセンブリ キャッシュ (GAC) から削除して、CustomFunctoid.dll を削除するために使用されます。 |
CLongestString.bmp | ツールボックス ビットマップ。 |
CMultiply.bmp | ツールボックス ビットマップ。 |
CustomFunctoid.cs | カスタム Functoid C# ソース コード。 |
CustomFunctoid.csproj | カスタム Functoid C# プロジェクト。 |
CustomFunctoid.sln | カスタム Functoid ソリューション。 |
CustomFunctoidResources.resx | カスタム Functoid リソース。 |
Setup.bat | サンプルのビルド、展開、および起動を行うために使用します。 |
このサンプルのビルドと初期化
次の手順に従って、カスタム Functoid サンプルをビルドおよび初期化します。
このサンプルを作成および初期化するには
コマンド ウィンドウで、ディレクトリ (cd) を次のフォルダーに変更します。
<サンプル パス>\XmlTools\CustomFunctoid
ファイル Setup.bat を実行すると、次のアクションが実行されます。
サンプル プロジェクトをビルドします。
生成されたアセンブリを Developer Tools\Mapper Extensions ディレクトリにコピーします。
生成されたアセンブリを GAC に追加します。
Note
このサンプルを実行する前に、ビルド処理および初期化処理でエラーが報告されていないことを確認してください。
このサンプルの実行
次の手順に従って、カスタム Functoid サンプルを実行します。
このサンプルを実行するには
Visual Studio BizTalk プロジェクトで、[ ツール ] メニューをクリックし、[ ツールボックス項目の選択] を選択します。
[ ツールボックス項目の選択 ] ダイアログ ボックスで、[ BizTalk マッパー Functoids ] タブを選択します。
[ リセット] をクリックし、[OK] をクリック します。
Note
カスタム Functoid でインライン コードが公開されない場合は、アセンブリが GAC で使用可能になっているかどうかを確認してください。
[ ファイル ] メニューの [ 終了 ] を選択して Visual Studio を閉じます。
Visual Studio コマンド プロンプトを起動します。
コマンド プロンプトで、「 devenv /setup」と入力します。
Microsoft Visual Studio を起動します。
カスタム Functoid (Custom concatenate Functoid、Longest String、Build array Functoid、Extract array Functoid) はツールボックスの [ String Functoids ] タブに表示され、[累積乗算] Functoid は [ 累積 Functoids ] タブに表示されます。
このサンプルの削除
次の手順に従って、カスタム Functoid サンプルを削除します。
このサンプルを削除するには
Visual Studio ツールボックスから Functoid を削除します。
警告
Cleanup.bat の実行後に、ツールボックスにまだ古いカスタム Functoid がある場合 (通常は Visual Studio の内部キャッシュのため)、下記の手順に従ってください。
Visual Studio BizTalk プロジェクトで、[ ツール ] メニューをクリックし、[ ツールボックス項目の選択] を選択します。
[ ツールボックス項目の選択 ] ダイアログ ボックスで、[ BizTalk マッパー Functoids ] タブを選択します。
一覧からカスタム Functoid (カスタム累積連結 Functoid、最長文字列、配列作成 Functoid、配列抽出 Functoid、累積乗算) を探します。 それぞれのチェック ボックスをクリックして Functoid を削除し、[OK] をクリックします。
上記の手順でも問題が解決されない場合は、下記の手順に従ってください。
Visual Studio BizTalk プロジェクトで、マップの編集中に [ ツールボックス ] タブをクリックしてツールボックス パレットを表示します。
ツール ボックスを右クリックし、[項目の選択] を 選択します。
[アイテムの選択] ダイアログ ボックスで、[ リセット] をクリックし、[OK] をクリック します。
Visual Studio のすべてのインスタンスを閉じます。
上記の手順でも問題が解決されない場合は、下記の手順に従ってください。
管理者として Visual Studio コマンド プロンプトを起動します。
実行中の Visual Studio のインスタンスをすべて閉じます。
次のコマンドを指定します。
devenv /resetsettings
devenv /setup
ツールボックスから不要な Functoid を手動で選択できます。 次に、Functoid を右クリックし、[ 削除] をクリックします。
上記の手順でも問題が解決されない場合は、下記の手順に従ってください。
Visual Studio の BizTalk プロジェクトで、マップを編集しているときに [ツールボックス] タブをクリックして、ツールボックス パレットを開きます。
[ 累積 Functoids ] グループをクリックします。
削除する Functoid を右クリックし、[ 削除 ] を選択するか、削除キーを押します。
[ 文字列 Functoids ] グループをクリックします。
削除する Functoid を右クリックし、[ 削除 ] を選択するか、削除キーを押します。
コマンド ウィンドウで、ディレクトリ (cd) を次のフォルダーに変更します。
<サンプル パス>\XmlTools\CustomFunctoid
Cleanup.bat ファイルを実行します。処理内容は次のとおりです。
アセンブリが Developer Tools\Mapper Extensions ディレクトリから削除されます。
アセンブリが GAC から削除されます。
このサンプルで使用されるクラスまたはメソッド
Microsoft.BizTalk.BaseFunctoids.BaseFunctoid