JDBC

JDBC サービスでは、次のタスクを完了するためにデータベースとのやりとりを行うプロセスを有効にします。

  • ストアドプロシージャの実行

  • SQL ステートメントの実行

  • データベースに対するクエリーの実行

JDBC サービスの使用について詳しくは、 サービス参照 を参照してください。

JDBC サービスの設定

JDBC サービスは、データベースサーバーへの接続のためのデフォルトプロパティで設定できます。(「 サービス設定の編集 」を参照)。

接続のプロパティを設定するとき、JDBC サービス操作はプロパティ値を継承します。ただし、デフォルトの接続プロパティは各操作のプロパティを使用すると、上書きされる可能性があります。

DatasourceName

データベースサーバーへの接続に使用するデータソースの JNDI 名を表す string 値です。データソースは、AEM forms サーバーをホストするアプリケーションサーバー上に定義する必要があります。デフォルトは AEM forms データベース用のデータソースの JNDI 名です。

注意: WebSphere の場合は、明示的な Datasource Name を使用してください。 WebSphere Datasource Name に接頭辞を付けないでください。

「Call Stored Procedure」操作

データベースでストアドプロシージャを実行します。

ストアドプロシージャを呼び出すには、データベースにアクセスするために使用されるデータベースのユーザーアカウントが必要なデータベースの権限を持っている必要があります。

注意: すべてのデータベースでストアドプロシージャがサポートされる必要はありません。ストアドプロシージャがサポートされるかどうかについては、使用しているデータベースのドキュメントを参照してください。

General プロパティグループと Route Evaluation プロパティグループについて詳しくは、 共通の操作プロパティ を参照してください。

Input プロパティ

呼び出すストアドプロシージャを指定するためのプロパティ。

Datasource Name

データベースサーバーへの接続に使用するデータソースの JNDI 名を表す string 値です。データソースは、AEM forms サーバーをホストするアプリケーションサーバー上に定義する必要があります。

注意: WebSphere の場合は、明示的な Datasource Name を使用してください。 WebSphere Datasource Name に接頭辞を付けないでください。

Stored Procedure

データベースサーバーでストアドプロシージャを呼び出すコマンド。call コマンドを作成するには、Callable Statement Info Editor ダイアログボックスを使用する必要があります( Callable Statement Info Editor の概要 を参照)。

Output プロパティ

操作の結果を保存する場所を指定するプロパティです。

Number of Rows Affected

影響を受けたストアドプロシージャのテーブル内の行数を保存する場所。データタイプは int です。

Exceptions

この操作では、 JDBCConnectionException JDBCIllegalParameterException SQLException 、および JNDIContextUnavailableException の例外がスローされる可能性があります。

「Execute SQL Statement」操作

データベースサーバーで SQL ステートメントを実行し、影響を受けた行数を返します。この操作は通常、結果セットを返さない INSERT ステートメント、UPDATE ステートメント、および DELETE ステートメントなどの SQL ステートメントに使用されます。

データベースサーバーに接続し、SQL ステートメントを実行するために使用されるデータベースユーザーアカウントに、必要なデータベース権限がある必要があります。

General プロパティグループと Route Evaluation プロパティグループについて詳しくは、 共通の操作プロパティ を参照してください。

Input プロパティ

実行する保存された SQL ステートメントを指定するためのプロパティ。

Datasource Name

データベースサーバーへの接続に使用するデータソースの JNDI 名を表す string 値です。データソースは、AEM forms サーバーをホストするアプリケーションサーバー上に定義する必要があります。

注意: WebSphere の場合は、明示的な Datasource Name を使用してください。 WebSphere Datasource Name に接頭辞を付けないでください。

SQL Statement

データベースサーバー上で実行する SQL ステートメントを表す値。この値を指定するには、「SQL Statement Info Editor」を使用します( SQL Statement Info Editor の概要 を参照)。

Output プロパティ

操作の一覧を保存するためのプロパティ。

Number Of Rows Affected

