Author |
Message
|
datspats |
Posted: Fri May 11, 2007 3:12 am Post subject: Confused in handling user exception |
|
|
Voyager
Joined: 12 Apr 2007 Posts: 80 Location: Mumbai
|
Hi,
I am bit confused in handling user exception.
The scenario is
I do have RCD node for which Message set properties are assigned at run time.
If incorrect message (not compliant to message set) arrives to RCD node it is passed compute node just after it.
In the compute node where do I need to throw user exception. At which condition. Is this when I access first element in the message tree and it comes to NULL?
Is my understanding is correct?
Regards |
|
Back to top |
|
 |
Monk |
Posted: Sun May 13, 2007 2:24 am Post subject: |
|
|
 Master
Joined: 21 Apr 2007 Posts: 282
|
I am not quite sure what ur scenario is...
But if RCD is configured for message set X , and if an incorrrect message (not related to message set X) comes to RCD node, it will automatically through an exception , if RCD is not able to reparse the message. _________________ Thimk |
|
Back to top |
|
 |
jefflowrey |
Posted: Sun May 13, 2007 3:29 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Except that an RCD node does not actually do any parsing at all. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
Monk |
Posted: Sun May 13, 2007 4:33 am Post subject: |
|
|
 Master
Joined: 21 Apr 2007 Posts: 282
|
*throw _________________ Thimk |
|
Back to top |
|
 |
jbanoop |
Posted: Sun May 13, 2007 7:08 am Post subject: |
|
|
Chevalier
Joined: 17 Sep 2005 Posts: 401 Location: SC
|
In my experience if the parse timing on the RCD is set to complete , it will give an exception if the message does not match to the values set on the RCD. |
|
Back to top |
|
 |
smdavies99 |
Posted: Sun May 13, 2007 10:39 am Post subject: One way of doing this |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
Is to put the RCD after a Try-Catch node.
Then in the compute node following the RCD do a
set Environment.Message = InputRoot.MRM;
(If you are parsing into the MRM Domain.)
The exception list details will show that the parse was unsuccessful and where it failed in a common structure.
The same structure will be used if for example, the message set was not deployed to that Execution Group.
Having a common and repeatable error handling message flow is probably the first thing I sort out when starting a new project that needs lots of flows. This can the easily be used in all subsequent flows thus defining the project standard. _________________ 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 |
|
 |
Mensch |
Posted: Sun May 13, 2007 4:35 pm Post subject: |
|
|
Disciple
Joined: 17 Jul 2005 Posts: 166
|
Quote: |
I do have RCD node for which Message set properties are assigned at run time.
If incorrect message (not compliant to message set) arrives to RCD node it is passed compute node just after it. |
Does it mean that your RCD node has set Domain property only as MRM and all other properties are set in compute node before compute node?
IF yes then when ever you try to access any single element in compute node after an RCD node, the compute node will throw exception.
If the first element is defined in the message set as mandatory (min occurrence 1 , max occurrence 1) and it is coming as a null throw an exception _________________ Thanks and Regards ,
Mensch |
|
Back to top |
|
 |
jbanoop |
Posted: Sun May 13, 2007 7:17 pm Post subject: |
|
|
Chevalier
Joined: 17 Sep 2005 Posts: 401 Location: SC
|
or maybe you could read the message in as a BLOB and use a CREATE..PARSE in the compute node to parse it to the MRM format and it would throw an exception if the parse failed ..
eg:
Quote: |
DECLARE options INTEGER BITOR(ValidateValue, ValidateContent,ValidateException, ValidateComplete, ValidateFullConstraints);
-- this step will throw an exception if the validation fails / if it is not adhering to expected schema.
-- if it succeeds, the output message would be having the blob parsed into MRM.
CREATE NEXTSIBLING OF OutputRoot.MQMD DOMAIN ('MRM')
PARSE(bitdata OPTIONS options ENCODING InputRoot.MQMD.Encoding CCSID InputRoot.MQMD.CodedCharSetId SET 'KJ25QEC002001' TYPE 'EE_EAI_MESAGE' FORMAT 'XML1');
|
[/quote] |
|
Back to top |
|
 |
datspats |
Posted: Mon May 14, 2007 4:21 am Post subject: |
|
|
Voyager
Joined: 12 Apr 2007 Posts: 80 Location: Mumbai
|
jbanoop wrote: |
In my experience if the parse timing on the RCD is set to complete , it will give an exception if the message does not match to the values set on the RCD. |
Hi,
My requirement is satisfied with this reply, thanks a lot.
regards |
|
Back to top |
|
 |
|