Author |
Message
|
dcapodic |
Posted: Wed Jun 20, 2007 1:29 pm Post subject: propagating both messages with an MQGet node.... |
|
|
Apprentice
Joined: 03 Sep 2003 Posts: 32
|
Hi....
I am probably missing something obvious but have been stuck on this and actually did read the docs and still can't get it to work
The flow is a bit more complicated but the point I am stuck at seems easy enough. I have an input node to which a message will be written. I need to enhance this message with an input of another message for which I am using an MQGet node to go out and get the message. The issue I am having is that I cannot seem to find the correct parms to set in the MQGet node to have both the original input message and the data coming in from the MQGEt to get propogated downstream. Maybe I am not understanding how the node works but what I was thinking is that I could have the contents of both the original message and the MQGet node's message propagated to a compute node and manipulate the data in there.
Am I correct in what I am trying to do....if so, what could I be missing?
Thanks in advance. |
|
Back to top |
|
 |
jefflowrey |
Posted: Wed Jun 20, 2007 1:37 pm Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
You can set the MQGet node about where to insert the data it reads.
You need to adjust the Generate mode, and the Output Data Location.
If you only need a portion of the message from the MQGet, you can also set the Result Data Location. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
dcapodic |
Posted: Wed Jun 20, 2007 9:00 pm Post subject: |
|
|
Apprentice
Joined: 03 Sep 2003 Posts: 32
|
jefflowrey wrote: |
You can set the MQGet node about where to insert the data it reads.
You need to adjust the Generate mode, and the Output Data Location.
If you only need a portion of the message from the MQGet, you can also set the Result Data Location. |
Thanks for the reply....however, there in lies my issue I have tried many combinations of the two but can't seem to get both messages populated along....it seems to be either one or the other. I will continue to plug away at it. |
|
Back to top |
|
 |
dcapodic |
Posted: Thu Jun 21, 2007 8:45 am Post subject: |
|
|
Apprentice
Joined: 03 Sep 2003 Posts: 32
|
dcapodic wrote: |
jefflowrey wrote: |
You can set the MQGet node about where to insert the data it reads.
You need to adjust the Generate mode, and the Output Data Location.
If you only need a portion of the message from the MQGet, you can also set the Result Data Location. |
Thanks for the reply....however, there in lies my issue I have tried many combinations of the two but can't seem to get both messages populated along....it seems to be either one or the other. I will continue to plug away at it. |
Ok, have done that and still cannot get the combination to propagate both the incoming message and the MQGet node message. Anyone have an example I could learn from it would be greatly appreciated! At this point, I am losing hope that what I seek to do can actually be done.
Thanks! |
|
Back to top |
|
 |
jefflowrey |
Posted: Thu Jun 21, 2007 9:18 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Set Generate Mode to Message - the default.
Set Copy Message to Entire Message.
Set OutputDataLocation to something like OutputBody.NewMessage
The result should be the whole Input tree, with the message retrieved from the queue under OutputRoot.[<].NewMessage - which will be the last child of OutputRoot.[<] _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
wbi_telecom |
Posted: Thu Jun 21, 2007 12:16 pm Post subject: |
|
|
 Disciple
Joined: 15 Feb 2006 Posts: 188 Location: Harrisburg, PA
|
You can either save the first input message in Environment folder and then copy the second one in a new tag in the OutputRoot. Or store the first one within one tag of the OutputRoot (like OutputRoot.Original) and store the one from MQGet into another (OutputRoot.Second).
Yous can then write ESQL to consolidate the data and create a new OutputRoot as desired by the target system.
Cheers, |
|
Back to top |
|
 |
JosephGramig |
Posted: Thu Jun 21, 2007 12:37 pm Post subject: |
|
|
 Grand Master
Joined: 09 Feb 2006 Posts: 1244 Location: Gold Coast of Florida, USA
|
Or you can tell it to put the Result in the LocalEnvironment and the stick it where you like in the next Compute or Map node. _________________ Joseph
Administrator - IBM WebSphere MQ (WMQ) V6.0, IBM WebSphere Message Broker (WMB) V6.1 & V6.0
Solution Designer - WMQ V6.0
Solution Developer - WMB V6.1 & V6.0, WMQ V5.3 |
|
Back to top |
|
 |
