6.5.1 変数の定義

ビジネスプロセスを定義する場合,変数には,文字,メッセージに含まれる数値や条件式の項となる数値,またはメッセージを入れることができます。変数の値は,データベースに記録できるため,実行履歴として管理できます。

<この項の構成>
(1) 変数の種類
(2) 変数の型
(3) 変数を割り当てられるアクティビティ
(4) 変数の表示とパスの取得
(5) 変数を使用する場合の注意事項
(6) 変数の定義方法

(1) 変数の種類

変数にはグローバル変数とローカル変数の2種類があります。

(2) 変数の型

変数には次に示す型の値を定義できます。変数は,定義した型の値だけを保持できます。

(3) 変数を割り当てられるアクティビティ

次の表に示すアクティビティの項目について変数を割り当てられます。

表6-4 変数を割り当てられるアクティビティと項目

アクティビティ項目割り当てられる内容備考
受付アクティビティ要求電文サービスリクエスタから受け取る要求電文を参照するメッセージ型の変数相関セットの指定にも利用されます。
応答アクティビティ応答電文サービスリクエスタへの応答電文またはフォルト電文を参照するメッセージ型の変数
サービス呼出アクティビティ(同期)要求電文同期サービスを呼び出す際の要求電文を参照するメッセージ型の変数
応答電文呼び出した同期サービスから受け取る応答電文を参照するメッセージ型の変数
フォルト電文呼び出した同期サービスでフォルトが発生した場合に受け取る応答電文を参照するメッセージ型の変数
サービス呼出アクティビティ(非同期)要求電文非同期サービスを呼び出す際の要求電文を参照するメッセージ型の変数相関セットの指定にも利用されます。
Java呼出アクティビティ引数ユーザの作成したJavaクラスを呼び出す際の引数となる値を参照する変数
戻り値呼び出したJavaクラスからの戻り値を参照する変数
データ変換アクティビティ変換元データデータ変換アクティビティでデータ変換を行う際の変換元データを参照するメッセージ型の変数で,複数指定が可能
変換先データデータ変換アクティビティでデータ変換を行う際の変換先データを参照するメッセージ型の変数
代入アクティビティコピー元代入アクティビティでデータのコピーを行う際の,コピー元となるデータを参照する変数
コピー先代入アクティビティでデータのコピーを行う際の,コピー先となるデータを参照する変数
フォルト送出アクティビティフォルト電文フォルト送出アクティビティでフォルトを送出する際に,フォルト電文を参照するメッセージ型の変数
待機アクティビティ待機時間待機時間の値を参照する変数
検証アクティビティ検証する変数検証する変数
繰り返しアクティビティ繰り返し条件繰り返しのループ変数や終端条件式の項となる値を参照する変数
分岐アクティビティ分岐条件分岐条件の式の項となる値を参照する変数
(凡例)
-:該当しません。

(4) 変数の表示とパスの取得

変数・相関セット一覧ダイアログの[表示]ボタンをクリックすると,変数の表示ダイアログが表示されます。変数と一致したXMLスキーマをツリービューとして表示できます。ツリービューで表示された変数を選択すると,[選択パス]に選択した変数のパスがルート要素からの絶対パスで表示されます。

また,変数を選択して,右クリックし,[パスの取得]を選択すると,ルート要素からの絶対パスを取得できます。取得したパスは,任意の個所に貼り付けることができます。

注意
変数の表示ダイアログを操作する場合は,次の点に注意してください。
  • 変数の表示ダイアログで表示されるXMLスキーマは編集できません。
  • ツリービューで選択できる変数は一つだけです。
  • 変数の表示ダイアログで表示しようとしている変数のXMLスキーマで,要素が再帰になっている場合,2階層目以降の要素は表示されません。
  • XMLスキーマのsubstitutionGroup属性は無視されます。

(5) 変数を使用する場合の注意事項

(a) スコープアクティビティを使用している場合の変数の使用

ビジネスプロセス内またはスコープ内のアクティビティで使用する変数を追加したり,編集したりできます。このとき,外側のスコープで宣言した変数は,内側のスコープから参照できますが,内側のスコープで宣言した変数はスコープ外からは参照できません。また,スコープが異なる場合は,同じ変数名を宣言できます。次に示す図の場合,スコープAやスコープBはプロセス(外側)の変数を参照できますが,プロセス(外側)からはスコープAやスコープBの変数は参照できません。

図6-5 スコープと変数の関係

