Database ノード

指定された ODBC データ・ソース内のデータベースと対話するには、Database ノードを使用します。

このトピックには、以下のセクションが含まれています。

目的

対話の種類は、入力メッセージからデータを指定し、そのデータを何らかの形式に変換して (例えば、計算を実行するなど)、その結果をデータベース表に割り当てるなどの ESQL ステートメントをコーディングすることにより定義します。

プロパティーを設定することにより、データベースに対する更新をすぐにコミットするか、メッセージ・フローが完了するまで更新のコミットを待つか、またはメッセージ・フローの全体的な完了状況に応じてロールバックするかを制御することができます。

このノードの特殊な形式を使って、以下のことができます。
  • データベース表内の値を更新する (DataUpdate ノード)
  • データベース表に行を挿入する (DataInsert ノード)
  • データベース表から行を削除する (DataDelete ノード)
  • ウェアハウスにメッセージまたはメッセージの一部を保管する (Warehouse ノード)

Database ノードは、パレットの 「データベース」ドロワーに含まれていて、ワークベンチ内では次のアイコンによって表されます。

Database ノード・アイコン

メッセージ・フロー内でのこのノードの使用

このノードが使用される方法に関しては、次のサンプルを参照してください。 サンプルは、Message Brokers Toolkit と統合されているインフォメーション・センターを使用する場合にのみ表示できます。

モニター 20 個の注文を受ける状況を考えてみてください。 ウェアハウスに十分な数のモニターがある場合、在庫データベースから在庫レベルを減らしたいと考えます。Database ノードを使ってモニターが十分にあることを確認し、データベース内の数量フィールドの値を減らすことができます。

ターミナルおよびプロパティー

Database ノードのインスタンスをメッセージ・フローに入れると、それを構成することができます。メッセージ・フロー・ノードの構成を参照してください。 ノードのプロパティーが、「プロパティー」ビューに表示されます。ノードのプロパティーを「プロパティー」ダイアログに表示するには、ノードをダブルクリックするか、またはノードを右クリックしてから「プロパティー」をクリックします。 (Database ノードをダブルクリックすると、関連した ESQL ファイルが開くことに注意してください。) 値を入力する必要のある (デフォルト値が定義されていない) すべての必須プロパティーには、アスタリスクが表示されます。

Database ノードのターミナルについては、次の表に説明されています。

ターミナル 説明
In ノードが処理するメッセージを受け入れる入力ターミナル。
Failure 計算時に障害が検出された場合、入力メッセージが伝搬される出力ターミナル。 「警告をエラーとして扱う」を選択した場合、処理が正常に完了してもメッセージはノードからこのターミナルに伝搬されます。
Out ノードでの処理が終了した時に、変換されたメッセージがルーティングされる出力ターミナル。 変換されたメッセージは、PROPAGATE ステートメントによってこのターミナルにルーティングされる場合もあります。
Out1 変換されたメッセージが PROPAGATE ステートメントによってルーティングされる第 1 の代替出力ターミナル。
Out2 変換されたメッセージが PROPAGATE ステートメントによってルーティングされる第 2 の代替出力ターミナル。
Out3 変換されたメッセージが PROPAGATE ステートメントによってルーティングされる第 3 の代替出力ターミナル。
Out4 変換されたメッセージが PROPAGATE ステートメントによってルーティングされる第 4 の代替出力ターミナル。
注: PROPAGATE ステートメントの構文については、PROPAGATE ステートメントを参照してください。

以下の表は、ノード・プロパティーについて説明しています。 M の見出しの列は、プロパティーが必須 かどうかを示します (デフォルトが定義されていない場合に値を入力することが必要なら、アスタリスクのマークが付きます)。 C の見出しの列は、プロパティーが構成可能 かどうかを示します (メッセージ・フローを BAR ファイルに追加してデプロイするとき、値を変更できます)。

Database ノードの「説明」プロパティーについては、次の表に説明されています。

プロパティー M C デフォルト 説明
ノード名 いいえ いいえ ノード・タイプ、Database ノードの名前。
簡略説明 いいえ いいえ   ノードの簡単な説明
詳細説明 いいえ いいえ   メッセージ・フロー内のノードの目的を説明するテキスト

Database ノードの「基本」プロパティーについては、次の表に説明されています。

プロパティー M C デフォルト 説明
データ・ソース いいえ はい   このノードに関連付けられた ESQL (「ステートメント」プロパティーで識別される) で参照する表が含まれるデータベースの ODBC データ・ソース名。

この名前は、このメッセージ・フローが実行されるシステム上で認識されるとおりに、該当するデータベースを識別します。ブローカーは、mqsicreatebrokermqsichangebroker、または mqsisetdbparms コマンドを使用してセットアップしたユーザー ID およびパスワード情報を使用して、このデータベースに接続します。

z/OS platform z/OS® システムの場合、ブローカーは、ブローカーが開始するタスクの ID を使用するか、または mqsisetdbparms コマンド JCL の、カスタマイズ・データ・セット <hlq>.SBIPPROC の BIPSDBP で指定されたユーザー ID とパスワードを使用します。

ステートメント はい いいえ Database データベースに対して使用されるステートメントを含む、ESQL ファイル内のモジュールの名前。モジュール名に 1 つ以上のスペースを含めるには、名前を二重引用符で囲みます。