dcapodic |
Posted: Thu Jun 21, 2007 8:23 pm Post subject: |
|
|
Apprentice
Joined: 03 Sep 2003 Posts: 32
|
jefflowrey wrote: |
Set Generate Mode to Message - the default.
Set Copy Message to Entire Message.
Set OutputDataLocation to something like OutputBody.NewMessage
The result should be the whole Input tree, with the message retrieved from the queue under OutputRoot.[<].NewMessage - which will be the last child of OutputRoot.[<] |
Thanks for the suggestion but this fails in the deploy. OutputBody is not in scope as an output option. |
|
Back to top |
|
 |
dcapodic |
Posted: Thu Jun 21, 2007 8:29 pm Post subject: |
|
|
Apprentice
Joined: 03 Sep 2003 Posts: 32
|
wbi_telecom wrote: |
You can either save the first input message in Environment folder and then copy the second one in a new tag in the OutputRoot. Or store the first one within one tag of the OutputRoot (like OutputRoot.Original) and store the one from MQGet into another (OutputRoot.Second).
Yous can then write ESQL to consolidate the data and create a new OutputRoot as desired by the target system.
Cheers, |
Hi....
this is the way that I picture it happening except that I do not know how to save the messages to the places you have suggested. Do you have an example of what settings to use in the MQGet node? I know that once I get all of the data to pass through, writing the esql to access it should be a snap. But I cannot seem to get both message through....it is either one or the other.All the documentation deals with either the first message, the second message, or partial "getting" of the second message. I have not seen anything about how to get both messages. I am starting to wonder about this....is this just something that you "should" be able to do but no one actually does it If you have a working sample, I would be most appreciative to try it
Thanks.... |
|
Back to top |
|
 |
dcapodic |
Posted: Thu Jun 21, 2007 8:32 pm Post subject: |
|
|
Apprentice
Joined: 03 Sep 2003 Posts: 32
|
JosephGramig wrote: |
Or you can tell it to put the Result in the LocalEnvironment and the stick it where you like in the next Compute or Map node. |
Hi....
I am not looking for a result but the entire input message and the MQGet node message. I have been able to make everything else work except this. It seems like it is possible but I just can't seem to hit on it.
Thanks.... |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu Jun 21, 2007 8:33 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
dcapodic wrote: |
jefflowrey wrote: |
Set Generate Mode to Message - the default.
Set Copy Message to Entire Message.
Set OutputDataLocation to something like OutputBody.NewMessage
The result should be the whole Input tree, with the message retrieved from the queue under OutputRoot.[<].NewMessage - which will be the last child of OutputRoot.[<] |
Thanks for the suggestion but this fails in the deploy. OutputBody is not in scope as an output option. |
You may need to resolve OutputBody to OutputRoot.XMLNS.message.mynewmessage or something of the kind...
Especially if it is in one of the XML domains OutputBody is a bad choice because it would invalidate the XML as having mutliple root tags (not allowed)...
Enjoy  _________________ MQ & Broker admin |
|
Back to top |
|
 |
jefflowrey |
Posted: Fri Jun 22, 2007 3:08 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
OutputBody was a typo.
It's not actually a valid correlation name, I think. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
Vitor |
Posted: Fri Jun 22, 2007 3:45 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
jefflowrey wrote: |
OutputBody was a typo.
It's not actually a valid correlation name, I think. |
I think you have to have OutputRoot.{Domain Name} _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
jefflowrey |
Posted: Fri Jun 22, 2007 4:20 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Vitor wrote: |
I think you have to have OutputRoot.{Domain Name} |
Yeah. Or OutputRoot.[<], which I used in a couple places there, which is the same as the old OutputRoot.[LAST]. Which is to say, the last child of OutputRoot, which is going to be the message body... _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
wbi_telecom |
Posted: Fri Jun 22, 2007 10:10 am Post subject: |
|
|
 Disciple
Joined: 15 Feb 2006 Posts: 188 Location: Harrisburg, PA
|
Here is what I will try in this scenario. After the MQInput in your flow, place a compute node which saves the message in Environment. Attach a trace node to make sure you have the message in the Environment.
In your MQGet node make sure you select the Copy Entire Message setting in "Advanced" tab.
Trace the message after it comes out of MQGet and make sure you have the Environment folder that has your original message and the OutputRoot should have the message you got from MQGet.
If either of this is not true please write back with your results. If your first trace shows the Environment populated correctly it should be seen in your second trace as well. If not then you will need to investigate what exactly the applicaiton replying is doing with your message.
Cheers, |
|
Back to top |
|
 |
|