[図データ]

(b) フォルト処理を定義する場合の変数の使用

スコープアクティビティにフォルト処理を定義する場合,[フォルト処理の割当]ダイアログで割り当て変数として使用する変数を選択します。選択できる変数は,フォルトの対象となるスコープ(スコープアクティビティを含む),またはその外側のスコープで定義された変数です。ただし,[フォルト処理の割当]ダイアログで選択した変数と同じ名前の変数が,フォルトの対象のスコープでも定義されている場合,[フォルト処理の割当]ダイアログで選択した変数ではなく,フォルトの対象となるスコープで定義された変数が実行時に使用され,意図しない動作をする場合があります。したがって,スコープアクティビティにフォルト処理を定義する場合,[フォルト処理の割当]ダイアログで選択した変数と同じ名前の変数が,フォルトの対象となるスコープに定義されていないことを確認してください。

(c) 変数の定義で設定する電文フォーマット
電文フォーマットのファイル名
変数の定義時には,同じファイル名で異なるXMLスキーマの電文フォーマットである定義ファイルを複数の変数で設定できます。しかし,実行時には,どれか一つのXMLスキーマが使用されるため,意図しない動作をする場合があります。したがって,変数の定義で設定する電文フォーマットのファイル名とXMLスキーマは,必ず1対1になるように設定してください。
外部のXMLスキーマの参照を含む電文フォーマットの設定
外部のXMLスキーマを参照している電文フォーマットを設定する場合,必ずルートスキーマに当たるファイルを設定してください。ルートスキーマから参照される外部のXMLスキーマファイルは,自動的に取り込まれます。
電文フォーマットの形式
変数に使用する電文フォーマットは「2.6.5 XMLスキーマの適用範囲」に示す条件を満たしている必要があります。条件の詳細については,「2.6.5 XMLスキーマの適用範囲」を参照してください。
(d) 変数の定義情報の変更

変数の定義情報は,変数の使用個所によって,変更または削除できない場合があります。変数の定義情報を変更または削除できないケースを次の表に示します。なお,次の表に記載されていない個所で使用されている変数については,いつでも変数の定義情報を変更または削除できます。

表6-5 変数の定義情報を変更または削除できないケース

変数の使用個所条件削除の可否変更の可否
変数名電文フォーマット部分
受付アクティビティ
応答アクティビティ
  • バージョンアップしたビジネスプロセスである。
  • バージョンアップ前に定義された受付・応答アクティビティである。
××××※1
データ変換アクティビティデータ変換定義ファイルが定義済みである。×××※1※2
相関セット
  • バージョンアップしたビジネスプロセスである。
  • バージョンアップ前のビジネスプロセスの受付・応答アクティビティで使用されている相関セットである。
××××※1※3
(凡例)
○:変更または削除できます。
×:変更または削除できません。
注※1
電文フォーマットの変更とは,ダイアログで新しい電文フォーマットを選択することです。もし内容が同じ電文フォーマットを選択しても,変更として扱われます。
注※2
データ変換アクティビティで使用している変数の電文フォーマットを変更した場合は,データ変換を定義し直してください。電文フォーマットを変更した場合の手順については,「7.3.2 電文フォーマットを変更した場合の定義手順」を参照してください。
注※3
使用している部分が変更されていなければ,変更できます。部分の変更は,部分名,指定式および型の変更です。順番の変更は含みません。

注意
変数の定義情報を変更すると,その変数を割り当てた個所に,再度割り当てが必要になる場合があります。
例えば,あるアクティビティに変数Xを割り当て,その後,その変数Xの名前を変数Yに変更した場合,次のどちらかを行ってください。
  • アクティビティへ再度変数を割り当てる。
  • 再度変数Xを定義する。
(e) 変数の定義情報の初期化

ビジネスプロセスを実行するときに,変数には,文字,メッセージに含まれる数値や条件式の項となる数値,またはメッセージ(XML電文)を設定する必要があります。

サービスリクエスタからの要求を受け付けたときや,サービス呼出アクティビティでサービスからの応答を受け取ったときは,変数に値が入っていますが,それ以外はデータ変換アクティビティや代入アクティビティなどを使用して変数に値を設定(初期化)する必要があります。

変数の初期化が不要な場合を次の図に示します。

図6-6 変数の初期化が不要な場合

[図データ]

変数A:
サービスリクエスタからの要求電文で変数が設定されているため,初期化は不要です。
変数B:
サービスからの応答電文で変数が設定されているため,初期化は不要です。

