向编排中添加全局异常处理程序

在运行时期间,如果编排的任何活动抛出异常,并且已启用全局异常处理程序,那么会运行全局 CatchAll 分支。

关于此任务

下图显示了一个示例编排:

示例编排

在此示例中,如果插入数据库数据库插入行活动失败并抛出异常,那么会运行 CatchAll 分支中的 If..Then 活动。

过程

  1. 右键单击编排的启动图标 “启动”图标,然后从菜单中选择添加 CatchAll 分支选项。 这样就会将 CatchAll 分支添加到编排中并自动创建下列变量:
    • faultName - 在运行时期间,faultName 变量包含编排中活动所抛出异常的名称。
    • faultData - 在运行时期间,faultData 变量包含与异常关联的错误消息。目前只会针对 Web Service 活动返回该附加信息。对于 Web Service 活动,faultData 变量包含错误。
    • faultInfo - 在运行时期间,faultInfo 变量会返回下列节点:
      • name - 在运行时期间,faultInfo/name 节点包含编排中活动所抛出异常的名称。 faultInfo/name 节点为 xsd:QName 类型。
      • message - 在运行时期间,faultInfo/message 节点包含与异常关联的错误消息。faultInfo/message 节点为 xsd:string 类型。
      • activityId - 在运行时期间,faultInfo/activityId 节点包含用于唯一识别发生异常的活动的活动标识。faultInfo/activityId 节点为 xsd:int 类型。
      • activityName - 在运行时期间,faultInfo/activityName 节点包含发生异常的活动的名称。faultInfo/activityName 节点为 xsd:string 类型。
      • faultTime - 在运行时期间,faultInfo/faultTime 节点包含发生错误的时间。faultInfo/faultTime 节点为 xsd:dateTime 类型。
      注: faultName 变量和 faultInfo/name 节点中的由活动返回的异常名称可能会在将来的发行版中发生变化。
  2. 通过将活动选项卡中的活动拖至 CatchAll 分支来配置 CatchAll 分支,如上图中所示。

结果

注: faultNamefaultDatafaultInfo 变量的作用域只限于 CatchAll 分支。该作用域限制意味着只能保证这些变量的值在 CatchAll 分支中有效。 例如,如果添加一个用于测试 faultName 变量值的 If...Then 活动,那么必须将 If...Then 活动放在 CatchAll 分支中,如上图所示。



反馈 | 声明


http://pic.dhe.ibm.com/infocenter/wci/v7r0m0/topic/com.ibm.wci.doc/Adding_a_Global_Exception_Handler_to_an_Orchestration.html