Skip to Content
With PI 7.1 is it possible to publish services to the Service Registry (SR) directly from the Enterprise Service (ES) Builder and Integration Directory. The publishing functionality will allow developers and Business Process Experts (BPXs) to publish the services interfaces to the SR or UDDI. The UDDI will then contain a global list of all the services, which is implemented or at some point will be implemented.  To show the different ways to define services, it is necessary to see how they can be published.  Services can be provided the following ways.

         

  • Brokered Service implemented in own system. A service provided by your company is exposed as a web service in your PI system (a brokered service) and the endpoint is made available via the SR.
  •      

  • Brokered service to be implemented in partner system. A new interface must be developed. It will be implemented as a web service provided by a partner system. You want to offer this service in your own SR. You define the interface in your ES Builder and create a WSDL which the partner will use to develop and implement the service. When the service is deployed the endpoint can be posted in your SR.
  •      

  • Web service provided by 3rd party. Someone has developed a webservice. The WSDL and endpoint can be published in your SR thus making the service available to users (developers) of your SR.

How can the ES Builder and SR be used to support the three different options ? This will be described in the sections below.

1 Brokered Service implemented in own system

In PI 7.0 the only way to expose brokered services was to generate a WSDL and in the process enter a lot of information regarding the URL and service information. The WSDL file could then be saved as a file and mailed to the developers who wanted to use the service. If the file should be exposed via an UDDI the WSDL had to be placed on an HTTP server and then published.  This process has improved a lot with PI 7.1. Publishing of web services to the SR can now be performed with a few mouse clicks.  The Service Interface is defined the normal way as an outbound interface.

image
To configure the outbound service a Sender Agreement and a SOAP communication channel will have to be created. The Sender Agreement should then be configured to the communication channel.

image
To publish the service select Publish in SR from the menu.

image
It is possible to change the URLs to fit with external naming conventions.

image
When I tried to publish the service I got an error. It was like something is missing to complete the publication. The Service has been published in the SR but without an endpoint. Either it is a configuration we are missing or a bug that hopefully will be corrected in next service pack.  The service is published in the SR with the following information.

image

2 Brokered service to be implemented in partner system

You and a partner agree on a new interface where you need to call a service to be implemented in the partner’s system. The interface is first designed in your PI system. A proxy can be implemented with the help of SPROXY (ABAP) or you can generate a Java proxy interface. This works on SAP systems, but it does not work as seamless with non-SAP products. To share the interfaces in PI 7.0 the PI developer had to export the WSDL files and mail them to the partner.  This is a lot easier with PI 7.1. In an inbound interface there is a publish button on the WSDL tab. This will allow for direct publishing to the Service Registry.

image
And what is really nice is the WSDL is also published in a way, which will allow developers to get access to it, directly or from the UDDI.

image
  When the developers have completed the service, they can publish the service in the SR with an endpoint. What seems to be missing is a way to configure the PI communication channels to retrieve the endpoint information from SR. This would be a nice feature, which would make it possible to be able to change the endpoint without having to change the communication channel.

3 Web service provided by 3rd party

A WSDL of a 3rd party web service can be published in your SR from the Publish page. Your developers can then browse through delivered WSDLs in the SR and make use of (implementing calls to) the services.  Publishing can happen quite fast by entering the URL for the WSDL and then selecting Publish.

image
If one of the services has to be consumed by a PI scenario, there is missing a link from the SR to the ES Builder. It is not possible to import a WSDL directly from the SR or with the URL. The WSDL and XSD must be saved as files and then imported using the mass import tool.  The process for importing multiple WSDLs into external definitions in ESR is as follows. First select where the external definitions should be stored.

image
  Then select the files to import.

image
  Then confirm the type.

image
After verifying the types and links, the schemas are imported as external definitions. After importing the WSDL, links between the different components are still valid. I do not know if this also works if there is HTTP links to the WSDLs.

image

Conclusion

With the new version of PI 7.1 the publishing functionality is increased a lot, to make it easier for developers to share their work. The functionality does make it easy to publish services and therefore it will be something there is more likely to be used.  The only feature that seems to be missing is a way to import WSDLs directly from a HTTP host or from the SR.

To report this post you need to login first.

7 Comments

You must be Logged on to comment or reply to a post.

  1. Christophe JACOBS
    Hi Daniel,

    The first part of your blog is OK and runs perfect.

    But it seems not possible to use the WSDL URL in Visual composer, in an portal iView. The URL is not recognized (error: invalid web service URL). But the binding WSDL is generated.  Do you know how to solve that problem ?

    Thanks a lot for help.

    (0) 
    1. Daniel Graversen Post author
      I have not tried to use VC togehter with the service registry.
      It could be because you need to authenticate to get access to the WSDL. I have some problems in .NET tools, but slowed it with saving the WSDL in the file system but it is not an option with VC.
      (0) 
  2. Shrirajesh Pichholiya
    Hi, When I am trying to publish wsdl of external web service,it giving me below error.

    com.sap.esi.uddi.sr.api.exceptions.SRExceptionerror code: null detail message: com.sap.esi.uddi.sr.impl.uddi.wsdl.validation.ValidationException: Cannot load WSDL due to “Invalid Response Code: (404) Not Found. The request URL was:”http://www.aswinanand.com/sendsms.php?wsdl“. Check, whether the URL is correct, and the Web Service that you are requesting is up and running.”. Check that the specified WSDL URL “http://www.aswinanand.com/sendsms.php?wsdl” points to WS-I Basic Profile 1.1 compliant WSDL Definitions file

    I then imported in ESR as an external defination and published inbound service interface but it doesnt have endpoint.
    Do you have any idea how to publish exteranl web service directly.

    Shrirajesh Pichholiya

    (0) 
    1. Daniel Graversen Post author
      Hi,
      I don’t know why the service does not work.
      Could be that the webservice does not comply with the standard that PI requires. Alternative does the PI system not have access to the url. Try publish an other service or sn internal WSDL.
      /daniel
      (0) 
      1. Shrirajesh Pichholiya
        I have used this service in my interface. Just want to add in service registy.
        PI system has access to this url.
        I am able to publish internal WSDL(ESR and ID) into service registry.
        Even when I am trying to publish inbound interface, it doesnt create endpoint in service registry. any idea or suggestion?
        (0) 

Leave a Reply