6.5.7 エミュレート設定情報定義ファイル
(1) 形式
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE HCSCAutoEmulate SYSTEM "debug_auto_emulate_list_file_1_0.dtd"> <HCSCAutoEmulate> <viewState> <emulate condition="(条件式)" operation="(オペレーション名)" service="(サービス名)" type="(応答種別)" valid="(エミュレーションの実行有無)" xmlfile="(応答電文ファイルのパス)"/> <emulate condition="(条件式)" operation="(オペレーション名)" service="(サービス名)" type="(応答種別)" valid="(エミュレーションの実行有無)" xmlfile="(応答電文ファイルのパス)"/> : </viewState> </HCSCAutoEmulate>
(2) 機能
エミュレーション機能の設定情報をXML形式で設定します。サービスのエミュレーション機能については,マニュアル「サービスプラットフォーム 解説」の「4.13 サービスのエミュレーション機能の概要」を参照してください。
エミュレート設定情報定義ファイルは,リクエストごとに次に示すタイミングで読み込んで解析されます。
-
ビジネスプロセス内で最初に定義されているサービス呼出アクティビティの実行時
-
応答アクティビティ後の最初に定義されているサービス呼出アクティビティの実行時
-
待機アクティビティ後に最初に定義されているサービス呼出アクティビティの実行時
また,プロセスインスタンスの再実行時には,再実行の範囲内で最初に定義されているサービス呼出アクティビティ実行時に読み込んで解析されます。
ファイル内のxmlfile属性に設定した応答電文ファイルも,リクエストのたびに読み込まれます。そのため,エミュレート設定情報定義ファイルや応答電文ファイルの内容を変更すると,変更内容は次回のリクエストで反映されます。なお,リクエスト実行中にこれらのファイルの内容を変更した場合の動作は保証しません。
- 注意事項
-
-
開発環境のビジネスプロセスのデバッグ機能で応答電文をエミュレーションした場合,該当するサービス呼出アクティビティでは,エミュレート設定情報定義ファイルの設定は有効となりません。
-
エミュレーション実行時はサービスアダプタを呼び出さないため,サービスアダプタで実行するサービスアダプタ固有の機能や,ビジネスプロセスのサービス呼出アクティビティの機能の一部は使用できません。
-
エミュレート設定情報定義ファイルは次の手順で作成し,実行環境に反映してください。
-
次のテンプレートファイルを任意のディレクトリにコピーします。
<サービスプラットフォームのインストールディレクトリ>\CSC\config\msg\templates\service_emulate_info.aels
必ずテンプレートファイルを基に定義してください。それ以外の方法で作成した場合の動作は保証しません。
-
要素の記述を編集して,拡張子「.aels」の任意のファイル名で保存します。
拡張子が「.aels」でない場合は,cscsvconfigコマンド(HCSCサーバランタイムの定義)実行時にエラーとなります。
(3) 設定できる要素
<?xml version="1.0" encoding="UTF-8"?>
このファイルがXMLファイルであることを示すXML宣言です。
<!DOCTYPE HCSCAutoEmulate SYSTEM "debug_auto_emulate_list_file_1_0.dtd">
DTDサブセットを示す要素型定義宣言です。
<HCSCAutoEmulate>
エミュレート設定情報定義のルート要素です。
<viewState>
エミュレート設定情報定義のルート要素です。
<emulate condition="(条件式)" operation="(オペレーション名)" service="(サービス名)" type="(応答種別)" valid="(エミュレーションの実行有無)" xmlfile="(応答電文ファイルのパス)"/>
エミュレート設定情報を定義します。emulate要素は複数定義することもできます。
次の条件を満たす複数のemulate要素が定義された場合,emulate要素は出現順に有効となります。
-
condition属性に設定された条件式の評価結果が「真」
-
service属性とoperation属性の値が同じ
-
valid属性がtrue
emulate要素の優先順位の詳細については,「(4) エミュレーション時に使用する定義の優先順位」を参照してください。
emulate要素の指定内容を次に示します。
- condition="(条件式)"
-
サービスをエミュレーションする条件式をstring型のXPathで入力します。
条件式は,要求電文の変数種別が「XML」または「non-XML」の場合だけ設定できます。「any」の場合は動作を保証しません。
条件式は,valid=true(エミュレーション機能が有効)が設定されている場合に評価されます。
条件式の指定に関する注意事項を次に示します。
-
条件式を使用しない場合は空文字列を指定してください。条件式を使用しない場合,条件式の評価結果は真とみなされます。
-
条件式には,bpws:getVariablePropertyなどの拡張関数や,変数名を直接指定して情報を取得する方法でXPathを指定しないでください。指定した場合の動作は保証しません。
-
条件式にエスケープ文字「< > & " '」を含める場合は,実体参照で指定してください。
-
- operation="(オペレーション名)"
-
サービスアダプタのオペレーション名をstring型で指定します。
- service="(サービス名)"
-
サービスアダプタのサービス名をstring型で指定します。
- type="(応答種別)"
-
応答種別を次のどちらかで指定します。
-
RESPONSE_NORMAL
通常応答の場合に指定します。
応答電文ファイルの内容を応答電文として返します。
-
RESPONSE_FAULT
フォルト応答の場合に指定します。
応答電文ファイルの内容をフォルト電文として返します。
-
- valid="(エミュレーションの実行有無)" 〜<<false>>
-
エミュレーションの実行有無を次のどちらかで指定します。
-
true
エミュレーションを実行します。
-
false
エミュレーションを実行しないでサービスアダプタを呼び出します。
-
- xmlfile="(応答電文ファイルのパス)"
-
エミュレーションする電文が記載された応答電文ファイルのパスをstring型の絶対パスで指定します。
パスの区切り文字は,HCSCサーバがWindows上にある場合は「¥」,UNIX上にある場合は「/」を指定してください。
ファイルパスにエスケープ文字「< > & " '」を含める場合は,実体参照で指定してください。
応答電文にXML形式のデータを指定する場合は,XMLの文字コードがUTF-8である必要があります。
なお,応答電文ファイルにXSLTスタイルシート(ファイル拡張子「.xsl」)を指定すると,要求電文をXSLTスタイルシートで変換した結果を応答電文としてエミュレーションできます。このエミュレーションでの注意点を次に示します。
-
要求電文と応答電文の両方の変数種別がXMLの場合だけ実行できます。両方の変数種別がXMLでない場合,動作は保証しません。
-
変換元(要求電文)を複数指定することはできません。
-
XSLTスタイルシートには,マッピング定義エディタから生成したデータ変換定義ファイルで,かつファイル拡張子が「.xsl」のファイルを指定する必要があります。それ以外のファイルを指定した場合の動作は保証しません。
-
(4) エミュレーション時に使用する定義の優先順位
エミュレーションで使用する定義の優先順位は,エミュレート設定情報定義ファイルのemulate要素の出現順となります。
優先順位は,エミュレート設定情報定義ファイル内で次の条件を満たすemulate要素同士で適用されます。
-
service属性とoperation属性が同一である
-
valid属性がtrueである
次の例では,1番目のemulate要素のvalid属性にfalseが設定されています。そのため,2番目のemulate要素の設定情報がエミュレーションの実行対象となります。
: <viewState> <emulate condition="/root/elm1 = "exec1"" operation="exec" service="TP1Adapter" type="RESPONSE_NORMAL" valid="false" xmlfile="/data/telegram/exec1"/> <emulate condition="/root/elm1 = "exec2"" operation="exec" service="TP1Adapter" type="RESPONSE_NORMAL" valid="true" xmlfile="/data/telegram/exec3"/> <emulate condition="" operation="exec" service="TP1Adapter" type="RESPONSE_NORMAL" valid="true" xmlfile="/data/telegram/exec3"/> </viewState> :
なお,この優先順位は,condition属性に設定された条件式の評価結果が偽であるemulate要素には適用されません。そのため,条件式の評価結果に応じて,エミュレーションする応答電文を変えることができます。
次の例では,一部のemulate要素のcondition属性に条件式を設定しています。条件式では,要求電文のelm1要素の設定値に応じて,エミュレーションの実行対象となる応答電文が変わるよう定義しています。
条件式(XPath)を定義するには,評価する要求電文の要素のパスが必要です。パスは,ビジネスプロセス定義画面の変数一覧から該当する変数を選択し,[表示]ボタンをクリックすることで取得できます。
図中の3つのemulate要素は,service属性とoperation属性の値が同じで,valid属性がtrueです。そのため,condition属性に設定された条件式の評価結果に応じて,有効となるemulate要素が次のように変わります。
-
要求電文の値が「exec1」の場合
1番目のemulate要素が有効となります。
-
要求電文の値が「exec2」の場合
1番目のemulate要素の条件式の評価結果が「偽」であるため,2番目のemulate要素の条件式が評価されます。
2番目のemulate要素の条件式の評価結果が「真」であるため,2番目のemulate要素が有効となります。
-
要求電文の値が「exec3」の場合
1番目・2番目のemulate要素の条件式の評価結果が「偽」であるため,3番目に出現したemulate要素が有効となります。
(5) 記述例
エミュレート設定情報定義ファイルの記述例を次に示します。この例では,TP1アダプタのexecオペレーションをエミュレーションしています。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE HCSCAutoEmulate SYSTEM "debug_auto_emulate_list_file_1_0.dtd"> <HCSCAutoEmulate> <viewState> <emulate condition="" operation="exec" service="TP1Adapter" type="RESPONSE_NORMAL" valid="true" xmlfile="/data/telegram/exec1"/> </viewState> </HCSCAutoEmulate>
この例では次の値を設定しています。
属性名 |
設定値 |
---|---|
condition |
条件を定義しないことを示す空文字列("")を設定しています。 |
operation |
サービス呼出アクティビティのオペレーション名で選択されている「exec」を設定しています。 |
service |
サービス呼出アクティビティのサービス名で選択されている「TP1Adapter」を設定しています。 |
type |
通常応答を意味する「RESPONSE_NORMAL」を設定しています。 |
valid |
エミュレーション機能を実行するため「true」を設定しています。 |
xmlfile |
応答電文ファイル「/data/telegram/exec1」を設定しています。 このファイルの内容は,サービス呼出アクティビティの応答電文のボディ割当変数「out」に設定されます。 |