Cosminexus ビジネスプロセス管理/エンタープライズサービスバス V8 サービスプラットフォーム 開発ガイド
DBアダプタ電文のXMLフォーマット定義ファイルを作成するには,あらかじめSQLオペレーション定義ファイルを作成してから,csamkxmlsコマンドで生成します。
SQLオペレーション定義ファイルは,実行環境でDBアダプタを介してアクセスするデータベースの情報や,SQLの実行形式を定義するファイルです。DBアダプタ用のXMLフォーマット定義ファイルを作成するときの基となるファイルです。
SQLオペレーション定義ファイルとDBアダプタ用のXMLフォーマット定義ファイルの作成方法を次に説明します。
SQLオペレーション定義ファイルは,テキストエディタなどを使用してXML文書形式で作成します。XML文書で使用できない「<」,「>」,「&」などの文字を使用する場合,エスケープするか,CDATAセクションを利用する必要があります。
要素,属性およびテキストデータは,W3CのXMLの仕様に従って指定します。
なお,XML名前空間は使用できません。
作成するXML文書の詳細を説明します。
SQLオペレーション定義ファイルのファイル名は,次の形式で指定します。
csa_sql_<任意の名称>.xml |
SQLオペレーション定義ファイルの構造を次に示します。
図4-3 SQLオペレーション定義ファイルの構造
SQLオペレーション定義ファイルの形式を次に示します。なお,斜体の文字は可変値を表します。
<?xml version="XMLのバージョン" encoding="文字コード"?>
<DBadapter_SQL_OPERATION>
<DATABASE_DATA>
<DB_NAME>データベース参照名</DB_NAME>
<DB_TYPE>データベース種別</DB_TYPE>
</DATABASE_DATA>
<SQL_DATA>
<SQL識別子 out_maxOccurs="検索結果出力最大件数">
SQL命令 <引数要素名 dba_inf="引数の種別" data_type="データ型"/>
</SQL識別子>
:
</SQL_DATA>
<MULTI_SQL_DATA>
<MAX_SQL_NO>1回のサービス部品実行要求で実行するSQL文の最大個数</MAX_SQL_NO>
</MULTI_SQL_DATA>
</DBadapter_SQL_OPERATION>
|
SQLオペレーション定義ファイルで定義する内容について次に説明します。
<?xml version="XMLのバージョン" encoding="文字コード"?> |
<DBadapter_SQL_OPERATION>
:
</DBadapter_SQL_OPERATION>
|
<DATABASE_DATA>
データベース参照名
データベース種別
</DATABASE_DATA>
|
<DB_NAME>データベース参照名</DB_NAME> |
<DB_TYPE>データベース種別</DB_TYPE> |
<SQL_DATA>
SQL識別子
SQL実行文
</SQL_DATA>
|
<SQL識別子 out_maxOccurs="検索結果出力最大件数">
SQL実行文
</SQL識別子>
:
|
SQL命令 <引数要素名 dba_inf="引数の種別" data_type="データ型"/> |
表4-1 SELECTで検索できるデータ型(HiRDBの場合)
| HiRDBのデータ型 | 検索の可否 | |
|---|---|---|
| DBPSV※の場合 | HiRDB Type4 JDBC Driverの場合 | |
| INT〔EGER〕 | ○ | ○ |
| SMALLINT | ○ | ○ |
| 〔LARGE〕 DEC〔IMAL〕 NUMERIC |
○ | ○ |
| FLOAT DOUBLE PRECISION |
○ | ○ |
| SMALLFLT REAL |
○ | ○ |
| CHAR〔ACTER〕 | ○ | ○ |
| VARCHAR CHAR〔ACTER〕VARYING |
○ | ○ |
| NCHAR NATIONAL CHAR |
○ | ○ |
| NVARCHAR NATIONAL CHAR〔ACTER〕VARYING NCHAR VARYING |
○ | ○ |
| MCHAR | ○ | ○ |
| MVARCHAR | ○ | ○ |
| DATE | ○ | ○ |
| TIME | ○ | ○ |
| TIMESTAMP | ○ | ○ |
| INTERVAL YEAR TO DAY | − | − |
| INTERVAL HOUR TO SECOND | − | − |
| BLOB BINARY LARGE OBJECT |
○ | ○ |
| BINARY | ○ | ○ |
| BOOLEAN | − | − |
表4-2 SELECTで検索できるデータ型(Oracleの場合)
| Oracleのデータ型 | 検索の可否 | |
|---|---|---|
| DBPSV※1の場合 | Oracle JDBC Thin Driverの場合 | |
| VARCHAR2 | ○ | ○ |
| NVARCHAR2 | ○ | ○ |
| NUMBER | ○ | ○ |
| LONG | ○ | ○ |
| DATE | ○ | ○※2 |
| BINARY_FLOAT※3 | − | − |
| BINARY_DOUBLE※3 | − | − |
| TIMESTAMP | − | − |
| TIMESTAMP WITH TIME ZONE | − | − |
| TIMESTAMP WITH LOCAL TIME ZONE | − | − |
| INTERVAL YEAR TO MONTH | − | − |
| INTERVAL DAY TO SECOND | − | − |
| RAW | − | ○ |
| LONG RAW | − | ○ |
| ROWID | ○ | ○ |
| UROWID | −※4 | − |
| CHAR | ○ | ○ |
| NCHAR | ○ | ○ |
| CLOB | ○ | ○ |
| NCLOB | ○ | ○ |
| BLOB | − | ○ |
| BFILE | − | − |
| ユーザ定義型(オブジェクト型) | − | − |
| ユーザ定義型(REFデータ型) | − | − |
| ユーザ定義型(VARRAY) | − | − |
| ユーザ定義型(ネストした表) | − | − |
SELECT TO_CHAR(c_ts) FROM 表名
表4-3 data_typeに指定できるデータ型(HiRDBの場合)
| HiRDBのデータ型 | data_typeに指定できるデータ型 | 引数として利用するデータの変換先のデータ型およびクラス |
|---|---|---|
| INT〔EGER〕 | INTEGER | int |
| SMALLINT | SMALLINT | short |
| 〔LARGE〕 DEC〔IMAL〕 NUMERIC |
DECIMAL | java.math.BigDecimal |
| FLOAT DOUBLE PRECISION |
FLOAT | double |
| SMALLFLT REAL |
REAL | float |
| CHAR〔ACTER〕 | CHAR | java.lang.String |
| NCHAR NATIONAL CHAR |
||
| MCHAR | ||
| VARCHAR CHAR〔ACTER〕VARYING |
VARCHAR | java.lang.String |
| NVARCHAR NATIONAL CHAR〔ACTER〕VARYING NCHAR VARYING |
||
| MVARCHAR | ||
| DATE | DATE | java.sql.Date |
| TIME | TIME | java.sql.Time |
| TIMESTAMP | TIMESTAMP | java.sql.Timestamp |
| BLOB BINARY LARGE OBJECT |
LONGVARBINARY | byte[] |
| BINARY | LONGVARBINARY | byte[] |
注 〔 〕で囲まれた部分は省略できることを意味します。
表4-4 data_typeに指定できるデータ型(Oracleの場合)
| Oracleのデータ型 | data_typeに指定できるデータ型 | 引数として利用するデータの変換先のデータ型およびクラス | |
|---|---|---|---|
| DBPSV※1の場合 | Oracle JDBC Thin Driverの場合 | ||
| LONG | LONGVARCHAR | LONGVARCHAR | java.io.Reader |
| NUMBER | NUMERIC | NUMERIC | java.math.BigDecimal |
| VARCHAR2 | VARCHAR | VARCHAR | java.lang.String |
| NVARCHAR2 | VARCHAR | − | |
| ROWID | CHAR | CHAR | |
| CHAR | CHAR | CHAR | |
| NCHAR | CHAR | − | |
| CLOB | CLOB | CLOB※2 |
|
| NCLOB | CLOB | − | |
| DATE | DATE※3 | DATE※3 | java.sql.Date |
| TIME※4 | TIME※4 | java.sql.Time | |
| TIMESTAMP※5 | TIMESTAMP※5 | java.sql.Timestamp | |
| RAW | − | VARBINARY | byte[] |
| LONG RAW | − | LONGVARBINARY | byte[] |
| BLOB | − | BLOB | byte[] |
<MULTI_SQL_DATA>
実行するSQL文の最大個数
</MULTI_SQL_DATA>
|
<MAX_SQL_NO>1回のサービス部品実行要求で実行するSQL文の最大個数</MAX_SQL_NO> |
SQLオペレーション定義ファイルの作成例を次に示します。
| 受注番号 (INTEGER) |
得意先コード(CHAR) | 商品コード (CHAR) |
受注個数 (INTEGER) |
|---|---|---|---|
| 1 | AA001 | 0001 | 5 |
| 2 | AB002 | 0001 | 1 |
| 3 | AA001 | 0102 | 3 |
| 4 | XA005 | 0103 | 1 |
| 5 | AA001 | 0105 | 1 |
OPERATION1:SELECT * FROM DBA.受注表 WHERE <val1> <val2> <val3> OPERATION2:SELECT <val1> SUM(<val2>) FROM DBA.受注表 GROUP BY <val3> OPERATION3:INSERT INTO DBA.受注表 VALUES(<val1>,<val2>,<val3>,<val4>) |
<?xml version="1.0" encoding="UTF-8" ?> <DBadapter_SQL_OPERATION> <DATABASE_DATA> <DB_NAME>DB_SERVER1</DB_NAME> <DB_TYPE>HIRDB</DB_TYPE> </DATABASE_DATA> <SQL_DATA> <OPERATION1> SELECT * FROM DBA.受注表 WHERE <val1 dba_inf="column"/> <val2 dba_inf="preset"/> <val3 dba_inf="data" data_type="CHAR"/> </OPERATION1> <OPERATION2> SELECT <val1 dba_inf="column"/> SUM(<val2 dba_inf="column"/>) FROM DBA.受注表 GROUP BY <val3 dba_inf="column"/> </OPERATION2> <OPERATION3> INSERT INTO DBA.受注表 VALUES(<val1 dba_inf="data" data_type="INTEGER" />, <val2 dba_inf="data" data_type="CHAR"/>, <val3 dba_inf="data" data_type="CHAR"/>, <val4 dba_inf="data" data_type="INTEGER"/>) </OPERATION3> </SQL_DATA> </DBadapter_SQL_OPERATION> |
<?xml version="1.0" encoding="UTF-8" ?> <DBadapter_SQL_OPERATION> <DATABASE_DATA> <DB_NAME>DB_SERVER1</DB_NAME> <DB_TYPE>HIRDB</DB_TYPE> </DATABASE_DATA> <SQL_DATA> <OPERATION1> SELECT * FROM DBA.受注表 WHERE <val1 dba_inf="column"/> <val2 dba_inf="preset"/> <val3 dba_inf="data" data_type="CHAR"/> </OPERATION1> <OPERATION2> SELECT <val1 dba_inf="column"/> SUM(<val2 dba_inf="column"/>) FROM DBA.受注表 GROUP BY <val3 dba_inf="column"/> </OPERATION2> <OPERATION3> INSERT INTO DBA.受注表 VALUES(<val1 dba_inf="data" data_type="INTEGER" />, <val2 dba_inf="data" data_type="CHAR"/>, <val3 dba_inf="data" data_type="CHAR"/>, <val4 dba_inf="data" data_type="INTEGER"/>) </OPERATION3> </SQL_DATA> <MULTI_SQL_DATA> <MAX_SQL_NO>10</MAX_SQL_NO> </MULTI_SQL_DATA> </DBadapter_SQL_OPERATION> |
DBアダプタ用のXMLフォーマット定義ファイルを作成するには,「(1) SQLオペレーション定義ファイルの作成」で作成したSQLオペレーション定義ファイルの名称を-oオプションに指定してcsamkxmlsコマンドを実行します。
csamkxmlsコマンドの実行形式を次に示します。
<Cosminexusのインストールディレクトリ>\CSC\bin\csamkxmls -o <SQLオペレーション定義ファイルの名称> -x <DBアダプタ用のXMLフォーマット定義ファイルの名称> |
csamkxmlsコマンドの詳細については,マニュアル「Cosminexus サービスプラットフォーム リファレンス」の「csamkxmls(DBアダプタ用のXMLフォーマット定義ファイルの生成)」を参照してください。
作成されるXMLフォーマット定義ファイルは,次のようになります。
図4-4 (例1)SELECT文を使用し,WHRER句の値を引数化したい場合
図4-5 (例2)SELECT文を使用し,取得する列名も引数化したい場合
図4-6 (例3)SELECT文を使用し,WHRER句の列名や式も引数化したい場合
All Rights Reserved. Copyright (C) 2008, 2011, Hitachi, Ltd.