November 2004 - Posts

Two new interesting Web Services readings are available in MSDN.

Posted by gsusx | with no comments
Harvey announced that a pre-release builds of WSE 2.0 Service Pack 2 is now available. In this link you can check the new features of this pre-release.
Posted by gsusx | with no comments

In the past days I have been reading a lot of post about the Contract First approach related with BizTalk. In particular Aaron Skonnard posts a nice comment about the interrelation between BizTalk, SOA and Contract-First concepts.

In this post I want to explain how to use the Contract-First approach using BPEL4WS Standard and the BPEL Import Wizard provided by BizTalk Server 2004.

Contract-First.

BizTalk Server 2004 is one of the most SOA oriented product that Microsoft has in this moment. The different engine in BizTalk implement some of the most basic SOA concepts and makes so easy the integration between BizTalk and Web Services using solutions like the Web Services or WSE adapters or the BPEL4WS tools.

Orchestrations typically sends-receives well-defined messages in a locations using some transport protocols. Some of these messages can be the XML representation of .NET types and in consequence aren’t truly interoperable with heterogeneous systems. In the other hand in some scenarios the orchestrations can be exposed as Web Services, using SOAP-based adapters, to interoperate with potential clients using the Web Service facilities. In these scenarios the activation ports are being described using WSDL.

Some of the BizTalk messaging engine components (ex: PortTypes, Ports, Operations, messages) have an equivalent in WSDL. This fact makes so easy to obtain a WSDL representation of these components. This is the approach followed by some tools like the Web Service-WSE Publishing Wizard and even the UDDI Publishing Wizard (that I provide as part of the Bts 2004 Competition) use WSDL to describe the PortTypes.

As Aaron exposes, contract-first must be almost native to BizTalk developers since they have to think in messages as one of the first components of any application. Thinking in contract-first makes so flexible the interoperability of BizTalk applications with heterogeneous systems. Is particularly important think in contract-first when we want to describe components of our orchestration using WSDL as description language. In these case would be fantastic if we first design the WSDL and then uses this WSDL to generate the orchestration components. Well, in BizTalk Server 2004 this solution is possible using the support that BizTalk provides to BPEL4WS.
BPEL4WS and WSDL.

In BPEL4WS a business process defines how to coordinate the interactions between a process instance and its partners. All the partners that interact as part of the process are modeled as WSDL services. A BPEL4WS process also is modeled using the WSDL model of separation between the abstract message contents used by the business process and deployment information (messages and PortType versus binding and address information). Typically a BPEL4WS process uses some .wsdl and .bpel files.

BizTalk Server 2004 provides support for BPEL4WS 1.1 fundamentally using the BPEL Import-Export wizards. Using these tools we can export some types of orchestrations to BPEL4WS (.bpel and .wsdl file are generated) and also import .bpel and .wsdl files to create a BizTalk orchestration.

BPEL4WS Import Wizard.

We can use this wizard to generate BizTalk orchestrations based on BPEL4WS process described in .bpel and .wsdl files. The WSDL files are mapped to the type section of the orchestration (PortTypes, RoleLinkTypes, MessageTypes) and the BPEL files contains the process logic. The great new is that BPEL files aren’t mandatory. That is, we can only import WSDL files and, of course, generate only the type section of the orchestration. This is an interesting solution to follow when we think in contract-first. Consider the following WSDL

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.openuri.org/" xmlns:q1="http://ContractFirstSamples.org/SimpleSample" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" targetNamespace="http://www.openuri.org/" name="MyServiceTypes">

          <types>

                   <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://ContractFirstSamples.org/SimpleSample">

                             <xs:element name="Result" type="xs:string"/>

                             <xs:element name="Root">

                                      <xs:annotation>

                                                <xs:documentation>Comment describing your root element</xs:documentation>

                                      </xs:annotation>

                                      <xs:complexType>

                                                <xs:sequence>

                                                          <xs:element name="param1" type="xs:string"/>

                                                          <xs:element name="param2" type="xs:string"/>

                                                </xs:sequence>

                                      </xs:complexType>

                             </xs:element>

                   </xs:schema>

          </types>

          <message name="FirstMsgIn">

                   <part name="MainPart" element="q1:Root"/>

          </message>

          <message name="FirstMsgOut">

                   <part name="MainPart" element="q1:Result"/>

          </message>

          <portType name="SimplePortType">

                   <operation name="MainOp">

                             <input message="tns:FirstMsgIn"/>

                             <output message="tns:FirstMsgOut"/>

                   </operation>

          </portType>

          <plnk:partnerLinkType name="SimplePortType">

                   <plnk:role name="portRole">

                             <plnk:portType name="tns:SimplePortType"/>

                   </plnk:role>

          </plnk:partnerLinkType>

