在 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>