ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Output Propagated to MQOutput node results into empty messag

Post new topic  Reply to topic Goto page 1, 2  Next
 Output Propagated to MQOutput node results into empty messag « View previous topic :: View next topic » 
Author Message
gakd1987
PostPosted: Tue Aug 27, 2013 9:53 pm    Post subject: Output Propagated to MQOutput node results into empty messag Reply with quote

Apprentice

Joined: 20 Aug 2013
Posts: 26

Steps I have coded which is resulting into a empty message in the OutputNode :-

1. I am sending a XMLNSC message into a MQinputNode.
2. The MQInputNode is using XMLNSC parser with a 'message set' and parsing it 'completely' . These I have set in the MQInput Options.
3. The Output or the logical Parsed tree is sent to a COmput node Where I am storing this message in the Environment tree for a later use as :-
=> ENV.Split.Input = InputRoot .. I am also reading the InputRoot after storing in Environment to create a SOAPRequest and I am succesfully getting the response as well.
4. After the SOAP request node resturn's the response I am removing the HTTPHEader's by passing the response to a compute node & in the same Comput Node I am trying to retrive the input message from the environment as :- SET OutputRoot = ENV.Split.Input . I am now declaring a ref to a particular element in the OutputRoot and I am able to navigate to the element as well which I could see in Trace logs but after assigining the OutputRoot = ENV.Split.Input when I am trying to PROPAGATE it to MQOutput the message obtained in the MQOutput is 0.

What is the mistake I am doing. DO I need to assign some properties as the msg obtained from ENV.Split.Input is XMLNSC.

If I just try to send any other message like the SOAP Response it is prefectly PROPAGATING to MQoutput node..
Back to top
View user's profile Send private message
dogorsy
PostPosted: Tue Aug 27, 2013 10:08 pm    Post subject: Reply with quote

Knight

Joined: 13 Mar 2013
Posts: 553
Location: Home Office

You need to:
1- Describe the problem properly, i.e. saying:
Code:
=> ENV.Split.Input = InputRoot ..

is not good enough. There could be any rubbish after the InputRoot .. , that maybe you know, but we don't.
2- As I have done above, use tags for your code. This is not the first time you ask for advice in this forum, so you should know that.
3- Run a debug user trace, get the output and read it !, that will help you understand what your code is doing.
4- From point 1 above, you are saving the InputRoot ( which is an XML message ) into the Environment. If you are saving the XML tree, you will need to associate the relevant Environment element with the XMLNSC parser, otherwise you will lose data.
Back to top
View user's profile Send private message
gakd1987
PostPosted: Tue Aug 27, 2013 10:30 pm    Post subject: Reply with quote

Apprentice

Joined: 20 Aug 2013
Posts: 26

After I store the InputRoot to ENV.Split.Input I am just reading the InputRoot and I am not disturbing the ENV.Split.Input . Only after I am getting the SOAPRESPONSE from the SOAPREQUEST NOde I need this input XMLNSC message which I had stored in the ENV.Split.Input . I have used the trace node and have debugged it .

As I said at a later point after I get the SOAPRESPONSE , in the compute node I am assigning the
OutputRoot = ENV.Split.Input, I am trying to create a reference to the element in the outputRoot obtained from ENV.Split.Input and I am using LASTMOVE to check if it has navigated to the REFERENCE element which is working fine and I am able to see it in the TRACE Logs.
But when I am trying to Propagate the outputRoot to MQOutput node the message obtained is 0.

In your 4th point below :- (If you are saving the XML tree, you will need to associate the relevant Environment element with the XMLNSC parser, otherwise you will lose data.) Can you please be bit elaborate on this. Can you please explain this to me ..
Back to top
View user's profile Send private message
dogorsy
PostPosted: Tue Aug 27, 2013 10:36 pm    Post subject: Reply with quote

Knight

Joined: 13 Mar 2013
Posts: 553
Location: Home Office

gakd1987 wrote:
After I store the InputRoot to ENV.Split.Input I am just reading the InputRoot and I am not disturbing the ENV.Split.Input . Only after I am getting the SOAPRESPONSE from the SOAPREQUEST NOde I need this input XMLNSC message which I had stored in the ENV.Split.Input . I have used the trace node and have debugged it .

As I said at a later point after I get the SOAPRESPONSE , in the compute node I am assigning the
OutputRoot = ENV.Split.Input, I am trying to create a reference to the element in the outputRoot obtained from ENV.Split.Input and I am using LASTMOVE to check if it has navigated to the REFERENCE element which is working fine and I am able to see it in the TRACE Logs.
But when I am trying to Propagate the outputRoot to MQOutput node the message obtained is 0.

