16.4. エラータイプとフィルター
エラー処理ではどのような種類のエラーも捕まえて処理しようとするため、エラーをカテゴリー分けする方法が必要になります。こうすることで、エラーから適切に情報を抽出し、プラグ可能とすることができます。これは、ユーザーによっては、デフォルトとは違う方法で特定タイプのエラーの出力と処理方法を必要とするためです。
エラーのカテゴリー分けとフィルターリングは、ExecutionErrorFilters
をベースにしています。このインターフェイスは ExecutionError
のインスタンス構築を担っており、これは後で ExecutionErrorStorage
戦略で保存されます。これには以下のメソッドがあります。
-
accept
: エラーがフィルターで処理可能かどうかを示します。 -
filter
: 実際のフィルターリング、処理などが発生する場所です。 -
getPriority
: フィルター呼び出し時に使用される優先度を示します。
フィルターは、一度に処理するエラーは 1 つで、優先順位の仕組みを使用して、複数のフィルターで、別のビューで同じエラーが返されないようにします。優先順位を使用すると、より特化したフィルターで、エラーが受け入れられるかどうか、または別のフィルターで処理可能かが判断されます。
ExecutionErrorFilter
は ServiceLoader
メカニズムを使用することで提供され、これによりエラー処理の機能が容易に拡張できます。
Red Hat Process Automation Manager には以下の ExecutionErrorFilters
が同梱されています。
クラス名 | タイプ | 優先順位 |
---|---|---|
org.jbpm.runtime.manager.impl.error.filters.ProcessExecutionErrorFilter | Process | 100 |
org.jbpm.runtime.manager.impl.error.filters.TaskExecutionErrorFilter | タスク | 80 |
org.jbpm.runtime.manager.impl.error.filters.DBExecutionErrorFilter | DB | 200 |
org.jbpm.executor.impl.error.JobExecutionErrorFilter | Job | 100 |
フィルターには、優先度の値の低いものが実行順序の高いものとして与えられます。上記のテーブルでは、以下の順序でフィルターが実行されます。
- タスク
- Process
- Job
- DB