アクティビティーのループの作成
ループ・タイプ
いくつかの方法でループを作成および実装できます。 例えば、データベースから取得したレコードがすべて処理されるまで、そのレコードを反復処理するサービスに、スクリプト・コンポーネントを組み込むことができます。 実装のいたるところに JavaScript を組み込むことができるため、特定の条件が TRUE になるまでアクションを繰り返す論理を簡単に作成できます。
スクリプトを使用してループを実装するほかに、以下の表で説明されている、単純ループおよびマルチ・インスタンス・ループに対応するプロセス・アクティビティーを構成することができます。 あるアクティビティーの結果として生じるランタイム・タスクを 複数回実行させるには、そのアクティビティーにループ動作を構成します。 構成できるのは、入力または出力のシーケンス・フローが含まれるアクティビティーのループ動作に限られます。
| ループ・タイプ | 説明 |
|---|---|
| 単純ループ | 単純ループを使用してアクティビティーをモデル化する場合、指定するループ最大値まで、必要な数のインスタンスが動的に作成されます。 単純ループを使用したアクティビティーは、そのアクティビティーの最後のインスタンスが実行されるまで、順次実行されます。 単純ループに対応するように構成されたアクティビティーを実行すると、単一トークンが生成され、アクティビティーの各インスタンスにそれが使用されます。これは実際には、ランタイム・タスクをリサイクルすることになります。 |
| マルチ・インスタンス・ループ | マルチ・インスタンス・ループでは、同じアクティビティーの複数の固有インスタンスを順次または並列に、動的に実行します。 マルチインスタンス・ループに対応するように構成されたアクティビティーを実行すると、アクティビティーのインスタンスごとに固有のトークンが作成されます。 |
パフォーマンス
単純ループおよびマルチインスタンス・ループでは、アクティビティー内のステップ数から、構成で指定されている最大数を上限に、タスクが作成されます。 ループは、数百ものタスクや大規模な変数セットの送信およびレビューを処理するようには設計されていません。 ループはどちらかと言えば、少数のタスク (通常は 10 未満) 向けに設計されています。 この数が多いと、パフォーマンスに大きな影響を与える場合があります。 そのため、ループの最大数は 10 より小さく設定することが推奨されます。 例えば、採用承認タスクで、5 人の面接官のうち 3 人が候補者を承認する必要がある場合、承認タスクが 5 回ループするように設定すると、システムにより 5 個のタスクが作成されます。 面接官のうち 3 人が承認を行うと、残りの 2 つのタスクはクローズされ、アクティビティーの次のステップが開始されます。
10 を超えるタスクをループする必要がある場合、負荷テスト・シナリオを作成し、対象のアプリケーション設計でループが動作するかどうかをテストしてください。 ループのパフォーマンスが想定よりも遅い場合、アプリケーションの変更が必要になる場合があります。 例えば、タスクのループが、多数のステップと (1 つのみでなく) 複数の Coach を含むプロセスの場合、次のアプローチを検討してください。Undercover Agent (UCA) を使用してメッセージの開始イベントを呼び出し、そのポイントからより関連性の高い複数のインスタンスを作成して、それらのインスタンスを親インスタンスと並列で異なるスレッド上で処理します。 こうすることで、ボトルネックが 1 台のサーバー上の 1 個のスレッドから、多数のノード (N) 上の多数のスレッド (M) に移されます。