| Author | Message | 
		
		  | VanshulChawlaSA | 
			  
				|  Posted: Thu Jul 16, 2009 3:25 am    Post subject: Setting the RCD node properties at runtime |   |  | 
		
		  | Novice
 
 
 Joined: 03 Jul 2009Posts: 14
 
 
 | 
			  
				| Hi, 
 I need to set the property of the RCD node at runtime is i need to fetch the details like message domain,set,format,type from the incoming message and set it to the RCD node.
 Is it possible?
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | smdavies99 | 
			  
				|  Posted: Thu Jul 16, 2009 4:19 am    Post subject: |   |  | 
		
		  |  Jedi Council
 
 
 Joined: 10 Feb 2003Posts: 6076
 Location: Somewhere over the Rainbow this side of Never-never land.
 
 | 
			  
				| You can do it in a Compute Node using ESQL and setting the values in the properties folder. Remember to read the message as a BLOB though.
 
 You may run into some problems if the message as an RFH2 Header that is populated with the domain etc so some careful thought is needed.
 _________________
 WMQ User since 1999
 MQSI/WBI/WMB/'Thingy' User since 2002
 Linux user since 1995
 
 Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions.
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | VanshulChawlaSA | 
			  
				|  Posted: Thu Jul 16, 2009 4:24 am    Post subject: |   |  | 
		
		  | Novice
 
 
 Joined: 03 Jul 2009Posts: 14
 
 
 | 
			  
				| I did this.I set the OutputRoot.Properties.XXXX for all the set,type,format but when i go to RCD( next to this Compute ) it fails there and exception is 
 "Message domain Blob" Some parser error
 
 So RCD node is not picking the propeties from there
 When i am doing the same for label node,its fine
 
 Is it a case as RCD is having drop downs in node properties settings?
 
 Can you elaborate if u think what u said will work?
 
 It will be really helpful
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | jbanoop | 
			  
				|  Posted: Thu Jul 16, 2009 4:34 am    Post subject: |   |  | 
		
		  | Chevalier
 
 
 Joined: 17 Sep 2005Posts: 401
 Location: SC
 
 | 
			  
				| My understanding is that the RCD node just sets the message type, message format, message set properties and it does not trigger a parse itself. So changing the values in ESQL in a compute node could be sufficent. The next time an element is accessed within that message tree a parse is triggered which will use the newly set fields to do its job. |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | WMBDEV1 | 
			  
				|  Posted: Thu Jul 16, 2009 4:44 am    Post subject: |   |  | 
		
		  | Sentinel
 
 
 Joined: 05 Mar 2009Posts: 888
 Location: UK
 
 | 
			  
				| 
   
	| jbanoop wrote: |  
	| and it does not trigger a parse itself. |  
 It can do.... depending on the parse timing set on the RCD node. If set to "immediate", it will do a parse immediately.
 
 You could just do the parse in ESQL if you wanted and dynamically set the values you need in there.
 
 Alternatively... if you have labels for the different formats that you expect you can route to the correct label which then has its own RCD node with the values correctly set at compile time.
 
 Just some quick thoughts.
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | jbanoop | 
			  
				|  Posted: Thu Jul 16, 2009 6:16 am    Post subject: |   |  | 
		
		  | Chevalier
 
 
 Joined: 17 Sep 2005Posts: 401
 Location: SC
 
 | 
			  
				| From the infocenter: 
 http://publib.boulder.ibm.com/infocenter/wmbhelp/v6r1m0/index.jsp?topic=/com.ibm.etools.mft.doc/ac04810_.htm
 
 
 
   
	| Quote: |  
	| ResetContentDescriptor node
 Use the ResetContentDescriptor node to request that the message is reparsed by a different parser.
 .......
 
 Purpose
 If you specify MRM as the new parser, you can also specify a different message template (message set, message type, and message format). This node does not reparse the message, but the properties that you set for this node determine how the message is parsed when it is next reparsed by the message flow.
 
 |  |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | WMBDEV1 | 
			  
				|  Posted: Thu Jul 16, 2009 6:31 am    Post subject: |   |  | 
		
		  | Sentinel
 
 
 Joined: 05 Mar 2009Posts: 888
 Location: UK
 
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | jbanoop | 
			  
				|  Posted: Thu Jul 16, 2009 6:42 am    Post subject: |   |  | 
		
		  | Chevalier
 
 
 Joined: 17 Sep 2005Posts: 401
 Location: SC
 
 | 
			  
				| My understanding is that the RCD just changes the values (very much like ESQL) and when the control returns to the message flow after coming out of the RCD, it causes (forces ??) a parse of the message. So theoretically RCD "does not" parse a message. I would wait for the experts to comment
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | WMBDEV1 | 
			  
				|  Posted: Thu Jul 16, 2009 7:10 am    Post subject: |   |  | 
		
		  | Sentinel
 
 
 Joined: 05 Mar 2009Posts: 888
 Location: UK
 
 | 
			  
				| 
   
	| jbanoop wrote: |  
	| I would wait for the experts to comment |  
 Ok... but in the absence of this you could try a very simple test flow.....
 
 Create an XML schema with an enumeration on a field. Generate a message set from this. Connect MQInput to a RCD that uses the MRM domain (and mset /type values) to validate content and value and use the "immediate parse" option. Then send in an XML message that does not contain a value in the enumeration.
 
 If an exception is thrown indicating the enumeration is not satisified the node must have parsed it right?
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | ovasquez | 
			  
				|  Posted: Mon Jul 20, 2009 9:26 pm    Post subject: Re: Setting the RCD node properties at runtime |   |  | 
		
		  |  Centurion
 
 
 Joined: 09 Dec 2005Posts: 141
 Location: Lima, Peru
 
 | 
			  
				| 
   
	| VanshulChawlaSA wrote: |  
	| Hi, 
 I need to set the property of the RCD node at runtime is i need to fetch the details like message domain,set,format,type from the incoming message and set it to the RCD node.
 Is it possible?
 |  
 Why Do you need use RCD? ...
 This a ESQL  for same RCD work .
 MQInput-->Compute--->MQOutput
 ********XML----->CWF**********
 
 
   
	| Code: |  
	| DECLARE inCCSID INT InputProperties.CodedCharSetId;
 DECLARE inEncoding INT InputProperties.Encoding;
 DECLARE options INTEGER BITOR(FolderBitStream,  ValidateNone);
 DECLARE inBitStream BLOB ASBITSTREAM(InputRoot.XMLNSC, inEncoding, inCCSID);
 CREATE LASTCHILD OF OutputRoot DOMAIN('MRM')
 PARSE(inBitStream, inEncoding, inCCSID, 'MessageSet1',
 'Message1', 'CWF1', options);
 
 |  _________________
 Oscar Vásquez Flores
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | sarathmattam | 
			  
				|  Posted: Thu Nov 12, 2009 2:30 pm    Post subject: Avoiding RCD Node |   |  | 
		
		  | Voyager
 
 
 Joined: 05 Sep 2008Posts: 94
 
 
 | 
			  
				| Dear All, 
 I read the above post. Currently i have a similar requirement.
 
 I have 2 flows . FlowA is a publication msg flow which is used for publishing the messages to multiple subscribers. FlowB which takes this input , processes and form the output.
 
 Now i am facing problem at the starting of FlowB. I have a message set in FlowB which i configured in the MQInout node. But when i configure the message set in the MQinput node , the parsing fails.
 
 Then i did a work around by using RCD node and the parsing is success ful. Next to the RCD node , i have a compute node, where i will check the value of two fileds . If they satisfy i will pass it to the next node. Here i want to avoid the use of RCD node. I have tried the method mentioned in the above post. But it fails. So my queries are
 
 1. Why parsing fails wen i configure the message set in MQInput where as the same works perfectly with an RCD?
 2. How can i do a BLOB to MRM conversion using a combination of ASBITSTREAM & CREATE ?
 
 Thanks a lot in advance
 
 Regards,
 sarath
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | WMBDEV1 | 
			  
				|  Posted: Fri Nov 13, 2009 1:21 am    Post subject: Re: Avoiding RCD Node |   |  | 
		
		  | Sentinel
 
 
 Joined: 05 Mar 2009Posts: 888
 Location: UK
 
 | 
			  
				| Quick thoughts.... 
 
 
 
   
	| sarathmattam wrote: |  
	| Dear All, 
 Then i did a work around by using RCD node and the parsing is success ful. Next to the RCD node , i have a compute node, where i will check the value of two fileds.
 
 |  
 This may be better implemented as a filter node but this is more of an aside.
 
 
 
   
	| Quote: |  
	| 1. Why parsing fails wen i configure the message set in MQInput where as the same works perfectly with an RCD?
 
 |  
 I give in. But if you could share the errors you get that may help.
 
 
 
   
	| Quote: |  
	| 2. How can i do a BLOB to MRM conversion using a combination of ASBITSTREAM & CREATE ?
 
 |  
 As above. The snippet provided should work.
 
 Again if you share errors / experiences we may be able to help. Previously, when using the MRM domain my common pitfall has been around using an incorrect message value (typo) which resulted in an empty message being propagated.
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | sarathmattam | 
			  
				|  Posted: Fri Nov 13, 2009 5:25 am    Post subject: RCD Node |   |  | 
		
		  | Voyager
 
 
 Joined: 05 Sep 2008Posts: 94
 
 
 | 
			  
				| I will share the errors for sure .. 
 As you mentioned in the last line , am also getting an empty out while using a combination of ASBITSTREAM and CREATE with PARSE .
 
 Can you tell me the reason ??
 
 Thanks alot
 
 Regards,
 Sarath
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | smdavies99 | 
			  
				|  Posted: Fri Nov 13, 2009 5:41 am    Post subject: |   |  | 
		
		  |  Jedi Council
 
 
 Joined: 10 Feb 2003Posts: 6076
 Location: Somewhere over the Rainbow this side of Never-never land.
 
 | 
			  
				| As has been mentioned many times before in relation to this type of conversion, you need to take a UserTrace of the message as it passed through your flow. This will really help you discover what the problem is. Don't use the debugger!!!!!! 
 Posting the relevant section of the trace output here will help us to help you with this problem.
 _________________
 WMQ User since 1999
 MQSI/WBI/WMB/'Thingy' User since 2002
 Linux user since 1995
 
 Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions.
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | sarathmattam | 
			  
				|  Posted: Fri Nov 13, 2009 5:49 am    Post subject: |   |  | 
		
		  | Voyager
 
 
 Joined: 05 Sep 2008Posts: 94
 
 
 | 
			  
				| Initially i was getting "Invalid wire format" error. 
 The i tried setting the Domain,MessageSet,Type & format. Nw am getting empty string in the output. No errors .. Code is as given below
 
 DECLARE parseOptions INTEGER BITOR(FolderBitStream, ValidateNone);
 DECLARE subBitStream BLOB
 CAST(ASBITSTREAM(InputRoot.BLOB.BLOB
 OPTIONS parseOptions
 SET 'GATEWAY'
 TYPE 'FullMsg'
 FORMAT 'Text1') AS BLOB);
 SET OutputRoot.Properties = InputRoot.Properties;
 SET OutputRoot.Properties.MessageDomain = 'MRM';
 SET OutputRoot.Properties.MessageFormat = 'Text1';
 SET OutputRoot.Properties.MessageSet = 'GATEWAY';
 SET OutputRoot.Properties.MessageType = 'FullMsg';
 CREATE LASTCHILD OF OutputRoot DOMAIN('MRM');
 CREATE LASTCHILD OF OutputRoot.MRM
 PARSE ( subBitStream
 OPTIONS parseOptions
 SET 'GATEWAY'
 TYPE 'FullMsg'
 FORMAT 'Text1');
 
 Currently am just trying to get the output .
 
 
 Regards,
 Sarath
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  |  |