次の方法で共有


BaseFunctoid の使用

すべてのカスタム Functoid は、 BaseFunctoid クラスから派生する必要があります。 最初にコンストラクターをオーバーライドし、カスタム Functoid について BizTalk マッパーに通知する一連の呼び出しを行う必要があります。 次に、Functoid ロジックを記述する必要があります。

コンストラクターのオーバーロード

Functoid を特徴付けるためには、クラス コンストラクターオーバーライド メソッドで多数のタスクを実行する必要があります。 これらのタスクは、ソリューションに必要な Functoid 固有のコードに加えて行われます。 次の表では、主なタスクについて説明します。

課題 これらのメソッドまたはプロパティを使用する コメント
Functoid に一意の ID を割り当てる 身分証明書 使用されていない 6000 を超える値を使用します。 6000 未満の値は、内部のファンクトイドによって使用されるために予約されています。
Functoid に副作用があるかどうかを示す 副作用がある マッパーによって、生成される XSLT コードを最適化するために使用されます。 このプロパティは既定で true です。
リソース アセンブリをポイントする SetupResourceAssembly プロジェクトにリソース ファイルを含めます。 Visual Studio を使用してビルドする場合、リソース アセンブリは ProjectName.ResourceName である必要があります。
カスタム Functoid を BizTalk マッパー パレットに表示できるようにする SetName

SetTooltip

SetDescription

SetBitmap
名前、ヒント、説明の文字列を指すリソース ID を使用します。16 x 16 ピクセルのビットマップを使用します。
「ファンクトイド」を1つ以上のカテゴリに割り当てる カテゴリ 1 つ以上の Microsoft.BizTalk.BaseFunctoids.FunctoidCategory 値を使用して Functoid を 分類します。
受け入れるパラメーターの数を指定する SetMinParams

SetMaxParams

HasVariableInputs
SetMinParams メソッドを使用して必要なパラメーターの数を設定し、SetMaxParams メソッドを使用して省略可能なパラメーターの数を設定します。 これらの値を設定するには、次のガイドラインを使用します。

- 省略可能なパラメーターがない場合は、min = max を設定します。
- 省略可能なパラメーターがある場合は、max = (省略可能なパラメーターの数 - パラメーターの最小数) を設定します。
- 無制限の省略可能なパラメーターを許可する場合は、max を設定しないでください。
- 可変数の入力がある場合は、min または max を設定せず、 HasVariableInputs = true を設定します。
Functoid に接続できる内容を宣言する AddInputConnectionType Functoid がサポートする Microsoft.BizTalk.BaseFunctoids.ConnectionType ごとに AddInputConnectionType を 1 回呼び出します。
Functoid が接続できる内容を宣言する 出力接続タイプ Microsoft.BizTalk.BaseFunctoids.ConnectionType の値を使用して、Functoid から出力を受信できるオブジェクトの種類を BizTalk マッパーに伝えます。 複数の接続の種類を指定するには、 OR を使用します。
BizTalk Server に、ファンクトイドのメソッドをどのように呼び出すか伝える SetExternalFunctionName

SetExternalFunctionName2

SetExternalFunctionName3
累積 Functoid の場合は、 SetExternalFunctionName を 使用して初期化関数を設定し、 SetExternalFunctionName2 を使用して累積関数を設定し、 SetExternalFunctionName3 を使用して累積値を返す関数を指定します。 非累積的 Functoid の場合は、SetExternalFunctionName を使用して Functoid メソッドを設定します。
BizTalk Server でインライン コードを使用して Functoid を呼び出すようにする AddScriptTypeSupport SetScriptBuffer Microsoft.BizTalk.BaseFunctoids.ScriptType を使用して AddScriptTypeSupport を呼び出して、インライン コードを有効にします。 SetScriptBuffer を呼び出して Functoid のコードを渡します。 このコードはマップにコピーされます。
インラインファンクトイドのグローバル変数を宣言する SetScriptGlobalBuffer 作成されたすべての宣言は、マップに含まれる他のインライン スクリプトに表示されます。
インライン ファンクトイドに必要なヘルパー関数を指定してください 必須のグローバルヘルパー関数 InlineGlobalHelperFunction 列挙の値を使用して、必要なヘルパー関数を指定します。 複数のヘルパー関数を指定するには 、OR を使用します。
Functoid に渡されたパラメーターを検証する IsDate

IsNumeric
これらの関数は、例外をスローせずに true/false の回答を提供します。

Functoid ロジックの実装

Functoid を便利にするには、Functoid カテゴリに応じて 1 つ以上のメソッドを実装する必要があります。 Functoid が累積される場合は、初期化用に 1 つ、累積を実行するメソッド、累積値を返すメソッドの 3 つのメソッドを指定する必要があります。 Functoid が累積されていない場合は、値を返すメソッドを 1 つ指定する必要があります。

また、Functoid 実装コードをマップにインラインでコピーするか、コンパイル済みの .NET アセンブリ内に保持し、参照を通じて使用するかを決定する必要があります。

次の場合は、インラインのファンクトイドの使用を検討してください。

  • 他のユーザーがビジネス ロジックを読んで変更しても問題ありません。

  • Functoid は、マップがサポートする .NET Framework 名前空間にのみ依存します。 使用可能な名前空間については、「 インライン C#、JScript .NET、および Visual Basic .NET を使用したスクリプト作成」を参照してください。

  • BizTalk ソリューションを使用して別のアセンブリを展開および保守する必要はありません。

  • 変数を共有する一連の Functoid を作成しています。

    次の場合は、参照先 Functoid の使用を検討してください。

  • ビジネス ロジックが他のユーザーによって表示または変更される可能性があるマップにコピーされないようにします。

  • Functoid は、マップでサポートされていない .NET Framework クラスに依存します。

  • .NET Framework によって提供される追加機能は、BizTalk ソリューションを使用して別のアセンブリを展開および保守することを正当化します。

こちらもご覧ください

カスタムリファレンス Functoid の開発
カスタムインライン関数体の開発
カスタム累積ファンクトイドの開発
Microsoft.BizTalk.BaseFunctoids.BaseFunctoid