デフォルトで <message_flow_name>.esql という名前を持つこの ESQL ファイルには、ESQL を必要とするメッセージ・フロー内のすべてのノード用の ESQL が含まれています。特定のノードに関連したコードの部分はモジュールと呼ばれます。表と対話する ESQL ステートメントをコーディングする場合は、それらの表がこのデータベース内に存在することが前提とされます。 存在しない場合には、実行時にブローカーによってデータベース・エラーが生成されます。

Database ノードの動作をカスタマイズするための ESQL ステートメントは、この Database ノードのインスタンスが含まれるメッセージ・フローに関連付けられた ESQL ファイル内にコーディングします。このメッセージ・フロー用の ESQL ファイルが存在していない場合、Database ノードをダブルクリックするか、またはこのノードを右クリックして「ESQL のオープン」をクリックすることにより、「ESQL エディター」ビューに新規 ESQL ファイルを作成して開きます。

ESQL ファイルが既に存在する場合、「ステートメント」プロパティーの隣にある「参照」をクリックすると、「モジュール選択」ダイアログ・ボックスが表示され、このメッセージ・フローからアクセスできる ESQL ファイルで定義されている選択可能な Database ノード・モジュールがリストされます (ESQL ファイルは従属する他のプロジェクトで定義することができます)。 適切なモジュールを選択して、「OK」をクリックします。使用できる適切なモジュールがない場合は、リストは空になります。

指定されたモジュールが存在しない場合は作成され、エディターはそれを表示します。 ファイルとモジュールが既に存在する場合、エディターは正しいモジュールを強調表示します。 新規または既存の ESQL ファイル内でこのノード用にモジュール・スケルトンが作成された場合、以下の ESQL が含まれます。この例では、デフォルトのモジュール名が表示されています。

CREATE DATABASE MODULE <flow_name>_Database
       CREATE FUNCTION Main() RETURNS BOOLEAN
       BEGIN
               RETURN TRUE;
       END;
END MODULE;

自分で ESQL モジュールを作成する場合、このスケルトンを正確に作成します。 デフォルトの名前を更新することができますが、指定する名前は、対応するノード・プロパティー「ステートメント」と一致することを確認してください。

このノードをカスタマイズするには、ESQL を、BEGIN ステートメントと RETURN TRUE の間に追加します。 このモジュールでは、SET、WHILE、DECLARE、および IF を含む ESQL ステートメントすべてを 使用できますが、(Compute ノードとは異なり) Database ノードは、入力ターミナルで受信した メッセージを変更せずに出力ターミナルに伝搬します。したがって、Filter ノードと同様に、Database ノードには参照されるメッセージが 1 つしかありません。

トランザクション はい いいえ 自動 ノードのトランザクション・モードです。値は以下のとおりです。
  • 「自動」(デフォルト)。 Database ノードが属するメッセージ・フローが正常に行われると、そのメッセージ・フローがコミットされます。つまり、ESQL モジュールで定義したアクションが実行され、メッセージはメッセージ・フローを通して継続します。 メッセージ・フローは、失敗するとロールバックされます。 「自動」を選択した場合、データベース上で Database ノードのアクションをコミットするかロールバックするかは、メッセージ・フロー全体の成功または失敗に依存します。
  • 「コミット」。メッセージ・フロー全体の成功または失敗に関係なく、このノードに接続しているデータベースのこのメッセージ・フローで実行されたコミットされていないアクションをコミットする場合は、「コミット」を選択します。 メッセージ・フロー自体が失敗しても、データベースへの変更はコミットされます。
警告をエラーとして扱う はい いいえ 選択されていない データベース警告メッセージをエラーとして扱い、ノードから出力メッセージを Failure ターミナルに伝搬する場合は、「警告をエラーとして扱う」を選択します。最初、このチェック・ボックスはチェックされていません。

このチェック・ボックスを選択した場合、ノードはデータベースからのすべての正の戻りコードをエラーとして扱い、負の戻りコードに対する処理と同じ方法で例外を生成するか、問題がより重大である場合はエラーを生成します。 このチェック・ボックスを選択しなかった場合、ノードは警告を通常の戻りコードとして扱い、例外を生成しません。 生成される最も重大な警告は「見つかりません」であり、これはほとんどの環境で標準的な戻りコードとして扱って差し支えありません。

データベース・エラーで例外をスローする はい いいえ 選択されている データベース・エラーが検出されたときにブローカーが例外を生成するように設定する場合は、「データベース・エラーで例外をスローする」を選択します。 最初、このチェック・ボックスは選択されています。

このチェック・ボックスのチェックを外す場合、データベース呼び出しを行うたびに返される可能性のあるデータベース・エラーを調べるために ESQL を含めます。(これには SQLCODE および SQLSTATE を使うことができます。) エラーが発生した場合、メッセージ・フロー内のエラーを処理してブローカーとデータベースの整合性を確認する必要があります。ブローカーによるデフォルト・エラー処理を使用しないように選択してあるため、自分でエラーを処理しない限り、エラーは無視されます。例えば、このノードで例外をスローするために ESQL THROW ステートメントを含めることができます。 あるいは、Throw ノードを使用して後で独自の例外を生成することができます。

特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
最終更新 : 2009-02-20 12:42:43

ac04670_