次の方法で共有


カスタム 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 サンプルをビルドおよび初期化します。

このサンプルを作成および初期化するには

  1. コマンド ウィンドウで、ディレクトリ (cd) を次のフォルダーに変更します。

    <サンプル パス>\XmlTools\CustomFunctoid

  2. ファイル Setup.bat を実行すると、次のアクションが実行されます。

    • サンプル プロジェクトをビルドします。

    • 生成されたアセンブリを Developer Tools\Mapper Extensions ディレクトリにコピーします。

    • 生成されたアセンブリを GAC に追加します。

      Note

      このサンプルを実行する前に、ビルド処理および初期化処理でエラーが報告されていないことを確認してください。

このサンプルの実行

次の手順に従って、カスタム Functoid サンプルを実行します。

このサンプルを実行するには

  1. Visual Studio BizTalk プロジェクトで、[ ツール ] メニューをクリックし、[ ツールボックス項目の選択] を選択します

  2. [ ツールボックス項目の選択 ] ダイアログ ボックスで、[ BizTalk マッパー Functoids ] タブを選択します。

  3. [ リセット] をクリックし、[OK] をクリック します

    Note

    カスタム Functoid でインライン コードが公開されない場合は、アセンブリが GAC で使用可能になっているかどうかを確認してください。

  4. [ ファイル ] メニューの [ 終了 ] を選択して Visual Studio を閉じます。

  5. Visual Studio コマンド プロンプトを起動します

  6. コマンド プロンプトで、「 devenv /setup」と入力します

  7. Microsoft Visual Studio を起動します

    カスタム Functoid (Custom concatenate Functoid、Longest String、Build array Functoid、Extract array Functoid) はツールボックスの [ String Functoids ] タブに表示され、[累積乗算] Functoid は [ 累積 Functoids ] タブに表示されます。

このサンプルの削除

次の手順に従って、カスタム Functoid サンプルを削除します。

このサンプルを削除するには

  1. Visual Studio ツールボックスから Functoid を削除します。

    警告

    Cleanup.bat の実行後に、ツールボックスにまだ古いカスタム Functoid がある場合 (通常は Visual Studio の内部キャッシュのため)、下記の手順に従ってください。

    1. Visual Studio BizTalk プロジェクトで、[ ツール ] メニューをクリックし、[ ツールボックス項目の選択] を選択します

    2. [ ツールボックス項目の選択 ] ダイアログ ボックスで、[ BizTalk マッパー Functoids ] タブを選択します。

    3. 一覧からカスタム Functoid (カスタム累積連結 Functoid、最長文字列、配列作成 Functoid、配列抽出 Functoid、累積乗算) を探します。 それぞれのチェック ボックスをクリックして Functoid を削除し、[OK] をクリックします

      上記の手順でも問題が解決されない場合は、下記の手順に従ってください。

    4. Visual Studio BizTalk プロジェクトで、マップの編集中に [ ツールボックス ] タブをクリックしてツールボックス パレットを表示します。

    5. ツール ボックスを右クリックし、[項目の選択] を 選択します

    6. [アイテムの選択] ダイアログ ボックスで、[ リセット] をクリックし、[OK] をクリック します

    7. Visual Studio のすべてのインスタンスを閉じます。

      上記の手順でも問題が解決されない場合は、下記の手順に従ってください。

    8. 管理者として Visual Studio コマンド プロンプトを起動します。

    9. 実行中の Visual Studio のインスタンスをすべて閉じます。

    10. 次のコマンドを指定します。

      devenv /resetsettings

      devenv /setup

    11. ツールボックスから不要な Functoid を手動で選択できます。 次に、Functoid を右クリックし、[ 削除] をクリックします。

      上記の手順でも問題が解決されない場合は、下記の手順に従ってください。

    12. Visual Studio の BizTalk プロジェクトで、マップを編集しているときに [ツールボックス] タブをクリックして、ツールボックス パレットを開きます。

    13. [ 累積 Functoids ] グループをクリックします。

    14. 削除する Functoid を右クリックし、[ 削除 ] を選択するか、削除キーを押します。

    15. [ 文字列 Functoids ] グループをクリックします。

    16. 削除する Functoid を右クリックし、[ 削除 ] を選択するか、削除キーを押します。

  2. コマンド ウィンドウで、ディレクトリ (cd) を次のフォルダーに変更します。

    <サンプル パス>\XmlTools\CustomFunctoid

  3. Cleanup.bat ファイルを実行します。処理内容は次のとおりです。

    • アセンブリが Developer Tools\Mapper Extensions ディレクトリから削除されます。

    • アセンブリが GAC から削除されます。

このサンプルで使用されるクラスまたはメソッド

Microsoft.BizTalk.BaseFunctoids.BaseFunctoid

参照

BaseFunctoid の使用
XML ツール (BizTalk Server Samples フォルダー)