5.6.13 繰り返しアクティビティ
1つまたは複数のアクティビティを,指定した条件に従って繰り返すための定義をするアクティビティです。
繰り返しアクティビティを利用した繰り返し処理について,次の図に示します。
繰り返しアクティビティを定義すると,1つまたは複数の処理を指定した条件で繰り返すことができます。また,上図の繰り返し3のように,繰り返す処理の中に繰り返し処理を定義することもできます。
最初に実行されるアクティビティが繰り返しアクティビティで,繰り返しアクティビティ内に非同期の受付を定義し,そのあとにプロセスが中断されないよう定義した場合の動作は保障しません。
(1) 繰り返し方式
繰り返しアクティビティでは,次のどちらかの繰り返し方式を選択できます。
-
一定の条件に従って繰り返す条件指定方式
-
繰り返しリストに含まれる要素の数の分だけ繰り返すリスト指定方式
条件指定方式およびリスト指定方式を利用した繰り返し処理について説明します。
(a) 条件指定方式
条件指定方式を利用した繰り返し処理について,次の図に示します。
条件指定方式では,XPath式で繰り返しの条件式を指定します。条件式の評価結果がtrueの間,繰り返しアクティビティ内のアクティビティが繰り返し実行されます。
(b) リスト指定方式
リスト指定方式を利用した繰り返し処理について,次の図に示します。
リスト指定方式では,次の流れで繰り返し処理が実施されます。
-
XPathで指定した変数を基に繰り返しリストが生成されます。
-
生成された繰り返しリストに含まれるノードの数の分だけ,繰り返しアクティビティ内のアクティビティが繰り返し実行されます。
-
繰り返しを実行する度に,繰り返しリストの要素が1つずつ繰り返し要素変数に格納されます。
繰り返しリストを生成するための変数および繰り返し要素変数は,開発環境で作成して[繰り返しリスト設定]ダイアログで指定します。
(2) 定義手順
定義の手順を次に示します。
(a) 条件指定方式
-
繰り返しアクティビティをキャンバスに配置します。
アクティビティを配置する方法については,「5.4.1 アクティビティを配置する」を参照してください。
-
キャンバスの繰り返しアクティビティを選択して右クリックし,[設定]を選択します。
[繰り返しアクティビティ]ダイアログが表示されます。
-
[繰り返しアクティビティ]ダイアログで任意のアクティビティ名を入力します。
[繰り返しアクティビティ]ダイアログの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「1.4.19 繰り返しアクティビティダイアログ」を参照してください。
-
[条件指定方式]ラジオボタンを選択して[繰り返し条件設定]ボタンをクリックします。
繰り返しの条件を設定するための[繰り返し条件設定]ダイアログが表示されます。[繰り返し条件設定]ダイアログの表示・入力内容の詳細については,マニュアル「サービスプラットフォーム リファレンス」の「1.4.21 繰り返し条件設定ダイアログ」を参照してください。
-
必要な情報を設定して[OK]ボタンをクリックします。
-
次のどちらかの方法で繰り返す処理を設定するキャンバスを表示させます。
-
キャンバスの繰り返しアクティビティをダブルクリックする
-
キャンバスの繰り返しアクティビティを選択して右クリックし,[開く]を選択する
キャンバスの下部に繰り返しアクティビティ名のタブが表示され,繰り返す処理を設定するキャンバスが表示されます。
-
-
任意のアクティビティを配置・連結・定義し,繰り返す処理を設定します。
(b) リスト指定方式
-
繰り返しリストを生成するためのメッセージ型(XML)変数を定義します。
繰り返し要素を子要素に持つスキーマで変数を作成します。子要素はすべて同じ形式にしてください。
変数の定義方法については,「5.5.1(6)(a) 新規に変数を定義する場合」を参照してください。
- 作成例(子要素のname属性を同一にし,maxOccurs属性で要素数を指定する)
<?xml version="1.0" encoding="UTF-8"?> <xs:schema elementFormDefault="qualified" targetNamespace="http://example.com/sample" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="loop-element"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="5" minOccurs="0" name="child-element"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
-
繰り返し要素のメッセージ型(XML)変数を定義します。
手順1.で作成した変数が生成する繰り返しリストの要素を格納するための変数を作成します。
- 作成例
<?xml version="1.0" encoding="UTF-8"?> <xs:schema elementFormDefault="qualified" targetNamespace="http://example.com/sample" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="child-element"/> </xs:schema>
-
繰り返しアクティビティをキャンバスに配置します。
アクティビティを配置する方法については,「5.4.1 アクティビティを配置する」を参照してください。
-
キャンバスの繰り返しアクティビティを選択して右クリックし,[設定]を選択します。
[繰り返しアクティビティ]ダイアログが表示されます。
-
[繰り返しアクティビティ]ダイアログで任意のアクティビティ名を入力します。
[繰り返しアクティビティ]ダイアログの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「1.4.19 繰り返しアクティビティダイアログ」を参照してください。
-
[リスト指定方式]ラジオボタンを選択して[繰り返しリスト設定]ボタンをクリックします。
-
繰り返しリストを設定するための[繰り返しリスト設定]ダイアログが表示されます。
[繰り返しリスト設定]ダイアログの表示・入力内容の詳細については,マニュアル「サービスプラットフォーム リファレンス」の「1.4.20 繰り返しリスト設定ダイアログ」を参照してください。
-
[繰り返しリスト設定]ダイアログの[繰り返しリスト]の[式]に,手順1.で定義した変数の要素のパスをXPath式で指定します。
XPath式の指定方法については,「5.6.18(2)(d) 繰り返しリスト設定ダイアログでの指定」を参照してください。
-
[繰り返し変数]の[変数名]に,手順2.で定義した変数を指定します。
-
必要に応じて[最大繰り返し回数]を設定します。
-
[OK]ボタンをクリックします。
-
次のどちらかの方法で繰り返す処理を設定するキャンバスを表示させます。
-
キャンバスの繰り返しアクティビティをダブルクリックする
-
キャンバスの繰り返しアクティビティを選択して右クリックし,[開く]を選択する
キャンバスの下部に繰り返しアクティビティ名のタブが表示され,繰り返す処理を設定するキャンバスが表示されます。
-
-
任意のアクティビティを配置・連結・定義し,繰り返す処理を設定します。
(3) 定義時の注意事項
-
アクティビティ名はビジネスプロセス(スコープ内も含む)内で一意になるように指定してください。
-
アクティビティ名は64バイト以内にしてください。
-
ダイアログの入力フィールドに制御文字は指定しないでください。
-
必ず繰り返し条件を設定してください。
(4) 定義時の注意事項(リスト指定方式の場合だけ)
リスト指定方式を指定する場合の定義時の注意事項を次に示します。
-
リスト指定方式を使用する繰り返し処理は,永続化しないビジネスプロセスでだけ使用できます。永続化するビジネスプロセスでリスト指定方式の繰り返しアクティビティを定義した場合,ビジネスプロセスの検証時にエラーメッセージが出力されます。
-
繰り返しリストを生成するための変数と繰り返し要素変数は,どちらもメッセージ型(XML)である必要があります。メッセージ型(XML)以外の変数は指定できません。
-
繰り返しリストを生成するための変数は繰り返し処理内で変更できません。変更した場合は動作を保証しません。繰り返し要素変数は,繰り返し処理内で参照および変更できます。
-
[繰り返しリスト設定]ダイアログの[式]に指定したXPath式に,存在しない要素のパスを指定した場合,繰り返し処理は実行されません。
-
次のような場合,扱う情報の形式が繰り返し要素変数のXMLスキーマと合わなくなるおそれがあります。
-
繰り返し要素変数のXMLスキーマに合わない形式の情報を繰り返し要素に設定した場合
-
[繰り返しリスト設定]ダイアログの[式]に指定したXPath式に,要素ノード以外の種類のノードを指定した場合
繰り返し処理中で,上記の情報の形式が合わない繰り返し要素変数を参照しようとした場合,参照できないときはシステム例外が発生し処理が停止します。
-
-
[繰り返しリスト設定]ダイアログの[式]に指定したXPath式の評価結果がNodeList以外の場合,システム例外が発生し処理が停止します。
(5) 処理中に例外が発生した場合の処理
例外が発生した場合の処理は,HCSCサーバランタイム定義ファイルのsyserr-to-fault-convert-all-activityプロパティの設定によって次のように異なります。
- syserr-to-fault-convert-all-activityプロパティの指定がONのとき
-
メッセージを出力したあと,フォルト電文に設定する項目を含むメッセージを出力し,フォルトを送出します。
送出するフォルトについては,マニュアル「サービスプラットフォーム 解説」の「4.7.1 システム例外をフォルトに変換する汎用フォルトの概要」を参照してください。
- syserr-to-fault-convert-all-activityプロパティの指定がOFFのとき
-
システム例外をthrowします。
syserr-to-fault-convert-all-activityプロパティの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「6.5.6 HCSCサーバランタイム定義ファイル」を参照してください。