Hitachi

Cosminexus V11 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編


5.6.14 繰り返しアクティビティ

1つまたは複数のアクティビティを,指定した条件に従って繰り返すための定義をするアクティビティです。

繰り返しアクティビティを利用した繰り返し処理について,次の図に示します。

図5‒19 繰り返しアクティビティを利用した繰り返し処理

[図データ]

繰り返しアクティビティを定義すると,1つまたは複数の処理を指定した条件で繰り返すことができます。また,上図の繰り返し3のように,繰り返す処理の中に繰り返し処理を定義することもできます。

最初に実行されるアクティビティが繰り返しアクティビティで,繰り返しアクティビティ内に非同期の受付を定義し,そのあとにプロセスが中断されないよう定義した場合の動作は保障しません。

〈この項の構成〉

(1) 繰り返し方式

繰り返しアクティビティでは,次のどちらかの繰り返し方式を選択できます。

条件指定方式およびリスト指定方式を利用した繰り返し処理について説明します。

(a) 条件指定方式

条件指定方式を利用した繰り返し処理について,次の図に示します。

図5‒20 条件指定方式を利用した繰り返し処理

[図データ]

条件指定方式では,XPath式で繰り返しの条件式を指定します。条件式の評価結果がtrueの間,繰り返しアクティビティ内のアクティビティが繰り返し実行されます。

(b) リスト指定方式

リスト指定方式を利用した繰り返し処理について,次の図に示します。

図5‒21 リスト指定方式を利用した繰り返し処理

[図データ]

リスト指定方式では,次の流れで繰り返し処理が実施されます。

  1. XPathで指定した変数を基に繰り返しリストが生成されます。

  2. 生成された繰り返しリストに含まれるノードの数の分だけ,繰り返しアクティビティ内のアクティビティが繰り返し実行されます。

  3. 繰り返しを実行するたびに,繰り返しリストの要素が1つずつ繰り返し要素変数に格納されます。

繰り返しリストを生成するための変数および繰り返し要素変数は,開発環境で作成して[繰り返しリスト設定]ダイアログで指定します。

(2) 定義手順

定義の手順を次に示します。

(a) 条件指定方式

  1. 繰り返しアクティビティをキャンバスに配置します。

    アクティビティを配置する方法については,「5.4.1 アクティビティを配置する」を参照してください。

  2. キャンバスの繰り返しアクティビティを選択して右クリックし,[設定]を選択します。

    [繰り返しアクティビティ]ダイアログが表示されます。

  3. [繰り返しアクティビティ]ダイアログで任意のアクティビティ名を入力します。

    [繰り返しアクティビティ]ダイアログの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「1.4.20 繰り返しアクティビティダイアログ」を参照してください。

  4. [条件指定方式]ラジオボタンを選択して[繰り返し条件設定]ボタンをクリックします。

    繰り返しの条件を設定するための[繰り返し条件設定]ダイアログが表示されます。[繰り返し条件設定]ダイアログの表示・入力内容の詳細については,マニュアル「サービスプラットフォーム リファレンス」の「1.4.22 繰り返し条件設定ダイアログ」を参照してください。

  5. 必要な情報を設定して[OK]ボタンをクリックします。

  6. 次のどちらかの方法で繰り返す処理を設定するキャンバスを表示させます。

    • キャンバスの繰り返しアクティビティをダブルクリックする

    • キャンバスの繰り返しアクティビティを選択して右クリックし,[開く]を選択する

    キャンバスの下部に繰り返しアクティビティ名のタブが表示され,繰り返す処理を設定するキャンバスが表示されます。

  7. 任意のアクティビティを配置・連結・定義し,繰り返す処理を設定します。

(b) リスト指定方式

  1. 繰り返しリストを生成するためのメッセージ型(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>
  2. 繰り返し要素のメッセージ型(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>
  3. 繰り返しアクティビティをキャンバスに配置します。

    アクティビティを配置する方法については,「5.4.1 アクティビティを配置する」を参照してください。

  4. キャンバスの繰り返しアクティビティを選択して右クリックし,[設定]を選択します。

    [繰り返しアクティビティ]ダイアログが表示されます。

  5. [繰り返しアクティビティ]ダイアログで任意のアクティビティ名を入力します。

    [繰り返しアクティビティ]ダイアログの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「1.4.20 繰り返しアクティビティダイアログ」を参照してください。

  6. [リスト指定方式]ラジオボタンを選択して[繰り返しリスト設定]ボタンをクリックします。

  7. 繰り返しリストを設定するための[繰り返しリスト設定]ダイアログが表示されます。

    [繰り返しリスト設定]ダイアログの表示・入力内容の詳細については,マニュアル「サービスプラットフォーム リファレンス」の「1.4.21 繰り返しリスト設定ダイアログ」を参照してください。

  8. [繰り返しリスト設定]ダイアログの[繰り返しリスト]の[式]に,手順1.で定義した変数の要素のパスをXPath式で指定します。

    XPath式の指定方法については,「5.6.19(2)(d) 繰り返しリスト設定ダイアログでの指定」を参照してください。

  9. [繰り返し変数]の[変数名]に,手順2.で定義した変数を指定します。

  10. 必要に応じて[最大繰り返し回数]を設定します。

  11. [OK]ボタンをクリックします。

  12. 次のどちらかの方法で繰り返す処理を設定するキャンバスを表示させます。

    • キャンバスの繰り返しアクティビティをダブルクリックする

    • キャンバスの繰り返しアクティビティを選択して右クリックし,[開く]を選択する

    キャンバスの下部に繰り返しアクティビティ名のタブが表示され,繰り返す処理を設定するキャンバスが表示されます。

  13. 任意のアクティビティを配置・連結・定義し,繰り返す処理を設定します。

(3) 定義時の注意事項

(4) 定義時の注意事項(リスト指定方式の場合だけ)

リスト指定方式を指定する場合の定義時の注意事項を次に示します。

(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サーバランタイム定義ファイル」を参照してください。