Author |
Message
|
adityamittal_27 |
Posted: Wed Dec 14, 2005 10:24 pm Post subject: How can one change the InputRoot."BLOB"."BLOB |
|
|
Newbie
Joined: 14 Dec 2005 Posts: 2 Location: Noida, India
|
Hi,
I need to change the sequence of characters that are coming in the incoming message. The message is coming as BLOB. When i try changing and setting the InputRoot."BLOB"."BLOB" it throws an error stating "Input correlation name InputRoot cannot be changed." Can some1 plz help me figure out how i can change the InputRoot's BLOB area.
Cheers.
Aditya. |
|
Back to top |
|
 |
elvis_gn |
Posted: Wed Dec 14, 2005 10:45 pm Post subject: |
|
|
 Padawan
Joined: 08 Oct 2004 Posts: 1905 Location: Dubai
|
Hi adityamittal_27,
Well it is doing what it is supposed to
Why do u want to change your Input message, shouldn't you want to change the Output message instead
Set the InputRoot to the OutputRoot and do what you are trying to do.
I hope you got what I'm trying to tell you.
If you notice the CopyEntireMessage method, you do a SET InputRoot = OutputRoot;
And then the OutputRoot is sent out of the node, not the InputRoot.
Regards. |
|
Back to top |
|
 |
adityamittal_27 |
Posted: Wed Dec 14, 2005 11:12 pm Post subject: |
|
|
Newbie
Joined: 14 Dec 2005 Posts: 2 Location: Noida, India
|
Hi elvis_gn,
the problem is that my message gets mapped to a message set which is expecting the data in a particular format. The input message is not in that format and that is the reason why i want to change my incoming message.
Should i introduce a compute node before it is getting mapped to the message set and apply the transformation there or can it be done without introducing another compute node???
Regards. |
|
Back to top |
|
 |
elvis_gn |
Posted: Wed Dec 14, 2005 11:40 pm Post subject: |
|
|
 Padawan
Joined: 08 Oct 2004 Posts: 1905 Location: Dubai
|
Hi adityamittal_27,
First, THERE IS NOTHING LIKE CHANGING THE INPUTROOT AND FORWARDING IT.
A compute node can have two Message Sets linked to it. The message coming in will conform to one type(your Input) and the one going out can conform to another(The output set u want to map to).
Forget what your input message is, we are least bothered about it. Put an MQInput Node and let the message come into the flow, to the compute node. In the Input node specify the INPUT Message set, if you have one. If its BLOB, set the properties for BLOB.
In the only one compute node which u need, SET the InputRoot to OutputRoot and make whatever changes u want, IN THE OUTPUTROOT ONLY.
Code: |
SET OutputRoot.Properties.MessageDomain = '<Domain format of Output Message>';
SET OutputRoot.Properties.MessageSet = '<Message Se id of Output Message>';
SET OutputRoot.Properties.MessageType = '<Message Definition name of Output Message>';
SET OutputRoot.Properties.MessageFormat = '<Wire Format of Output Message>';
|
Put the above code along with your code. This will tell the message going out of the compute to map to the Message set specified.
Sorry for asking, is this the first time you are using the Compute and Broker ?
Regards. |
|
Back to top |
|
 |
Tibor |
Posted: Thu Dec 15, 2005 9:16 am Post subject: |
|
|
 Grand Master
Joined: 20 May 2001 Posts: 1033 Location: Hungary
|
elvis_gn,
Should place a ResetContentDescriptor node into the message flow for changing the message domain really . Setting the value of OutputRoot.Properties.MessageDomain is usable only as a preparing step before the RCD.
Tibor |
|
Back to top |
|
 |
elvis_gn |
Posted: Thu Dec 15, 2005 9:13 pm Post subject: |
|
|
 Padawan
