WebSphere Process Server V6.1.2 支持控制流逻辑的手动修复和更改。本文描述这些修复功能,提供一些有用的技巧,并确定在应用它们时的一些潜在缺陷。您将学习如何修复流程和动态响应建模错误处理和自动恢复机制无法解决的情况。
引言
在建模业务流程时,需要特别注意错误和异常处理。Web 服务业务流程执行语言(Web Services Business Process Execution Language,WS-BPEL)标准提供了错误处理程序和补偿处理程序,用于在您的业务流程逻辑中建模故障和异常路径。IBM® WebSphere® Integration Developer 利用了此概念,使您能够在业务流程中建模错误和补偿处理路径。即使特别小心地采取了此步骤,但在运行时仍然会出现创作时无法预见的故障情况。而且,还存在需要涉及手动修复的异常情况,例如,管理员分析并解决异常情况。WebSphere Process Server V6.1.2 支持控制流逻辑的手动修复和更改。它附带了手动修改流程实例的状态的新功能。可以使用这些新功能克服异常情况,从而修复该流程实例。
本文的第一分部描述,对于新模型而言,为了从新修复功能中获得最大好处,在建模期间可以考虑哪些情况。后续部分讨论如何使长时间运行的流程在发生始料不及的错误时避免出现大的损害。最后一部分概述 WebSphere Process Server V6.1.2 中的新功能,即跳过和跳转功能,您可以通过该功能修改长时间运行流程的缺省执行行为。
本文未涵盖一般意义上的如何建模错误和补偿处理。本文还未介绍如何使用 WebSphere Process Server 的自动恢复机制,如失败事件管理器 (Failed Event Manager)、保存和保持队列处理等。要详细了解这些主题,请参阅“参考资料”部分。
示例流程
所有这些方面都通过一个处理订购请求的示例流程来说明。其总体结构如图 1 所示。
图 1. 订购流程的结构
该流程包含三个主要步骤,每个步骤都与另一个服务通信:
校准客户数据
在此第一步中,选中客户数据。因此,该流程与一个名为 Customer Registration Service 的外部服务通信。该流程检查请求者是否为已知客户。如果是,则将从注册服务中检索客户的数据。如果是新客户,则需要将客户数据输入到人工任务活动中,并将其添加到注册服务中。最后,计算客户的当前红利利率。
库存管理
订购流程现在检查是否提供了所有装运货物,并使用 Warehouse Service 完成此检查。库存中没有的货物将从其他提供商订购,该流程将等待所有请求的货物完成后才能执行。
装运
最后,装运订购的货物并向客户开发票。因此,订购请求流程与 Shipping Service 进行通信。
为重点介绍可用的流程修复选项,本文集中说明了 Align Customer Data 的步骤:假设 Customer Registration Service 当前不可用,并且对客户服务的所有调用都返回一个运行时异常。此流程修复操作现在的目的是克服此第一个步骤,避免阻止所有订购请求。
本文还假定与 Customer Registration Service 的交互可以在以后某个时间点服务可用时手动重新进行。可以跳过对客户服务的所有调用,允许继续执行实际的订单。
流程修复实质上是指手动干预失败的流程实例,通过此方法可以成功完成以前失败的某些工作。距离实际故障点(即,出现错误的位置)越近,执行此干预就越有效和越可行。如果错误通过多级错误处理程序传播,导致终止所有其他活动,并终止流程实例本身,则无法对其修复。这就是为什么业务流程提供了 Continue On Error 选项。在将此属性设置为 No 时,流程实例将挂起发生错误的当前执行路径,并且该错误不会被直接封闭范围或活动中的任何错误处理程序处理。发生错误的活动实例被设置为特殊状态已停止。注意,流程实例中的并行路径可以继续执行并且流程状态保持运行。还需要注意,停止的活动状态不限于基本活动:结构化活动(如序列或范围)也可以停止。
您可以在流程级别上设置 Continue On Error 属性(如图 2 中所示)。缺省值为 No。
图 2. 在流程级别上设置 Continue On Error
对于以下活动类型,可以在活动级别覆盖 Continue On Error 属性(参见图 3):即调用、Java™ 代码段和人工任务活动。您应保留缺省值 Same as Process。
图 3. 为活动设置 Continue-on-Error
重要说明:如果将 Continue On Error 属性设置为 No,则对常规流程的执行在性能上没有负面影响。