Hitachi

Cosminexus V11 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 受付・アダプタ定義編


付録C.2 DBアダプタの定義

開発環境上でDBアダプタを定義する場合の作業の流れを次の図に示します。

図C‒1 DBアダプタの定義の流れ

[図データ]

各作業の詳細は,以降で説明します。なお,ここでは,HiRDBを使用することを前提として説明します。Oracleを使用する場合は,各種定義を読み替えてください。

注意事項

Eclipseプロジェクトをクローズする場合は,DBアダプタ定義支援機能のエディタをすべて閉じてから実施してください。

〈この項の構成〉

(1) SQL設計

DBアダプタ定義支援機能を使って,DBアダプタ上で実行するSQL文の内容を設計します。SQL実行文の表や列の名称およびデータなどの可変部分については,引数要素として設計します。

ただし,DBアダプタ定義支援機能で指定できるSQL命令は,デフォルトで次の2つです。

SQLオペレーション定義ファイルでsqloperation_chk属性にNを指定することで,次のSQLをSQL命令に指定できます。

また,指定できるデータ型は,DB Connectorで使用するJDBCドライバがサポートしているデータ型だけです。

(2) DBアダプタの設計

DBアダプタの内容を設計します。次の内容について設計してください。

(a) DBアダプタの作成単位

DBアダプタはDB Connector単位で必要なため,DB Connectorの構成に合わせてDBアダプタを用意します。

例えば,複数のデータベースと連携するシステムでは,データベースごとにDB Connectorが存在します。このため,データベースのDB ConnectorごとにDBアダプタを作成します。

図C‒2 データベースごとにDB Connectorが存在する場合

[図データ]

また,コネクションプールの設定値をDBアダプタごとに設定する場合などは,同じデータベースに複数のDB Connectorを用意します。この場合は,データベースの数に関係なく,DB Connector単位でDBアダプタを作成します。

図C‒3 1つのデータベースに複数のDB Connectorが存在する場合

[図データ]

(b) SQL文の定義単位

DBアダプタには,1つ以上のSQL文を定義できます。各DBアダプタで定義するSQL文の内容を設計します。SQL文の設計例を次に示します。

  • データベースごとに異なるSQL文を実行したい場合

    データベースごとに異なるSQL文を実行したい場合は,それぞれのデータベースに対応するDBアダプタ上にSQL文を定義します。

    例えば,図中の「データベース1」で検索した結果を「データベース2」に登録したい場合は,「DBアダプタ1」にSELECTを,「DBアダプタ2」にINSERTを定義します。

    図C‒4 データベースごとに異なるSQL文を実行したい場合

    [図データ]

  • 同一データベースに対して,異なるSQL文を実行したい場合

    同じデータベースに対して,アクティビティごとに異なるSQL文を実行したい場合は,DBアダプタ上に複数のSQL文を定義します。

    例えば,最初のアクティビティで検索した結果を,次のアクティビティで登録したい場合は,同じDBアダプタ上にSELECTとINSERTの両方を定義します。

    図C‒5 同一のデータベースに対して異なるSQL文を実行したい場合

    [図データ]

    DBアダプタ定義支援機能を使用して,1つのDBアダプタ上に複数のSQL文を定義する場合は,オペレーションを呼び出すSQL文単位で定義します。

    オペレーションの指定方法については,「(5) SQL文の作成」を参照してください。

(3) デバッグ用のDBアダプタの定義ファイルの生成

デバッグに使用するDBアダプタの定義ファイルのひな形を作成します。DBアダプタの定義ファイルは,Eclipse上で作成します。DBアダプタの定義ファイルを新規作成する方法を次に示します。

