SOA和BPM结合的三种方法[1]
作者:rathink_bpm 来源:CSDN博客
在SOA和BPM联合发展的浪潮下,我们首先要明确的是,BPM与SOA的本质是截然不同的:SOA是一种架构方法,BPM则是一组流程协调管理理念。没有SOA之前,BPM产品已经出现并成功应用。BPM的主要应用场合有如下几点:
1.业务流程自动化。这是业务流程自动化(BPA)的概念,BPA按照业务需求自动化流程,这是现在工作流技术还在继续做的事情。
2.整合应用系统,实现异构系统之间无缝交流。这涉及到EAI的概念,不过实现方法和老的EAI技术是完全不同的。
3.企业流程建模分析。这是BPM的核心,在详细了解企业流程划分之后,用全局的视角,对流程进行梳理,并给出企业流程全局图。
4.监控企业活动,实现企业流程持续改进。这是业务活动监控(BAM)的功能,BAM需要用前面的企业流程全局图,分析企业流程效果和效率,提供优化方向,实现企业级的流程管理。
在上面描述的BPM的四大应用场合中,每个都和SOA有千丝万缕的联系。从技术层面看,SOA和BPM结合有多种方法,SCA的WS-BPEL客户端和实现模型规范说明了WS-BPEL2.0怎么样和SCA结合在一起使用,具体方法有如下三种。
BPEL流程作为构件的实现
在SCA中,可以把一个有效的BPEL流程作为一个构件的实现。对于一个构件的定义来说,可以使用子元素来表示本构件是用一个BPEL流程来实现的。子元素的process属性指明了这个可执行的BPEL流程的目标名称。
这个方法是从BPEL开始的。先定义好一个BPEL流程,然后把它纳入到SCA容器中去
BPEL定义构件的类型
当一个构件使用了一个BPEL流程定义的构件来实现的时候,BPEL流程定义也决定了这个构件的类型。如果一个构件类型只使用WSDL接口来定义服务和引用,我们可以用BPEL来得到这样的构件类型。这点可以通过“反射”机制来实现。
BPEL中的合作伙伴链接对应于SCA中的服务和引用。在SCA中,服务和引用的区别是在一次会话中,哪一方第一次发起通信;而在BPEL中,合作伙伴链接是不关心谁是会话的发起者的。所以,为了在BPEL流程和构件类型中做一个映射,必须找到一个办法鉴别出会话的发起人。在BPEL中,一个合作伙伴链接要想发起一个会话有如下可能:在活动中接收一个消息,在活动的子元素中接收一个消息,在一个事件处理器的子元素中接收一个消息。在上述情况下,应该把合作伙伴链接映射为SCA中的服务,反之则映射为SCA中的引用。
如果合作伙伴链接映射为SCA中的服务,那么服务的类型就对应于BPEL中的合作伙伴链接类型,如果合作伙伴链接映射为SCA中的引用,就和服务的情况相反。服务构件的服务是可以有WSDL PortType接口的。
为BPEL加入SCA扩展
我们可以在BPEL中加入SCA扩展,从而产生SCA的构件类型定义,并利用它来完成SOA的装配。例如,一个BPEL的变量声明可以包含一个SCA的扩展,这样的扩展表明,这个变量代表了一个SCA构件的属性。
从上面的讨论看出,BPM和SOA结合的方法可以帮助BPM实现更多的功能。在SOA环境下的BPM与非SOA环境下的旧式工作流相比有如下的不同:
1.跨组织的业务流程描述语言和工具。在工作流系统上马早期,经常会发现同一个企业内部不同组织单元、部门的流程采用不同的描述方法,比如A/B/C/F四个部门的账目管理系统采用某种工作流系统,而A/B/D/E四个部门的订单和销售管理系统又采用另外一种工作流系统。这种情况在大型企业集团内部尤为明显,影响了各业务单元的业务协同和业务最佳实践的提炼和推广。而BPM致力于跨组织的业务流程描述语言和工具,避免了企业各部门进行业务流程交流和沟通时各说各话的情况。
2.统一的流程架构。企业内部从单一管理主题出发进行设计的工作流,通常在企业中缺乏对业务运营活动的总体考虑,局限于本部门或者本业务的业务需求,各部门和各管理专题之间的流程无法衔接,信息的共享和传递困难,存在大量流程断点。而BPM在流程之间进行衔接、协调,避免了流程孤岛的产生。BPM的目标是形成端到端的流程体系,提高整个业务流程运行的效率、成本、质量,在激烈的市场竞争环境下,满足客户的需求。
文章来源于领测软件测试网 https://www.ltesting.net/