影響を受けた SQL ステートメントの行数を保存する場所。データタイプは int です。

Exceptions

この操作では、 JDBCConnectionException JDBCIllegalParameterException SQLException 、および JNDIContextUnavailableException の例外がスローされる可能性があります。

「Query for Multiple Rows as XML」操作

SQL ステートメントを使用してデータベースに対するクエリーを実行し、結果セットを XML データとして返します。

General プロパティグループと Route Evaluation プロパティグループについて詳しくは、 共通の操作プロパティ を参照してください。

Input プロパティ

クエリーを定義するためのプロパティ。

Datasource Name

データベースサーバーへの接続に使用するデータソースの JNDI 名を表す string 値です。データソースは、AEM forms サーバーをホストするアプリケーションサーバー上に定義する必要があります。

注意: WebSphere の場合は、明示的な Datasource Name を使用してください。 WebSphere Datasource Name に接頭辞を付けないでください。

SQL Statement

データベースサーバー上で実行する SQL ステートメント。SQL ステートメントを作成するには、SQL Statement Info Editor ダイアログボックスを使用する必要があります( SQL Statement Info Editor の概要 を参照)。

XML Information

結果セットを返すために使用する XML の構造の定義。定義を作成するには、XML Document Info Editor ダイアログボックスを使用する必要があります( XML Document Info Editor の概要 を参照)。

Output プロパティ

操作の一覧を保存するためのプロパティ。

XML Document

返される結果セットを保存するために使用する場所。データタイプは xml です。

Exceptions

この操作では、 JDBCConnectionException JDBCIllegalParameterException SQLException 、および JNDIContextUnavailableException の例外がスローされる可能性があります。

「Query Single Row」操作

SQL ステートメントを使用してデータベースに対するクエリーを実行し、結果セットの最初の行を保存します。

General プロパティグループと Route Evaluation プロパティグループについて詳しくは、 共通の操作プロパティ を参照してください。

Input プロパティ

クエリーを定義するためのプロパティ。

Datasource Name

データベースサーバーへの接続に使用するデータソースの JNDI 名を表す string 値です。データソースは、AEM forms サーバーをホストするアプリケーションサーバー上に定義する必要があります。

注意: WebSphere の場合は、明示的な Datasource Name を使用してください。 WebSphere Datasource Name に接頭辞を付けないでください。

SQL Statement

データベースサーバー上で実行する SQL ステートメント。SQL ステートメントを作成するには、SQL Statement Info Editor ダイアログボックスを使用する必要があります( SQL Statement Info Editor の概要 を参照)。

Output プロパティ

操作の一覧を保存するためのプロパティ。

Data Mapping

クエリーの結果セットの 1 行目にデータを保存するために使用するプロセスデータモデル内の場所。省略記号ボタン  をクリックすると、SQL Results Mapping Editor ダイアログボックスが表示されます。このダイアログボックスは、データの場所を指定するために使用します。

このダイアログボックスには、データベースの列をプロセスデータの場所に関連付けるために使用するリストが含まれています。

索引:
列 / 場所の組み合わせを指定する整数値。インデックスは 1 から始まります。つまり、リスト内で最初のアイテムのインデックス値は 1 です。

Column Name:
SQL クエリーを使用して取得されるデータのデータベーステーブル内の列名。セルをクリックし、列名を入力します。

Process Variable:
対応する列のデータを保存するために使用するプロセスデータの場所を解決する XPath 式。セルをクリックし、省略記号ボタンをクリックすると、XPath Builder が開きます。これを使用して、XPath 式を作成できます。

「Parse Query」ボタンと「Process Metadata」ボタンを使用すると、「Index」列と「Column Name」列に値が自動的に入力されます。

  • 「Parse Query」をクリックすると、SQL Statement プロパティで指定された SQL ステートメントから列名が決定されます。SQL ステートメントで列に SELECT column1, column2 FROM table1 のように明示的に名前が付けられる場合、このボタンを使用できます。このボタンは SELECT * FROM table1 、または SELECT concat(a,b) AS FULLNAME FROM table1 のようなステートメントに対しては動作しません。

  • 「Process Metadata」をクリックしてデータベースサーバーから列名を取得します。クエリーを処理し、クエリーについてのメタデータを返すという要求がデータベースサーバーに送信されます。列のリストは、返されたメタデータから決定されます。

