This topic applies only to the IBM Business Process Manager Advanced configuration.

关联 BPEL 流程

关联用于有同一流程的多个实例在运行的运行时环境。关联集允许合作伙伴双方初始化 BPEL 流程事务、临时暂挂活动以及在该事务恢复时再次识别到对方。

关联集

关联集使用流程入站或出站消息中的值进行初始化。

关联集用于下列情况:有大量类似对话同时发生,并可能会采用类似下面的方式进行处理:
  1. 呼叫合作伙伴,并初始化流程的实例。
  2. 为该合作伙伴收集关联标记。
  3. 通信出于某种原因而终止。通常是因为其中一个参与者需要独立收集更多信息。
  4. 通信重新建立,早先收集的标记会用于确认是否是同一合作伙伴在与同一流程实例进行交互。
  5. 流程继续运行。

为了说明关联集可如何在实际设置中使用,假设您致电旅行社询问行程。在此例中,初次对话中,您会告诉代理您感兴趣的地方,而她会为您提供报价。您表示希望考虑一下,为此她会收集一些有关您的具体联系信息(姓名和电话号码),然后您结束对话。一周后,您做出了决定,您再次致电旅行社,并提供了自己的联系信息。有了这些信息,她能够确定您的身份,并在计算机上拉出给您的报价。您达成这笔交易。

在此示例中,关联集是代理存储的联系信息,通过这些联系信息,她才能够在日后的通信中识别到您。在您做出决策之前,她不会停下目前正在做的工作,而是会与其他客户开展类似业务,当您再次启动联系时,她会从上次停止的地方开始重新处理您的请求。

注: 如果流程具有多个 receive 或 pick 操作,那么流程必须具有关联集。

关联属性

关联属性包含名称和数据类型,并定义这些类型关联的关联集。此外,还可以使用属性别名将消息参数映射到关联属性。

属性别名

在前面的示例中,提示由标记组成。关联标记引用流程中的特定消息部分。有时,您可能会发现希望将属性与其他接口中的某个消息部分相关联。它们可能具有从本质上来说是同类的内容,但使用不同的名称,因此需要通知系统它们是类似的。通过别名可以执行此操作。例如,您将使用别名通知系统,只要遇到名为 lastName 的消息部分,就应该假定其与名为 familyName 的其他消息部分的含义相同。

在无法始终全面公开其数据的抽象 BPEL 流程中,别名特别有用。这些类型的流程需要使所有业务逻辑对于其每个合作伙伴都透明,但通常无法承担敏感业务数据的披露。在此情况下,别名允许两个消息部分可具有相同的值,但应该由一个合作伙伴命名为一个名称,另一个合作伙伴将其命名为完全不同的名称。换言之,就是别名确认合作伙伴可使用流程中的相同数据,但要将其进行不同的标注。

在实际示例中,每次使用零食自动售货机时,使用的别名最多。透过自动售货机的窗口来选择要购买的零食时,不必根据零食的正确名称来识别零食,而是通过代码来识别,代码通常是字母与数字的组合。例如,您可能希望购买燕麦饼干,但未在键盘上输入单词“cookie”,而是输入该商品唯一的代码(例如,F6)。然后,自动售货机即可准确地知道要分发的零食。

示例

要查看如何在您可自行构建并运行的 BPEL 流程中使用关联的示例,请转至 http://publib.boulder.ibm.com/bpcsamp/index.html,然后单击 Samples for v7.0 > Advanced BPEL features
  • 关联
  • 多个关联集