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 中以捕获所有故障,但仅当调用活动失败时才会执行故障策略。