注意事項
  • DBアダプタ定義ファイルの編集中に次のメッセージが表示された場合,[パッケージ・エクスプローラー]ビュー上で,プロジェクトを選択して右クリックし,[更新]メニューを選択してリソースとファイル・システムを同期させてください。

    リソース '<ファイルパス>' はファイル・システムと非同期です。

  • DBアダプタ定義ファイルを削除する場合,DBアダプタ定義ファイル作成時に作られた出力先ディレクトリは削除されません。必要に応じて,削除してください。

  • DBアダプタ定義ファイルを操作する場合は,HCSCTE-DBEditorパースペクティブ選択時に開かれるビューを使用してください。

  1. Eclipse上にプロジェクトを作成します。

    プロジェクトの種類は,HCSCTEプロジェクトを推奨します。HCSCTEプロジェクトの作成方法については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「3.1.1 プロジェクトを作成する」を参照してください。

  2. Eclipseのメニューから,[ウィンドウ]−[パースペクティブを開く]−[その他]を選択します。

    [パースペクティブを開く]ダイアログが表示されます。

  3. [HCSC-DBEditor]を選択し,[開く]ボタンをクリックします。

    [DBアダプタ開発支援]パースペクティブが表示されます。

  4. Eclipseのメニューから,[ファイル]−[新規]−[その他]を選択します。

    ウィザードを選択するダイアログが表示されます。

  5. [HCSCTE-DBEDITOR]の[DBEditor ファイル]を選択して,[次へ]ボタンをクリックします。

    新規DBアダプタ定義ファイルウィザードが表示されます。

  6. [親フォルダを入力または選択]で,DBアダプタの定義ファイルを保存するフォルダを入力または選択します。

  7. 保存する定義ファイルのファイル名を[ファイル名]に指定します。

  8. [終了]ボタンをクリックします。

    新しい定義ファイルが作成され,DBアダプタ開発支援画面が表示されます。

    [図データ]

(4) デバッグ用のデータベースの設定

DBアダプタの定義ファイルに,使用するデータベースの内容を設定します。本番環境用のデータベースとは別にデバッグ用のデータベースを使用するかどうかによって,設定方法が異なります。デバッグ用のデータベースを使用しない場合は,SQLのデバッグができません。

参考

Service Architectに含まれる構成ソフトウェアのHiRDB/Single Serverをインストールすると,デバッグ用のデータベースとして使用できます。インストールの詳細については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「2.1.2 インストール」を参照してください。

(a) 本番環境用とは別にデバッグ用のデータベースを用意する場合

