Author |
Message
|
Kraven12 |
Posted: Wed Aug 14, 2002 7:13 am Post subject: XML -> MRM question |
|
|
Novice
Joined: 21 Oct 2001 Posts: 21
|
Quick question. I am sending an XML message into a flow where it is traced to a file, sent to a compute node where it is transformed into an MRM definition, sent to another Trace Node and then sent to an Output Node.
The second Trace Node is printing ${Root} and I get the full MRM message as expected. When the message tries to get written out by the Output Node it fails with following error: CWF Logical Tree - Message Definition Mismatch.
I am confused as to why the message properly gets parsed for the Trace Node but fails on the parse for the Output Node.
Has anyone else encountered this behavior?
Thanks for your help. |
|
Back to top |
|
 |
kirani |
Posted: Wed Aug 14, 2002 8:10 am Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
Yes, Many times!
The Trace node does not validate message against RTD completely. When message reaches the output queue, MRM message Writer will construct the outbound message that conform to the message model (RTD). The node will throw an exception if there is mismatch between message definition and RTD. _________________ 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 |
|
 |
Kraven12 |
Posted: Wed Aug 14, 2002 8:22 am Post subject: |
|
|
Novice
Joined: 21 Oct 2001 Posts: 21
|
OK - thanks.
I have studied this for hours now and I just can't seem to find where the data is different from the definition. Probably right in front of me though. Back to the drawing board. |
|
Back to top |
|
 |
kirani |
Posted: Wed Aug 14, 2002 9:14 am Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
If you could post your ExceptionList here .. we can see what's going wrong .. _________________ 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 |
|
 |
Kraven12 |
Posted: Wed Aug 14, 2002 11:42 am Post subject: |
|
|
Novice
Joined: 21 Oct 2001 Posts: 21
|
Here is my ExceptionList:
(
(0x1000000)RecoverableException = (
(0x3000000)File = '/build/S210_P/src/DataFlowEngine/ImbDataFlowNode.cpp'
(0x3000000)Line = 536
(0x3000000)Function = 'ImbDataFlowNode::createExceptionList'
(0x3000000)Type = 'ComIbmMQOutputNode'
(0x3000000)Name = 'ff5a62a4-ef00-0000-0080-aeabb8e2f37f'
(0x3000000)Label = 'XML_TEST.DK.OUTPUT'
(0x3000000)Text = 'Node throwing exception'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 2230
(0x1000000)ParserException = (
(0x3000000)File = '/build/S210_P/src/MTI/MTIforBroker/MtiImbParser2/MtiImbParser.cpp'
(0x3000000)Line = 1187
(0x3000000)Function = 'MtiImbParser::refreshBitStreamFromElements - 9 par'
(0x3000000)Type = 'ComIbmMQInputNode'
(0x3000000)Name = '372362a4-ef00-0000-0080-aeabb8e2f37f'
(0x3000000)Label = 'XML_TEST.DK.INPUT'
(0x3000000)Text = 'ImbRecoverableException caught from worker when attempting to write out the bitstream.'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 5286
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'DQDFPA8076001'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'CWF'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'm_CIF_NOTIFICATION_MSG'
)
(0x1000000)ParserException = (
(0x3000000)File = '/build/S210_P/src/cpi/pwf/cwf/cwfworker.cpp'
(0x3000000)Line = 304
(0x3000000)Function = 'CWFWorker::write'
(0x3000000)Type = ''
(0x3000000)Name = ''
(0x3000000)Label = ''
(0x3000000)Text = 'CWF General Error'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 5167
(0x1000000)Insert = (
(0x3000000)Type = 2
(0x3000000)Text = '0'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'CWFWorker::write'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'DQDFPA8076001'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'm_CIF_NOTIFICATION_MSG'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = '--'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = '--'
)
(0x1000000)ParserException = (
(0x3000000)File = '/build/S210_P/src/cpi/pwf/cwf/cwfcontext.cpp'
(0x3000000)Line = 342
(0x3000000)Function = 'CContext::CheckDefaultValue'
(0x3000000)Type = ''
(0x3000000)Name = ''
(0x3000000)Label = ''
(0x3000000)Text = 'CWF Logical Tree - Message Definition Mismatch'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 5344
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'DQDFPA8076001'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'm_CIF_NOTIFICATION_MSG'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'TRANSACTION_NAME'
)
)
(0x1000000)ParserException = (
(0x3000000)File = '/build/S210_P/src/cpi/pwf/cwf/cwfcontext.cpp'
(0x3000000)Line = 342
(0x3000000)Function = 'CContext::CheckDefaultValue'
(0x3000000)Type = ''
(0x3000000)Name = ''
(0x3000000)Label = ''
(0x3000000)Text = 'CWF Logical Tree - Message Definition Mismatch'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 5344
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'DQDFPA8076001'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'm_CIF_NOTIFICATION_MSG'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'TRANSACTION_NAME'
)
)
)
)
)
)
Thanks a lot. |
|
Back to top |
|
 |
