Database ノード

目的

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

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

このノードを使ってデータベースを更新することは可能ですが、メッセージを更新することはできません。

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

ワークベンチでは、Database ノードは次のアイコンで表されます。

Database ノード・アイコン

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

このノードが使用される方法に関しては、次のサンプルを参照してください。

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

Database ノードの構成

Database ノードのインスタンスをメッセージ・フローに入れると、Database ノードを構成することができます。 エディター・ビューでノードを右クリックし、「プロパティー」をクリックします。ノードの基本プロパティーが表示されます。

値を入力する必要のある (デフォルト値が定義されていない) すべての必須プロパティーには、プロパティー・ダイアログにアスタリスクが表示されます。

以下のように、Database ノードを構成します。

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

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

  2. ステートメント」に、このノードで実行される ESQL ステートメントを含む ESQL ファイル内のモジュールを指定します。 モジュール名に 1 つ以上のスペースを含めるには、「ステートメント」プロパティーで、名前を二重引用符で囲みます。

    表と対話する ESQL ステートメントをコーディングする場合は、それらの表がこのデータベース内に存在することが前提とされます。 存在しない場合には、実行時にブローカーによってデータベース・エラーが生成されます。

    Database ノードの動作をカスタマイズするための ESQL ステートメントは、この Database ノードのインスタンスが含まれるメッセージ・フローに関連付けられた ESQL ファイル内にコーディングします。デフォルトで <message_flow_name>.esql という名前を持つこの ESQL ファイルには、ESQL を必要とするメッセージ・フロー内のすべてのノード用の ESQL が含まれています。特定のノードに関連したコードの部分はモジュールと呼ばれます。

    このメッセージ・フロー用の ESQL ファイルが存在していない場合、Database ノードを右クリックして、「ESQL のオープン」をクリックします。これにより、ESQL エディター・ビューに新しい ESQL ファイルが作成されてオープンされます。

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

    指定されたモジュールが存在しない場合、それが作成され、エディターはファイルを表示するために位置付けします。 ファイルとモジュールが既に存在する場合、エディターはファイルを位置付けし、正しいモジュールを強調表示します。

    「リソース・ナビゲーター」で適切な ESQL ファイルをオープンし、「アウトライン」ビューでこのノードを選択することもできます。

    新規または既存の ESQL ファイル内でこのノード用にモジュール・スケルトンが作成された場合、以下の ESQL が含まれます。この例では、デフォルトのモジュール名が表示されています。

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

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

    このノードをカスタマイズするための ESQL を、BEGIN ステートメントと RETURN TRUE の間に追加します。

    「ファイル」 > 「新規」 > 「メッセージ・フロー ESQL ファイル」をクリックすることにより ESQL ファイルを作成することもできます。

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

    メッセージのどのような部分も変更できないため、割り当てステートメント (INSERT ステートメントの SET 文節ではなく、SET ステートメント) では、一時的な変数への値の割り当てしか行うことができません。 したがって、割り当てステートメントで行えるアクションの有効範囲は限られています。

    「リソース・ナビゲーター」で適切な ESQL ファイルをオープンし、「アウトライン」ビューでこのノードを選択することもできます。

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

      このボックスを選択した場合、ノードはデータベースからのすべての正の戻りコードをエラーとして扱い、負の戻りコードについてと同じ方法で例外を生成するか、問題がより重大である場合はエラーを生成します。

      このボックスを選択しなかった場合、ノードは警告を通常の戻りコードとして扱い、例外を生成しません。 生成される最も重大な警告は「見つかりません」であり、これはほとんどの環境で正常な戻りコードとして支障なく扱うことができます。

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

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

  5. 簡略説明または詳細説明 (あるいはその両方) を入力するには、プロパティー・ダイアログ・ナビゲーターの「説明」を選択します。
  6. 「適用」をクリックすると、プロパティー・ダイアログを閉じずに Database ノードが変更されます。 「OK」をクリックすると、変更を適用してプロパティー・ダイアログを閉じます。

    「キャンセル」をクリックすると、ダイアログを閉じてプロパティーに対して行った変更をすべて破棄します。

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

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 デフォルト 説明
データ・ソース いいえ はい   このノードに関連付けられた ESQL (「ステートメント」プロパティーで識別される) で参照する表が存在するデータベースの ODBC データ・ソース名。
ステートメント はい いいえ データベース データベースに対して実行されるステートメントを含む、ESQL ファイル内のモジュールの名前。
トランザクション はい いいえ 自動 ノードのトランザクション・モードです。「自動」または「コミット」を選択できます。
警告をエラーとして扱う はい いいえ 選択されていない データベース SQL 警告をエラーとして扱います。 チェック・ボックスを選択すると、このアクションが実行されます。
データベース・エラーで例外をスローする はい いいえ 選択されている データベース・エラーによりブローカーは例外をスローします。 チェック・ボックスを選択すると、このアクションが実行されます。

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

プロパティー M C デフォルト 説明
簡略説明 いいえ いいえ   ノードの簡単な説明
詳細説明 いいえ いいえ   メッセージ・フロー内のノードの目的を説明するテキスト
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ac04670_