关于BPEL的两个议题

关于BPEL的两个话题
关于BPEL,网上有很多资料.所以就没有写自己的总结.但BPEL中有两个概念困扰了我很久,直到不久前才彻底明白.

第一个概念就是关于流程的编制和编排

编制:Orchestration.首先说明BPEL属于流程编制标准.
流程编制使用一个中心流程来协调不同的 Web 服务操作。这个中心流程了解编制的总体目标、涉及的操作以及操作的调用顺序。这种集中化管理使 Web 服务能够在不了解彼此影响的情况下进行添加和删除,还允许在出现错误和异常的情况下进行补偿。其结果可以看作一个新的Web Service,可以执行,只是执行的过程需要调用别的Web服务.

编排:Choreography.可描述多个贸易伙伴为了实现多组织业务功能而进行的交互。也就是说编排主要描述的不同流程之间的交互情况.例如,在供应链方面,实施产品采购可能涉及到多家公司的定单、发货通知单和资金的交互。编排不描述每个公司如何处理操作,只描述不同公司如何彼此交互。

BPEL属于编制标准,而BPMN,个人认为既可以描述流程编制也可以描述流程编排.在一个BPMN图中如果只含有一个流程,那么它表现的就是流程编制.而如果一个BPMN图中含有多个流程(存在于不同的POOL中),那么它就表现了流程编排.而BPMN的两个子类型Collaborative (Global) B2B Processes 协作图,Public (Abstract) Process 抽象图更清晰的表现了流程的编排.

而W3C的Web Services Choreography Description Language 简称WS-CDL更是专门的流程编排标准.而WS-CDL自认为可以包含流程编制,它才是SOA发展的方向.但目前WS-CDL还不成熟,而BPEL又有多家大公司支持,所以短期内,即使BPEL不如WS-CDL强大,BPEL还是会是SOA中流程标准中的主流.

第二个概念是人工流程

业务流程的完全自动化虽然非常不错,但在实际中却是不可能实现的,因为有些活动要求相关人员做出判断,或要借助人员的专业知识(例如手动处理异常情况或审批请求等),这些活动将始终由人进行。在整个业务流程中,和任何其他任务一样,人工任务是一项服务,不过是通过人员活动(而不是程序)实现的,由相关人员(而不是计算机)执行。

因此,在SOA 编程模型中,人员活动可以作为 Web 服务实现。该服务被调用时,将通知承担任务的个人进行相关工作,并将输入数据以恰当的形式传递给此人。任务完成后,将产生相应的结果,服务会返回到其调用方,并将此结果作为输出数据传递给调用方。该结果实际由相关人员得出这一事实可能对调用方完全透明。该场景采用异步调用来支持运行时间长的服务.
BPEL正是利用自己对异步服务的支持,使用这种方式来支持人工流程的.

目前的流程标准中,BPMN作为流程的标记标准,在其图示化的编辑器中是支持人工流程的.例如其ACTIVITY就有Manual的类型.而XPDL也是支持人工流程的.而BPEL为了弥补自己对人工流程支持上的不足,又定义了BPEL4PEOPLE的标准.
BPEL4People 扩展提供了通过嵌入人工任务扩展业务流程所需的扩展功能。它可处理将手动任务呈现为不透明的独立 Web 服务的场景.

1 楼 SSailYang 2008-01-25  
Burton Group:BPEL必须为SOA编排标准让路
按照这篇文章的描述,WS-CDL 和 BPEL 的应用层次是不同的。WS-CDL 是被用来使用 BPEL 构建的 sub-process 去构建整个 SOA 应用。但这终究是一家之言的理论,究竟会怎样呢?我是不知道呀。没有厂商支持终究不行呀。
2 楼 grid.qian 2008-01-25  
是啊,这篇文章我也看了。WS-CDL好坏我也不知道,没有厂商支持,就没有产品,没有产品就无法检验优劣。
3 楼 grid.qian 2008-08-21  
最近听说,国外有个小公司一直在做CDL的东西。已经有了雏形,而且在和JBOSS ESB做集成
4 楼 fifayh 2008-08-22  
感觉BPEL主要面向流程编制,或者业务逻辑设计,类似于控制流的处理。
CDL则是主要面向安全、可靠消息传输等,类似于数据流的处理。
5 楼 grid.qian 2008-09-25  
CDL可以被用来定义企业间消息的格式,传输方式,但我觉得它主要是被用来定义企业间业务流程的交互情况的,应该是和BPEL属同一个范畴,只不过更抽象一点
6 楼 dpj666666 2008-10-16  
有沒有關於BPEL的詳細介紹和實施的實例?
7 楼 grid.qian 2008-10-16  
dpj666666 写道

有沒有關於BPEL的詳細介紹和實施的實例?

详细介绍好多,网上GOOGLE一下就行。最全面的还是BPEL的规范,现在是2.0版本,你可以自己下。
至于实施案例,我手上没有。也没有在网上搜过。不过能用到BPEL的项目,估计都比较大,你可以去IBM,ORACLE之类的公司网站看看。