📜  BPEL-使用故障处理

📅  最后修改于: 2020-10-15 10:46:24             🧑  作者: Mango


要了解如何使用错误处理,我们需要学习Oracle SOA Suite中服务组合的基本体系结构。

  • 服务组件-BPEL流程,业务规则,人工任务,调解员。这些用于构建SOA复合应用程序。

  • 绑定组件-在SOA组合和外部环境之间建立连接。

  • 服务-提供SOA复合应用程序的入口点。

  • 绑定-定义与服务通信的协议,例如SOAP / HTTP,JCA适配器等。

  • WSDL-定义Web服务的服务定义。

  • 参考-使SOA复合应用程序能够将消息发送到外部服务

  • 电线-启用服务组件之间的连接。

故障类型

现在让我们看看不同类型的故障。

业务失误

在应用程序执行THROW活动或INVOKE收到故障作为响应时发生。故障名称由BPEL流程服务组件指定。使用故障名称和故障变量的故障处理程序会捕获此故障。

运行时错误

这是由系统抛出的。这些故障与RunTimeFaultMessage相关联,并包含在

http://schemas.oracle.com/bpel/extensionnamespace

故障处理方式

在本节中,我们将学习不同的故障处理方式。

投掷活动

引发活动明确引发了故障。 catch块捕获此故障,并由此执行相应的动作。

  • 使用抛出活动,您可以抛出业务故障,并且可以在创建的范围内捕获该故障并重定向到调用方(消费者)以采取措施。

  • 代替上面的方法,您抛出在创建的作用域的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组合内部。

诸如catch和catchall之类的故障处理程序都位于BPEL内以捕获所有故障,但是仅当调用活动失败时才会执行故障策略。