本番環境用のデータベースとは別に,デバッグ用のデータベースを用意する場合の設定方法を次に示します。

  1. Eclipse上でDBアダプタの定義ファイルを開きます。

    DBアダプタ開発支援画面が表示されます。

  2. [コネクション]タブにある[DataSources]を右クリックし,[新規データソース]を選択します。

    [新規データソース]ダイアログが表示されます。

    [図データ]

  3. [データベースコネクション]の入力フィールドに値を入力します。

    SQLをデバッグするための設定をします。

    ここでは,JDBCドライバを利用して接続するための設定をします。

    表C‒1 [データベースコネクション]の入力フィールドに定義する内容([新規データソース]ダイアログ)

    表示項目

    説明

    デフォルト値

    名称

    DBアダプタ開発支援画面の[コネクション]タブに表示する名称です。DBエディタ定義ファイル内で一意になるような任意の名称を指定します。

    HiRDB

    データベースなし

    デバッグ用のデータベースがない場合にチェックします。

    チェックなし

    ドライバ JAR

    JDBCドライバのJARファイルを指定します。

    対応するJDBCドライバは事前に入手しておいてください。

    <サービスプラットフォームのインストールディレクトリ>\DB\CLIENT\UTL\pdjdbc2.jar

    ドライバ

    使用するJDBCドライバのパッケージ名(完全修飾Javaクラス名)を指定します。

    JP.co.Hitachi.soft.HiRDB.JDBC.HiRDBDriver

    URL

    接続するデータベースのポート番号とホスト名を指定した,データベース接続URLを指定します。

    jdbc:hitachi:hirdb://DBID=22200,DBHOST=localhost

    ユーザ名

    データベースへ接続するときに使用するログインユーザ名を指定します。

    admin

    パスワード

    データベースへ接続するときに使用するパスワードを指定します。

    admin(画面上の表示は「****」)

    [データベースコネクション]の入力フィールドの値は,SQL文をデバッグするときにだけに使用されます。DBアダプタ定義支援機能で生成するSQLオペレーション定義ファイルおよびアプリケーション統合属性ファイルには,使用されません。

    注※

    デフォルト値は,[新規データソース]ダイアログ上の[デフォルト]ボタンをクリックした場合の値です。

    初期値は,HCSC簡易セットアップ機能を初期値で実行した場合に構築された環境の値です。

  4. [DBアダプタ設定]の入力フィールドに値を入力します。

    ここでは,DBアダプタ用のSQLオペレーション定義ファイル,およびアプリケーション統合属性ファイルを定義するための設定をします。使用するDB Connectorの設定に沿って指定してください。

    表C‒2 [DBアダプタ設定]の入力フィールドに定義する内容([新規データソース]ダイアログ)

    表示項目

    説明

    デフォルト値

    データベース参照名

    データベース参照名を指定します。

    DB_SERVER1

    データベース種別

    データベース種別を指定します。

    HIRDB

    リソースアダプタ名

    DB Connectorのプロパティ定義(display-name)に指定したリソースアダプタの名称を指定します。

    リソースアダプタ名がドロップダウンリストから選択できない場合は,直接値を入力してください。

    DBConnector_HiRDB_Type4_CP

    インスタンスの最大値

    DBアダプタのインスタンスの最大数を指定します。

    無制限の場合は,0を指定します。

    0

    インスタンスの最小値

    DBアダプタのインスタンスの最小数を指定します。

    1

    DB Connector の共有

    DBアダプタが参照するDB Connectorを共有するかどうかを指定します。

    Shareable

    検索結果出力最大件数

    SELECTで検索した結果の最大出力件数を指定します。

    検索結果が指定値より大きい場合は,指定値までの件数が表示されます。

    (例)

    「1000」を指定した場合は,最大1,000レコードまでの結果を表示します。

    1000

    実行する SQL 文の最大個数

    1回のサービス部品実行要求で複数のSQL文を実行する場合,実行するSQL文の最大個数を指定します。

    1024

    注※

    デフォルト値は,[新規データソース]ダイアログ上の[デフォルト]ボタンをクリックした場合の値です。

    初期値は,HCSC簡易セットアップ機能を初期値で実行した場合に構築された環境の値です。

    注意事項

    DBアダプタ設定で,DBMSとしてHiRDBを使用する場合,データベース種別とリソースアダプタ名が次の組み合わせになるように設定してください。

    • データベース種別としてHIRDBを使用する場合,リソースアダプタ名にはDBConnector_DABJ_CPまたはDBConnector_DABJ_XAを設定してください。

    • データベース種別としてHIRDB-TYPE4を使用する場合,リソースアダプタ名にはDBConnector_HiRDB_Type4_CPまたはDBConnector_HiRDB_Type4_XAを設定してください。

  5. [OK]ボタンをクリックします。

    設定した内容が登録されます。

(b) 本番環境用のデータベースをデバッグに使用する場合

デバッグ用のデータベースを使用しない場合の設定方法を次に示します。

  1. Eclipse上でDBアダプタの定義ファイルを開きます。

    DBアダプタ開発支援画面が表示されます。

  2. [コネクション]タブにある[DataSources]を右クリックし,[新規データソース]を選択します。

    [新規データソース]ダイアログが表示されます。

  3. [データベースコネクション]の[データベースなし]チェックボックスをチェックします。

  4. [DBアダプタ設定]に本番環境用のデータベースの設定内容を入力します。

  5. [OK]ボタンをクリックします。

    設定した内容が登録されます。

(5) SQL文の作成

