Author |
Message
|
amigupta1978 |
Posted: Thu Jan 24, 2002 2:02 pm Post subject: |
|
|
Centurion
Joined: 22 Jan 2002 Posts: 132 Location: India
|
Hi all,
One other question..
I have a scenario in which I have to pass the message to another node in the MRM format and also retain the original XML input message. The way we have implemented this is we changed the Root.Properties to the "MRM" and populated the MRM structure and also copied the message body to the DestinationList Structure.And after the node which uses the MRM message we again changed the MessageBody to what we copied on to the DestinationList. But we have a problem here since when we copy a XML to the DestinationList structure it actually discards all the attributes.
i.e say original message contains <name id="10">Amit</name> , then after copying to DestinationList the value becomes <name>Amit</name>. It discards every attributes. Does anybody knows the sloution how to overcome this problem and how to do the things.
Thanks in Advance
Regards
Amit |
|
Back to top |
|
 |
mpuetz |
Posted: Fri Jan 25, 2002 7:05 am Post subject: |
|
|
Centurion
Joined: 05 Jul 2001 Posts: 149 Location: IBM/Central WebSphere Services
|
Hi,
the DestinationList parser is only partly compatible with
the XML parser. As you already found out this affects
XML attributes which cannot be created in the DestinationList
parser and hence are dropped by the tree copy routine.
There is really nothing you can do about that, sorry.
However you should be able to have both XML and MRM trees next to each other
in your message tree as long as you don't do anything which causes
the selected main parser (OutputRoot.Properties.MessageDomain)
to render the message tree. This is triggered by calling the BITSTREAM
function, a ResetContentDescriptor Node or an Output Node. If there
are two message body in your message tree these can get confused may fail.
_________________ Mathias Puetz
IBM/Central WebSphere Services
WebSphere Business Integration Specialist |
|
Back to top |
|
 |
amigupta1978 |
Posted: Fri Jan 25, 2002 1:25 pm Post subject: |
|
|
Centurion
Joined: 22 Jan 2002 Posts: 132 Location: India
|
Hi,
Thanks for the suggestion . But We still have the problen if we take the two things in the Body. Since the MRM which I am talking about is passed to the CICS adapter which is expecting a fixed number of bytes , so what I think that we let remain the two things i.e both the XML and the MRM then the CICS thing would fail I suppose,
So I have to set the Message Domain to the MRM since I want only the MRM thing to go to CICS adapter.
But I got one work around, by using the BITSTREAM of the InputBody and storing it into DestinationList and using it again to make my MXL message.
Thanks for the reply, any more suggestions are welcome since I am still in the search of the best option to get the thing work
Regards,
Amit |
|
Back to top |
|
 |
mpuetz |
Posted: Sat Jan 26, 2002 1:15 pm Post subject: |
|
|
Centurion
Joined: 05 Jul 2001 Posts: 149 Location: IBM/Central WebSphere Services
|
Hi,
just eliminate one of the message trees (in your XML)
one step before you go through your output node.
(i.e. in one compute node SET OutputRoot.XML = NULL)
Then your output node should only render the MRM message
tree and CICS is happy.
If you need the XML message *after* your output node,
I suggest you rearrange your flow slightly using a flow-order-node,
i.e. you first propagate through your CICS output flow
and eliminate the XML message as mentioned above.
In your second step of the flow-order-node you can still
use the XML tree.
Quite generally I recommend using flow-order-nodes frequently
to avoid carrying bloated message trees around, which cost performance,
memory and stack.
Your workaround is OK if you don't have to worry about
performance, since parsing the XML message again is
costly.
_________________ Mathias Puetz
IBM/Central WebSphere Services
WebSphere Business Integration Specialist |
|
Back to top |
|
 |
amigupta1978 |
Posted: Mon Jan 28, 2002 1:38 pm Post subject: |
|
|
Centurion
Joined: 22 Jan 2002 Posts: 132 Location: India
|
Hi,
Thanx for providing the solution.
But this solution doesnot work in our scenario. Let me explain our scenario.
MQInput Node -> ComputeNode1 -> CICS adapter node -> ComputeNode2->MQOutputNode
In our scenario the message being input is in XML domain and in Compute1 we translate the XML into appropriate MRM as reqd by the CICS node. Now the CICS node also gives me some output (saying the success or failure) in the MRM format which we again have to convert into XML format and add this information to our original input message and go for the output.
Now if we use the flow order node before or even after the Compute Node 1 to achieve the MRM and XML messages seprately I will not be able to rejoin both the messages as I need the output from my CICS node and append this output to the original input message. (Since FlowOrder will only give me the original input message and not the combined one)
My main concern is to rejoin both the message and then proceed.
Am I right or do you have some other solution or way to achieve the solution?
More suggestions are welcome since reparsing XML is really very costly.
Thanks in advance.
Regards
Amit
|
|
Back to top |
|
 |
mpuetz |
Posted: Mon Feb 04, 2002 8:40 am Post subject: |
|
|
Centurion
Joined: 05 Jul 2001 Posts: 149 Location: IBM/Central WebSphere Services
|
Hi,
in your situation you are really at a lost position then,
and converting XML to BLOB and storing it in the destination
list as you now do is the only solution with MQSI 2.0.x.
In 2.1 you can use the GobalEnvironment without the need to
reparse.
_________________ Mathias Puetz
IBM/Central WebSphere Services
WebSphere Business Integration Specialist |
|
Back to top |
|
 |
|