| Author | 
		  Message
		 | 
		
		  | ghada | 
		  
		    
			  
				 Posted: Sun Oct 08, 2006 2:08 am    Post subject: Exception at Output Node | 
				     | 
			   
			 
		   | 
		
		
		   Apprentice
 
 Joined: 13 Oct 2005 Posts: 41 Location: Egypt 
  | 
		  
		    
			  
				HI All
 
 
Im using WBIMB6
 
Im using Compute node to change some values in my message, but when the message goes to Output node it fails and throughs exception
 
 
here is the last element of the exception list 
 
"Text = Should never call writeTree on something that isn't rendered as an element"
 
 
Im using the MRM domain
 
and I didn't change any thing in the message structure, I only changed some elements' values
 
 
thanks in advance
 
 
Ghada | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | fjb_saper | 
		  
		    
			  
				 Posted: Sun Oct 08, 2006 3:50 am    Post subject: Re: Exception at Output Node | 
				     | 
			   
			 
		   | 
		
		
		    Grand High Poobah
 
 Joined: 18 Nov 2003 Posts: 20768 Location: LI,NY 
  | 
		  
		    
			  
				
   
	| ghada wrote: | 
   
  
	HI All
 
 
Im using WBIMB6
 
Im using Compute node to change some values in my message, but when the message goes to Output node it fails and throughs exception
 
 
here is the last element of the exception list 
 
"Text = Should never call writeTree on something that isn't rendered as an element"
 
 
Im using the MRM domain
 
and I didn't change any thing in the message structure, I only changed some elements' values
 
 
thanks in advance
 
 
Ghada | 
   
 
It really depends on what you changed... If you are using a CWF format and you changed a group level instead of the content of an element level.... The previous few entries on the exception tree should give you more information...
 
 
Basically what is happening is that the parser is unable to serialize your message as the content of the different levels does not match the contract.
 
All the tags may be in the right order but the tag content does not match the definition....
 
 
Enjoy    _________________ MQ & Broker admin | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | ghada | 
		  
		    
			  
				 Posted: Sun Oct 08, 2006 6:12 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Apprentice
 
 Joined: 13 Oct 2005 Posts: 41 Location: Egypt 
  | 
		  
		    
			  
				Thanks fjb_saper for your reply
 
 
1- Im using XML wire format in my message set
 
2- the following part is the only part I modify in the message value
 
-- put the new code in the Output Message --
 
DECLARE FieldExists BOOLEAN EXISTS(Environment.Variables.Nd[]);
 
IF FieldExists <> FALSE THEN
 
SET cursor VALUE = Environment.Variables.Nd;
 
END IF;	
 
---------------------------
 
cursor points to the current element Im modifying.
 
Nd is an element from DB stored in the Environment tree
 
 
and I dont change the value in the message unless I have a value returned from DB
 
 
the values are changed correctly and all others are left the same as Input message, I dont know what is the difference
 
 
thanks in advance
 
 
ghada | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | fjb_saper | 
		  
		    
			  
				 Posted: Sun Oct 08, 2006 8:45 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Grand High Poobah
 
 Joined: 18 Nov 2003 Posts: 20768 Location: LI,NY 
  | 
		  
		    
			  
				Well it may have to do that it looks like you are inserting what is basically a DB row into a tree. You might have to insert each field separately...
 
 
On the other hand you never said whether the change you are making is described in your message set. It maybe that you would have to clear the message set and message type field from the properties..., but then I would probably try the XMLNS domain and not the MRM domain...
 
 
As I have very little detail from you this is mostly on speculation.
 
Hope it helps some.    _________________ MQ & Broker admin | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | jefflowrey | 
		  
		    
			  
				 Posted: Sun Oct 08, 2006 8:59 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Grand Poobah
 
 Joined: 16 Oct 2002 Posts: 19981
  
  | 
		  
		    
			  
				Environment.Variables.Nd[] is the list of all children of Environment.Variables.Nd.  Sort of. 
 
 