DBアダプタ上で実行するSQL文を定義します。

  1. Eclipse上でDBアダプタの定義ファイルを開きます。

    DBアダプタ開発支援画面が表示されます。

  2. [データソース]プルダウンリストから,使用するデータソースを選択します。

    [図データ]

  3. [オペレーション]プルダウンリストの横の[追加]ボタンをクリックします。

    追加するオペレーションの名称を定義するダイアログが表示されます。

    [図データ]

  4. 追加するオペレーション名を入力し,[OK]ボタンをクリックします。

    1つのDBアダプタに複数のSQLを定義したい場合は,オペレーションを呼び出すSQLごとに定義します。

  5. SQL文の入力フィールドに実行するSQL文を定義します。

    引数要素の定義方法については,「●SQLオペレーション定義ファイルの形式」を参照してください。

注意事項
  • 各オペレーションに記述できるSQLは1つだけです。

  • ワイルドカード(*)は使用できません。SELECTで検索するカラム名は,すべて記述してください。

  • SQL文の最後にセミコロンは不要です。

(6) SQLのデバッグ

定義したSQLのデバッグを実施します。SQL文中の引数要素については,値を代入して実行します。なお,SQLのデバッグは,本番環境用のデータベースとは別に,デバッグ用のデータベースを用意している場合にだけ実施できます。

