10.5.7 cscgenbinaryコマンドの使用方法
cscgenbinaryコマンドでは,ビジネスプロセス,サービスアダプタやデータ変換機能のエミュレーションに使用する,テスト用の電文を作成できます。
例えば,次のような場合に利用できます。
-
ビジネスプロセスを動かしたいが,要求電文がない場合
-
バイナリフォーマット定義が作成済みで,サービスのエミュレーション機能を使用したいが,応答電文がない場合
-
データ変換機能のエミュレーションを使用したいが,入力電文がない場合
cscgenbinaryコマンドの実行の流れを次に示します。
- 〈この項の構成〉
(1) cscgenbinaryコマンドの実行手順
cscgenbinaryコマンドの実行手順を次に示します。
(a) 実行手順1
-
バイナリフォーマット定義ファイル(.fdx)を用意します。
-
必要に応じて,バイナリ電文生成定義ファイルに要素値を定義します。
バイナリ電文生成定義ファイルには,設定を変更したい要素と値を設定します。デフォルトの要素値を使用する場合はこのファイルは作成不要です。
例:/root/complex/string=abc
バイナリ電文生成定義ファイルの作成方法については,マニュアル「サービスプラットフォーム リファレンス」の「3.19.4 バイナリ電文生成定義ファイル」を参照してください。
-
cscgenbinaryコマンドを実行します。
コマンド引数には,手順1と手順2で作成したファイルのほか,ファイルの出力先パスと出力形式を指定します。出力形式としてバイナリファイルを指定すれば,バイナリファイルが出力されます。
これによって,バイナリ電文がファイルに出力されます。
(b) 実行手順2:要素の構成を変更する場合
要素値のほかに要素の構成(繰り返し回数など)を変更したい場合は,バイナリ電文をいったんXML形式で出力し,内容を編集してバイナリファイルに出力する方法があります。
-
バイナリフォーマット定義ファイル(.fdx)を用意します。
-
必要に応じて,バイナリ電文生成定義ファイルに要素値を定義します。
-
cscgenbinaryコマンドを実行します。
ここでは,コマンド引数に出力形式としてXMLファイルを指定します。これによって,バイナリフォーマット定義のツリー情報がXMLファイルで出力されます。
-
出力したXMLファイルを編集します。
例えば,繰り返し要素を追加する場合,次の下線部分を修正します。
- XMLファイルの内容(修正前)
-
<root>
<complex>
<string/>
…
- XMLファイルの内容(修正後)
-
<root>
<complex>
<string>abc</string>
<string>def</string>
…
-
cscgenbinaryコマンドを再実行します。
コマンド引数には出力形式としてバイナリファイルを指定します。
これによって,バイナリ電文がファイルに出力されます。
(2) DOMの生成規則
バイナリ電文とXML電文の生成処理は,次の図のようにDOMを介して実行されます。
DOMはバイナリフォーマット定義ファイルのツリー情報を基に生成されます。単純内容要素には子要素としてテキストノードが追加され,テキスト値が設定されます。単純内容要素のDOMの生成例を次の図に示します。
DOMからバイト列への処理では,バイナリフォーマット定義ファイルの定義内容に基づいてDOMの各要素値をバイト列へ変換します。変換の概要については,マニュアル「サービスプラットフォーム 解説」の「付録B.2 データ変換処理の概要」を参照してください。
(a) 複合内容要素
複合内容要素のDOMの生成規則について説明します。
- 逐次構成
-
逐次構成の場合は,バイナリフォーマット定義ファイルのツリー構造に従って要素を生成します。
- 選択構成
-
選択構成の場合は,[選択種別]で選択したラジオボタンによって次のように生成規則が異なります。
- [選択条件ノード]を選択した場合
-
選択条件ノードで設定した条件値に合致する要素が存在する場合は,その要素を生成します。
例えば,次の例ではバイナリ電文生成定義ファイルでcondition_node要素(選択条件ノード)に「2」を設定しています。この場合,choice要素の構成要素であるint要素の条件値と一致するため,int要素が生成されます。
条件値に一致する要素がない場合は,先頭に定義されている要素を生成します。そのとき選択条件ノードのテキストノードには,先頭に定義されている要素の選択条件値を設定します。
選択条件値が複数指定されている場合は,生成する要素を次のように判定します。複数条件指定については,マニュアル「サービスプラットフォーム リファレンス」の「1.3.5 条件値設定ダイアログ」にある,[複数条件指定]の説明を参照してください。
-
先頭の構成要素に設定されている1番目の条件値から順に選択条件ノード値(バイナリ電文生成定義ファイルで設定した値)と比較します。
-
条件値に一致する要素がある場合は,その要素を生成します。
-
条件値に一致する要素がない場合は,先頭に定義されている要素を生成します。
先頭要素の条件値が複数指定されていた場合は,複数指定された条件値の中で先頭にある値を選択条件ノードのテキストノードに設定します。
なお,選択構成では,選択条件値が空の要素(デフォルトの要素)を1つだけ定義できます。この要素は,どの条件値にも一致しなかった場合に生成されます。
次に示す例では,バイナリ電文生成定義ファイルで設定された選択条件ノード値「3」に一致する選択条件値を持つ要素が存在しないため,デフォルトの要素であるint要素が生成されます。
-
- [構成要素の開始セパレータ]を選択した場合
-
構成要素の先頭に定義されている要素を生成します。
(b) 単純内容要素
単純内容要素の場合,子要素にテキストノードを追加します。生成内容は「(2) DOMの生成規則」の図「DOMの生成例(単純内容要素の場合)」を参照してください。
テキストノードの設定値はバイナリ電文生成定義ファイルから読み込みます。バイナリ電文生成定義ファイルに定義がない要素は,デフォルト値が使用されます。各要素のデフォルト値については,マニュアル「サービスプラットフォーム リファレンス」の「3.19.4 バイナリ電文生成定義ファイル」の表を参照してください。
(c) 出現回数に関する生成規則
[構成要素]ダイアログの[出現回数]の選択に応じた生成規則を次に示します。
[出現回数]の選択 |
生成規則 |
---|---|
[固定]ラジオボタン |
指定された出現回数の分だけ要素を生成します。 |
[範囲指定]ラジオボタン |
指定された最小出現回数の分だけ要素を生成します。 |
[データの終端まで]ラジオボタン |
要素を1つだけ生成します。データ省略可の場合も同様です。 |
[出現回数ノード]ラジオボタン |
要素を1つだけ生成します。 |
[範囲指定]を選択した場合の生成例を次の図に示します。
(d) ノード指定に関する生成規則
ノード指定が定義されている場合の生成規則を次に示します。
-
サイズノード・出現回数ノード
サイズノードおよび出現回数ノードは,空要素として生成され,バイナリデータ生成時(DOM→バイナリ)にノード指定元要素のデータサイズや要素数を基に要素値が自動で設定されます。
そのため,バイナリ電文生成定義ファイルやXMLファイルで要素値を設定しないでください。
-
選択条件ノード
「(2)(a) 複合内容要素」の「選択構成」の「[選択条件ノード]を選択した場合」と同じです。
- 注意事項
-
サイズノード,出現回数ノード,選択条件ノードが正しく生成されるよう定義してください。選択構成の構成要素内に上記のノードを定義すると,正しく生成されないでバイナリ電文の生成時にエラーとなる場合があります。
(e) 空データとNullデータを区別するための設定
バイナリフォーマット定義ファイルでCSV形式の空データとNullデータを区別する設定を有効にしている場合,csctransformコマンドなどのデータ変換処理ではnulldata属性が付与されますが,cscgenbinaryコマンドの実行では付与されません。そのため,「(1)(b) 実行手順2:要素の構成を変更する場合」の手順4.に従って,nulldata属性を付与してください。
CSV形式の空データとNullデータを区別するための設定については,「付録Q.2 空データとNullデータを区別するための設定」を参照してください。