The systems that post messages into the ESB always post Text messages. These come out the other side of the ESB as Multipart Messages.
I just added a new system to the integration and testing revealed that the new external system is getting XML messages instead of Multipart messages.
This is a but of a mystery to me, as I assumed that a Text message would always be converted to a Multipart message once it travels through an ESB Process.
So the question is, why is the ESB producing XML messages? It must be something I am doing in my ESB Process. So maybe the real quesion is, how does the ESB decide what kind of message to convert to? For example, XML transformation services always produce Multipart messages, or XCBR services always convert from X to Y, etc.
When a message passes through the ESB it becomes essentially a Multipart message. However if the message only contains a single part e.g. text then a JMS client will receive it as a text message rather than a multipart message, this allows JMS clients to work with just the simplest message types.
As for XML messages if you are using a transform service or similar the type must be being set as text/xml and as such the client now recognizes the message as an XML message instead of a plain text message.
Hope this helps
I have attached a Word doc with screen shots of a few processes. The first screenshot is a process that executes a fan-out and distributes the WorkOrder message to two other processes. The AtHand Process on the second page produces a Multipart message for the client system. The Petris Process on the third page produces the XML message. The processes are almost identical, other than the Athand process uses an explicit endpoint to send the message. The Petris process uses an Exit Endpoint to send the message to the client. I wonder if explicitly using an Endpoint step converts from XML to Multipart?
As for the transformation services I am using, I am not setting them as text/xml, at least that I am aware of.
Ok, I figured out why XML messages were produced by one Process and not the other. My theory was correct. The difference is the explicit Endpoint step.
By using the Exit Endpoint, the Message type is preserved, in my case, it was an XML message type.
Using the Endpoint step converts the XML message to a Multipart message.
I hope this helps some else out there. Thanks for your response David
By default the output of an XSLT is text/xml, only if you put the output to text will it be a text message. This is set by or to whatever you need at the start of the XSLT.