BPEL是一种标准化的执行语言,是一种新的流程执行语言。需要在BPEL引擎下运行,常见的有Apache ODE等。
BPEL通过合作伙伴链接实现了服务的调用,BPEL实现了抽象的WSDL接口的集成。
BPEL通过WSDL给出的portType接口、接口操作、输入变量、输出变量来实现对Web Service的操作。
BPEL通过合作伙伴来指向外部服务,合作伙伴并不是真正的Web服务,里面没有绑定信息,合作伙伴的绑定需要BPEL运行环境来实现。
WSDL只管如何定义服务、服务接口、服务操作、服务参数等,如何实现Web服务并不是WSDL所要关心的事情。即WSDL只是定义接口参数,并不会定义如何实现接口。BPEL通过流程编程将各种接口组合在一起,其目的在于提供一个“集成了各种接口”的接口。
首先,BPEL会有一个起点和终点。起点是“receive”,即接收接口的输入参数;终点“reply”,即得到接口的返回参数。
整个BPEL就是定义如何通过它的接口输入参数来调用其他外部服务的接口,得到其接口的返回参数。
流程中最重要的两个操作:赋值操作(assign)和调用操作(invoke)。通过赋值操作将某一变量的值赋给所要调用的接口作为输入参数;通过invoke来调用外部服务。
另外一个比较重要的就是条件命令(case condition),根据变量的不同来定义各种条件,然后根据不同的条件调用不同的服务。这些变量可以来自于输入参数(通过receive操作),也可以来自于调用外部服务的结果(通过assign操作)。
BPEL运行环境的一个重要功能就是能够保存并查询到这些变量。