15.4. 错误类型和过滤器
错误处理尝试捕获和处理任何类型的错误,因此需要一种方法来分类错误。这样,就可以从错误正确提取信息,并使其可插拔,因为有些用户可能需要以不同于默认提供的方式进行特定类型错误。
错误分类和过滤基于 ExecutionErrorFilters
。此接口仅负责构建 ExecutionError
实例,这些实例以 ExecutionErrorStorage
策略的形式存储。它有以下方法:
-
接受
:指示过滤器是否可以处理给定错误。 -
过滤
:发生实际过滤、处理等。 -
getPriority
: 表示调用过滤器时使用的优先级。
每次过滤一个错误,并使用优先级系统来避免多个过滤器返回同一错误的替代"views"。优先级启用更为特殊的过滤器来查看是否可以接受错误,或者允许另一个过滤器处理它。
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 | 作业 | 100 |
根据优先级的最低值,会给过滤器赋予更高的执行顺序。在下表中,按以下顺序调用过滤器:
- 任务
- Process
- 作业
- DB