- Question.
-
自動処理工程を含むケースを大量に自動起動したところ、その後の自動処理の完了やタスクの到着が遅くなっています。
- Answer.
-
ワークフローエンジンが処理待ちの状態になっています。生きているトークンの数が多すぎるため、内部の処理キューが積み上がっています。
ケースが起動されると、ワークフロー上のトークンが各工程を順番に進んでいきます。ワークフローエンジン内のジョブキューは、以下の処理を順番に実行します。
- トークンの移動処理
- 自動処理工程の実行
- ヒューマンタスク工程におけるタスクの割り当て・オファー処理
このジョブキューはユーザーからは観測できません。大量のケースが一斉に起動されると、これらの処理がキューに大量に積み上がり、それぞれが実行されるまでの待ち時間が長くなります。影響は起動したケースだけでなく、同一環境上のすべてのユーザーに及びます。
特に、多くの自動処理工程や OR / AND ゲートウェイを含むワークフローアプリは注意が必要です。ヒューマンタスクは担当者が処理するまでトークンが停止するため、キューへの負荷は自然に抑えられます。一方、自動処理工程はトークンが止まらず連続して実行され続けます。さらに OR / AND ゲートウェイが含まれる場合、トークンが増殖することで負荷が一層大きくなります。
この状態を解消するには、生きているトークンの数を減らす必要があります。不要なケースを強制終了することで、処理キューへの負荷が軽減され、残りのケースの処理速度が回復します。
今後の予防策として、このようなワークフローアプリでケースを大量起動する際は、一度に起動する件数を絞ってください。進行中のケースが大量に積み上がらないよう、ペースを調整することを推奨します。
起動方法は問いません。 この現象は HTTP リクエストや REST API による起動に限らず、人手による起動・メール受信・タイマーなど、どの方法でケースを大量に起動しても発生します。原因は起動経路ではなく、生きているトークンが一斉に増えてジョブキューが積み上がることにあります。