「Index」列および「Column Name」列に自動的に入力された後で、「Process Variable」列内に関連付けられるプロセスデータの場所を指定できます。

SQL Statement プロパティに値が設定されていない場合、または「Parse Query」または「Process Metadata」ボタンのいずれかで「Index」列および「Column Name」列に正しく入力されなかった場合、これらの列に手動で入力する必要があります。結果セットの列ごとに、「+」ボタンをクリックしてテーブルに行を追加します。行が追加されると、行に値が入力できます。

Number Of Rows Retrieved

クエリーが返された結果セット内の行数を保存するために使用するプロセスデータモデル内の場所。結果セットに行がない場合、この値は 0 で、結果セットに 1 行ある場合は 1 です。

Exceptions

この操作では、 JDBCConnectionException JDBCIllegalParameterException SQLException 、および JNDIContextUnavailableException の例外がスローされる可能性があります。

Callable Statement Info Editor の概要

ストアドプロシージャを実行するデータベースの呼び出しを作成してテストするには、Callable Statement Info Editor ダイアログボックスを使用します。ストアドプロシージャの呼び出しには XPath 式とパラメーター値のためのプレースホルダー(パラメーター値を指定するストアドプロシージャの場合)が含まれる場合があります。

フルサイズのグラフィックを表示
A. 編集領域。B. XPath Builder を開く。C. パラメーターの使用を有効にする。D. パラメーター定義。E. テスト領域

「Callable Statement」ボックスでプロシージャの呼び出しを入力します。プロシージャの呼び出しは次の形式です。

CALL procedure_name(parameter_list);

procedure_name はストアドプロシージャの名前です。

(parameter_list) は一連の疑問符(?)で、カンマで区切られます。各疑問符はパラメーターを表します。

パラメーターの数は、呼び出すプロシージャに応じて異なります。プロシージャにパラメーターが不要な場合、プロシージャ呼び出しのこの部分は省略されます。

例えば、 proc1 という名前のプロシージャを呼び出す場合、2 つの入力パラメーターを指定し、呼び出しは CALL proc1 (?,?); となります。

プロシージャの呼び出しにプレースホルダーが含まれる場合、「Use Parameterized Statement」を選択します。また、ステートメントに含める各プレースホルダーのパラメーターも定義する必要があります( パラメーターの定義 を参照)。また、ステートメントの作成時に次のタスクも実行できます。

  • XPath 式を含める

  • パラメーターを定義する

  • テスト

XPath 式を含める

XPath 式を使用して、プロシージャの呼び出しにプロセスデータへの参照を含めることができます。プロシージャの呼び出しでは、XPath 式が必ず {$XPath$} のように、中括弧の内側でドル記号に囲まれて表示されます。

例えば、次のプロシージャの呼び出しが、 strvar という名前のプロセス変数に保存されるプロシージャ名に使用されます。

    CALL {$/process_data/@strvar$};

XPath Builder を使用して XPath 式を作成するには、「Callable Statement」ボックスの下の省略記号ボタン  をクリックします。式はカーソル位置でステートメントに挿入されます。

パラメーターの定義

プロシージャの呼び出しステートメントに含まれる各パラメーターのプレースホルダーに対してパラメーターを定義する必要があります。パラメーターのプレースホルダーごとに、テーブルに行を追加します。テーブル内でパラメーターが定義される順序は、プロシージャの呼び出しで表示される順序です。

プロシージャの呼び出しのパラメーターごとに、「+」ボタンをクリックして、対応する行をテーブルに追加し、各列内に値を指定します。

索引:
パラメーターを指定するインデックス。この値は、テーブルに行が追加されると自動的に生成されます。