次の手順でSQLのデバッグを実施してください。

  1. デバッグ用のテーブルを作成します。

    事前にデバッグ用のデータベース上にデバッグで使用するテーブルを作成します。定義したSQLに沿ってテーブルを作成してください。

    作成例

    テーブル名:PURCHASEMASTERTABLE

    テーブル構成:

    ORDERID

    (VARCHAR)

    ORDERNAME

    (VARCHAR)

    PRODUCTCODE

    (VARCHAR)

    PRODUCTNAME

    (VARCHAR)

    NUMBER

    (INTEGER)

    01

    AA001

    0A1

    NPW

    4

    02

    AA002

    0A1

    NPW

    3

    03

    AA003

    0E1

    NPW

    3

    04

    BB001

    0E1

    NPW

    4

    05

    BB002

    0B1

    NPW

    5

  2. Eclipse上でDBアダプタの定義ファイルを開きます。

    DBアダプタ開発支援画面が表示されます。

    [図データ]

  3. 引数要素を抽出したいSQL文を[オペレーション]プルダウンリストから選択した状態で,ツールバーの[変数の生成]アイコン([図データ][変数]タブに反映されます。

    [図データ]

  4. [変数]タブの[値]列に,デバッグで使用したい値を入力します。

    設定例

    引数要素名

    DBa_inf

    data_type

    KEYCOLUMN

    column

    ORDERID

    ENZANSHI

    preset

    =

    DATA

    data

    VARCHAR

    '01'

    なお,デバッグ用のデータベースを用意していない場合は,以降の手順を実施できません。[実行するSQL文の表示]アイコン([図データ])をクリックすると,Messagesビューに引数要素に値を代入した状態のSQLが表示されるので,この画面でSQL文が正しいかどうかを確認してください。

    [図データ]

  5. [コネクション]タブに表示されている,デバッグに使用するデータソースを右クリックし,[接続]を選択します。

    設定した内容でデータベースに接続します。接続が成功すると,Messagesビューに,「INFO: データソース <データソース名> の接続に成功しました。」のメッセージが表示されます。

    なお,SQL文が複数定義されている場合は,SQL文ごとに手順3〜手順5を繰り返してください。

  6. ツールバーにある[SQLの実行]アイコン([図データ])をクリックします。

    SQLの実行に失敗した場合は,Messagesビューにエラーメッセージが表示されます。メッセージに従ってSQLおよび引数要素名を修正してください。

    なお,SQLの実行結果は,[実行結果]タブに表示されます。

    [図データ]

(7) 本番環境用のデータベースの設定

DBアダプタの定義ファイルのデータソースの設定を,本番環境用のデータベースの情報に変更します。

注意事項

本番環境用のデータベースの情報に変更する前に,デバッグで使用したデータリソースを切断しておいてください。データソースの切断方法は,次のとおりです。

  1. デバッグで使用したDBアダプタの定義ファイルをEclipse上で開きます。

  2. [コネクション]タブで,デバッグに使用したデータソースを右クリックし,[切断]を選択します。

次の手順でデータベースの情報を変更します。

  1. デバッグで使用したDBアダプタの定義ファイルをEclipse上で開きます。

    DBアダプタ開発支援画面が表示されます。

  2. [コネクション]タブに表示されているデータソースを右クリックして,[データソース編集]を選択します。

    [データソース編集]ダイアログが表示されます。

  3. [DBアダプタ設定]の入力フィールドに本番環境用のデータベースの情報を入力します。

    [図データ]

  4. [OK]ボタンをクリックします。

    設定した内容が登録されます。

(8) 本番環境用のDBアダプタの定義ファイルの生成

本番環境で使用するDBアダプタの定義ファイルの生成方法を次に示します。

  1. Eclipse上で,デバッグ用のDBアダプタの定義ファイルを開きます。

    DBアダプタ開発支援画面が表示されます。

  2. [データソース]プルダウンリストから,本番環境用のDBアダプタの定義ファイルに反映させたいデータソースを選択します。

    [図データ]

  3. ツールバーの[DBアダプタ定義生成]アイコン([図データ])をクリックします。

    [DBアダプタ定義生成]ダイアログが表示されます。

    [図データ]

  4. [出力先ディレクトリ]に,本番環境用のDBアダプタの定義ファイルを出力するディレクトリを指定します。

    [...]ボタンをクリックすると,[出力先ディレクトリ]に次のパスが選択されます。

    <Eclipseのプロジェクトのパス>\<DBアダプタの定義ファイル名>_Output

    注意事項
    • 出力先ディレクトリにEclipseのプロジェクトのパスを指定した場合は,Eclipseの機能を使って,DBアダプタの定義ファイルおよび生成結果を一括でインポートおよびエクスポートできます。

    • 出力先ディレクトリ名は,絶対パスをUTF-8で変換したときに155バイト以内になるように指定してください。

  5. 生成したいオペレーションのチェックボックスにチェックします。

    1つのDBアダプタに複数のSQL文を定義した場合は,SQLの定義に必要なオペレーションをすべて選択してください。

  6. [終了]ボタンをクリックします。

    指定した出力先ディレクトリに,本番環境で使用するDBアダプタの定義ファイルが出力されます。

    なお,出力先ディレクトリにEclipseのプロジェクトのパスを指定している場合は,DBアダプタの定義ファイルを生成したあとに,出力先となるEclipseのプロジェクトを更新してください。Eclipseのパッケージ・エクスプローラー上に,生成されたDBアダプタの定義ファイルが表示されます。

    生成されるファイルの一覧を次の表に示します。

    表C‒3 生成されるファイルの一覧

    ファイルの種別

    ファイル名

    数量

    備考

    SQLオペレーション定義ファイル

    csa_sql_dbadapter.xml

    1

    アプリケーション統合属性ファイル

    cscadapter_property.xml

    1

    要求電文の標準電文※1

    <オペレーション名>_Input.xsd

    0〜N※2

    <オペレーション名>は,指定したオペレーション名になります。

    応答電文の標準電文※3

    <オペレーション名>_Output.xsd

    0〜N※2

    <オペレーション名>は,指定したオペレーション名になります。

    要求電文および応答電文のサービス部品電文

    ServiceMessageFile.xsd

    1

    要求電文および応答電文のサービス部品電文には,同じファイルを使用してください。

    (凡例)

    −:該当する説明はありません。

    注※1

    SQL文中に引数要素がない場合,要求電文の標準電文は生成されません。サービス部品電文だけを使用してください。引数要素がない状態でDBアダプタを呼び出す場合は,Java呼出アクティビティなどで要求電文を生成して,DBアダプタを呼び出します。

    設定例

     オペレーション名:select_op

     実行するSQL文:SELECT ORDERID FROM PURCHASEMASTERTABLE

     Java呼出アクティビティなどで生成する電文:

     <?xml version="1.0" encoding="UTF-8"?>

     <DBadapter>

       <DBA_MULTI_SQL>

         <select_op>

           <DBA_IN_DATA/>

         </select_op>

       </DBA_MULTI_SQL>

     </DBadapter>

    注※2

    本番環境用のDBアダプタの定義ファイルを生成したときに指定したオペレーションの数になります。

    注※3

    応答電文の標準電文は,SQL命令がSELECTの場合にだけ出力されます。INSERTの場合は,応答電文のサービス部品電文フォーマットを使用してください。

(9) 本番環境用のDBアダプタの設定

生成した本番環境用のDBアダプタの定義ファイルを使用して,DBアダプタを作成します。

(a) DBアダプタの作成

Eclipseに組み込まれているHCSCTEを利用して,DBアダプタを新規に定義します。DBアダプタを新規に定義する方法については,「3.2.5 DBアダプタを新規に追加する」を参照してください。

また,「(8) 本番環境用のDBアダプタの定義ファイルの生成」で指定したオペレーションを,作成したDBアダプタに追加してください。複数のオペレーションを指定した場合は,指定したオペレーションの数だけ追加してください。

(b) SQLオペレーション定義ファイルとアプリケーション統合属性ファイルの設定

作成したDBアダプタのサービスアダプタ定義(詳細)画面を表示します。[独自定義ファイル]に次のファイルを追加してください。

  • csa_sql_dbadapter.xml(生成したSQLオペレーション定義ファイル)

  • cscadapter_property.xml(生成したアプリケーション統合属性ファイル)

    図C‒6 DBアダプタに追加する独自定義ファイル

    [図データ]

(c) 要求電文と応答電文の設定

作成したDBアダプタのサービスアダプタ定義(基本)画面を表示します。次の内容を設定してください。

オペレーション名の設定
  • [サービス部品制御情報]の[オペレーション]

    オペレーション名をドロップダウンリストから選択します。

オペレーションに対応する要求電文の設定
  • [要求電文]の[標準]の[電文フォーマット]

    「<オペレーション名>_Input.xsd」を指定します。

  • [要求電文]の[サービス部品]の[電文フォーマット]

    「ServiceMessageFile.xsd」を指定します。

オペレーションに対応する応答電文の設定
  • [応答電文]の[標準]の[電文フォーマット]

    「<オペレーション名>_Output.xsd」を指定します。ただし,指定したオペレーションに含まれるSQL命令がSELECTの場合にだけ指定します。INSERTの場合は不要です。

  • [応答電文]の[サービス部品]の[電文フォーマット]

    「ServiceMessageFile.xsd」を指定します。

設定例を次の図に示します。

図C‒7 要求電文と応答電文の設定例

[図データ]

(d) データ変換(マッピング)の定義

データ変換するときの変換元と変換先のマッピングを定義します。

  • 要求電文のデータ変換(マッピング)の定義

    要求電文の標準電文およびサービス部品電文のデータ変換には,自動マッピング機能を使用できます。自動マッピング機能の詳細については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「7.4 マッピングする」を参照してください。

  • 応答電文のデータ変換(マッピング)の定義

    応答電文の標準電文およびサービス部品電文のデータ変換は,手動でマッピングする必要があります。

    SELECTの検索結果を標準電文に変換する方法については,「3.3.5(5) データ変換」を参照してください。

    INSERTの場合は,応答電文の標準電文フォーマットファイルが出力されないため,マッピングの必要はありません。INSERTの実行結果は,サービス部品側と同じ電文フォーマットのXML電文に格納されます。