5.5.1 変数の定義
ビジネスプロセスを定義する場合,変数には,文字,メッセージに含まれる数値や条件式の項となる数値,またはメッセージを入れることができます。変数の値は,データベースに記録できるため,実行履歴として管理できます。
- 〈この項の構成〉
(1) 変数の種類
変数にはグローバル変数とローカル変数の2種類があります。
-
グローバル変数は,1つのプロセスインスタンス内であればどこからでも参照できます。また,プロセスが完了しても変数の値はデータベースに記録されているため,ビジネスプロセス全体の進行状況を分析できます。変数名は,プロセス内で一意にします。
-
ローカル変数は,宣言したスコープ内で参照できます。宣言しているスコープが終了すると,変数の値もデータベースから削除されるため,プロセス実行中の条件判定など一時的に値を参照するために利用できます。変数名は,スコープ内で一意にします。スコープが異なれば同じ変数名を宣言できます。ただし,変数を参照する場合に,参照個所で最も内側に近いスコープで宣言された変数を参照します。
(2) 変数の型
変数には次に示す型の値を定義できます。変数は,定義した型の値だけを保持できます。
-
boolean型:真偽(trueまたはfalse)
-
numeric型:数値(64ビット浮動小数)
-
string型:文字列
-
メッセージ型:変数に代入する値は,変数に関連づけられたフォーマット定義に従います。変数の種別によって,次のフォーマットを定義します。
XML:XMLスキーマでフォーマットを定義します。
non-XML:バイナリフォーマット定義ファイルでフォーマットを定義します。
any:フォーマットを定義しません。
(3) 変数を割り当てられるアクティビティ
次の表に示すアクティビティの項目について変数を割り当てられます。
アクティビティ |
項目 |
割り当てられる内容 |
備考 |
---|---|---|---|
受付アクティビティ |
要求電文 |
サービスリクエスタから受け取る要求電文を参照するメッセージ型の変数 |
相関セットの指定にも利用されます。 |
応答アクティビティ |
応答電文 |
サービスリクエスタへの応答電文またはフォルト電文を参照するメッセージ型の変数 |
|
サービス呼出アクティビティ(同期) |
要求電文 |
同期サービスを呼び出す際の要求電文を参照するメッセージ型の変数 |
|
応答電文 |
呼び出した同期サービスから受け取る応答電文を参照するメッセージ型の変数 |
||
フォルト電文 |
呼び出した同期サービスでフォルトが発生した場合に受け取る応答電文を参照するメッセージ型の変数 |
− |
|
サービス呼出アクティビティ(非同期) |
要求電文 |
非同期サービスを呼び出す際の要求電文を参照するメッセージ型の変数 |
相関セットの指定にも利用されます。 |
Java呼出アクティビティ |
引数 |
ユーザの作成したJavaクラスを呼び出す際の引数となる値を参照する変数 |
− |
戻り値 |
呼び出したJavaクラスからの戻り値を参照する変数 |
− |
|
データ変換アクティビティ |
変換元データ |
データ変換アクティビティでデータ変換を行う際の変換元データを参照するメッセージ型の変数で,複数指定が可能 |
− |
変換先データ |
データ変換アクティビティでデータ変換を行う際の変換先データを参照するメッセージ型の変数 |
− |
|
代入アクティビティ |
コピー元 |
代入アクティビティでデータのコピーを行う際の,コピー元となるデータを参照する変数 |
− |
コピー先 |
代入アクティビティでデータのコピーを行う際の,コピー先となるデータを参照する変数 |
− |
|
フォルト送出アクティビティ |
フォルト電文 |
フォルト送出アクティビティでフォルトを送出する際に,フォルト電文を参照するメッセージ型の変数 |
− |
待機アクティビティ |
待機時間 |
待機時間の値を参照する変数 |
− |
ログ出力アクティビティ |
埋め込み要素 |
ログメッセージに値を埋め込むために参照する変数 |
− |
検証アクティビティ |
検証する変数 |
検証する変数 |
− |
繰り返しアクティビティ |
繰り返し条件 |
繰り返しのループ変数や終端条件式の項となる値を参照する変数 |
− |
繰り返しリスト |
繰り返しリストを取得するための式で参照する変数 |
− |
|
繰り返し要素変数 |
繰り返し要素を格納する変数 |
− |
|
分岐アクティビティ |
分岐条件 |
分岐条件の式の項となる値を参照する変数 |
− |
(4) 変数の表示とパスの取得
変数・相関セット一覧ダイアログの[表示]ボタンをクリックすると,変数の表示ダイアログが表示されます。変数と一致したXMLスキーマをツリービューとして表示できます。ツリービューで表示された変数を選択すると,[選択パス]に選択した変数のパスがルート要素からの絶対パスで表示されます。
また,変数を選択して,右クリックし,[パスの取得]を選択すると,ルート要素からの絶対パスを取得できます。取得したパスは,任意の個所に貼り付けることができます。
- 注意事項
-
変数の表示ダイアログを操作する場合は,次の点に注意してください。
-
変数の表示ダイアログで表示されるXMLスキーマは編集できません。
-
ツリービューで選択できる変数は1つだけです。
-
変数の表示ダイアログで表示しようとしている変数のXMLスキーマで,要素が再帰になっている場合,2階層目以降の要素は表示されません。
-
XMLスキーマのsubstitutionGroup属性は無視されます。
-
(5) 変数を使用する場合の注意事項
(a) スコープアクティビティを使用している場合の変数の使用
ビジネスプロセス内またはスコープ内のアクティビティで使用する変数を追加したり,編集したりできます。このとき,外側のスコープで宣言した変数は,内側のスコープから参照できますが,内側のスコープで宣言した変数はスコープ外からは参照できません。また,スコープが異なる場合は,同じ変数名を宣言できます。次に示す図の場合,スコープAやスコープBはプロセス(外側)の変数を参照できますが,プロセス(外側)からはスコープAやスコープBの変数は参照できません。
(b) フォルト処理を定義する場合の変数
-
スコープアクティビティにフォルト処理を定義する場合に,次の変数を定義するときに注意する点を説明します。
-
[フォルト処理の割当]ダイアログの割り当て変数
-
フォルトコネクションの接続先のアクティビティで設定する変数
これらの変数には,フォルト処理を定義したスコープの外側のスコープで定義された変数を定義してください。スコープ内で定義された変数は定義できません。
これらの変数と,フォルト処理を定義したスコープで定義した変数が,同じ名前でないことを確認してください。同じ名前の変数が定義されていると,アクティビティ実行時にフォルト処理を定義したスコープの変数が使用され,意図しない動作をするおそれがあるためです。
-
-
次のアクティビティで同じ変数を使用したい場合は,フォルト処理を定義したスコープの外側のスコープで定義された変数を使用するよう定義してください。
-
スコープ内に定義したアクティビティ
-
フォルトコネクションの接続先のアクティビティ
-
(c) 補償処理を定義する場合の変数
-
スコープアクティビティに補償処理を定義する場合に,補償コネクションの接続先のアクティビティで設定する変数を定義するときに注意する点を説明します。
-
この変数には,補償処理を定義したスコープの外側のスコープで定義された変数を定義してください。スコープ内で定義された変数は定義できません。
-
この変数と,補償処理を定義したスコープで定義した変数が,同じ名前でないことを確認してください。同じ名前の変数が定義されていると,アクティビティ実行時に補償処理を定義したスコープの変数が使用され,意図しない動作をするおそれがあるためです。
-
-
スコープの実行が完了すると,スコープに定義されたローカル変数は削除されます。そのため,次のアクティビティで同じ変数を使用したい場合は,補償処理を定義したスコープの外側のスコープで定義された変数を使用するよう定義してください。
-
スコープ内に定義したアクティビティ
-
補償コネクションの接続先のアクティビティ
-
(d) 変数の定義で設定する電文フォーマット
- 電文フォーマットのファイル名
-
変数の定義時には,同じファイル名で異なるXMLスキーマの電文フォーマットである定義ファイルを複数の変数で設定できます。しかし,実行時には,どれか1つのXMLスキーマが使用されるため,意図しない動作をする場合があります。したがって,変数の定義で設定する電文フォーマットのファイル名とXMLスキーマは,必ず1対1になるように設定してください。
- 外部のXMLスキーマの参照を含む電文フォーマットの設定
-
外部のXMLスキーマを参照している電文フォーマットを設定する場合,必ずルートスキーマに当たるファイルを設定してください。ルートスキーマから参照される外部のXMLスキーマファイルは,自動的に取り込まれます。
- 電文フォーマットの形式
-
変数に使用する電文フォーマットは,一定の条件を満たしている必要があります。条件の詳細については,「2.6.5 XMLスキーマの適用範囲」を参照してください。
(e) 変数の定義情報の変更
変数および相関セットの定義情報(変数名,型,電文フォーマット,部分)は,必要に応じて変更または削除できます。
- 注意事項
-
変数の定義情報を変更する場合は,次の点に注意してください。
-
データ変換アクティビティで使用している変数の電文フォーマットを変更した場合は,データ変換を定義し直してください。電文フォーマットを変更した場合の手順については,「7.3.2 電文フォーマットを変更した場合の定義手順」を参照してください。
-
データ変換定義ファイルが定義済みのデータ変換アクティビティで使用している変数の変数名を変更した場合,警告メッセージが表示されます。この場合,変更した変数に関わるマッピングは破棄されます。
-
変数の定義情報を変更すると,その変数を割り当てた個所に,再度割り当てが必要になる場合があります。
例えば,あるアクティビティに変数Xを割り当て,その後,その変数Xの名前を変数Yに変更した場合,次のどちらかを行ってください。
・アクティビティへ再度変数を割り当てる。
・再度変数Xを定義する。
-
ビジネスプロセスをバージョンアップしたあとに変数を変更する場合は注意が必要です。詳細は,「5.9.4(3) ビジネスプロセスのバージョンアップ時の注意事項」を参照してください。
-
(f) 変数の定義情報の初期化
ビジネスプロセスを実行するときに,変数には,文字,メッセージに含まれる数値や条件式の項となる数値,またはメッセージを設定する必要があります。
サービスリクエスタからの要求を受け付けたときや,サービス呼出アクティビティでサービスからの応答を受け取ったときは,変数に値が入っていますが,それ以外はデータ変換アクティビティや代入アクティビティなどを使用して変数に値を設定(初期化)する必要があります。
変数の初期化が不要な場合について説明します。
次の個所に指定している変数は,変数(電文)を参照する前に値が設定されているため,変数の初期化は不要です。
-
サービスリクエスタから要求を受け付けた変数
-
サービス呼出アクティビティの応答電文のボディ割当変数/ヘッダ割当変数
-
Java呼出アクティビティの戻り値用割当変数
-
データ変換アクティビティの変換先変数
-
代入アクティビティのコピー先の変数
-
フォルトコネクションに指定した割当変数
変数の初期化が不要な場合の例を次の図に示します。
- 変数A:
-
サービスリクエスタからの要求電文が変数の値として設定されます。また,サービス呼出は値が設定済みの変数Aを要求電文としているため,初期化は不要です。
- 変数B:
-
サービスからの応答電文で変数が設定されるため,初期化は不要です。
変数の初期化が必要な場合について説明します。
変数の初期化が不要な場合に示した個所に指定していない変数は値が設定されていないため,ビジネスプロセス上で参照するとエラーになります。事前に値を設定し,変数を初期化しておく必要があります。
値が設定されていない変数を指定する可能性のある個所を次に示します。
-
サービス呼出アクティビティの要求電文のボディ割当変数/ヘッダ割当変数
-
Java呼出アクティビティの引数用割当変数
-
データ変換アクティビティの変換元変数
-
代入アクティビティのコピー元の変数
-
待機アクティビティ,検証アクティビティ,繰り返しアクティビティ,分岐アクティビティ,リンクコネクションのXPath式内で変数名を記述している個所
-
応答アクティビティのボディ割当変数/ヘッダ割当変数
変数の初期化が必要な場合の例を次の図に示します。
- 変数A:
-
サービスリクエスタからの要求電文が変数に設定されているため,初期化は不要です。
- 変数B:
-
変数の初期化が必要になります。データ変換Aで変数Aの情報を基に,変数Bに値を設定します。
- 変数C:
-
サービスからの応答電文が変数に設定されるため,初期化は不要です。
- 変数D:
-
変数の初期化が必要になります。データ変換Bで変数Cの情報を基に,変数Dに値を設定します。
(6) 変数の定義方法
(a) 新規に変数を定義する場合
新規に変数を定義する手順を次に示します。なお,変数は,繰り返しアクティビティ内のキャンバスでは定義できません。
-
次のどちらかの方法で,変数・相関セット一覧ダイアログを表示します。
-
ビジネスプロセス定義画面のキャンバス上の[変数・相関セット]アイコンをダブルクリックします。
-
次に示すアクティビティダイアログの[編集]ボタンをクリックします。
・受付アクティビティ
・応答アクティビティ
・サービス呼出アクティビティ
・Java呼出アクティビティ
・データ変換アクティビティ
・代入アクティビティ
・フォルト送出アクティビティ
・検証アクティビティ
-
-
一覧から「変数一覧」を選択します。
-
変数名を入力します。
-
変数の種別をドロップダウンリストから選択します。
-
変数の種別がメッセージ型の場合,必要に応じて,次のどちらかの操作をします。
- 呼び出すサービス部品またはユーザ定義受付の要求電文,応答電文,またはフォルト電文に設定されている電文フォーマットを,変数に設定する場合
-
[取込]ボタンをクリックし,[電文フォーマットの取込]ダイアログを表示します。[電文フォーマットの取込]ダイアログで,使用する電文フォーマットを指定します。
[電文フォーマットの取込]ダイアログの入力・表示項目の詳細については,マニュアル「サービスプラットフォーム リファレンス」の「1.4.5 電文フォーマットの取込ダイアログ」を参照してください。
[電文フォーマットの取込]ダイアログでの操作の終了後,手順6.に進みます。
- 上記以外の電文フォーマットを変数に設定する場合
-
[参照]ボタンをクリックして,変数を使用する電文フォーマットの定義ファイルを設定します。
サービスアダプタからサービス部品を呼び出したときに発生したエラーの例外を,サービスアダプタでフォルト電文に変換する場合は,[参照]ボタンをクリックして,<サービスプラットフォームのインストールディレクトリ>\CSC\system\msg\cscfault.xsdを選択してください。
-
変数の種別がメッセージ型の場合,[部分指定]チェックボックスにチェックします。
-
[行追加]ボタンをクリックし,部分名,指定式,および型を指定します。
-
[追加]ボタンをクリックします。
変数一覧に,追加した変数が表示されます。
-
[OK]ボタンをクリックします。
- 注意事項
-
変数・相関セット一覧ダイアログから電文フォーマットの定義ファイルを指定する場合,ファイル名はNCName型で指定します。
NCName型ではない場合,指定時にエラーとなります。
(b) 電文フォーマットの定義ファイルを変更した場合
変数の定義で設定した電文フォーマットの定義ファイルを変更した場合,変更後の定義ファイルの内容は,次の手順で反映できます。
-
変数・相関セット一覧ダイアログを表示します。
変数・相関セット一覧ダイアログを表示する方法については,「5.5.1(6)(a) 新規に変数を定義する場合」の手順1.を参照してください。
-
次のどちらかの操作をします。
- 変数の種別がメッセージ型の場合で,呼び出すサービス部品またはユーザ定義受付の要求電文,応答電文,またはフォルト電文に設定されている電文フォーマットを,変数に設定する場合
-
[取込]ボタンをクリックし,[電文フォーマットの取込]ダイアログを表示します。[電文フォーマットの取込]ダイアログで,使用する電文フォーマットを指定します。
[電文フォーマットの取込]ダイアログの入力・表示項目の詳細については,マニュアル「サービスプラットフォーム リファレンス」の「1.4.5 電文フォーマットの取込ダイアログ」を参照してください。
[電文フォーマットの取込]ダイアログでの操作の終了後,手順3.に進みます。
- 変数の種別がメッセージ型の場合で,上記以外の場合
-
[参照]ボタンをクリックして,変数を使用する電文フォーマットの定義ファイルを設定します。
-
[更新]ボタンをクリックします。
(7) 電文フォーマットの定義ファイルの出力
電文フォーマットの定義ファイルの出力方法について説明します。
コピー元のアクティビティに設定した変数の電文フォーマットをコピー先のアクティビティの変数に設定したい場合などに,変数・相関セット一覧ダイアログで電文フォーマットの定義ファイルを出力できます。
出力できる電文フォーマットの定義ファイルの形式は次のどちらかです。
-
電文フォーマットの定義ファイルの拡張子:xsd(変数の型:XML)
-
電文フォーマットの定義ファイルの拡張子:fdx(変数の型:non-XML)
電文フォーマットの定義ファイルの出力手順を次に示します。
-
変数・相関セット一覧ダイアログの[出力]ボタンをクリックします。
出力先を指定するためのダイアログが表示されます。
-
出力先を指定して[OK]ボタンをクリックします。
指定したフォルダに電文フォーマットの定義ファイルが出力されます。出力対象が複数の定義ファイルから成るメッセージ型(XML)変数の場合は,出力ファイル名が自動的に与えられます。
(8) ユーザ定義受付(呼出先選択)の電文フォーマットの取込
ビジネスプロセスにユーザ定義受付を定義していない場合,ユーザ定義受付(呼出先選択)を定義した電文フォーマットをビジネスプロセスに取り込めます。
電文フォーマットの作成については「4. 電文フォーマットの作成」を,[電文フォーマットの取込]ダイアログの入力・表示項目の詳細については,マニュアル「サービスプラットフォーム リファレンス」の「1.4.5 電文フォーマットの取込ダイアログ」を参照してください。