kirani |
Posted: Wed Aug 14, 2002 12:22 pm Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
Looks like 'TRANSACTION_NAME' element does not have a correct value.
Please check you ESQL code and see if you are assigning value to this element properly. If you are assigning this value from some field in the input message, make sure the field exist and has valid value.
What value does your trace output shows for this element? _________________ 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 |
|
 |
Kraven12 |
Posted: Thu Aug 15, 2002 5:15 am Post subject: |
|
|
Novice
Joined: 21 Oct 2001 Posts: 21
|
In the Trace Node it shows this field as having the correct value. This is the first element in the message which, to me, makes this even stranger. It is a simple 20 byte string.
Any thoughts?
Thanks. |
|
Back to top |
|
 |
kirani |
Posted: Thu Aug 15, 2002 8:08 am Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
Could you please check these...
1. "Copy Message Headers only" is selected in the transformation compute node.
2. You compute node has ..
SET OutputRoot.Properties.MessageFormat = 'CWF';
SET OutputRoot.Properties.MessageType = 'm_xxxx'; (message identifier)
SET OutputRoot.Properties.MessageSet = 'Dxxxx'; (message set identifier)
3. In Advanced tab of Compute node, "Message" is part of Compute mode. _________________ 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 |
|
 |
Kraven12 |
Posted: Thu Aug 15, 2002 8:12 am Post subject: |
|
|
Novice
Joined: 21 Oct 2001 Posts: 21
|
I checked the things you mention and they are all set as you suggest (although in a different order).
Thanks. |
|
Back to top |
|
 |
sgopal |
Posted: Thu Aug 15, 2002 10:32 am Post subject: |
|
|
Acolyte
Joined: 30 Jul 2002 Posts: 63
|
Can you try do a complete deploy of the BROKER (not the execution group alone) once and again test the message flow.
I suspect you have modified the MRM and thats not reflected on the broker yet. |
|
Back to top |
|
 |
Kraven12 |
Posted: Mon Aug 19, 2002 11:01 am Post subject: |
|
|
Novice
Joined: 21 Oct 2001 Posts: 21
|
sgopal - I did a full deploy but there is no change in behavior. It was a good thought but apparently not the case (I was hoping).
gausspq - As I stated above, I have looked at the traces and all values are being reported as expected.
Thanks. |
|
Back to top |
|
 |
kirani |
Posted: Mon Aug 19, 2002 2:51 pm Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
Is it possible to post your Compute node ESQL code here?
Do you have the same value for Element Names and Element Identifiers?
You will get an error if you are using Element names in your compute node ESQL instead of Element Identifiers.
Please check ... you have assigned correct values for your Mmessage Set and Message Identifiers in your ESQL code. _________________ 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 |
|
 |
muralihegde |
Posted: Wed Aug 21, 2002 12:44 am Post subject: |
|
|
Centurion
Joined: 30 Apr 2002 Posts: 108
|
Hi,
The order in which you form the output MRM message also matters. For e.g if the message structure defn has the following order.
Msg1
{ 1. TrnName (char 20 )
2. TrnNumber (Integer)
3. Address (char 40)
}
Then if you form the output message in the wrong order i.e,
SET OutputRoot.MRM.TrnNumber = InputRoot.XML.TrnNumber;
SET OutputRoot.MRM.TrnName = InputRoot.XML.TrnName;
SET OutputRoot.MRM.Address = InputRoot.XML.Address;
Then this will give exception while outputting to the queue, since the druing bit stream allocation, it expects first 20 bytes to be of character, while it formed first filed as Integer as per the above ESQL.
So try to code your esql in the same order as the actual message is defined.
-Hope this solves your problem.
-Murali |
|
Back to top |
|
 |
mariop |
Posted: Mon Feb 09, 2004 2:16 pm Post subject: Same problem |
|
|
Newbie
Joined: 09 Feb 2004 Posts: 1
|
Kraven12:
Were you able to solve this problem and how ?
Kirani, muralihegde:
I tried what you mentioned, but it still does not work. Do you have any more suggestions. |
|
Back to top |
|
 |
kimbert |
Posted: Tue Feb 10, 2004 1:50 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
its quite possible that the XML element that you are refering to might not exist due to which NULL value might be assigned to ur MRM element.so it would be better to check if you are getting the right values as Input from ur XML.i would suggest looking at the MRM tree after the compute node and see if the elements in the MRM are assigned correct values. |
I'm absolutely certain that this is happening because one of the fields in the output message does not have a value. The CWF bitstream worker reports this error when it needs a value but cannot find one. I strongly suggest putting a trace node just before the output node, as suggested by gaussspg. |
|
Back to top |
|
 |
|