IBM Business Process Manager アプリケーション内で実行されている JavaScript コードで無限ループが発生する可能性があります。100Custom.xml ファイル内の JavaScript ループ検出パラメーターを構成して、無限ループを検出し、オプションとして無限ループを強制終了することができます。
IBM BPM アプリケーション内で実行されている JavaScript コードで無限ループが発生している場合、他のリソースが影響を受けます。例えば、サーバーを強制終了するまで Process Center または Process Server のスレッドが失われるため、サーバーの可用性に影響します。しかし、ループが発生している JavaScript アクティビティーを識別するのが難しい場合があります。
IBM BPM は、各スクリプト・アクティビティーで実行された JavaScript 命令の数をモニターします。JavaScript ランタイムは、IBM BPM エンジンによって設定された制限に命令カウンターが達すると、IBM BPM エンジンに通知します。命令カウンターしきい値に達すると、IBM BPM エンジンは、スクリプト・アクティビティーが実行されている期間をチェックします。
loop-detection-duration パラメーターによって指定された値を超過している場合、アクティビティーで無限ループが発生していると見なされます。デフォルトの期間は 20 秒に設定されていますが、構成可能です (以下の例を参照してください)。
デフォルトでは、無限ループが検出されると、IBM BPM エンジンが警告を SystemOut.log ファイルに書き込みますが、スクリプト・アクティビティーは続行します。無限ループが発生しているスクリプト・アクティビティーを強制終了するように IBM BPM エンジンを構成するには、loop-detection-exception パラメーターを true に設定します。
<common merge="mergeChildren">
<javascript-engine>
<loop-detection-duration>90</loop-detection-duration>
<loop-detection-exception>true</loop-detection-exception>
</javascript-engine>
</common>