WebSphere Message Broker バージョン 8.0.0.5 オペレーティング・システム: AIX、HP-Itanium、Linux、Solaris、Windows、z/OS

製品の最新バージョンについては、IBM Integration Bus バージョン 9.0 をご覧ください。

DatabaseRetrieve ノード

DatabaseRetrieve ノードは、メッセージ内の情報が最新のものであるかどうかを確認するために使用します。

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

目的

DatabaseRetrieve ノードを使用して、データベースからの情報を使用することにより、メッセージを変更します。 例えば、メッセージに添付されているキーを使用して、情報をメッセージに追加することができます。キーはアカウント番号である場合もあります。

DatabaseRetrieve ノードはメッセージ・フローのノード・パレットの「データベース」 ドロワーに含まれ、WebSphere® Message Broker Toolkit では、次のアイコンで表されます。

DatabaseRetrieve ノード・アイコン

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

このノードの使用法については、以下のサンプルを参照してください。

サンプルに関する情報は、WebSphere Message Broker Toolkit に統合されているインフォメーション・センター、またはオンライン・インフォメーション・センターを使用する場合にのみ表示できます。 サンプルは、WebSphere Message Broker Toolkit に統合されているインフォメーション・センターを使用する場合にのみ実行できます。

着信メッセージ内のメッセージ・エレメントからとられた入力パラメーター値は、このノードで使用される準備済みのステートメントへの挿入に関してサポートされます。 そのような値は、解析済みの着信入力メッセージ内の名前、値、および名前値エレメントから取得されます。 エレメントは最初は com.ibm.broker.plugin.MbElement オブジェクトの形式で取得されるので、そのような値がとりうる、サポートされる Java™ オブジェクト・タイプの範囲は、このオブジェクトのインターフェースの支配下に置かれます。 値が Java プリミティブ・タイプまたはオブジェクトの形式である場合、以下の表に示されているとおり、その値は、同等の JDBC データ・タイプに変換されます。
Java JDBC
Integer INTEGER
Long BIGINT
Double DOUBLE
BigDecimal NUMERIC
Boolean BIT
byte[] VARBINARY または LONGVARBINARY
BitSet VARBINARY または LONGVARBINARY
String VARCHAR または LONGVARCHAR
MbTime java.sql.Time
MbTimestamp java.sql.Timestamp
MbDate java.sql.Date
エレメントの値が使用されるのは、そのエレメントが既知のタイプであって、しかもその値の状態が有効になっている場合のみです。それ以外の場合、例外が発行されます。 このノードによって実行された SQL 照会での結果セットで取得された出力列の値は、以下の表に示されているとおり、まず一致する Java タイプに変換されてから、内部メッセージ・エレメント値タイプに変換されます。
JDBC Java ESQL タイプ
SMALLINT Integer INTEGER
INTEGER Integer INTEGER
BIGINT Long DECIMAL
DOUBLE Double FLOAT
REAL Double FLOAT
FLOAT Double FLOAT
NUMERIC BigDecimal DECIMAL
DECIMAL BigDecimal DECIMAL
BIT Boolean BOOLEAN
BOOLEAN Boolean BOOLEAN
BINARY byte[] BLOB
VARBINARY byte[] BLOB
LONGVARBINARY byte[] BLOB
CHAR String CHARACTER
VARCHAR String CHARACTER
LONGVARCHAR String CHARACTER
TINYINT byte[1] BLOB
TIME java.util.Date TIME
TIMESTAMP java.util.Date TIMESTAMP
DATE java.util.Date DATE
障害のない両方の出力ターミナルを同一の出力場所につなぐことで、指定したデータベースに対して照会が成功したかどうかに関わらず、同一の場所にメッセージをルーティングすることができます。

パターンの XPath 式でエラーが検出されると、エラーは WebSphere Message Broker Toolkit での検証中に報告されます。 報告されたエラー・メッセージには誤った式のストリングのほか、式に関連付けられた固有の動的または静的なターミナル名が含まれる可能性があります。また、そのストリングは表内でブローカーとしてマークされている場合があります。

DatabaseRetrieve ノードは、データベースで値を検索し、それをエレメントとして出力メッセージ・アセンブリー・ツリー内に保管します。 SQL 照会で取得されて結果セット内に戻された出力列値の形式でデータベースから得たタイプの情報は、まず一致する Java タイプに変換されてから、それが出力メッセージ・アセンブリー・ツリー内のロケーションに最終的に保管されるときに、内部メッセージ・エレメント値タイプに変換されます。 メッセージ・エレメントが出力メッセージ・ツリー内にすでに存在する場合、新しい値が古い値を上書きします。 ターゲット・エレメントが存在しない場合、作成されて、値が保管されます。

