| Author | Message | 
		
		  | Yash | 
			  
				|  Posted: Wed Oct 02, 2002 3:40 am    Post subject: How to use try/catch node? |   |  | 
		
		  | Novice
 
 
 Joined: 26 Sep 2002Posts: 24
 
 
 | 
			  
				| Hai, I have a simple message flow which contains inputnode-->compute-->outputnode. I want to use try/catch node or throw node in my messageflow , which keeps both the message and exception description in the error queue. Can anyone help me doing this.
 
 Thanks,
 _________________
 Yash
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | amar | 
			  
				|  Posted: Wed Oct 02, 2002 4:11 am    Post subject: |   |  | 
		
		  | Apprentice
 
 
 Joined: 27 Jun 2002Posts: 45
 
 
 | 
			  
				| Hi, If an exception occurs in your compute node, message will be rolledback to your MQInput node automatically. In the catch terminal of MQInput node you could get exception information  using ExceptionList,
 
 Inside Trace Node
 
 Destination :File
 FilePath:Path
 Pattern:${Exception}
 
 cheers
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | Yash | 
			  
				|  Posted: Wed Oct 02, 2002 4:28 am    Post subject: |   |  | 
		
		  | Novice
 
 
 Joined: 26 Sep 2002Posts: 24
 
 
 | 
			  
				| Thanks Amar. But I don't want my message to be rolled back to Input Node . I want both Exception List and message to be placed on error queue. 
 Thanks,
 _________________
 Yash
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | AlexeiSkate | 
			  
				|  Posted: Wed Oct 02, 2002 8:43 am    Post subject: |   |  | 
		
		  | Centurion
 
 
 Joined: 10 Apr 2002Posts: 123
 
 
 | 
			  
				| Yash, 
 You can connect your nodes like this:
 
 inputNode -> tryCatch -> computeNode -> outputNode.
 
 You'll then hook the catch terminal of the tryCatch node to your error queue. If the Compute node throws an exception then the tryCatch node will route the message and attached exception the the catch terminal.
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | ernest-ter.kuile | 
			  
				|  Posted: Thu Oct 03, 2002 1:00 am    Post subject: |   |  | 
		
		  |  Apprentice
 
 
 Joined: 13 May 2002Posts: 49
 Location: KLM Holland
 
 | 
			  
				| 
   
	| Quote: |  
	| ... I don't want my message to be rolled back to Input Node . I want both Exception List and message to be placed on error queue. |  
 Using the try-catch mechanism, your message is always rolled back on exception. There is no way to prevent this, unless you can prevent the error which generated the exception in the first place.
 
 But then, why would you not want this ?
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | Yash | 
			  
				|  Posted: Thu Oct 03, 2002 3:41 am    Post subject: |   |  | 
		
		  | Novice
 
 
 Joined: 26 Sep 2002Posts: 24
 
 
 | 
			  
				| If an error occurs then I want it to go to error queue. Maintains people will look into both error and message and then they want to correct the error and then send the message manually. So I don't want it to roll back to input queue. 
 Thanks,
 _________________
 Yash
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | kirani | 
			  
				|  Posted: Thu Oct 03, 2002 7:54 am    Post subject: |   |  | 
		
		  | Jedi Knight
 
 
 Joined: 05 Sep 2001Posts: 3779
 Location: Torrance, CA, USA
 
 | 
			  
				| If you design your message flow like this .. 
 MQInput(out)->your different processing nodes->MQOutput1
 MQInput(catch)->MQOutput2
 
 Here MQOutput1 is your output queue and MQOutput2 is your failure queue. If an error occurs during normal processing message will be sent to the failure queue, it will NOT rollback to your input queue. Does this design meet your requirement?
 _________________
 Kiran
 
 
 IBM Cert. Solution Designer & System Administrator - WBIMB V5
 IBM Cert. Solutions Expert - WMQI
 IBM Cert. Specialist - WMQI, MQSeries
 IBM Cert. Developer - MQSeries
 
 
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | Yash | 
			  
				|  Posted: Thu Oct 17, 2002 5:44 am    Post subject: |   |  | 
		
		  | Novice
 
 
 Joined: 26 Sep 2002Posts: 24
 
 
 | 
			  
				| Kiran, 
 I am doing the below design to get both message and exceptionlist into the MQOutput2.But I am only getting the message in the MQOutput2 queue.Can you help in getting both the message and exception list on to the queue with the time stamp when the error has occured.
 
 MQInput(out)->Try/Catch(try)- > Comput node->MQOutput1
 MQInput(out)->Try/Catch(catch)- > MQOutput2
 
 Thanks,
 _________________
 Yash
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | lung | 
			  
				|  Posted: Thu Oct 17, 2002 5:00 pm    Post subject: |   |  | 
		
		  |  Master
 
 
 Joined: 27 Aug 2002Posts: 291
 Location: Malaysia
 
 | 
			  
				| Yash, 
 In that case, you may need to wire a compute node between your mqinput-catch and your mqoutput2. In the compute node, you can alter your message to include the exceptionlist before sending it to mqoutput2. If you do not include a compute node, only the original rollbacked message will be put into the mqoutput2 node (exceptionlist will no longer be present once it leaves wmqi, which is why u have to extract whatever info u need from it BEFORE it goes into an output node)
 
 
  _________________
 lung
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | Yash | 
			  
				|  Posted: Wed Oct 23, 2002 3:42 am    Post subject: |   |  | 
		
		  | Novice
 
 
 Joined: 26 Sep 2002Posts: 24
 
 
 | 
			  
				| Lung, 
 When I include a compute node in between catch node and MQoutput2 and wrote the following code inside compute node.
 
 DECLARE I INTEGER;
 SET I = 1;
 WHILE I < CARDINALITY(InputRoot.*[]) DO
 SET OutputRoot.*[I] = InputRoot.*[I];
 SET I=I+1;
 END WHILE;
 -- Enter SQL below this line.  SQL above this line might be regenerated, causing any modifications to be lost.
 DECLARE ErrorNum INTEGER;
 DECLARE ErrText CHARACTER;
 DECLARE Path CHARACTER;
 
 SET Path = 'InputExceptionList.*[1]';
 
 WHILE EVAL('FIELDNAME(' || Path || ') IS NOT NULL')
 DO
 IF EVAL('FIELDNAME(' || Path || '.Number) IS NOT NULL')
 THEN SET ErrorNum =EVAL(Path ||'.Number');
 IF ErrorNum > 3000 AND ErrorNum < 3020
 THEN Set ErrText = EVAL(Path || '.Insert[1].Text');
 ELSE Set ErrText = EVAL(Path || '.Text');
 END IF;
 END IF;
 SET Path = Path || '.*[LAST]';
 END WHILE;
 
 Set OutputRoot.XML.whatever.errorCode = ErrorNum;
 Set OutputRoot.XML.whatever.errorDescription = ErrText;
 Set OutputRoot.XML.whatever.sourceQueue = InputRoot.MQMD.SourceQueue;
 Set OutputRoot.XML.whatever.failureTimestamp = CURRENT_TIMESTAMP;
 
 
 This time I am only getting the exception message not the rolled back message. Can you help getting both the exception list and message into MQoutput2.
 
 Thanks,
 _________________
 Yash
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | kirani | 
			  
				|  Posted: Wed Oct 23, 2002 7:43 pm    Post subject: |   |  | 
		
		  | Jedi Knight
 
 
 Joined: 05 Sep 2001Posts: 3779
 Location: Torrance, CA, USA
 
 | 
			  
				| Yash, 
 How exactly do you want your message to be displayed in the error queue? Lets say your input message is ..
 <Data>
 <Tag1>
 some data
 </Tag1>
 </Data>
 
 Now do you want two different messages on error queue, one with ExceptionList and another one is your original message? Or do you want to create an Error message with some error info from ExceptionList (which you are doing currently in your code)?
 
 Please note that one of the reason for your message failure could be invalid message format, so you may get an error if you try to reparse your failed message in catch terminal.
 
 There are few good threads about Error handling in this forum, please go thru them and I am sure you will get more ideas!!
 _________________
 Kiran
 
 
 IBM Cert. Solution Designer & System Administrator - WBIMB V5
 IBM Cert. Solutions Expert - WMQI
 IBM Cert. Specialist - WMQI, MQSeries
 IBM Cert. Developer - MQSeries
 
 
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | Yash | 
			  
				|  Posted: Thu Oct 24, 2002 4:00 am    Post subject: |   |  | 
		
		  | Novice
 
 
 Joined: 26 Sep 2002Posts: 24
 
 
 | 
			  
				| Kirani, 
 I want to send two messages into the error queue.One is the original message from Input node and the other is exception values.Can you help in doing so.
 
 Thanks,
 _________________
 Yash
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | kirani | 
			  
				|  Posted: Thu Oct 24, 2002 7:44 am    Post subject: |   |  | 
		
		  | Jedi Knight
 
 
 Joined: 05 Sep 2001Posts: 3779
 Location: Torrance, CA, USA
 
 | 
			  
				| Yash, 
 Use Floworder node to do this. Your existing compute node will be attached to the first terminal of Floworder node, which creates error message and the second terminal will be connected directly to the MQOutput node. This will give you 2 output messages on failure queue.
 _________________
 Kiran
 
 
 IBM Cert. Solution Designer & System Administrator - WBIMB V5
 IBM Cert. Solutions Expert - WMQI
 IBM Cert. Specialist - WMQI, MQSeries
 IBM Cert. Developer - MQSeries
 
 
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  |  |