アイドル状態のプロセスを終了する
長時間にわたりアイドル状態を継続するプロセスを設計する場合には、アプリケーションのデプロイに悪影響を及ぼすことがあります。その主な理由は、以下のとおりです。
-
長時間にわたりプロセスインスタンスがアクティブ状態を継続していると、データベース内に情報が蓄積します。
-
デプロイ時、アクティブなプロセスインスタンスに関する情報すべてに対して影響分析が実行され、より多くの時間を要することになります。
このケースでは、以下の方法が推奨されます。
-
プロセスフローを分析し、長時間にわたりプロセスがアイドル状態を継続するポイントを特定します。
-
Decisionツールを使用して、そのポイントにおけるプロセスの実行を制御します。
-
初回の実行: プロセスを終了し、再開するための情報(再開する日時、再開する場所など)を保存します。
-
再開された実行: フローのプロセスが再開されたポイントより前のアクティビティをスキップします。
-
以下の技法の1つを使用して、再開するプロセスを開始する方法を設定します。
- タイマー
- 他のプロセス
- 画面上のアクション
例
例として、月次でクレジットカードの利用状況を収集し、それを各顧客にメールで送信するプロセスを考えます。顧客は、誤った利用状況に関して申し立てができる期間が6か月あります。ほとんどの場合、顧客はメールを受け取ってから3日以内に申し立てを行います。
プロセスは、WaitForClaimアクティビティでアクティブなアイドル状態を6か月間継続します。ここでは、プロセスフローを変更し、タイマーを作成して、プロセスを再開します。
-
プロセスの再開に必要なすべての情報を保存する自動アクティビティのPrepareTimeoutが追加されます。
-
RedirectReportというDecisionが追加され、以下の方法でフローを制御します。
-
初回の実行: プロセスの初回の実行でたどるパス。
-
Claim: プロセスの停止中に顧客がクレームを申し立てた場合に再開されたプロセスがたどるパス。
-
Timeout: プロセスの停止中にクレームがなかった場合に再開されたプロセスがたどるパス。
-
-
これは、「ほとんどの場合、顧客はメールを受け取ってから3日以内に申し立てを行う」という事実に基づいた、プロセスに対する改善です。このように、プロセスは3日(短期間)待機し、この間に顧客が申し立てを行った場合は、停止した後に再開するという処理を行わずにプロセスが通常どおりの流れで処理されます。
-
ProcessWaitingReportsタイマーを作成し、停止したプロセスを再開するプロセスを開始するように設定します。