面向 BPEL 的 WSDL 介绍
一月份写的文章,由于工作比较忙,最后一点还没有写完。今天翻草稿箱的时候发现了。发表了吧。剩下那点什么时候用到了再补上。懒了懒了...
这篇文章将要向大家介绍 WSDL 规范和 WSDL 的 BPEL 扩展规范。
在读这篇文章之前,你应该知道:
1. Web Service 是什么?
2. WSDL 是什么?它是干什么用的?
3. SOAP 是什么?
4. XML Schema 和 XML Namespace 的知识
要了解这些内容,你可以登陆 http://www.w3schools.com。
对于这篇文章的内容,有人会有这样的疑问:我们需要了解 WSDL 的内容吗?单就设计 Web Service 而言,我们有很多框架工具可以使用,例如 Java 方面的 Axis2 和 CXF(其它编程语言也有类似的框架工具)。这些工具使得我们可以完全不去了解 WSDL 的内容便可以实现一个 Web Service。但是对于 BPMS 的设计,我们需要 BPEL 和 WSDL 的相互配合。也许在 BPM Designer 领域,有这样的产品可以使我们完全不去知道 BPEL 和 WSDL 的内容便可以设计 BPMS。但这个目标没有完全被实现,有时我们还需要在代码级别进行设计。况且,知其然更要知其所以然。
第一部分:WSDL 概览
<definitions targetNamespace="XXX" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:XXX="XXX"><import namespace="XXX" location="XXX.wsdl" />...<types> <xs:schema elementFormDefault="qualified" targetNamespace="XXX"> <xs:complexType name="XXX"> <xs:sequence> <xs:element name="XXX" type="xs:string" /> ... </xs:sequence> </xs:complexType> <xs:simpleType name="XXX"> <xs:restriction base="xs:string"> ... </xs:restriction> </xs:simpleType> </xs:schema></types><message name="XXX"> <part name="XXX" type="XXX:XXX" /> ...</message><!-- Abstract Part --><portType name="XXX"> <operation name="XXX"> <input message="XXX:XXX" /> <output message=XXX:XXX"" /> </operation></portType>...<!-- End --><!-- Concrete Part --><binding name="XXX" type="XXX:XXX"> <operation> ... </operation> ...</binding><service> <port> ... </port> ... </service><!-- End --><!-- Partner Link --><plnk:partnerLinkType name="travelLT"> <plnk:role name="travelService"> <plnk:portType name="tns:TravelApprovalPT" /> </plnk:role> <plnk:role name="travelServiceCustomer"> <plnk:portType name="tns:ClientCallbackPT" /> </plnk:role></plnk:partnerLinkType><!-- End --></definitions>
<binding name="XXX" type="tns:XXX"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" /> <operation name="CreateTracker"> <soap:operation soapAction="XXX" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" /> <input> <soap:body parts="XXX" use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" /> </input> <output> <soap:body parts="XXX" use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" /> </output></operation></binding>