Type:
パラメーターが保持しているデータタイプ。「Type」列でセルをクリックし、リストからデータタイプを選択します。

値:
パラメーターに使用する値。「Value」列内のセルをクリックし、値を入力するか、または省略記号ボタンをクリックして XPath Builder を開き、使用する値を保持するプロセスデータの場所を解決する XPath 式を作成します。

Test Value:
プロシージャの呼び出しをテストするときに使用するパラメーターのリテラル値。

テスト

ストアドプロシージャの呼び出しをテストし、結果を表示するには、「Test」ボタンをクリックします。

注意: テストでは、データベース上でストアドプロシージャを実行します。開発環境のみでテストします。

SQL Statement Info Editor の概要

データベースサーバー上で実行する SQL ステートメントを作成してテストするには、SQL Statement Info Editor ダイアログボックスを使用します。SQL ステートメントには XPath 式とパラメーター値を含めることができます。

SQL Statement
「SQL Statement」ボックスで SQL ステートメントを入力します。SQL ステートメントでパラメーターを使用する場合、疑問符( ? )をパラメーターのプレースホルダーとして使用します( パラメーターを含める を参照)。

Insert a dynamic process data
XPath Builder を開きます。

Use Parameterized Query
パラメーターの使用を有効にします。

Index, Type, Value, Test Value
パラメーターの定義を入力します。

Test Results
ステートメントのテスト領域。

また、SQL ステートメントの作成時に次のタスクも実行できます。

  • XPath 式を含める

  • パラメーターの定義

  • テスト

XPath 式を含める

XPath 式を使用して、SQL ステートメントにプロセスデータへの参照を含めることができます。SQL ステートメントでは、XPath 式が必ず {$XPath$} のように、中括弧の内側でドル記号に囲まれて表示されます。

例えば、次の SQL ステートメントでは first_name という名前のプロセス変数をデータベース内の table1 の columna からデータを取得するための条件として使用します。

SELECT columna FROM table1 WHERE columna LIKE  
'{$ /process_data/@first_name$}%'

XPath Builder を使用して XPath 式を作成するには、「SQL Statement」ボックスの下の省略記号ボタン  をクリックします。式はカーソル位置でステートメントに挿入されます。

パラメーターを含める

SQL ステートメントでパラメーターを使用するには、疑問符(?)を SQL ステートメントに配置して、パラメーターを表します。

例えば、次の SQL ステートメントではパラメーター値をデータベース内の table1 の columna からデータを取得するための条件として使用します。

SELECT columna FROM table1 WHERE columna LIKE (?)

ステートメント内に配置する疑問符ごとに、パラメーターテーブル内にパラメーターを定義します。「Use Parameterized Statement」の選択を解除する必要もあります。

パラメーターを定義するには、パラメーターテーブルに行を追加します。テーブル内でパラメーターが定義される順序は、ステートメントで表示される順序です。テーブルに行を追加するには、「+」ボタンをクリックし、各列に値を指定します。

索引:
パラメーターを指定するインデックス。この値は、テーブルに行が追加されると自動的に生成されます。

Type:
パラメーターが保持するデータのタイプ。「Type」列でセルをクリックし、リストからデータタイプを選択します。

値:
パラメーターに使用する値。「Value」列内のセルをクリックし、値を入力するか、または省略記号ボタンをクリックして XPath Builder を開き、使用する値を保持するプロセスデータの場所を解決する XPath 式を作成します。

Test Value:
ステートメントをテストするときにパラメーターに使用するリテラル値。例えば、ステートメント SELECT columna FROM table1 WHERE columna LIKE (?) の場合、テスト値が A% になる可能性があります。

テスト

SQL ステートメントをテストして結果を表示するには、「Test」ボタンをクリックします。

注意: テストでは、データベース上で SQL ステートメントを実行します。開発環境のみでテストします。

XML Document Info Editor の概要

SQL クエリーの結果セットを返すために使用される XML ドキュメントの要素を定義するには、XML Document Info Editor ダイアログボックスを使用します。

