部署就是把流程及其相關的檔案釋出到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> |