1.1 jBPM BPEL的wsdl擴充實現

來源:互聯網
上載者:User
1.1.1 wsdl擴充實現結構

我們知道,在WSDL的標準namespace(xmlns=http://schemas.xmlsoap.org/wsdl/)中,有types,message和portType等標籤。但在BPEL標準的wsdl部分,還有一個很重要的標籤,那就是partnerLinkType。partnerLinkType是wsdl本身不包括的擴充部分,那這些擴充部分在jBPM BPEL中是怎麼樣來實現的呢?我們先來看看下面的jBPM BPEL的WSDL實現階層圖:(這個內容是HongSoft本人正在寫的一本工作流程書中的一小塊的草稿。圖這裡發不了,sorry。這裡寫的不太容易懂,和和,其他部分比較容易懂)



javax.wsdl.*

(Sun主導制定的規範介面)


com.ibm.wsdl.*

(IBM的wsdl標準實現)


org.jbpm.bpel.wsdl.*

(jBPM bpel對wsdl的擴充)

最頂層是javax.wsdl.*,是在JSR中制定的WSDL規範的介面表達,在jBPM BPEL代碼中對應於wsdl4j.jar。第二層是com.ibm.wsdl.*,是IBM公司對wsdl標準的一個實現,基本上沒有加入自己的任何擴充,在jBPM BPEL代碼中對應於wsdl4j.jar。最底層是jBPM對BPEL中WSDL部分的擴充實現,它使用了wsdl4j.jar,然後加入了特殊部分的解析。

1.1.2擴充點註冊器

擴充點註冊器(ExtensionRegistry)是WSDL本身的概念,WSDL使用它來註冊新的擴充點。在wsdl4j.jar的WSDLFactoryImpl.java中,實現了ExtensionRegistry功能,而jBPM就是使用IBM的這個註冊器實現加入了三個擴充點,wsdl4j.jar的實現結構如下::(這個內容是HongSoft本人正在寫的一本工作流程書中的一小塊的草稿。圖這裡發不了,sorry。這裡寫的不太容易懂,和和,其他部分比較容易懂)

1.1.3 擴充點

一個擴充點註冊器可以註冊多個擴充點。擴充點的意思是需要新加入的WSDL標準中沒有規定的新的標籤,比如BPEL的partnerLinkType就是一個擴充點。

每註冊一個擴充點需要確定三個方面的內容:

1)在本流程中,需要能夠把一個partnerLinkType對象序列化為對應的XML檔案,這個XML檔案用來在網路中傳送,然後到對方流程中還原序列化。比如對於partnerLinkType擴充點的實現為registry.registerSerializer(Definition.class,      WsdlConstants.Q_PARTNER_LINK_TYPE, plinkTypeSerializer);這裡的plinkTypeSerializer是一個擴充了ExtensionSerializer介面的類。而ExtensionSerializer介面要求必須實現marshall()方法的。

2)如前面所述,對方流程需要能夠把XML檔案還原序列化為partnerLinkType對象。比如對於partnerLinkType擴充點的實現為registry.registerDeserializer(Definition.class,      WsdlConstants.Q_PARTNER_LINK_TYPE, plinkTypeSerializer); 這裡的plinkTypeSerializer是一個擴充了ExtensionDeserializer介面的類。而ExtensionDeserializer介面要求必須實現unmarshall ()方法的。

3) 序列化和還原序列化的方法中,都只需要給出對應的partnerLinkType對象的介面就可以了,而真正的使用是需要具體類的。BPEL的WSDL擴充實現了QName和具體類的映射關係如下:registry.mapExtensionTypes(Definition.class,      WsdlConstants.Q_PARTNER_LINK_TYPE, PartnerLinkTypeImpl.class);這裡的PartnerLinkTypeImpl是實現了PartnerLinkType介面的具體類。而PartnerLinkType介面是在marshall()方法和unmarshall ()方法中需要使用的。

1.1.4 BPEL的WSDL擴充點

jBPM對WSDL加了三個擴充點,分別用來實現PartnerLinkType功能,Property功能和PropertyAlias功能。具體如表所示:

QName

序列化

還原序列化

映射類

WsdlConstants.

Q_PARTNER_LINK_TYPE

PartnerLinkType

Serializer

PartnerLinkType

Serializer

PartnerLinkTypeImpl

WsdlConstants.

Q_PROPERTY

Property

Serializer

Property

Serializer

PropertyImpl

WsdlConstants.

Q_PROPERTY_ALIAS

PropertyAlias

Serializer

PropertyAlias

Serializer

PropertyAliasImpl

QName表示“qualified name”,它由兩部分組成:1)name所在的name space;2)name在XML中的元素(element)名稱。一個QName對應一個擴充點,而擴充點註冊器(ExtensionRegistry)用QName作為key值的map來儲存全部的擴充點。

jBPM中的序列化和還原序列化組件都是同時實現了ExtensionDeserializer,ExtensionSerializer, Serializable這三個介面,分開實現其實也是可以的。

映射類用來做到介面與實現的分離,每個映射類都對應了一個介面,這個介面才是jBPM的其他部分所大量使用的。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.