In your 4th point below :- (If you are saving the XML tree, you will need to associate the relevant Environment element with the XMLNSC parser, otherwise you will lose data.) Can you please be bit elaborate on this. Can you please explain this to me ..


you are only repeating what you said in the first post, which I already said is not clear. We cannot help if you do no share what you are doing. You are saying what YOU THINK you are doing, and not what is happening.

Quote:
In your 4th point below :- (If you are saving the XML tree, you will need to associate the relevant Environment element with the XMLNSC parser, otherwise you will lose data.) Can you please be bit elaborate on this. Can you please explain this to me ..

No, I cannot, because I don't know what you are doing. Specifically, look at POINT 1 in my previous post.

Please look at the CREATE STATEMENT. It explains how to associate a parser to an element in order avoid data loss and there is an example.
Back to top
View user's profile Send private message
kimbert
PostPosted: Wed Aug 28, 2013 1:35 am    Post subject: Reply with quote

Jedi Council

Joined: 29 Jul 2003
Posts: 5542
Location: Southampton

@dogorsy: You said
Quote:
We cannot help if you do no share what you are doing.
In my humble opinion, gakd1987 has made more effort to explain the problem than most people do. How about cutting him some slack?

@gakd1987: the tip about user trace is worth listening to. Experienced message flow authors often take a user trace instead of using the debugger. The debugger is still a useful tool - but user trace gives you more detail about why the problem happened.
_________________
Before you criticize someone, walk a mile in their shoes. That way you're a mile away, and you have their shoes too.
Back to top
View user's profile Send private message
mqjeff
PostPosted: Wed Aug 28, 2013 1:53 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

dogorsy has pointed out the usual reason for this problem, that the tree in Environment does not have a parser associated with it, and the correct solution as mentioned is the CREATE statement with the necessary options.
Back to top
View user's profile Send private message
gakd1987
PostPosted: Wed Aug 28, 2013 11:55 am    Post subject: Reply with quote

Apprentice

Joined: 20 Aug 2013
Posts: 26

Hi ..

I have two scenarios now ..

As I had said the XMLNS input message I am sending to a MQInput Node which is set for XMLNSC parser with a message set and Complete parsing after that in a comput node I am storing the InputRoot (i.e. the XMLNSC messgae like [<tns:Splitter xmlns:tns="http://org/kp/Split"><tns:Func_Group><tns:GS03>dfasd</tns:GS03><tns:GS08>adsa</tns:GS08></tns:Func_Group></tns:Splitter>
])

Scenarios: -
-------------
First :- Before the SOAPREQUEST node I have created another compute node and I am assiging the OutputRoot = ENV.Split.Input which I am able to retrieve in the MQOutput . I didnt associate any parser.

2nd :- After the SOAPRequest node I have created a compute and trying to do the same. I have assigned OutputRoot = ENV.Split.Input and when I am giving reference and trying to navigate through the outputRoot tree I am able to do it but when I am propagating the OutputRoot to the MQOutput the Output is 0 . I dont understand how the data is missed .

Query 1. Is it that the MqOutput parser while WRITING is unable to parse the OutputRoot logicaltree to bitsream after the SOAPREQUEST node process.

Query2. So do I need to navigate now through the OutputRoot after it is assgined to ENV.Split.Input and again recreate the msg by using CREATE method ?

Its acting weirdly..
Back to top
View user's profile Send private message
dogorsy
PostPosted: Wed Aug 28, 2013 12:22 pm    Post subject: Reply with quote

Knight

Joined: 13 Mar 2013
Posts: 553
Location: Home Office

Just to clarify: there is no such a thing as an XMLNS message.
XMLNS is a parser, and by the way, it is deprecated, so you should not use it. So you have an XML message, which you are parsing, with whatever parser you choose, most likely XMLNSC.

Now, what is your message flow like ?

MQInput-->Compute1-->SoapRequest-->Compute2-->MQOutput ?

In Compute1 you save the InputRoot into the Environment. How do you do that ?, have you looked at the CREATE STATEMENT ? If not, why not ?
If yes, what have you learned ?

If what I have said above is wrong, please tell us what your message flow looks like, in simple terms, as I have done above, and how you save and restore the Input message and where, i.e. in which of the nodes ( in my example Compute1 and Compute2 ).
Back to top
View user's profile Send private message
Vitor
PostPosted: Wed Aug 28, 2013 12:35 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