</definitions>

This is a simple WSDL file without a binding and service section and with some BPEL4WS extensions. This WSDL describes a PortType that has a request-response simple operation.

This WSDL can be imported to BizTalk and the corresponding PortTypes and MessageTypes will be generated. The partnerLinkTypes are directly mapped to Role Link Types in BizTalk but they aren’t required in the WSDL; that is, we can import a WSDL without any BPEL4WS extension. We can also generates the ports if we use the BPEL file.

BPEL4WS import wizard is one of the tools to consider when we want to think in contract-first in BizTalk Server 2004. This tool makes possible to design the description of our process facilitating the interoperability with heterogeneous systems.

 

 

Posted by gsusx | 16 comment(s)
For those people interested in WS-Reliabily Joseph Chiusano explains some of its main concepts here.
Posted by gsusx | with no comments

IBM publishes an article explaining how to use a development tool for Java-COM Bridge, available from IBM alphaWorks. Very interesting, I uses to develop some Java-COM bridges using WebLogic JCOM. Now I have another option, cool.

Posted by gsusx | with no comments
WS-Reliability became an OASIS Standard. Now we have WS-ReliableMessaging and WS-Reliability in the same area in he same way that other specifications. The two proposals addresses the problem with similar perspectives. I really prefer WS-ReliableMessaging. I think that is a little more simple and can be combined more easily with other specifications like WS-Policy, WS-Security, etc.

In the IBM SOA developer center you can find this article that explains some of the main concepts of WS-Reliability. A months ago a wrote this article that explains the WS-ReliableMessaging implementations provided by Indigo and Systinet WASP.

Posted by gsusx | 4 comment(s)

The 1.5 version of JWSDP is now available.

The Java Web Services Developer Pack v1.5 includes the following:

  • XML and Web Services Security v1.0
  • XML Digital Signatures v1.0 EA2
  • Sun Java Streaming XML Parser v1.0 EA
  • Java Architecture for XML Binding (JAXB) v1.0.4
  • Java API for XML Processing (JAXP) v1.2.6_01
  • Java API for XML Registries (JAXR) v1.0.7
  • Java API for XML-based RPC (JAX-RPC) v1.1.2_01
  • SOAP with Attachments API for Java (SAAJ) v1.2.1_01
  • JavaServer Pages Standard Tag Library (JSTL) v1.1.1_01
  • Java WSDP Registry Server v1.0_08
  • Ant Build Tool 1.6.2
  • WS-I Attachments Sample Application 1.0 EA3
Posted by gsusx | with no comments

Systinet has announced the release Systinet Business Services Registry 5.5. With this product Systinet continues as one of the leaders of SOA-based technologies.

 

It supports any Web services enablement or management platform and works with traditional message oriented middleware (MOM), enterprise application integration (EAI) or enterprise service bus (ESB).

  • A configurable business service browser that provides a simple, easy to understand user experience through the use of intuitive search and navigation tools, UI controls and portal integration features. 
  • Configurable taxonomy relationship views that make services views highly usable and maintainable. 
  • SOA information publishing wizards that allow for the automatic mapping and publishing of business service data while providing standard SOA information such as XML Schema, WSDL, BPEL and versioning.
Posted by gsusx | 1 comment(s)
Aaron exposes his wish list for WSE 3. A would also add an implementation of the last release of WS-MetaDataExchage. Very simple but very useful.
Posted by gsusx | with no comments
Luc Clement exposes his opinion about the future of UDDI. Very nice vision.
Posted by gsusx | with no comments
More Posts Next page »