部署就是把流程及其相关的文件发布到ActiveBPEL server中去。在部署时,ActiveBPEL将完成下面的事情:
1. 如果部署时没有指定流程在将来生效,那么流程将马上可以被执行;
2. 流程和部署的信息将被置入管理控制台,用户可以查看并管理;
3. 流程相关的信息将存入数据库中;
4. 如果部署出错,将给出错误信息。
ActiveBPEL引擎如果要执行一个流程,需要将BPEL文件和好几个辅助文件打包到一个BPR(Business Process aRchive)文件中。Bpr文件包括如下信息:
1. BPEL文件(.bpel)
2. BPEL流程中使用的wsdl文件(.wsdl)
3. 资源目录文件(包括wsdl中使用的本地XSD文件和XSL文件)
4. 流程部署描述符(.pdd文件)
5. 伙伴定义文件(可选,.pdef文件)
BPEL文件请参考BPEL标准,流程部署描述符文件将另外单独说明,下面讨论资源目录文件和伙伴定义文件。
ActiveBPEL通过资源目录文件来查找流程需要的WSDL、XSD等资源文件。下面的例子显示了catalog.xml的一个entry的语法:
<catalog> <resourceEntry location="string" classpath="slash/separated/classpath/filename.wsdl"/> </catalog>
|
Location属性映射到资源文件的位置。它可以是pdd文件中resourceReferences块中的<resource>元素的location属性值;也可以是wsdl文件中<import>元素的location属性值。
在部署时加载资源文件的时候,ActiveBPEL引擎从pdd文件中读取resourceReferences,然后用<resource>元素的location属性作为Key,到catalog.xml中来查找有无对应的值。如果找到,引擎就会从对应的classpath加载相应的资源;如果没有找到,那么就认为location是一个绝对URL,并从这个位置来加载资源。
Classpath属性指定了资源文件在bpr文件中的位置,它是相对于bpr根目录的一个位置。
伙伴定义文件对每个服务伙伴定义了端点信息。对于伙伴实现的每个伙伴链接类型,该文件定义了一个端点引用。
比如有个叫“国家银行”的服务伙伴,它向BPEL流程发送一个请求,想评估向某个客户发放贷款的风险。BPEL流程在评估风险后,将查找正确的服务端点,以回调“国家银行”。这是非常有用的,因为“国家银行”可能还有其他的服务链接类型,比如汇率调整或者保险请求等。伙伴定义文件可以为每个伙伴链接类型定义一个端点引用。
用户可以直接在bpr文件中加入.pdef文件作为伙伴定义文件;如果伙伴定义文件修改了,并不需要重新部署BPEL流程,只需要部署伙伴定义文件就可以。样例文件如下:
<?xml version='1.0' encoding="UTF-8"?> <partnerDefinition principal="Acme" xmlns="http://schemas.active-endpoints.com/pdef/2004/10/pdef.xsd" xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing" xmlns:s="http://www.active-endpoints.com/wsdl/store"> <partnerLinkType name="s:storeLT"> <role name="customer"> <wsa:EndpointReference xmlns:store="http://www.activeendpoints.com/wsdl/store"> <wsa:Address>store:anyURI</wsa:Address> <wsa:ReferenceProperties xmlns:Credentials="http://active-endpoints/endpoint-credentials"> <Credentials:username>MyUser</Credentials:username> <Credentials:password>MyPassword</Credentials:password> </wsa:ReferenceProperties> <wsa:ServiceName PortName="StorePort">store:StoreService</wsa:ServiceName> </wsa:EndpointReference> </role> </partnerLinkType> </partnerDefinition> |