ノードには、SQL SELECT 照会の形成に使用する照会情報が必要です。 この照会は、複数のテスト条件を使用して、データベース内の複数の表にアクセスすることができます。 場合によっては、結果セットに取り出す必要のあるすべての情報が、1 つのデータベース表に入っていないこともあります。 必要な列値を取得するには、複数の表から取り出す必要があるかもしれません。 このノードは、1 つの結果セットに 1 つ以上の表から簡単に列を取り出すための SELECT ステートメントの使用をサポートします。 サポートされている通常の結合構文は、内部結合 とも呼ばれます。

照会の作成のために収集される内部結合情報には、検索対象の表名修飾列値のリストと、SELECT ステートメントの WHERE 節を成すテスト条件のリストなどがあります。 表名修飾列値は、テスト条件で左側のオペランドに使用することができます。 このオペランドに適用する比較演算子を選択し、オプションで、右側のオペランドを指定して、テスト条件を完成させます。 演算子は NULL 比較テストにすることが可能で、その場合、右側のオペランドは不要です。 右側のオペランドの値には、データベース・タイプ (Integer、Boolean、または Long など)、別の表名修飾列、あるいは受信メッセージ内のエレメントから取得した値のいずれかを、XPath 1.0 一般式を介した表現で指定することができます。

式を適用した結果として 1 つのエレメント、double、Boolean、またはストリングが戻されなければなりません。そうでなければ、例外が起きます。 「複数行」オプションを選択しなかった場合に、照会が複数行を戻すと、最初の行が選択されて、残りは無視されます。 そのような場合、すべての行が処理されて、それらの行中の値は、出力メッセージ・アセンブリー・ツリーの更新で使用されます。

DatabaseRetrieve ノードを他のメッセージ・フローのノードと結合すると、便利です。 例えば、XSLTransform ノードを使用して、DatabaseRetrieve ノードが呼び出される前あるいは後に、データを操作することができます。

DatabaseRetrieve ノードには入力ターミナルが 1 つ (In)、出力ターミナルが 3 つ (Out、KeyNotFound、および Failure) あります。 メッセージが正常に変更されると、Out ターミナルにルーティングされます。 メッセージの変更が正常に完了しない場合や、処理中に障害が検出された場合、そのメッセージは、Failure ターミナルにルーティングされます。 指定の SQL SELECT 照会の実行後に行が結果セット内に戻されないと、元のメッセージは KeyNotFound ターミナルにルーティングされます。

DatabaseRetrieve ノードで JDBC プロバイダー・サービスを使用できるようにする

DatabaseRetrieve ノードは、構成可能サービスとしてブローカーのレジストリーに保管されている接続詳細を使用して、自身の JDBC 接続を確立します。 JDBCProvider 構成可能サービスは、サポートされているすべてのデータベースで提供されます。

提供されているサービスを変更または作成するには、WebSphere Message Broker Explorer を使用します。詳しくは、WebSphere Message Broker Explorer を使用した構成可能サービスの処理を参照してください。

選択したデータベース用として提供されているサービスの設定を変更するには mqsichangeproperties コマンドを使用し、新規のサービスを作成するには mqsicreateconfigurableservice コマンドを使用することもできます。 JDBCProvider サービスに関する詳細と、その処理に関する解説は、Type 4 接続用の JDBC プロバイダーのセットアップを参照してください。 接続先になる各データベースごとに、それぞれ異なる JDBCProvider サービスをセットアップする必要があります。

注: maxConnectionPoolSize プロパティーは、DatabaseRetrieve ノードまたは DatabaseRoute ノードで使用される JDBC 接続には適用されません。

このサービスの定義を完了したら、このノードの「データ・ソース名」プロパティーを JDBCProvider サービスの名前に設定します。つまり、このサービスの属性が使用されて、DatabaseRetrieve ノードの接続が確立されます。

このノードを含むメッセージ・フローのデプロイ先のブローカー上で新規の実行グループを作成するつもりでない限り、ブローカーを停止してから再始動して、変更を有効化する必要があります。

データ・ソースの照会のための Data Source Explorer ビューの使用

