Cisco Support Community
cancel
Showing results for 
Search instead for 
Did you mean: 

Intelligent Automation - API Call to SOAP Based Web Services Application

Intorduction

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

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

ElementDefinition
<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 and 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.

Sample Web Services

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

SampleWebService001.JPG

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

tempconvert.asmx.xml

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.

SOAP_Binding.JPG

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.

Cisco Process Orcehstrator Workflow Development

First step is to create a WebServices target that will connect (every time the workflow is being executed) to the webservices base URL.

API_Target.JPG

Web Service Execute

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.

API_WebService_Execute.JPG

Select The Method

Before moving ahead, verify the WSDL URL

API_Method_Select_Verify.JPG

Now highlight on the Method's name to pick one.

API_SOAP_CALL_VERIFY.JPG

Script Execution

Now execute the script.Notice the observed Url field.

API_Observe_Resolved_URL.JPG

Script output shown below

API_Output.JPG

References

Comments
Cisco Employee

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.

New Member

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.