4496470 发表于 2009-7-6 09:58:53

使用 WebSphere Process Server 修复流程

来源:豆豆网

  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 Integration Developer 建模业务流程,以及如何使用 WebSphere Process Server 运行和管理这些流程。您还应具备如何在 WebSphere Process Server 中执行 BPEL 流程的基础知识。

  本文向您介绍如何修复流程,并专门为您动态响应建模错误处理和自动恢复机制无法解决的异常情况做准备。此类情况的示例包括:

  某个单独的软件组件提供的服务在某个时段内不可用,并且服务实现必须通过手动交互接管。尽管此情况在某种程度上是可预见的,即流程建模程序可能已经实现了适当地处理该错误的错误处理程序(例如,通过向错误处理程序添加人工任务活动),但是,错误处理中这种级别的准确性和完整性无法在每种情况中正确假定。

  在实际场景中,可能会发生无法正确执行少量流程实例。一般情况下,新的业务流程经过广泛的测试后才能部署到生产系统。遗憾的是,当业务流程非常庞大和复杂时,或者需要一组输入数据集时,该过程可能会失败。

  本文的第一分部描述,对于新模型而言,为了从新修复功能中获得最大好处,在建模期间可以考虑哪些情况。后续部分讨论如何使长时间运行的流程在发生始料不及的错误时避免出现大的损害。最后一部分概述 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,则对常规流程的执行在性能上没有负面影响。

  授权

  每当执行流程修复操作时,需要授权请求该修复操作的人员执行此操作,即,根据具体的操作,需要将该人员授权为流程管理员、范围管理员、活动管理员或系统管理员。

  系统管理员是在 BPEContainer 应用程序上定义的角色。所有其他管理员特定于各个流程应用程序,它们在流程模型中定义。

  流程管理员

  您可以在创作时在流程的属性窗格中定义流程管理员。在 Administration 部分声明它们,如图 4 中所示。

  图 4. 定义流程管理员



  如果未定义任何流程管理员,则流程启动者将成为流程管理员。

  流程管理员允许执行以下操作:

  修复流程实例的任何位置中状态为“stopped”的活动实例,例如强制完成和强制重试。

  跳过活动实例。

  在活动之间执行跳转。

  修改全局和本地变量。

  在流程实例上执行管理操作,例如,终止或删除某个流程实例。

  范围管理员

  范围管理员可以在创作时在范围活动的属性窗格上定义。如图 5 中所示,它在 Administration 部分上声明。

  图 5. 定义范围管理员



  注意,范围管理员通过范围传递到其封闭范围,即封闭范围的范围管理员将成为当前范围的范围管理员。此外,流程管理员将成为范围管理员。

  范围管理员允许执行以下操作:

  修复处于范围内的已停止的活动实例,例如,强制重试和强制完成。

  跳过包含在范围中的活动实例。

  在范围中包含的活动之间执行跳转。

  修改在范围或封闭范围中定义的变量。

  在本文的后续部分中,我们将介绍有些修复操作可以将流程导航尚未找到的活动作为目标(参见“跳过活动实例”)。

  重要说明:在本例中务必理解,只有流程导航已经找到的范围的范围管理员才允许执行修复操作。这意味着,在尚未找到在其中发生修复操作的范围时,您必须是外部封闭范围的范围管理员或者流程管理员才能执行修复操作。

  活动管理员

  对于某些活动类型(例如,调用活动和 Java Snippet 活动),您可以在活动的 Administration 部分定义活动管理员,如图 6 所示。

  图 6. 某个活动的管理员



  另外,您还可以在流程级别定义缺省活动管理员(参见图 4,第二个人工任务规范)。它适用于没有明确定义管理员的流程中的所有活动。

  封闭范围的流程管理员和范围管理员将自动成为此范围中包含的所有活动的活动管理员。

  活动管理员允许执行以下操作:

  修复处于停止状态的活动实例,例如强制重试和强制完成。

  跳过活动实例。

  分配管理权限的建议

  为了避免流程启动者可能在未授权的情况下修复活动,我们建议至少定义一个流程管理员。由于范围管理员被继承到封闭范围中,而且这会导致附加持久性数据,因此我们建议少量而有目的地使用范围管理员。

  还应向范围管理员分配流程阅读者权限;否则,将不允许范围管理员查看 BPC Explorer 中的流程实例,该权限实际上是应用跳过和跳转功能的起点。

  范围管理员——示例

  在我们的示例中,所有客户相关的操作都收集到名为 AlignCustomerData 的范围中,这在简介中已经说明(参见图 1)。

  允许客户关系经理“Jeff”查看和修复流程中的此区域。不过,流程的其他区域与他不相关,出于安全原因,不应让他更改这些区域。这就是我们为什么将 Jeff 添加到范围 AlignCustomerData 的范围管理员角色。
页: [1]
查看完整版本: 使用 WebSphere Process Server 修复流程