DatabaseRetrieve ノードは、メッセージ内の情報が最新のものであるかどうかを確認するために使用します。
DatabaseRetrieve ノードを使用して、データベースからの情報を使用することにより、メッセージを変更します。 例えば、メッセージに添付されているキーを使用して、情報をメッセージに追加することができます。キーはアカウント番号である場合もあります。
DatabaseRetrieve ノードはメッセージ・フローのノード・パレットの「データベース」 ドロワーに含まれ、WebSphere® Message Broker Toolkit では、次のアイコンで表されます。
サンプルに関する情報は、WebSphere Message Broker Toolkit に統合されているインフォメーション・センター、またはオンライン・インフォメーション・センターを使用する場合にのみ表示できます。 サンプルは、WebSphere Message Broker Toolkit に統合されているインフォメーション・センターを使用する場合にのみ実行できます。
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 |
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 接続を確立します。 JDBCProvider 構成可能サービスは、サポートされているすべてのデータベースで提供されます。
提供されているサービスを変更または作成するには、WebSphere Message Broker Explorer を使用します。詳しくは、WebSphere Message Broker Explorer を使用した構成可能サービスの処理を参照してください。
選択したデータベース用として提供されているサービスの設定を変更するには mqsichangeproperties コマンドを使用し、新規のサービスを作成するには mqsicreateconfigurableservice コマンドを使用することもできます。 JDBCProvider サービスに関する詳細と、その処理に関する解説は、Type 4 接続用の JDBC プロバイダーのセットアップを参照してください。 接続先になる各データベースごとに、それぞれ異なる JDBCProvider サービスをセットアップする必要があります。
注: maxConnectionPoolSize プロパティーは、DatabaseRetrieve ノードまたは DatabaseRoute ノードで使用される JDBC 接続には適用されません。
このサービスの定義を完了したら、このノードの「データ・ソース名」プロパティーを JDBCProvider サービスの名前に設定します。つまり、このサービスの属性が使用されて、DatabaseRetrieve ノードの接続が確立されます。
このノードを含むメッセージ・フローのデプロイ先のブローカー上で新規の実行グループを作成するつもりでない限り、ブローカーを停止してから再始動して、変更を有効化する必要があります。
DatabaseRetrieve ノードのインスタンスをメッセージ・フローに入れたら、そのノードを構成することができます。 詳しくは、メッセージ・フロー・ノードの構成を参照してください。 ノードのプロパティーが、「プロパティー」ビューに表示されます。
値を入力する必要のある (デフォルト値が定義されていない) すべての必須プロパティーには、アスタリスクが表示されます。
EmployeeNumber | FamilyName | FirstName | Salary |
---|---|---|---|
00001 | Smith | John | 20000 |
00002 | Jones | Harry | 26000 |
00003 | Doe | Jane | 31000 |
<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 |
SELECT Employee.FamilyName, Employee.Salary
FROM Employee
WHERE EmployeeNumber=?
ORDER BY Employee.FamilyName ASC, Employee.Salary ASC
? は、着信メッセージから取り出される値です。この値は、Element という値タイプを持つ照会エレメント表の 3 番目の行内の Value プロパティーを通して見つけ出されます。<EmployeeRecord>
<EmployeeNumber>00001</EmployeeNumber>
<FamilyName>Smith</FamilyName>
<Wage>20000</Wage>
</EmployeeRecord>
<EmployeeRecord>
<EmployeeNumber>00002</EmployeeNumber>
<FamilyName>Jones</FamilyName>
<Wage>26000</Wage>
</EmployeeRecord>
<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 ファイルに追加してデプロイするとき、値を変更できる) かどうかを示します。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
ノード名 | いいえ | いいえ | 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 一般式を収集します。 ノードの着信メッセージへの適用時に式から返される値は、この述部を通して比較される右側オペランドの値として使用されます。 右側のオペランドの比較値は、左側のオペランドとして比較される表列のために取得されるタイプと一致している必要があります。 ゼロ個以上の値を着信メッセージから取り出し、処理を加えて比較用の単一値を形成できる場合は、複合式も使用できます。 例えば、着信メッセージ内の複数のフィールドの値の合計を、「エレメント」の値タイプ用として提供されている一般式で計算することができます。 |
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
データ・エレメント | はい | いいえ | データ・エレメントのリスト。 データ・エレメントは、「列名」プロパティーおよび「メッセージ・エレメント」プロパティーによって記述されます。 | |
列名 | はい | いいえ | エレメントの値を取得する基になるデータベース列の名前。 名前のリストは照会エレメント表に入力された列エントリーをもとに、動的に更新されます。 | |
メッセージ・エレメント | はい | いいえ | メッセージ・エレメントのパス・ロケーションを記述した XPath 1.0 読み取り/書き込みパス式。 メッセージ・エレメントとは、データベースの値が格納される場所です。 XPath 式の評価結果は、メッセージ内の 1 つのエレメントになる必要があります。 |
DatabaseRetrieve ノードの「妥当性検査」プロパティーについては、次の表に説明されています。
これらのプロパティーの詳細については、妥当性検査プロパティーを参照してください。プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
妥当性検査 | いいえ | はい | なし | このプロパティーは、妥当性検査を行うかどうかを制御します。 有効な値は、「なし」、「内容と値」、「内容」、および「継承」です。 |
失敗時の処置 | いいえ | いいえ | 例外 | このプロパティーは、妥当性検査で障害が発生した場合の動作を制御します。 「妥当性検査」が「内容」または「内容と値」に設定されている場合にのみ、このプロパティーを設定できます。 有効な値は、「ユーザー・トレース」、「ローカル・エラー・ログ」、「例外」、および「例外リスト」です。 |
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
イベント | いいえ | いいえ | なし | ノードに対して定義したイベントが、このタブに表示されます。 デフォルトでは、メッセージ・フローのどのノードに対してもモニター・イベントは定義されません。 ノードのモニター・イベントを作成、変更、または削除するには、「追加」、「編集」、および「削除」を使用します。詳しくは、モニター・プロパティーを使用したモニター・イベント・ソースの構成を参照してください。 「使用可能」チェック・ボックスを選択またはクリアすることによって、ここに表示されているイベントを使用可能および使用不可に設定できます。 |