Skip to main content

 

 

 

 
Language:
 
 
 
OutSystems

BPT - Automatic Activityのタイムアウト

概要

Business Process機能(BPT)を使用してプロセスを作成すると、事前定義されたタイムアウトに達するAutomatic Activityを作成できます。BPTのAutomatic Activityに対して事前定義されたタイムアウトは5分です。プロセスがこの制限に達している場合は、どうすればよいでしょうか。

背景

BPTプロセスを使用する理由は様々です。主には、実際のプロセスをモデル化してその一部を自動化するために使用されます(ここでAutomatic Activityが使用されます)。一方、何らかの非同期動作を実装する手段としても使用できます。

BPTは特に前者のために設計されましたが、後者のためにも(ある程度)使用できます。

問題

各BPTインスタンスは、その特定のインスタンスを処理するために動作する新しいスレッドを生成しません。代わりに、各プロセスインスタンスを順次処理するスレッドのプールが使用されます。時間のかかるバッチプロセスをAutomatic Activityで実行している場合、そうしたスレッドのいずれかが消費されることになります。これらが多数あると、それらのアクティビティによってすべてのスレッド(またはスレッドの大部分)が消費され、他のプロセスインスタンスが処理されなくなるおそれがあります。

このようなシナリオを回避するために、OutSystemsはすべてのAutomatic Activityに5分のタイムアウトを実装しました。時間のかかるAutomatic Activityが多数あり、BPTアーキテクチャがそれらを処理できるようになっていない場合でも、このタイムアウトはあらゆるAutomatic Activityに対して一律に適用されるため、Web参照呼び出しやタイマーのタイムアウトのようにカスタマイズすることはできません。

つまり、Automatic Activityが5分のしきい値に達している場合は、こうした(通常)バッチ操作をよりスケーラブルな方法で実行するように見直しが必要かもしれません。

解決策

この問題の解決策は、多くの場合、BPTではなくバッチ処理の既存のメカニズムを使用するようにBPTプロセスを再構築することです。要するに、ジョブにタイマーを使用する必要があります。

所要時間が5分を超えるAutomatic Activityは、タイマーで処理されるようになるということです。BPTプロセスのアクティビティはタイマーのワークロードに備え、(オプションで)タイマーを起動するだけです。この後、プロセスはタイマーによる必要な処理の実行を待機します。

タイマーはデータを処理し、最終的には待機中のプロセスに処理を開始するように信号を送信します。これは、Waitアクティビティを直接終了するか、エンティティを更新または作成することによって行うことができます。

  • Was this article helpful?