用于版本管理的模式
以下两种模式说明了任意 SCA 组件如何使用后期绑定与人工任务和业务流程交互。请注意,通过 BPC API 与任务和流程交互的客户端不需要这些模式,因为 BPC API 直接支持后期绑定(请参阅前面的支持早期和后期绑定的场合部分)。
业务流程的代理流程
如果某个 SCA 组件调用另一个 SCA 组件,则这些组件将静态地绑定,也就是说,无论起始有效日期如何,都将调用所连接的流程组件。唯一受支持的后期绑定组合是一个流程组件调用另一个流程组件。但是,可以将后期绑定扩展到其他 SCA 组件或始终应该调用流程组件的当前有效版本的客户端。这是通过在调用 SCA 客户端(例如另一个 SCA 组件或 Web 服务客户端)与流程之间添加代理流程来实现的。这样,SCA 客户端将静态地绑定到代理流程;但是,代理流程将使用后期绑定动态地调用流程的当前有效版本。

图 13. 使用代理流程的 SCA 客户端后期绑定
代理流程的实现非常简单。代理流程包含一个接收活动,后面跟着一个调用活动,以及一个仅当该流程提供的操作是双向操作时才需要的应答活动。确保调用活动的引用合作伙伴指定了流程模板名称。接口合作伙伴和引用合作伙伴都必须使用要调用的流程的接口。

图 14. 代理流程实现
代理流程的类型取决于所要代表的流程的类型。由于微流程的性能比长时间运行的流程的性能更好,应该尽可能使用微流程来实现代理流程。下表提供了有关何时使用哪种类型的代理流程的建议。
表 1. 提供有关何时使用每一种代理流程的建议

(*) 如果该流程可能在将来更改为长时间运行的流程,则使用长时间运行的代理流程。
应该谨慎选择代理流程的类型,因为无法容易地替换此流程。例如,如果您的流程是具有双向接口的微流程,您通常会将代理流程实现为微流程。然而,如果您的流程的后续版本变为长时间运行的流程,您也需要更改代理流程。
人工任务的装饰流程
通常,SCA 客户端使用 SCA 连接调用人工任务组件,也就是静态地绑定到对应的任务。
如果 SCA 组件需要调用人工任务的当前有效版本,则人工任务装饰流程 模式可以帮助实现此目的。一般的“装饰模式”是一种设计模式,允许动态地向现有组件添加新的行为。此模式使用后期绑定来调用表示实际人工任务的装饰流程的当前有效版本,从而实现到该任务的后期绑定。
例如,如果某个流程以后期绑定方式调用某个人工任务,则它将使用后期绑定调用装饰流程,而装饰流程又静态地调用该任务。装饰流程或者作为内联任务包含该任务,或者调用对应的人工任务组件。下图显示了实现为人工任务组件的人工任务的不同版本的示例。

图 15. 使用装饰流程调用人工任务的流程
装饰流程公开了与其调用的任务相同的接口。由于人工任务始终是异步的,对应的装饰流程通常为长时间运行的流程。对于人工任务的单向操作,您可以考虑使用微流程。
然而,装饰流程模式不仅适用于人工任务,还可以应用它来对任何类型的长时间运行的异步服务进行基于时间的版本管理。
结束语
本文介绍了版本管理概念和 WebSphere Process Server 中的业务流程和人工任务非常好的实践,以帮助您设计为不断变化的环境和将来的业务需求做好准备的基于业务流程的应用程序。