APP下载

跨企业供应链管理系统的过程模型分析

2008-12-29

中国市场 2008年32期

  摘要:集成并协调供应链中各成员的Web服务可以使虚拟企业获得很高的效率,本文重点讨论跨企业供应链管理系统的建模问题。在分析跨企业过程的服务集成面临的相关问题的基础上,引入了面向对象的设计理念,详细阐述了过程模型的服务接口、服务活动、占位符和服务包装器四类服务模型原语。
  关键词:供应链管理系统;Web服务;过程模型
  中图分类号:F270 文献标识码:A
  
  为了保持企业竞争力,现代企业必须在为顾客提供服务和产品方面进行协作,这些服务或产品取决于多种业务资源和多个组织资源。无论该协作是正式的长期联营或者仅仅持续到某项客户服务终止,协作期间参与企业都会形成高效运转的虚拟企业。建立能利用并管理供应链中各成员企业提供的Web服务的供应链,企业可以获得很高的效率。
  本文提出一种通过集成并协调Web服务的跨企业过程,来建立并管理跨企业供应链的技术。为实现此目标,提出了基于Web服务的过程模型(Process Model)的概念:a. 将供应链捕获为选取、集成并使用Web服务的多个跨企业过程;b. 捕获Web服务,即对虚拟企业中的各联盟企业提供的服务间的函数关系、契约关系和会话关系进行建模;c. 通过Web服务组合和自动Web服务协调规范为供应链管理系统程序设计提供执行语义和协调原语。
  
  一、 跨企业过程的服务集成所面临的问题
  
  服务的使用包括服务请求者(服务客户)与服务提供者间的会话。这种会话包括服务请求操作的执行、服务运行期间的各种控制和信息交换操作以及服务结果的最终交付。对会话进行捕获和协调就需要建模和执行原语,这远远超出了传统工作流模型中活动的调用/结束语义。如果服务请求者与服务提供者间还存在异构性,那么情况将变得更加复杂。将异构服务集成进传统工作流模型会导致规范爆炸、过程活动及其依赖间的组合爆炸,因此实际应用中难以对其进行有效管理。
  为了集成各成员企业提供的服务,在基于服务的跨企业过程中需要使用服务活动。服务活动也就是将各服务的操作和/或状态转换成可以加入到跨企业过程中活动行为的服务代理(Service Proxy)。在虚拟企业中,当相同的服务具有多个提供者时,基于服务的跨企业过程就必须包含抽象活动,称其为服务接口。一个服务接口可以具有多个实现,而服务活动用于实现各服务接口。这也就是说,相同的服务具有多个提供者时,可以用多个服务活动实现一个服务接口。
  过程模型不对已提供服务做任何假设,而仅对服务设计人员做以下假设:
  (1) 他/她不具有其它企业所使用的服务模型和实现方面的知识;
  (2) 属于不同企业的服务只通过跨企业过程进行集成和交互。
  现有过程模型(如工作流管理委员会提出的工作流过程模型)和很多传统的工作流管理系统对跨企业过程的支持却很有限,这主要是因为:
  (1)服务通常都是会话式的;
  (2)服务是异构的;
  (3) 集成异构服务的跨企业过程规范会受到组合爆炸的影响。
  1.会话式服务
  在WSBPM模型中,将服务和活动这些的传统概念结合为单个WSBPM原语,称之为服务活动。实际上,服务常常封装多个单企业过程,这样的服务是典型的会话式服务,即服务在运行过程中需要交互。交互过程中,客户执行多个服务调用并接收可用于进一步调用的中间结果。由于现有的过程模型假定活动仅调用一次,随即进入运行状态直至完成或终止才产生结果数据,因此无法直接从现有的过程模型捕获会话式活动。例如,使用现有的过程模型来捕获服务的注销过程,就必须在服务提供活动后添加一个服务注销活动。因此,在捕获服务请求和注销过程中,现有过程模型具有以下局限:
  a. 只有当服务请求操作(和服务内相应的单企业过程)完成后才能调用注销活动,即不能注销正在进行中的服务请求;
  b. 无法将服务和相应的服务操作建模成单个传统活动。
  本文提出的过程模型通过引入能够扩展活动语义的服务接口和服务活动来满足会话式服务的上述需求。
  2.服务异构性
  不同企业通常使用不同的模型和相应的语义对服务进行建模。异构服务是由不同服务供应者在不同时间为不同的客户设计的。尽管任何模型都不存在处理异构性的通用解决方案,但在处理异构性方面,捕获应用语义并通过子类(Subclass)提供有效抽象的过程模型比那些将集成语义隐藏在集成程序代码中的其它过程模型更加有效。
  现有的过程模型仅提供一般活动状态和操作,如正在运行(running)、已完成(completed)或已终止(terminated)活动状态,这些活动状态无法捕获集成在跨企业过程中的异构服务的应用语义。在WSBPM模型中,可以为服务使用专用状态,如已订购(ordered)、已供应(provisioned)、已完成(fulfilled)等活动状态,还可以描述引起这些服务状态变迁的显式操作。此外,本模型还提供专用活动状态和操作的子类,这样就可以将其泛化为某个具体的一般状态。通过这种方法,我们就可以对继承和子类型(Subtype)进行清晰的语义分析,从而将面向对象程序设计方法应用到WSBPM模型中。
  3. 组合爆炸
  支付子过程、客户服务子过程等服务均表示为跨企业过程的单个传统活动(即表示为跨企业过程的子过程)。如果使用现有过程模型来集成这些服务,那么将变得极为复杂。尤其是在传统过程模型中捕获单企业过程集成语义,需要为这些单企业过程间的调用和交互引入辅助的调用和/或反馈活动。
  此外,设计人员还必须引入辅助数据流和控制流,以便将这些活动与跨企业过程中的其它活动关联起来。而使用过程建模方法可以将单企业过程紧密集成到跨企业过程中。尤其是与每个单企业过程的每次交互,都必须将该单企业过程设计成至少包含一个调用活动;对于因与其进行交互而引起的另一个单企业过程的每个状态变化,都必须至少包含一个反馈活动。例如,假设跨企业过程中的各个组成服务由多个服务提供者提供,且跨企业过程提供者可以动态地选择最好的服务,那么就必须为服务提供者的各个可能的组合提供单独的单企业过程。而这必将导致跨企业过程组合爆炸。因此,当前的过程技术对跨企业过程管理的可扩展性和柔性设定了严格的限制条件。
  
  二、问题的解决
  
  为满足上述需求,该过程模型将服务活动接口从服务活动实现中分离出来。这样,活动类型就由活动接口决定。为了避免使用术语“活动”具有不同意义带来的混淆,以下将对活动类型(由活动接口表示)与活动实现进行区分,并将过程中使用的活动称为活动变量。
  面向对象技术如抽象、封装和多态性(Polymorphism)等设计概念对于实现WSBPM模型的主要目标,即实现不同跨企业过程中服务的重用、跨企业过程的可扩展性和柔性等方面起着重要作用,因此将这些设计概念引入WSBPM模型,并将这些设计原理用于开发支持WSBPM模型外部服务的下述原语中:
  (1) 服务接口(Service interface)即活动接口,用于将外部服务建模为可以包含专用状态和操作的状态机;
  (2) 服务活动(Service activity)即可以在WSBPM过程模型中直接使用的活动。服务活动与外部服务(即服务实现)进行通信,以执行在服务接口中定义的实际调用和反馈操作;
  (3) 占位符(Placeholder)也就是抽象活动,主要用于活动的后期绑定。当存在多个活动类型时,可以选择其中之一进行绑定。运行时由于占位符可以在多个服务提供者间进行选择,因此它支持服务的动态集成;
  
  (4)服务包装器(Service wrapper)是用于隐藏服务异构性的过程。
  1.服务接口
  客户请求服务时,服务提供者将向客户提供一份包含服务接口的服务契约。如果客户对所提供的契约满意,就可以使用该服务接口来控制服务、请求服务状态信息或观察服务状态变化以便了解服务状态。服务接口是服务活动使用的外部服务的抽象。通过服务接口我们可以将服务活动向占位符进行映射。这样就可以用多个服务活动实现占位符。占位符类型接口在抽象层捕获实现需求,而服务活动接口在具体层捕获实现的性能。
  WSBPM服务接口由活动状态机类型和活动输入/输出组成。下面介绍服务接口的组成。
  2.服务状态机类型
  服务状态机类型用于确定各活动接口实例可能的活动状态及其相应的状态变迁。服务状态机类型在形式上是一