| Author | Message | 
		
		  | ghada | 
			  
				|  Posted: Sun Oct 08, 2006 2:08 am    Post subject: Exception at Output Node |   |  | 
		
		  | Apprentice
 
 
 Joined: 13 Oct 2005Posts: 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 2003Posts: 20767
 Location: LI,NY
 
 | 
			  
				| 
  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... 
	| 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
 |  
 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 2005Posts: 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 2003Posts: 20767
 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 2002Posts: 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 2005Posts: 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 2003Posts: 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 2005Posts: 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 2003Posts: 5543
 Location: Southampton
 
 | 
			  
				| 
  It means that something somewhere did not function correctly. 
	| Quote: |  
	| what does that mean????? |    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 2005Posts: 41
 Location: Egypt
 
 | 
			  
				| Hi Kimbert thanks for your help, it works now as I said
 thanks Alot
 
 Ghada
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  |  |