Wednesday, November 29, 2006

WS-* At Your Service With eDeveloper V10

A Little Magic for Web Services

The World Wide Web Consortium (W3C) defines a Web service as "a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards."

eDeveloper V10 provides powerful capabilities for creating and integrating applications that utilize Web services. Internally, eDeveloper V10 uses the Systinet Web Services framework (specifically "Systinet Server for Java") for providing and consuming Web Services. Fortunately, you don't have to do any Java programming in order to develop programs that take advantage of this foundation.

The WS standards supported by eDeveloper include SOAP 1.1 and SOAP 1.2; WSDL 1.1; SOAP Attachments; WS-I conformance; transport level security; and WS-Security for authentication, encryption and digital signing of SOAP messages. For reference, SOAP is Simple Object Access Protocol, WSDL is Web Services Description Language, UDDI is Universal Description Discovery and Integration, and WS signifies Web Services. WS-* refers to any of several enhancements or extensions to the basic SOAP, WSDL and UDDI standards, including WS-Interoperability and WS-Security.

I like to think of Web services as shared application logic (and associated data). For example, a Web service might be used to provide access to changing data such as stock ticker symbols (companies are listed and delisted). A service is said to be finely grained when it performs a narrow function, for example, a service that returns the range between the minimum and maximum value in a series of numbers. A coarsely grained web service might contain fairly complex functionality, such as a Web service that processes an order, calculates shipping charges and sends confirmation emails – in a single web service. The object of the game is to create fine grained services, but not too finely grained, so as to avoid the inflexibility of coarsely grained services on the one hand and the complex orchestration of finely grained services on the other.

To use eDeveloper as a Web Services consumer you can either use the Web Service Composite Generator or the Invoke Web Service operation.

To use eDeveloper as a Web Services provider, you should generate a service using the Web Service Interface Builder. To deploy and use the service you should make sure the following Windows OS service is started – “Systinet Server for Java”.
For information about how eDeveloper V10 deals with migration of Web Services from eDeveloper 9.4 applications, see Conversion Process Modifications.

The Web Service Composite Generator is a wizard used to generate a component that accesses a Web Service.

The How-to is fairly straightforward. First, you access the composite generators by following the Main Wizard Module steps. In the Web Service Location screen, click the WSDL URL or UDDI Search option. If you selected WSDL URL, enter the location of the WSDL. You can enter up to 256 characters in the WSDL URL field. You can click the Browse button to search for the WSDL file on the disk. The you click Next and eDeveloper will access and parse the WSDL file. If a WSDL file is not found or if the WSDL file is invalid, an error message will appear.

If you selected the UDDI Search option, the UDDI Server and Search String screen will appear. If you selected the WSDL URL option, the Operation Selection screen will appear. But we won't get into those details here (you can find more information in the documentation).

To see what happens once you finish using the Web Service wizard, see the Generated Web Service Component topic in the documentation.

Invoke Web Service lets you call a Web Service by using the SOAP protocol. When you select the Invoke Web S (Service) operation, you select a service that has been defined in the Service repository as a SOAP type. Zoom from the space to the right of Web S to open the Web Service dialog box, where you can define the Service, Operation, and Fault properties.

The Web Service Interface Builder lets you provide Web Services using eDeveloper by exposing public batch programs. The builder will generate a service JAR file and optionally deploy it on a Systinet™ server (which is installed as part of the eDeveloper installation, identified as a Web Services framework).

To successfully generate and deploy the Web Service, you should make sure that the following Windows service is started: "Systinet Server for Java". The Web Service Interface Builder is not available in the eDeveloper Discovery version.

With eDeveloper V10, you can also easily see the available Web services that you have created. The Available Web Services screen is a list of previously created Web Services as well as additional details. You can view and delete the available Web Services from the list, but you cannot modify the data in this screen.
As those who have published and subscribed to Web Services in eDeveloper 9.4 will tell you, this is a much more elegant and straightforward implementation and has the great advantage of being compliant with WS-Interoperability and WS-Security : two more great reasons to upgrade to eDeveloper V10. For all the details, see the user documentation online at