ターゲット・データベース内の表の名前と、その表内の任意の列の名前を見つけ出すには、Data Source Explorer ビューを使用します。 表と列の名前を Data Source Explorer ビューで表示するには、該当するデータベースのデータベース定義をWebSphere Message Broker Toolkit に事前にインポートする必要があります。
  1. 「ブローカー・アプリケーション開発」パースペクティブに切り替えます。
  2. Data Source Explorer ビューで「接続」を展開します。 データベース接続がリストされます。
  3. データベースをリストするためにデータベース接続を展開し、続いて適切なデータベースを展開します。
  4. スキーマをリストするために「スキーマ」を展開し、続いて適切なスキーマを展開します。
  5. すべての表をリストするために「表」を展開します。
  6. 「プロパティー」ビューでプロパティーを表示するために表をクリックします。
  7. 「プロパティー」ビューで、「列」タブをクリックし、列名を表示します。

DatabaseRetrieve ノードの構成

DatabaseRetrieve ノードのインスタンスをメッセージ・フローに入れたら、そのノードを構成することができます。 詳しくは、メッセージ・フロー・ノードの構成を参照してください。 ノードのプロパティーが、「プロパティー」ビューに表示されます。

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

以下の例では、着信メッセージの構造に新しいエレメント (姓および賃金) を追加します。 この例では Employee というデータベース表を使用します。
EmployeeNumber FamilyName FirstName Salary
00001 Smith John 20000
00002 Jones Harry 26000
00003 Doe Jane 31000
着信メッセージのコピーを作成するには、「メッセージのコピー」を選択します。 このプロパティーが選択されると、ノードは常に、着信メッセージ・アセンブリーをベースとする出力メッセージ・アセンブリーを作成します。新規の出力メッセージ・アセンブリー内のこのツリーは、変更されてから、ノードの Out ターミナルに伝搬されます。 この動作が行われることによって、メッセージ・アセンブリー内の他の論理ツリー ($OutputLocalEnvironment、$OutputDestinationList、$OutputExceptionList、および $Environment) に加えて、出力メッセージ・ツリーそのもの ($OutputRoot) の変更が可能になります。 メッセージ・アセンブリー内の論理ツリーのみが、このノードによって変更されることになっている場合、パフォーマンス上の理由から、「メッセージのコピー」を選択しないでください。 このプロパティーが選択されないと、ノードは常に、元の着信メッセージ・アセンブリーに対する処理を行って、メッセージ・ツリーに対する更新は試みられないものとみなします。 データ・エレメント表内の XPath 式が、$OutputRoot への参照を通してこのメッセージ・ツリーの更新を試みると、MbReadOnlyMessageException が発生します。 着信メッセージは次のとおりです。
<EmployeeRecord>
	<EmployeeNumber>00001</EmployeeNumber>
</EmployeeRecord>
照会エレメント表の例を示します。
表名 列名 演算子 値タイプ
Employee FamilyName      
Employee Salary      
Employee EmployeeNumber = エレメント $InputRoot/XMLNSC/EmployeeRecord/EmployeeNumber
データ・エレメント表の例を示します。
列名 メッセージ・エレメント
Employee.FamilyName $OutputRoot/XMLNSC/EmployeeRecord/FamilyName
Employee.Salary $OutputRoot/XMLNSC/EmployeeRecord/Wage
DatabaseRetrieve ノードは Employee データベース表に接続し、それぞれの着信メッセージから比較用の値を抜き出します。 メッセージ本体へのナビゲートで使用される XPath 式は $InputBody/EmployeeRecord/EmployeeNumber です。 SQL 照会は次のようになります。
SELECT Employee.FamilyName, Employee.Salary
FROM Employee
WHERE EmployeeNumber=?
ORDER BY Employee.FamilyName ASC, Employee.Salary ASC
? は、着信メッセージから取り出される値です。この値は、Element という値タイプを持つ照会エレメント表の 3 番目の行内の Value プロパティーを通して見つけ出されます。
  • この場所にある値が 00001 の場合は、John Smith の情報が取得されます。 最初のデータ・エレメント行では、照会から返された FamilyName 列の値を取得し、EmployeeRecord の下にある「FamilyName」 という名前の新しいエレメントに挿入するよう指定しています。 2 番目のデータ・エレメント行では、照会から返された Salary 列の値を取得し、EmployeeRecord の下にある「Wage」 という名前の新しいエレメントに挿入するよう指定しています。 結果として得られる出力メッセージは以下のようになります。
    <EmployeeRecord>
    	<EmployeeNumber>00001</EmployeeNumber>
    	<FamilyName>Smith</FamilyName>
    	<Wage>20000</Wage>
    </EmployeeRecord>
  • この場所にある値が 00002 の場合は、Harry Jones の情報が取得されます。 結果として得られる出力メッセージは以下のようになります。
    <EmployeeRecord>
    	<EmployeeNumber>00002</EmployeeNumber>
    	<FamilyName>Jones</FamilyName>
    	<Wage>26000</Wage>
    </EmployeeRecord>