変数の初期化が必要な場合を次の図に示します。

図6-7 変数の初期化が必要な場合

[図データ]

変数A:
サービスリクエスタからの要求電文で変数が設定されているため,初期化は不要です。
変数B:
変数の初期化が必要になります。データ変換Aでは変数Aの情報を基に,変数Bに値を設定します。
変数C:
サービスからの応答電文で変数が設定されているため,初期化は不要です。
変数D:
変数の初期化が必要になります。データ変換Bでは変数Cの情報を基に,変数Dに値を設定します。

(6) 変数の定義方法

(a) 新規に変数を定義する場合

新規に変数を定義する手順を次に示します。なお,変数は,繰り返しアクティビティ内のキャンバスでは定義できません。

  1. 次のどちらかの方法で,変数・相関セット一覧ダイアログを表示します。
    • ビジネスプロセス定義画面のキャンバス上の[変数・相関セット]アイコンをダブルクリックします。
    • 次に示すアクティビティダイアログの[編集]ボタンをクリックします。
      ・受付アクティビティ
      ・応答アクティビティ
      ・サービス呼出アクティビティ
      ・Java呼出アクティビティ
      ・データ変換アクティビティ
      ・代入アクティビティ
      ・フォルト送出アクティビティ
      ・検証アクティビティ
  2. 一覧から「変数一覧」を選択します。
  3. 変数名を入力します。
  4. 変数の種別をドロップダウンリストから選択します。
  5. 必要に応じて,次のどちらかの操作をします。
    変数の種別がメッセージ型の場合で,呼び出すサービス部品またはユーザ定義受付の要求電文,応答電文,またはフォルト電文に設定されている電文フォーマットを,変数に設定する場合
    [取込]ボタンをクリックし,[電文フォーマットの取込]ダイアログを表示します。[電文フォーマットの取込]ダイアログで,使用する電文フォーマットを指定します。
    [電文フォーマットの取込]ダイアログの入力・表示項目の詳細については,マニュアル「Cosminexus サービスプラットフォーム リファレンス」の「1.4.5 電文フォーマットの取込ダイアログ」を参照してください。
    [電文フォーマットの取込]ダイアログでの操作の終了後,手順6.に進みます。
    変数の種別がメッセージ型の場合で,上記以外の場合
    [...]ボタンをクリックして,変数を使用する電文フォーマットの定義ファイルを設定します。
    サービスアダプタからサービス部品(Webサービス)を呼び出したときに発生したエラーの例外を,サービスアダプタでフォルト電文に変換する場合は,[...]ボタンをクリックして,<Cosminexusインストールディレクトリ>¥CSC¥system¥msg¥cscfault.xsdを選択してください。
  6. 変数の種別がメッセージ型の場合,[部分指定]チェックボックスにチェックします。
  7. [行追加]ボタンをクリックし,部分名,指定式,および型を指定します。
  8. [追加]ボタンをクリックします。
    変数一覧に,追加した変数が表示されます。
  9. [OK]ボタンをクリックします。
(b) 電文フォーマットの定義ファイルを変更した場合

変数の定義で設定した電文フォーマットの定義ファイルを変更した場合,変更後の定義ファイルの内容は,次の手順で反映できます。

  1. 変数・相関セット一覧ダイアログを表示します。
    変数・相関セット一覧ダイアログを表示する方法については,「6.5.1(6)(a) 新規に変数を定義する場合」の手順1.を参照してください。
  2. 次のどちらかの操作をします。
    変数の種別がメッセージ型の場合で,呼び出すサービス部品またはユーザ定義受付の要求電文,応答電文,またはフォルト電文に設定されている電文フォーマットを,変数に設定する場合
    [取込]ボタンをクリックし,[電文フォーマットの取込]ダイアログを表示します。[電文フォーマットの取込]ダイアログで,使用する電文フォーマットを指定します。
    [電文フォーマットの取込]ダイアログの入力・表示項目の詳細については,マニュアル「Cosminexus サービスプラットフォーム リファレンス」の「1.4.5 電文フォーマットの取込ダイアログ」を参照してください。
    [電文フォーマットの取込]ダイアログでの操作の終了後,手順3.に進みます。
    変数の種別がメッセージ型の場合で,上記以外の場合
    [...]ボタンをクリックして,変数を使用する電文フォーマットの定義ファイルを設定します。
  3. [更新]ボタンをクリックします。