服务流程相关的活动之间不仅有严格的先后顺序限定,而且活动的内容、方式和责任等也都须有明确的安排和界定,以使不同活动在不同岗位角色之间进行转手交接成为可能。活动与活动之间在时间和空间上的转移可以有较大的跨度。服务流程通过调用已经存在的服务并且定义服务之间的交互关系,将多个软件服务的功能进行组合,从而实现新的功能的服务流程。
万维网服务流程是面向服务体系结构中实现服务流程较为流行的一种形式。单个的万维网服务通常无法满足用户的需求,因而需要将若干个万维网服务组合起来协同工作。基于这些行业标准技术,如万维网服务描述语言(Web service description language,WSDL),通用描述、发现与集成(universal description discovery and integration,UDDI)服务以及简单对象访问协议(simple object access protocol,SOAP),使得用户能够以平台独立和语言独立的方式连接不同的组件,在连接时甚至可以跨越组织边界。但是,这些标准都不能定义万维网服务的业务语义,万维网服务是孤立的不透明的。通过服务流程可以把万维网服务连接起来并指定怎样共同使用一组万维网服务可以实现更复杂的业务功能。
万维网服务流程指定了一组万维网服务操作的可能执行顺序、万维网服务间共享的数据、业务流程涉及的伙伴、伙伴在业务流程中扮演的角色、一组万维网服务的共同异常处理以及关于多个服务和组织参与的其他问题。服务流程允许指定万维网服务间长期运行的事务,提高万维网服务应用程序的一致性和可靠性。打破万维网服务的不透明性就是要指定一些约束,这些约束将限制使用一组万维网服务的操作和它们共同的行为。万维网服务的业务流程执行语言(business process execution language,BPEL)允许指定服务流程以及它们和万维网服务的关系。其中指定服务流程是指使用万维网服务来达到目的,还指定了由业务流程提供的万维网服务。用BPEL指定的业务流程是完全可执行的,且在符合BPEL的环境间是可移植的。BPEL支持伙伴之间的业务协议规范和复杂内部业务流程的视图。
一个简单的订票流程情景如图所示。在这个服务流程中,一个旅行社需得到用户的旅程,到航空公司购买机票,再把机票递给用户。这个简单的流程的目的在于让旅行社从用户那里拿到旅程,再把这个旅程传递给航空公司并要求购买相应的机票,最后从航空公司接收这些机票。通过服务流程将单独的万维网服务连接起来组成更为复杂的、粗粒度的服务。
与一般的工作流相比,万维网服务流程具有一些特点:①万维网服务流程只涉及公有流程。企业的业务流程可以分为私有流程和公有流程两类。私有流程是企业内部的业务流程;公有流程是企业之间的业务流程,为参与流程的企业所共享。万维网服务流程一般反映的是企业间的公有流程。②万维网服务流程的参与者为万维网服务。普通的工作流中可以有多种类型的任务执行者,如人、组织或计算机系统等,万维网服务流程中的所有任务执行者均为万维网服务。③万维网服务流程的自治性。万维网服务流程能够被封装为新的万维网服务并参与其他的流程,这种被封装为万维网服务的流程具有自治性。例如,信用卡发行公司向各商业机构提供的转账服务可以由信用卡发行公司与各银行之间通过万维网服务集成而得到,信用卡发行公司与银行之间的万维网服务流程具有自治性,不受信用卡发行公司与商业机构之间的业务流程的影响。