「複数行」プロパティーを選択すると、両方の社員の詳細が、2 行の形式で結果セット内に照会から戻されます。その結果の出力メッセージは次のとおりです。
<EmployeeRecord>
	<EmployeeNumber>00001</EmployeeNumber>
	<FamilyName>Smith</FamilyName>
	<Wage>20000</Wage>
	<EmployeeNumber>00002</EmployeeNumber>
	<FamilyName>Jones</FamilyName>
	<Wage>26000</Wage>
</EmployeeRecord>

メッセージの妥当性検査

妥当性検査プロパティーを設定して、DatabaseRetrieve ノードによって生成されたメッセージの妥当性検査を行う方法を定義します。 これらのプロパティーによって、入力メッセージの妥当性検査は行われません。 そのような妥当性検査が必要な場合には、入力ノードまたは先行する validation ノードによって妥当性検査がすでに行われていることが期待されます。

詳細については、メッセージの妥当性検査および妥当性検査プロパティーを参照してください。

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

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

ターミナル 説明
In ノードが処理するメッセージを受け入れる入力ターミナル。
Out 変更が正常に終了した時に出力メッセージがルーティングされる出力ターミナル。
KeyNotFound 結果セットが空であった場合に、元のメッセージが変更のないままルーティングされる出力ターミナル。
Failure 処理で障害が検出された場合に、メッセージがルーティングされる出力ターミナル。

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

DatabaseRetrieve ノードの「説明」プロパティーについては、次の表に説明されています。
プロパティー M C デフォルト 説明
ノード名 いいえ いいえ DatabaseRetrieve ノードの名前。
簡略説明 いいえ いいえ   ノードの簡単な説明
詳細説明 いいえ いいえ   メッセージ・フロー内のノードの目的を説明するテキスト
DatabaseRetrieve ノードの「基本」プロパティーについては、次の表に説明されています。
プロパティー M C デフォルト 説明 mqsiapplybaroverride コマンド・プロパティー
データ・ソース名 はい はい DB2 ブローカーのレジストリーに保管されている JDBCProvider サービス定義を見つけ出すのに使用する別名。 別名は、DBMS に接続するために使用される JDBC 接続 URL の位置指定とビルドに使用されます。 接続 URL はドライバー固有ですが、接続先のデータベース名が含まれます。

データベースへの接続がログイン・アカウントとパスワードによって行われる場合、ノードはこのプロパティーをルックアップ・キーとして使用することができます。そのルックアップ・キーを通して、これらの値は、期待される合致ブローカーのレジストリー DSN エントリーから取得できます。

DBMS がパスワードで保護されている場合は、JDBC の固有セキュリティー・キー用として mqsisetdbparms コマンドに -n パラメーターを定義してから、この DatabaseRetrieve ノードを含むメッセージ・フローをデプロイします。