Root Element Name

XML ドキュメントのルート要素名を表す string 値。値が指定されていない場合、要素名として root が使用されます。

Repeating Element Name

結果セットの行の情報を含めるために使用する XML 要素名を表す string 値。この XML ドキュメントには、結果セットの各行に対してこれらのいずれかの要素が含まれます。値が指定されていない場合、要素名として element が使用されます。

Column Name Mappings

このリストを使用して、データベーステーブルの列のデータを保存する XML 要素名を指定します。テーブルの各行は、XML 要素名とそれに関連付けられるデータベースの列を定義します。

このリストを使用して、次のプロパティの値を指定します。

索引:
列 / 要素の組み合わせを指定する整数値。

Column Name:
SQL クエリーがデータを取得するデータベースの列名。セルをクリックし、列名を入力します。

Element Name:
(オプション)テーブルの列のデータを含めるために使用する XML 要素名。セルをクリックし、要素名を入力します。要素名を指定しない場合、データベーステーブルの列名が XML 要素名として使用されます。

「Parse Query」ボタンと「Process Metadata」ボタンを使用すると、「Index」列と「Column Name」列に値が自動的に入力されます。

  • 「Parse Query」をクリックして、「Query For Multiple Rows As XML」操作の SQL Statement プロパティで指定される SQL ステートメントから列名を判断します( 「Query for Multiple Rows as XML」操作 を参照)。

    SQL ステートメントで列に SELECT column1, column2 FROM table1 のように明示的に名前が付けられる場合、このボタンを使用できます。このボタンは SELECT * FROM table1 、または SELECT concat(a,b) AS FULLNAME FROM table1 のようなステートメントに対しては動作しません。

  • 「Process Metadata」をクリックしてデータベースサーバーから列名を取得します。クエリーを処理し、クエリーについてのメタデータを返すという要求がデータベースサーバーに送信されます。列名は、返されたメタデータから判断されます。

「Index」列および「Column Name」列に自動的に入力された後で、「Element Name」列内に関連付けられる XML 要素名を指定できます。

「Query For Multiple Rows As XML」操作の SQL Statement プロパティに値が設定されていない場合、または「Parse Query」または「Process Metadata」ボタンのいずれかで「Index」列および「Column Name」列に正しく入力されなかった場合、これらの列に手動で入力する必要があります。結果セットの列ごとに、「+」ボタンをクリックしてリストに行を追加します。行が追加されると、行に値が入力できます。

次の SQL ステートメントがデータベースクエリーに対して使用されます。

SELECT column1, column2 FROM table1.

「Root element Name」に値が指定されない場合、XML のルート要素名が root になります。「Repeating Element Name」に値が指定されない場合、結果セットのデータの行が含まれる要素の名前が element になります。

この列名は、列データが含まれる XML 要素として使用されます。このクエリーが 3 つの行がある結果セットを返す場合、XML ドキュメントの構造は次のようになります。

<root> 
    <element> 
        <column1>row 1 column1 value</column1> 
        <column2>row 1 column2 value</column2> 
    </element> 
    <element> 
        <column1>row2 column1 value</column1> 
        <column2>row2 column2 value</column2> 
    </element> 
    <element> 
        <column1>row3 column1 value</column1> 
        <column2>row3 column2 value</column2> 
    </element> 
</root>

JDBC の例外

JDBC サービスでは、例外イベントをスローするために次の例外が提供されます。

JDBCConnectionException

データベースサーバーへの接続を確立できないか、失われた場合にスローされます。JDBC サービス設定が正しくないか、データベースサーバーがオフラインになっている可能性があります。

JDBCIllegalParameterException

SQL ステートメントにサポートされていないパラメーターが含まれる場合にスローされます。

SQLException

SQL ステートメントの実行中にエラーが発生した場合にスローされます。

JNDIContextUnavailableException

データベースサーバーへの接続に使用されるデータソースの JNDI 名が無効である場合にスローされます。