bpel学习笔记(3)

来源:互联网 发布:腾讯微博刷粉丝软件 编辑:程序博客网 时间:2024/04/24 08:37

 关于发展,BPEL4WS语言是一门结合了商业处理特点的语言;
由于BPEL4WS语言是专为商业流程的执行所服务的,因此它也就自然而然的具有一门商业处理语言的特点,这体现在以下几个方面:
2提供了对于远程调用(〈invoke〉)的同步和异步处理;
这 主要是由商业处理的特点决定的,就拿民航订票来说吧,当你向民航订票系统的订票Web Service发出订票请求后,你不可能期望马上得到结果(同 步),因为民航系统必须要首先要进行复杂的身份识别以确定你的系统是否有预订机票的权限,接着还要查询航班情况以确定是否你定的航班还有空座,然后才会给 你答复,而你不可能一直等待得到答复,就算你愿意你的服务器恐怕也受不了这个负担。因此你必须选择异步方式,也就是发出请求后继续执行其他的操作,在这一 点上有一点类似于TCP/IP协议和UDP协议的关系。
2提供了并行的操作(由〈flow〉操作支持);
对 于普通的程序设计语言来说,并行的概念只是用于表面。打个比方,也许有人会说,利用windows系统(或者unix, linux系统)的多任务执行能 力,我可以让一个程序一边在后台执行计算而前台却进行复杂的人机交互工作,这不也是一种并行吗。的确,这也是一种并行,但它只是cpu级别的并行,而 BPEL4WS语言所体现的并行性是一种更广范围的并行,是基于INTERNET的并行,在某些方面,类似于传统的并行处理系统(利用机群进行大规模复杂 并行计算)。通过BPEL4WS,可以同时调用位于不同地方(不同城市甚至是国家)的Web Services进行处理(如计算,订货等)。
2提供了补偿的操作(由〈compensate〉操作支持);
任 何程序的执行都可能会出错,而后果也是不同的。有的操作出错并不会产生什么直接的后果,而有的操作出错的结果就必须被纠正,也就是必须执行一些补偿的操 作。比如拿民航订票来说吧,假如顾客A在系统中预订一张机票,当民航系统的Web Services完成所有订票操作后,提交给顾客A请求确认时,顾客A 由于其他原因取消了订票操作或者系统出现故障,那么就必须要执行补偿操作,取消所有已执行的操作,恢复数据库信息。从某个方面来说,这很类似于DBMS中 的ROLLBACK操作,只不过在数据库系统中是微观执行的,而在BPEL4WS中是宏观执行的。