アクティビティ・タイムアウト時にスローされるbpelx:timeoutフォルト

bpelx:forまたはbpelx:until属性から、有効なXMLスキーマの期間またはdatetime値が返された場合は、タイムアウトしたアクティビティからbpelx:timeoutフォルトがスローされます。このフォルトはcatchまたはcatchAllブロックによって捕捉され、通常のBPELフォルトと同様に処理されます。フォルトのメッセージはアクティビティの名前になります。また、タイムアウト期間より前に、想定したコールバック・メッセージの受信に失敗したためにアクティビティがタイムアウトしたことを示すインスタンス監査証跡にイベントが記録されます。

タイムアウト時間より前にアクティビティがパートナからコールバックを受信した場合、フォルトはスローされません。コールバックを受信したときにアクティビティがタイムアウトしていた場合、コールバック・メッセージはアクティビティに配信されず、配信メッセージ表に取消しのマークが設定されます。コールバック・メッセージの処理と同時にタイムアウト・アクションが試行された場合、そのタイムアウト・アクションは無視されます。11g リリース1現在、インスタンスはオプティミスティックにロックされます(リリース10gのペシミスティック・ロックとは対照的です)。したがって、行の第2のアクションがそのまま実行されます。

操作に対するフォルトがコンポーネントWSDLに宣言されている場合は、BPELコンポーネントからbpelx:timeoutフォルトをスローできます。操作に対するフォルトが宣言されていない場合、フォルトはFabricInvocationException実行時フォルトに変換されます。このフォルトは、すべてのコール元コンポーネント(BPELコンポーネントを含む)によって捕捉されますが、フォルトのタイプは、bpelx:timeoutではなくなります。(ただし、フォルト・メッセージ文字列は、このフォルトが当初はタイムアウト・フォルトであったことを示します)。