5.6.15 スコープアクティビティ
1つまたは複数のアクティビティを,ひとまとまりの処理単位として定義するためのアクティビティです。
スコープアクティビティを利用した処理単位について,次の図に示します。
スコープアクティビティを定義すると,スコープ内の処理フローを1つのまとまりとして扱うことができます。また,上図のスコープ3のように,スコープ内の処理フローにさらにスコープを定義することもできます。
なお,スコープ内で定義した変数は,そのスコープ内でだけ有効になります。スコープと変数の有効範囲についての詳細は,「5.5.1(5)(a) スコープアクティビティを使用している場合の変数の使用」を参照してください。
- 〈この項の構成〉
(1) 定義手順
定義の手順を次に示します。
-
スコープアクティビティをキャンバスに配置します。
アクティビティを配置する方法については,「5.4.1 アクティビティを配置する」を参照してください。
-
キャンバスのスコープアクティビティを選択して右クリックし,[設定]を選択します。
[スコープアクティビティ]ダイアログが表示されます。
-
アクティビティ名を入力します。
-
[OK]ボタンをクリックします。
-
次のどちらかの方法でスコープ内の処理を設定するキャンバスを表示させます。
-
キャンバスのスコープアクティビティをダブルクリックする
-
キャンバスのスコープアクティビティを選択して右クリックし,[開く]を選択する
キャンバスの下部にスコープアクティビティ名のタブが表示され,スコープ内の処理を設定するキャンバスが表示されます。
-
-
任意のアクティビティを配置・連結・定義し,スコープ内の処理を設定します。
(2) 高度な設定
スコープアクティビティは,内部に定義されたアクティビティでトランザクションをコミットしないように設定できます。
[スコープアクティビティ]ダイアログの[高度な設定]で,[このスコープの開始時と終了時のみコミットする]ラジオボタンを選択した場合,スコープアクティビティの開始時および終了時にコミットされます。スコープアクティビティ内に定義されたアクティビティはコミットされません。
[アクティビティ単位でコミットする]ラジオボタンを選択した場合,スコープアクティビティの開始時および終了時にコミットされません。スコープアクティビティ内に定義されたコミットを実行するアクティビティはコミットされます。
デフォルトでは,[アクティビティ単位でコミットする]ラジオボタンが選択されています。
[スコープアクティビティ]ダイアログの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「1.4.22 スコープアクティビティダイアログ」を参照してください。
[このスコープの開始時と終了時のみコミットする]ラジオボタンを選択した場合のトランザクションの詳細については,マニュアル「サービスプラットフォーム 解説」の「3.4.5 スコープの開始時および終了時にコミットする設定を選択した場合のトランザクション」を参照してください。
(3) 定義時の注意事項
スコープアクティビティ定義時の注意事項を次に示します。
-
アクティビティ名は64バイト以内にしてください。
-
ダイアログの入力フィールドに制御文字は指定しないでください。
[このスコープの開始時と終了時のみコミットする]ラジオボタンを選択したスコープアクティビティ定義時の注意事項を次に示します。
-
スコープアクティビティ内に,次のアクティビティは定義できません。
-
[このスコープの開始時と終了時のみコミットする]ラジオボタンを選択したスコープアクティビティ
-
-
スコープアクティビティ内に,次のアクティビティを定義すると,検証時にエラーが発生します。
-
受付アクティビティ
-
応答アクティビティ
-
待機アクティビティ
-
-
[このスコープの開始時と終了時のみコミットする]ラジオボタンを選択したスコープアクティビティ内に定義されたサービス呼出アクティビティに指定できるのは,DBアダプタだけです。DBアダプタ以外のサービスアダプタ,およびビジネスプロセスを指定した場合は,動作を保証できません。
-
[このスコープの開始時と終了時のみコミットする]ラジオボタンを選択したスコープアクティビティ内で途中終了アクティビティを実行した場合,その時点でコミットされ,ビジネスプロセスを終了します。
-
ビジネスプロセスとサービス呼び出し先のトランザクションが別の場合,トランザクション制御の対象はビジネスプロセスのトランザクションとなります。サービス呼び出し先のトランザクションは,トランザクション制御の影響を受けないで動作します(ビジネスプロセスを呼ぶサービス呼出アクティビティ,RequiresNewの機能を呼ぶサービス呼出アクティビティを定義した場合など)。
-
スコープアクティビティ内にDBアダプタを呼ぶサービス呼出アクティビティを定義した場合,HCSCサーバランタイム定義ファイルの「dba-separate-transaction」プロパティの値が「false」または,SQLオペレーション定義ファイルの「dba_separate_transaction」属性の値が「N」で動作することが前提となります。
-
システム例外が発生し,ロールバックされたビジネスプロセスが再実行された場合,スコープアクティビティ内に定義されたアクティビティ,サービス呼び出し先のサービスが再度実行されることを想定する必要があります。