BPEL - 使用故障处理
要了解如何使用故障处理,我们需要了解 Oracle SOA Suite 中服务组合的基本架构。
服务组件 − BPEL 流程、业务规则、人工任务、中介。这些用于构建 SOA 组合应用程序。
绑定组件 − 在 SOA 组合与外部世界之间建立连接。
服务 − 为 SOA 组合应用程序提供入口点。
绑定 − 定义与服务通信的协议,如 SOAP/HTTP、JCA 适配器等。
WSDL −定义 Web 服务的服务定义。
引用 − 使 SOA 复合应用程序能够向外部服务发送消息
连线 − 使服务组件之间能够建立连接。
故障类型
现在让我们看看不同类型的故障。
业务故障
当应用程序执行 THROW 活动或 INVOKE 收到故障作为响应时发生。故障名称由 BPEL 流程服务组件指定。使用故障名称和故障变量的故障处理程序会捕获此故障。
运行时故障
这是由系统抛出的。这些故障与 RunTimeFaultMessage 相关,并包含在
http://schemas.oracle.com/bpel/extensionnamespace 中。
故障处理方式
在本节中,我们将了解不同的故障处理方式。
Throw 活动
Throw 活动明确抛出故障。catch 块捕获此故障,并据此执行相应的操作。
使用 throw 活动,您可以抛出业务故障,并在创建的范围内捕获此故障并重定向到调用者(消费者)以采取行动。
与上述方法不同,您可以抛出在创建范围的 catch 活动中捕获的相同故障。在主要范围内,您可以使用 catchall 活动捕获此故障。
错误处理程序框架 (EHF)
EHF 中使用的 2 个主要文件是 −
- Fault-Policy.xml
- Fault-Bindings.xml
每当 BPEL 流程抛出错误时,EHF 都会检查错误是否存在于 Fault-Bindings.xml 文件中。如果存在,则执行 Fault-Policy.xml 文件中的操作。如果未找到操作,则抛出故障并在 catch 块中处理。
故障管理框架(Fault-Policy.xml 和 Fault-Bindings.xml)保存在 SOA Composite 中。
catch 和 catchall 等故障处理程序位于 BPEL 中以捕获所有故障,但仅当调用活动失败时才会执行故障策略。