Joined: 08 Oct 2004 Posts: 1905 Location: Dubai
|
Hi Tibor,
If we use a RCD u can change the format, I agree.
But if the message set has a totally different structure, is it enough to use the RCD, won't we have to code for it.
And if I set the properties to the format required, code in ESQL and provide Content validation at the compute itself, would I then even need a RCD ?
And as the original post was about
Quote: |
"Input correlation name InputRoot cannot be changed." |
it appears that adityamittal_27 is trying to change the message structure, which is not possible in the RCD.
Please correct my understanding if i'm wrong.
Regards. |
|
Back to top |
|
 |
RAJESHRAMAKRISHNAN |
Posted: Sun Dec 18, 2005 5:02 pm Post subject: |
|
|
Voyager
Joined: 01 May 2004 Posts: 96
|
Hi adityamittal_27,
You can do without using RCD also. Something like this.
CREATE LASTCHILD OF OutputRoot DOMAIN 'MRM' PARSE(InputBody.BLOB, InputProperties.Encoding, InputProperties.CodedCharSetId,
'Message Set ID', 'Message Type', 'CWF1'); |
|
Back to top |
|
 |
Tibor |
Posted: Mon Dec 19, 2005 1:25 am Post subject: |
|
|
 Grand Master
Joined: 20 May 2001 Posts: 1033 Location: Hungary
|
RAJESHRAMAKRISHNAN wrote: |
You can do without using RCD also. Something like this.
CREATE LASTCHILD OF OutputRoot DOMAIN 'MRM' PARSE(...); |
Correct, because this code is contains the (re-)parsing ... like an RCD node.
elvis_gn wrote: |
Please correct my understanding if i'm wrong. |
I wrote about the behavior of the Root.Properties.MessageDomain variable. There was a topic here (in the mqseries.net), and the conclusion is the next: this variable shows the root domain type but can't change it.
Tibor |
|
Back to top |
|
 |
elvis_gn |
Posted: Mon Dec 19, 2005 1:46 am Post subject: |
|
|
 Padawan
Joined: 08 Oct 2004 Posts: 1905 Location: Dubai
|
Hi Tibor,
One more clarification,
When I use CREATE LASTCHILD i'll end up creating another segment under OutputRoot, right ?
That segment will be named as MRM....will it look like the below
OutputRoot
|---Properties
|---MQMD
|---BLOB
|---MRM
What will be the output in this case ? Wont the original BLOB message also be outputted ? |
|
Back to top |
|
 |
kspranava |
Posted: Mon Dec 19, 2005 3:34 am Post subject: Copy only header |
|
|
 Centurion
Joined: 27 Apr 2003 Posts: 124
|
Hi elvis_gn,
If you copy only headers, OutputRoot will have only MRM next to Properties and MQMD.
Thanks & regards,
Pranava. |
|
Back to top |
|
 |
elvis_gn |
Posted: Mon Dec 19, 2005 3:46 am Post subject: |
|
|
 Padawan
Joined: 08 Oct 2004 Posts: 1905 Location: Dubai
|
Oh shucks
I get the idea, thanks guys.
Regards. |
|
Back to top |
|
 |
kimbert |
Posted: Mon Dec 19, 2005 4:13 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
I think adityamittal_27 deserves some answers...
Quote: |
the problem is that my message gets mapped to a message set which is expecting the data in a particular format. The input message is not in that format and that is the reason why i want to change my incoming message. |
I think I understand what you're saying. You want to tweak the message before you parse it, because you can't make the MRM parser do what you want.
Suggestion: Why not tell us what the problem is ( i.e. why do you want to edit the BLOB before you parse? ) . There are MRM experts on this forum who might be able to help you around the real problem.
Quote: |
Should i introduce a compute node before it is getting mapped to the message set and apply the transformation there or can it be done without introducing another compute node? |
If you need to tweak the message before it is parsed, that will have to be done in a Compute node. However, you can do both the tweaking and the parsing in a single Compute node, as explained by RAJESHRAMAKRISHNAN. |
|
Back to top |
|
 |
|