dataSource
メッセージのコピー いいえ はい 選択されていない このプロパティーは、(場合によってはメッセージ・アセンブリー内の論理ツリーに加えて) メッセージ・ツリーを更新するために、元の着信メッセージのコピーが必要かどうかを示します。 デフォルトでは、このチェック・ボックスはクリアされています。 パフォーマンス上の理由から、入力メッセージが増大する場合のみ、このプロパティーを選択します。  
複数行 いいえ はい 選択されていない このプロパティーは、照会から複数行が戻されたときに、すべての行を処理するかどうかを指示します。 「複数行」を選択すると、すべての行が処理されて、それらの行中の値は、出力メッセージ・アセンブリー・ツリーを更新するために使用されます。 このプロパティーを選択しなかった場合、最初の行が選択されて、残りは無視されます。  
照会エレメント はい いいえ   単一の SQL SELECT ステートメントを構成するために使用される照会エレメントの表。 5 つの列と 1 つ以上の行で構成される表です。 列は 「表名」「列名」「演算子」「値タイプ」、 および「値」です。 これら 5 つのプロパティーは、照会エレメントを記述し、データベースから取り出す表名修飾列値を示します。 この場合、このエレメントは、生成後の照会内の SELECT 節と ORDER BY 節の一部を成します。 それ以外の場合、照会エレメントは、生成後の照会の WHERE 節内の述部を成すテスト条件として働きます。  
表名 はい いいえ   SQL の SELECT ステートメントの一部を構成するデータベース表の名前。 スキーマ名も含みます。myschema.mytable など。  
列名 はい いいえ   結果セットで取得されるデータベース表の列の名前。 「表名」 プロパティーの値で修飾されます。 この SELECT 節は照会から返される列の値として、あるいは WHERE 節の中のテスト条件で参照される値として、この名前を参照することができます。  
演算子 はい いいえ   左側のオペランド (行の最初の 2 列で指定されている表列) に適用される比較演算子と、オプションで、右側のオペランドに適用される値。 昇順の 'ASC' または降順の 'DESC' 演算子の値をこのプロパティーに指定した場合、この行は、生成される照会の中で SELECT 節と ORDER BY 節の一部を成す表名修飾列の宣言を意味します。また、オプションで、右側のオペランドの値として今後の行の中でこの行を参照することもできます。  
値タイプ はい いいえ   「なし」に設定されるか、または、この行の最終列内で表現される値のタイプを示す値。 このプロパティーは、「なし」に設定されなかった場合、SQL SELECT ステートメントの WHERE 節内のテスト条件を記述する行を参照します。  
はい いいえ   「なし」に設定されるか、または、「値タイプ」プロパティーで表現される一連の指定のプロパティー・タイプのうちの 1 つを指定する値。 例えば、「値タイプ」プロパティーを「エレメント」に設定すると、「値」プロパティーは XPath 1.0 一般式を収集します。 ノードの着信メッセージへの適用時に式から返される値は、この述部を通して比較される右側オペランドの値として使用されます。 右側のオペランドの比較値は、左側のオペランドとして比較される表列のために取得されるタイプと一致している必要があります。 ゼロ個以上の値を着信メッセージから取り出し、処理を加えて比較用の単一値を形成できる場合は、複合式も使用できます。 例えば、着信メッセージ内の複数のフィールドの値の合計を、「エレメント」の値タイプ用として提供されている一般式で計算することができます。  
DatabaseRetrieve ノードの「データ・エレメント表」プロパティーについては、次の表に説明されています。
プロパティー M C デフォルト 説明
データ・エレメント はい いいえ   データ・エレメントのリスト。 データ・エレメントは、「列名」プロパティーおよび「メッセージ・エレメント」プロパティーによって記述されます。
列名 はい いいえ   エレメントの値を取得する基になるデータベース列の名前。 名前のリストは照会エレメント表に入力された列エントリーをもとに、動的に更新されます。
メッセージ・エレメント はい いいえ   メッセージ・エレメントのパス・ロケーションを記述した XPath 1.0 読み取り/書き込みパス式。 メッセージ・エレメントとは、データベースの値が格納される場所です。 XPath 式の評価結果は、メッセージ内の 1 つのエレメントになる必要があります。

DatabaseRetrieve ノードの「妥当性検査」プロパティーについては、次の表に説明されています。

これらのプロパティーの詳細については、妥当性検査プロパティーを参照してください。
プロパティー M C デフォルト 説明
妥当性検査 いいえ はい なし このプロパティーは、妥当性検査を行うかどうかを制御します。 有効な値は、「なし」「内容と値」「内容」、および「継承」です。
失敗時の処置 いいえ いいえ 例外 このプロパティーは、妥当性検査で障害が発生した場合の動作を制御します。 「妥当性検査」が「内容」または「内容と値」に設定されている場合にのみ、このプロパティーを設定できます。 有効な値は、「ユーザー・トレース」「ローカル・エラー・ログ」「例外」、および「例外リスト」です。
ノードのモニター・プロパティーが、次の表に説明されています。
プロパティー M C デフォルト 説明
イベント いいえ いいえ なし ノードに対して定義したイベントが、このタブに表示されます。 デフォルトでは、メッセージ・フローのどのノードに対してもモニター・イベントは定義されません。 ノードのモニター・イベントを作成、変更、または削除するには、「追加」「編集」、および「削除」を使用します。詳しくは、モニター・プロパティーを使用したモニター・イベント・ソースの構成を参照してください。

「使用可能」チェック・ボックスを選択またはクリアすることによって、ここに表示されているイベントを使用可能および使用不可に設定できます。

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

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        最終更新:
        
        最終更新: 2015-02-28 17:45:55


参照トピック参照トピック | バージョン 8.0.0.5 | ac37390_