on 02-16-2012 06:13 PM
Cisco Process Orcehstrator (CPO) ships with the webservices adapter that can be used to make Web Service API call to REST or SOAP based applications. Before a sample workflow to make SOAP API calls using CPO, lets understand some of the fundamentals.
WSDL documents describes a web service. WSDL also specifies the location of the service and the operations (or methods) the service exposes. WSDL (Web Services Description Language) is an XML-based language for describing Web services and how to access them. WSDL is a text based document that is written in XML. So in essense a WSDL document is just a simple XML document.
But the question is what makes it WSDL if it is just simple XML? The answer is that there are some elements in WSDL that actually makes it WSDL. Following is the description of some of these elements
Element | Definition |
---|---|
<types> | The data type (integer, string etc.)used by web service |
<message> | The messages used by web service |
<portType> | The operations perfomed by web service |
<binding> | The communication protocols used by the web service |
SOAP is a simple XML-based protocol that allows applications to exchange information over HTTP. SOAP is a protocol for accessing a web service.
Web services can convert your applications into web-applications.
Hence, once the application is converted into a web-application, it will be published or definied by using WSDL format. And once it is published or definied using WSDL format, it can now be accessed via SOAP (or REST) based API calls.
You can browse to a sample web service at the following URL
http://www.w3schools.com/webservices/tempconvert.asmx
Notice that when you browse to the above web service, it is going to show you a description of what this Web Service application does and how to call it. This structure can be followed as a best practice when designing any Web Services based application. The main idea is to provide users a meaningful description of what this WebServices does etc.
Following is a screenshot from the above URL
The above URL only specifies the description of the WebService application. In order to check the way it was published, one must hit the WSDL URL for the above application.
http://www.w3schools.com/webservices/tempconvert.asmx?WSDL
The URL above will shows the WSDL definitation of the Web Service application. Following is what displayed when the above URL is accessed. This is just for reference purposes
The binding element has two attributes - name and type.
The name attribute defines the name of the binding, and the type attribute points to the port for the binding.
The soap:binding element has two attributes - style and transport.
The style attribute can be "rpc" or "document". The transport attribute defines the SOAP protocol to use.
The operation element defines each operation that the port exposes. For each operation the corresponding SOAP action has to be defined. You must also specify how the input and output are encoded. In this case we use "literal".
Now lets us focus on the actual workflow development using CPO.
First step is to create a WebServices target that will connect (every time the workflow is being executed) to the webservices base URL.
Once the target is create, create a new process or workflow. Into the CPO workflow/process editor drag and drop Web Service Execute native activity. Enter the relative Url for the webservice. In the following example the webservice was written using VBScrip and hosted on the .NET server. This is evidient from the .asmx extension. .ASMX is the ASP.NET file extension for XML Web Services.
Before moving ahead, verify the WSDL URL
Now highlight on the Method's name to pick one.
Now execute the script.Notice the observed Url field.
Script output shown below
Shazad,
Very good article. A good thing to mention about the Web Service Execute is that for SOAP requests that expect a date, the activity forces you to use the .NET DateTime format based on the curretn locale. For unix based SOAP services that will never work, so you will need to use the Web HTTP Request activity Instead.
Thanks Juan for really important and valid comments. This is really important that you pointed out the difference.
Thanks Juan for pointing out the Unix based SOAP services problem. In fact, Web Service Execute activity is just a friendlier version of Web Http Request activity.
Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: