第9部分: 面向灵活性和可配置性的业务流程并行活动模式
这个文章系列主要介绍了组合业务服务 (CBS) 的开发,本文是其中的第 9 部分。可以通 过组合现有的 SOA 服务得到 CBS,或者作为一个新的服务创建 CBS,它们的目的都是提供可 配置性。本文介绍了用于为 CBS 设计业务流程执行语言 (BPEL) 流程的并行活动模式。本文 提供了一个银行用例示例,该用例实现了这种模式,以便在从 CBS 构建的简单应用程序中创 建灵活的、可配置的业务流程。本文描述了一个利用 BPEL 并行活动来实现实际用例的解决 方案。可以实例化多个并发流程,并发流程的数目是不确定的,可以由业务对象在运行时指 定。本文首先简单介绍了并行活动模式,然后提供了一个贷款请求用例,通过这个用例您将 了解如何使用并行活动模式以实现灵活性和可配置性。
回顾贷款请求用例
您可以查看本系列中的其他文章以获得到目前为止有关这个用例场景的详细信息。在这个 场景中,贷款请求用例是在某个银行客户使用该银行的 Web 门户申请贷款产品时触发的。来 自银行的、基于 Web 的用户界面的贷款应用程序的提交操作,将调用贷款审批 BPEL 流程。 这个流程将从该客户的配置文件中检索他的社会保险号,并使用这个编号来调用一个信用检 查 BPEL 流程,从而实现了并行活动模式。信用检查 BPEL 从多个代理处获得一份信用评分 的列表,并将该列表返回给贷款审批流程。根据信用检查 BPEL 流程所返回的列表中的实际 信用评分,可以自动地拒绝或批准这个贷款请求,或者将其转发以便进行人工审核。根据信 用检查 BPEL 流程所返回的列表计算平均信用评分,通过一组基于这个评分的业务规则作出 相应的决策。
当一个贷款请求需要人工审核时,贷款审批流程将调用另一个 BPEL 子流程,其中包括人 工任务的使用。将信用评分列表转发到这个 BPEL 子流程。该银行将检查这个信用评分列表 以及与申请者相关的附加信息,并决定是否应该批准这个贷款请求。
使用并行活动模式
在开始设计 BPEL 流程时,您可以使用任何模式,如同步模式 、基于状态模式、或者并行活动模式的不同类型(请参见参考资料)。这个部分介绍了一种 并行活动模式,这种模式在进行 BPEL 设计的时候不需要知道并行活动的数目。对于直到运 行时才能确定要调用的实例数目的情况,这种模式可以并发地调用多个 BPEL 流程实例。这 种模式还可以确保在工作流结束之前完成所有的流程实例。即将推出的 WS-BPEL 2.0 规范中 计划包含这种并行活动模式,其中使用了一个新的 BPEL forEach 活动,以及子流程并行调 用的一个关联标志。本文描述了如何遵循并行活动模式并使用现有的 WebSphere Integration Developer 6.0 工具来实现其中每项活动的功能。图 1 阐释了这个模式:
图 1. 并行活动模式
名为 MultiInvokeRun 的父 BPEL 流程(如图 1 中的上半部分所示)使用一个名为 InvokeAll的循环元素(如图 1 中的左上部分所示)进行重复的、单向的(异步)调用。第 二个循环称为 WaitReplies(如图 1 中的右上部分所示),它并行地运行,并且在子流程( 如图 1 的下半部分中描述的 MultiInvokeChild 流程)完成时用于接收通知。在第一次调用 之前,对于每次循环,都会在 MultiInvokeRun 流程的 SetUpCounters 活动中初始化一个计 数器。可以在运行时通过这个计数器来帮助指定子流程的数目。直到接收到来自所有子流程 的通知,WaitReplies 循环才会结束。当 WaitReplies 循环结束时,父 BPEL 流程 MultiInvokeRun 也就完成了。