Discussions

XML & Web services: Web Services -based integration approach

  1. Web Services -based integration approach (1 messages)

    Hi folks,

    I've been trying to figure out how to approach an integration framework based on Web Services (SOAP+WSDL+UDDI) and I'd appreciate your comments on what I've come up with.

    The context is basically a corporation with a few centralized systems and a lot of heterogeneous local systems. The local systems need to communicate with the central systems and vice versa. Basically the starting point is that the local systems can speak XML but the message formats are different in almost all locations.

    Now, to my idea.

    I thought about creating a Broker which would accept very abstract requests along the lines of:

    <ServiceRequest service="CentralizedServiceNumber123">
        <Request format="SomeLocalRequestFormat">
            <thiscanbeanything>
                ...
            </thiscanbeanything>
        </Request>
        <Response format="SomeLocalResponseFormat"/>
    </ServiceRequest>

    ...where <thiscanbeanything is the message/syntax used by the local system and complies to the XML schema "SomeLocalRequestFormat". The <Response> element in turn defines the XML schema in which the response message is expected to be returned. The point here is that the client does not need to worry about message transformations -- "Here, take this and give me back the result as MySpecificSchema"...

    The Broker receiving these heterogeneous messages would do the following:
    1) Lookup a TransformationService from UDDI based on "source schema" and "target schema" and perform the translation (giving the <thiscanbeanything> element as input and receiving the "canonical" version of the message, understood by the centralized system.
    2) Call the centralized service ("CentralizedServiceNumber123") by handing out the transformed version of the original message.
    3) Receive response from centralized service and transform back into "local" format.
    4) Return the response to the local system, the original requestor.

    Does this seem solid so far?

    My doubts include the following:
    - How do I pass "any kind of" XML structure as a parameter to the Broker?
    - What does the WSDL include for that part?
    - What's the signature for the Java class's method (String or Element)?
    - Can I still generate the WSDL automatically even though the input and output parameters are so abstract?
    - How can I call the target service's specific without knowing what the input parameter really contains (the transformed message)?
    - Can I call the target service with unknown input using WSIF to download the WSDL just-in-time (avoiding static compilation)?



    All help is highly appreciated.

    regs, Lasse
  2. Now add the fact that any of the applications you are trying to communicate with can be "talking" XML over a variety of network transports(TCP/IP, HTTP, SNMP) you will feel my pain.

    I have developed a full framework for doing this. Its pretty lightweight, the crux of it is that you need a broker in the middle that translates all the xml dtd/schema's and network protocols into a language and protocol your app can understand.

    I am publishing a series of articles on this. This is only really a problem if you are doing Document/Message oriented Web Services or XML Messaging.