Windows ブローカーで .NETCompute ノードを使用することにより、出力メッセージを構成して Microsoft .NET Framework (.NET) またはコンポーネント・オブジェクト・モデル (COM) のアプリケーションと対話します。
このトピックには、以下のセクションが含まれています。
.NETCompute ノードでは、入力メッセージで提供された情報を変更することにより、または他のソース (例えば .NET または COM のアプリケーション) から得られる情報を使用することにより、出力メッセージを作成できます。 入力メッセージの要素 (例えばヘッダー、ヘッダー・フィールド、本体データ)、それに関連付けられている環境、LocalEnvironment、および ExceptionList を使用すると、出力メッセージを作成できます。
.NETCompute ノードは、C#、Visual Basic (VB)、F#、C++/CLI (Common Language Infrastructure) など、共通言語ランタイム (CLR) に準拠する任意の言語を使ってメッセージを作成または変更します。
.NETCompute ノードを使用して以下のタスクを完了します。
.NETCompute ノードはパレットの「.NET」ドロワーに入っていて、WebSphere® Message Broker Toolkit 内では次のアイコンによって表されます。
.NETCompute ノードは Windows ブローカー上でのみ稼働します。 .NETCompute ノードを含むメッセージ・フローを、Windows 以外のシステムで稼働するブローカーにデプロイしようとすると、エラーが発生します。メッセージ・フローをデプロイする前に、Windows でブローカーが稼働していることを確認してください。
.NETCompute ノードで使用できる .NET 構成ファイルが、WebSphere Message Broker Toolkit でサポートされています。
Windows で稼働するブローカーにデプロイされた任意のメッセージ・フローで、.NETCompute ノードを使用できます。 .NETCompute ノードを使用する一般的なシナリオとしては、構築されるメッセージが、(メッセージのデータを保管したり、メッセージ拡充のためにデータを取得したりする目的で) 他の .NET アプリケーションと対話する必要がある場合です。
メッセージ・フローに対して実行されるスレッドの数とは無関係に、特定の .NETCompute ノードのインスタンスが 1 つだけ作成されます。追加のインスタンスによる場合も、複数の入力ノードの場合も同じです。 このため、ユーザー .NET コードはすべてスレッド・セーフかつ再入可能でなければなりません。 ノードをスレッド・セーフにする方法と、ユーザー定義拡張機能によって実装および開始される機能を再入可能にする方法について、詳しくはユーザー定義拡張機能の実行モデルおよびユーザー定義拡張機能のスレッド化に関する考慮事項を参照してください。
.NET 言語による更新は、WebSphere Message Broker トランザクションに関連しません。
ノードのコードを含む .NET アセンブリーを使って .NETCompute ノードを構成する必要があります。 このコードは、IBM.Broker.Plugin.dll アセンブリーにある抽象 NBComputeNode クラスから派生するクラスから成ります。
既存の .NET アセンブリーの使用
ベンダーまたはその他のサード・パーティーからコンパイル済み .dll ファイルとしてアセンブリーが提供される場合は、.NETCompute ノード・プロパティー「アセンブリー名」にある「参照」オプションを使用してアセンブリーを選択する必要があります。 あるいは、アセンブリーをノードまで直接ドラッグすることもできます。アセンブリーが提供されない場合は、ノード・アセンブリーを作成する必要があります。
.NET アセンブリーの作成
ノードを表す .NET アセンブリーを作成するために、ブローカーは Microsoft Visual Studio 2010 または 2012 と統合できます。ノードから Microsoft Visual Studio を直接起動するには、Microsoft Visual Studio 2010 または 2012 がインストール済みであることを確認し、.NETCompute ノードをダブルクリックします。あるいは、ノードを右クリックして「Microsoft Visual Studio を開く」を選択します。 Visual Studio パネルに Microsoft Visual Studio プロジェクトまたはソリューションの名前が示される場合、Microsoft Visual Studio を開いたときにプロジェクトまたはソリューションが自動的にロードされます。
Microsoft Visual Studio 内から「新規プロジェクト」を選択します。選択した言語 (Visual Basic など) の下にある「メッセージ・ブローカー」からプロジェクトを選択できます。
プロジェクトによって、選択したタイプに一致したスケルトン・コードが生成されます。このスケルトン・コードが、該当する .NET 言語エディター (例えば Visual Basic) で表示されます。
NBComputeNode クラスには、オーバーライドされる必要のある 1 つのメソッドに加えて、必要に応じてオーバーライドできるオプションのメソッドが 2 つ含まれています。 Evaluate() メソッドは必ずオーバーライドされる必要があり、「メッセージ・ブローカー・プロジェクト」テンプレートを使ってスケルトン・コードが生成される場合はこのテンプレートによって自動的に実装されます。 オプションのメソッドは OnInitialize() および OnDelete() です。 何らかの初期化またはクリーンアップ操作をノードで実行するためには、このいずれか (または両方) のメソッドの実装を提供してください。
OnDelete() メソッドは、メソッドがノードを削除する直前にブローカーによって呼び出されます。 OnInitialize() メソッドは、ノード属性が設定された後にノードが構成される際に、ブローカーに呼び出されます。OnInitialize() メソッドは、デプロイメント中に (ただし、デプロイメントがコミットされる前に) 呼び出されます。 下流のノードは、初期化中、引き続き例外をスローすることができるため、デプロイメントは失敗します。 このため、メッセージ・フローのデプロイ状態に依存するすべてのユーザー・アプリケーション・コードは、Evaluate() メソッド内に配置される必要があります。
.NETCompute ノードのインスタンスをメッセージ・フローに入れると、それを構成することができます。メッセージ・フロー・ノードの構成を参照してください。ノードを構成するには、ファイル・エクスプローラーでアセンブリー・ファイルをノードにドラッグします。 ノードのプロパティーが、「プロパティー」ビューに表示されます。
値を入力する必要のある (デフォルト値が定義されていない) すべての必須プロパティーには、アスタリスクが表示されます。
Microsoft Visual Studio の「メッセージ・ブローカー計算ノード」プロジェクト・コード・スケルトンをテンプレートとして使用することにより、.NETCompute ノードの動作をカスタマイズするステートメントのコードを作成できます。 例えば、入力メッセージまたは外部ソースのデータを使用して、1 つの出力メッセージまたは多数のメッセージを作成するようノードをカスタマイズすることができます。 具体的には、外部アプリケーションの .NET インターフェースから得られる 1 つ以上の値を追加して、その結果を出力メッセージに格納することにより、入力メッセージからの値を変更するというシナリオが考えられます。
実行グループの内部で稼働する .NETCompute ノードをデバッグするには、ノードを実装するアセンブリーの .pdb ファイルをノードのアセンブリーと同じディレクトリーに配置し、Microsoft Visual Studio を DataFlowEngine.exe プロセスに接続します。その後、コードにブレークポイントを配置して、(例えばブレークポイントにヒットした時点で) 変数を検査することができます。
.NETCompute ノードの .NET コードの作成について詳しくは、Windows の「スタート」メニューから、WebSphere Message Broker のインストールに含まれている .NET API 文書にアクセスできます。
妥当性検査プロパティーを設定して、.NETCompute ノードによって生成されたメッセージの妥当性検査を行う方法を定義します。 これらのプロパティーによって、入力メッセージの妥当性検査は行われません。 そのような妥当性検査が必要な場合は、入力ノードまたは先行する validation ノードによって妥当性検査が既に行われていることが期待されます。
詳しくは、メッセージの妥当性検査および妥当性検査プロパティーを参照してください。
.NETCompute ノードのターミナルについては、次の表に説明されています。
ターミナル | タイプ | 説明 |
---|---|---|
In | 入力データ | リモート・ソースからデータを取得する入力ターミナル。 |
Out | 出力データ | 下流のノードにデータを送る出力ターミナル。 |
Failure | 出力データ | 処理されない例外が計算時に発生した場合、入力メッセージがルーティングされる出力ターミナル。 |
* (動的) | 出力データ | ゼロ以上の動的出力ターミナルを作成して、メッセージ・ルーティングをサポートできます。 |
追加の動的出力ターミナルを .NETCompute ノード上で定義できます。
以下の表は、ノード・プロパティーについて説明しています。 M の見出しの列は、プロパティーが必須 かどうかを示します (デフォルトが定義されていない場合に値を入力する必要がある場合、アスタリスクのマークが付きます)。C の見出しの列は、プロパティーが構成可能 (メッセージ・フローを BAR ファイルに追加してデプロイするとき、値を変更できる) かどうかを示します。
.NETCompute ノードの「説明」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
ノード名 | いいえ | いいえ | ノード・タイプ | ノードの名前。 |
簡略説明 | いいえ | いいえ | ノードの簡単な説明 | |
詳細説明 | いいえ | いいえ | メッセージ・フロー内のノードの目的を説明するテキスト |
.NETCompute ノードの「基本」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 | mqsiapplybaroverride コマンド・プロパティー |
---|---|---|---|---|---|
アセンブリー名 | はい | はい | ノードを実装するアセンブリー。 アセンブリーを選択するには「参照」オプションを使用します。 または、アセンブリーの .dll ファイルをノードまでドロップすると、このプロパティーの指定が自動的に完了します。 | AssemblyName | |
クラス名 | いいえ | はい | ノードを実装するクラスの名前。 このプロパティーの値が必要とされるのは、同じアセンブリーから複数のノードが公開される場合、または実装ノードとしてサブクラスを明示的に指定する場合だけです。 | AssemblyNodeClassName |
以下の表では、.NETCompute ノード用の Microsoft Visual Studio プロパティーについて説明します。
プロパティー | M | C | デフォルト | 説明 | mqsiapplybaroverride コマンド・プロパティー |
---|---|---|---|---|---|
Visual Studio プロジェクト名 | いいえ | いいえ | ノードのコードが入っている Microsoft Visual Studio プロジェクトまたはソリューション。 |
.NETCompute ノードの「拡張」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 | mqsiapplybaroverride コマンド・プロパティー |
---|---|---|---|---|---|
AppDomain 名 | いいえ | はい | ノードのホストである .NET AppDomain。 | AppDomain | |
バージョン | いいえ | はい | アセンブリーのバージョン。 | AssemblyVersion | |
国/地域別環境 | いいえ | はい | アセンブリーの国/地域別情報。 | AssemblyCulture | |
公開鍵トークン | いいえ | はい | アセンブリーの公開鍵トークン。 | AssemblyPublicKeyToken |
.NETCompute ノードの「妥当性検査」プロパティーについては、次の表に説明されています。
これらのプロパティーの詳細については、妥当性検査プロパティーを参照してください。プロパティー | M | C | デフォルト | 説明 | mqsiapplybaroverride コマンド・プロパティー |
---|---|---|---|---|---|
妥当性検査 | いいえ | はい | なし | このプロパティーは、妥当性検査を行うかどうかを制御します。 有効な値は、「なし」、「内容と値」、「内容」、および「継承」です。 | validateMaster |
失敗時の処置 | いいえ | いいえ | 例外 | このプロパティーは、妥当性検査で障害が発生した場合の動作を制御します。 「妥当性検査」が「内容」または「内容と値」に設定されている場合にのみ、このプロパティーを設定できます。 有効な値は、「ユーザー・トレース」、「ローカル・エラー・ログ」、「例外」、および「例外リスト」です。 |
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
イベント | いいえ | いいえ | なし | ノードに対して定義したイベントが、このタブに表示されます。 デフォルトでは、メッセージ・フローのどのノードに対してもモニター・イベントは定義されません。 ノードのモニター・イベントを作成、変更、または削除するには、「追加」、「編集」、および「削除」を使用します。詳しくは、モニター・プロパティーを使用したモニター・イベント・ソースの構成を参照してください。 「使用可能」チェック・ボックスを選択またはクリアすることによって、ここに表示されているイベントを使用可能および使用不可に設定できます。 |
プロパティー | M | C | デフォルト | 説明 | mqsiapplybaroverride コマンド・プロパティー |
---|---|---|---|---|---|
<ユーザー指定の名前> | いいえ | いいえ | ノードは、それぞれに名前と値のペアが含まれた行をユーザーが追加、編集、または削除できる表を提供します。 |