VALUE Environment.Variables.Nd is the value component of the element Environment.Variables.Nd.  But if Environment.Variables.Nd was created by a SELECT or something, then the element itself isn't going to have a value - just children.
 
 
I do not expect - but it's been a bit too long since I've read the documentation on the EXISTS function - that the EXISTS function will return anything meaningful for a list, rather than a scalar value. 
 
 
You should either manually build a tree description of your data, both in environment and OutputRoot, or run some traces.  Remember that everything in WMB v6 and WBIMB v5 and WMQI v2.1 is either a Tree or a Scalar, and never an array.
 
 
Then go back and think about how you want to manipulate these tree structures. _________________ I am *not* the model of the modern major general. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | ghada | 
		  
		    
			  
				 Posted: Mon Oct 09, 2006 12:04 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Apprentice
 
 Joined: 13 Oct 2005 Posts: 41 Location: Egypt 
  | 
		  
		    
			  
				Hi All
 
 
First of all thanks alot for your replys
 
I wanted to clear somethings
 
1- the SELECT statement returns only one value which I keep in the Environment tree.
 
2- all what Im doing is that Im changing the value of some elements in the message D=x becomes D=y where x and y are of the same type, so this does not affect my message set,I think
 
3- here how Environment tree appears in the debug mode
 
 Environment
 
	Variables
 
	 	Sd = 2004
 
	 	Rc = 1999
 
	 	D_T = 46
 
	 	C_T = CITIES
 
	 	S_C_T = CITY
 
	 	S_C_F = UNCODE
 
                 Nd = COUNTRY
 
and the statement I wrote copies the value COUNTRY correctly to the message, and the message goes out of Compute node without any errors.
 
4- 
 
   
	| Quote: | 
   
  
	| Environment.Variables.Nd[] is the list of all children of Environment.Variables.Nd. Sort of. | 
   
 
 
do you mean that the test Im using may not be correct, I think it works I traced it and it changed the message elements only when the condition is true ????!!!!!
 
 
thanks for your help in advance
 
 
Ghada | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | kimbert | 
		  
		    
			  
				 Posted: Mon Oct 09, 2006 12:31 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Jedi Council
 
 Joined: 29 Jul 2003 Posts: 5543 Location: Southampton 
  | 
		  
		    
			  
				Hi ghada,
 
Does it work if you remove almost all of your message flow and replace it with a very simple Compute node which changes the value of one element?
 
If that works, the problem must be introduced by your message transformation logic. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | ghada | 
		  
		    
			  
				 Posted: Mon Oct 09, 2006 3:56 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Apprentice
 
 Joined: 13 Oct 2005 Posts: 41 Location: Egypt 
  | 
		  
		    
			  
				Hi Kimbert
 
 
thanks for your reply
 
I did as you said, I created a new message flow
 
MQInput-> Compute -> MQOutput
 
and I copied all modules I used and it worked
 
the only change I made to my ESQL Code was:
 
CREATE COMPUTE MODULE TCC2_Compute
 
instead of 
 
CREATE COMPUTE MODULE TCC_Compute
 
and all the rest of the code remained the same.
 
and I used the same message set.
 
what does that mean????? 
 
 
thanks Alot
 
Ghada | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | kimbert | 
		  
		    
			  
				 Posted: Mon Oct 09, 2006 4:28 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Jedi Council
 
 Joined: 29 Jul 2003 Posts: 5543 Location: Southampton 
  | 
		  
		    
			  
				
   
	| Quote: | 
   
  
	| what does that mean?????  | 
   
 
It means that something somewhere did not function correctly.  
 
Maybe the tooling failed to pick up some of your changes, and creating a new Compute module fixed that. I suspect we will never know. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | ghada | 
		  
		    
			  
				 Posted: Tue Oct 10, 2006 12:45 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Apprentice
 
 Joined: 13 Oct 2005 Posts: 41 Location: Egypt 
  | 
		  
		    
			  
				Hi Kimbert
 
thanks for your help, it works now as I said
 
thanks Alot
 
 
Ghada | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | 
		    
		   |