gakd1987 wrote:
Its acting weirdly..


No, it's acting as designed. If you take an XML document and assign it without a parser (or in WMB terms a message domain) it becomes a flat, internalized structure. If you assign a parser it remains an XML document with all the function and structure that implies.

The MQOutput node is not retrieving the data by traversing it, it's serializing the message tree. This is done by reference to the message domain. If that doesn't work, you get a blank look.
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
rekarm01
PostPosted: Wed Aug 28, 2013 3:10 pm    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 1415

dogorsy wrote:
XMLNS is a parser, and by the way, it is deprecated, so you should not use it.

The XMLNS parser is not deprecated.

gakd1987 wrote:
I have used the trace node ...

Compare the trace node outputs for ENV.Split.Input and InputRoot. Look for differences.

All of the child elements of Root (message headers and message body) need an associated parser. The SET statement copies elements, but not their associated parsers. The CREATE statement can copy both.
Back to top
View user's profile Send private message
gakd1987
PostPosted: Wed Aug 28, 2013 3:39 pm    Post subject: Reply with quote

Apprentice

Joined: 20 Aug 2013
Posts: 26

Yup as stated my msg flow is

MQInput-->Compute1-->SoapRequest-->Compute2-->MQOutput .

MqInputNode is set to XMLNSC parser :-
=>In compute1 I am storing the message to the Envrionment Reference ENV as
ENV.Split.Input=InputRoot (=> IS this way of assiging wrong)

(Contradict to the above statement for testing I just tweaked a little bit
MQInput-->Compute1-->Compute3->MqOutput . Here in compute 3 I have set OutputRoot=ENV.Split.Input and when it is propagated it is coming the MQoutput perefectly )

=>In Compute2 i.e after the SOAPREQUEST node I am retrieving it OutputRoot=ENV.Split.Input
After retrieving I am able to navigate through the OuputRoot . I declared a reference to a particular tag in the OuputRoot which I am perfectly able to navigate but I am not seeing this outputRoot in the MQoutput. As explained below the MQOutput node is unable to write it .
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Wed Aug 28, 2013 8:23 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

Make sure the parser on the message just before the MQ node is XMLNSC and not SOAP. Have fun
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
dogorsy
PostPosted: Wed Aug 28, 2013 10:07 pm    Post subject: Reply with quote

Knight

Joined: 13 Mar 2013
Posts: 553
Location: Home Office

Quote:
have you looked at the CREATE STATEMENT ? If not, why not ?
If yes, what have you learned ?


You have not answered that question, and it is the important one.

Quote:

after the SOAPREQUEST node I am retrieving it OutputRoot=ENV.Split.Input
After retrieving I am able to navigate through the OuputRoot . I declared a reference to a particular tag in the OuputRoot which I am perfectly able to navigate but I am not seeing this outputRoot in the MQoutput. As explained below the MQOutput node is unable to write it .



You have said that a few times now. It does not matter how many times you repeat the same thing, it will not change if you do not associate the element with a parser. A few people have told you that now.

Quote:
As explained below the MQOutput node is unable to write it .

You are not explaining anything here, you are saying something that is untrue. The MQOutput node is not writing it because there is nothing to write


@rekarm01 ok, the xmlns parser is not deprecated, the xml parser is. But that is not the point, he should not be using the xmlns parser. You are just being picky and not adding any new information. If we are going to be picky, the CREATE STATEMENT does not copy the parser as you said.
Quote:
The CREATE statement can copy both.

The create statement associates a parser with an element. An the OP has been told that long ago, and is still refusing to investigate.
Back to top
View user's profile Send private message
kimbert
PostPosted: Thu Aug 29, 2013 2:35 am    Post subject: Reply with quote

Jedi Council

Joined: 29 Jul 2003
Posts: 5542
Location: Southampton

rekarm01's point was a very valid one. XMLNS is not deprecated, and it does matter. If people think XMLNS is deprecated they might embark on expensive and pointless migration exercises.
Quote:
You are just being picky and not adding any new information.
Dear Kettle, how black you appear to be today. Signed, Pot.
_________________
Before you criticize someone, walk a mile in their shoes. That way you're a mile away, and you have their shoes too.
Back to top
View user's profile Send private message
Vitor
PostPosted: Thu Aug 29, 2013 5:28 am    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

kimbert wrote:
Quote:
You are just being picky and not adding any new information.
Dear Kettle, how black you appear to be today. Signed, Pot.



_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Goto page 1, 2  Next Page 1 of 2

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Output Propagated to MQOutput node results into empty messag
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.