É possível ocorrer loops infinitos no código JavaScript executado dentro de aplicativos do IBM Business Process Manager. Você pode configurar parâmetros de detecção de loop JavaScript no arquivo 100Custom.xml para detectar loops infinitos e, opcionalmente, finalizá-los.
Quando ocorrem loops infinitos no código JavaScript em execução nos aplicativos IBM BPM, isso afeta outros recursos. Por exemplo, os encadeamentos do Process Center ou do Process Server são perdidos até que o servidor seja finalizado, afetando a disponibilidade do servidor. No entanto, pode ser difícil identificar qual atividade Javascript está em loop.
O IBM BPM monitora o número de instruções Javascript executadas em cada atividade de script. O tempo de execução de JavaScript notifica o mecanismo do IBM BPM quando o contador de instruções atinge o limite configurado pelo mecanismo do IBM BPM. Quando o limite do contador de instruções é atingido, o mecanismo do IBM BPM faz uma verificação para ver há quanto tempo a atividade de script está em execução.
Se o valor especificado pelo parâmetro loop-detection-duration for excedido, será assumido que a atividade está em um loop infinito. A duração padrão está configurada como 20 segundos, mas isso pode ser configurado (consulte o exemplo a seguir).
Por padrão, quando um loop infinito é detectado, o mecanismo do IBM BPM grava um aviso no arquivo SystemOut.log, mas a atividade de script continua. Para configurar o mecanismo do IBM BPM para finalizar as atividades de script de loop infinito, configure o parâmetro loop-detection-exception como true.
<common merge="mergeChildren">
<javascript-engine>
<loop-detection-duration>90</loop-detection-duration>
<loop-detection-exception>true</loop-detection-exception>
</javascript-engine>
</common>