Groovy式がタイムアウトしたのはなぜですか。
通常は、完了までに60秒を超える時間が必要なGroovyスクリプトを記述しないでください。
Groovy式に対して60,000ミリ秒(60秒)のタイムアウトが構成されます。 式を完了するために60秒を超える必要がある場合は、式のタイムアウト(oracle.jbo.ExprTimeoutException
)が発生し、エラー・メッセージが表示されます。
たとえば:
Exception in expression "<object name>" object function <function name> : oracle.jbo.ExprTimeoutException Expression timed out. at "<object name>" object function <function name> line <line number>
エラー・メッセージが表示されるロケーションは、Groovy式が実行されたロケーションによって異なります。
Groovy式が次の結果として実行された場合... |
エラー・メッセージが表示されます... |
---|---|
UI操作 |
UI。 |
Webサービスの更新 |
Webサービス・クライアント。 |
ワークフロー起動 |
エラー・メッセージはエンド・ユーザーには表示されません。 |
Groovy式のタイムアウトが発生する可能性がある一般的な状況は次のとおりです:
-
Groovy式が大量のレコードのコレクションに対して反復しようとすると、Groovyタイムアウト・エラーが発生する可能性があります。 このような状況では、最初に変更されたレコードは実際にはコミットされません。
たとえば、次の式がタイムアウトしたとします:
def vo=newView('TestCO_c') vo.executeQuery() while(vo.hasNext()){ def curRow=vo.next() curRow.setAttribute('F1_c',curRow.RecordName) println(curRow.RecordName+":" + result) }
println
文を検査すると、いくつかのレコードに対してsetAttribute()
操作が実行されたことがわかります。 ただし、Groovyの実行の進行中にタイムアウトが発生した場合、加えられた変更はコミットされません。
-
Groovy式がWebサービスをコールし、Webサービス操作に60秒を超える時間がかかる場合は、Groovyタイムアウト・エラーが発生する可能性があります。 ただし、コミットはWebサービスの一部であるため、コミットはWebサービス操作の完了後に行われます。
def response=adf.webServices.WS.Operation(<payload>);