|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
Puzzling MRM Problem |
« View previous topic :: View next topic » |
Author |
Message
|
TonyD |
Posted: Fri Jul 20, 2001 12:05 am Post subject: |
|
|
Knight
Joined: 15 May 2001 Posts: 540 Location: New Zealand
|
I have a message flow that consists of MQInput, Compute, Trace, MQOutput, connected in series. The input message is XML, the output is CWF. The input message includes nested repeating groups within repeating groups and there is quite extensive indexing in the ESQL to map the input to output correctly.
The Compute node appears to work correctly. The Trace immediately following shows:
(0x1000000)sgLOC02 = (
(0x3000000)ceLOC02SegCode = 'LOC'
(0x3000000)ceLocFuncCodeQual = '3a-'
(0x3000000)ceLocNameCode = '25-----------------------'
(0x3000000)ceCodeListIdentCode = '3--'
(0x3000000)ceCodeListRespAgncyCode = '3--'
(0x3000000)ceLocName = '256! '
(0x3000000)segDTM02count = 4
(0x1000000)sgDTM02 = (
(0x3000000)ceDTM02SegCode = 'DTM'
(0x3000000)ceDtTmPerFuncCodeQual = '3a-'
(0x3000000)ceDtTmPerVal = '35---------------------------------'
(0x3000000)ceDtTmPdFmtCode = '3--'
)
(0x1000000)sgDTM02 = (
(0x3000000)ceDTM02SegCode = 'DTM'
(0x3000000)ceDtTmPerFuncCodeQual = '3b-'
(0x3000000)ceDtTmPerVal = '35---------------------------------'
(0x3000000)ceDtTmPdFmtCode = '3--'
)
(0x1000000)sgDTM02 = (
(0x3000000)ceDTM02SegCode = 'DTM'
(0x3000000)ceDtTmPerFuncCodeQual = '3c-'
(0x3000000)ceDtTmPerVal = '35---------------------------------'
(0x3000000)ceDtTmPdFmtCode = '3--'
)
(0x1000000)sgDTM02 = (
(0x3000000)ceDTM02SegCode = 'DTM'
(0x3000000)ceDtTmPerFuncCodeQual = '3d-'
(0x3000000)ceDtTmPerVal = '35---------------------------------'
(0x3000000)ceDtTmPdFmtCode = '3--'
)
)
(0x1000000)sgLOC02 = (
(0x3000000)ceLOC02SegCode = 'LOC'
(0x3000000)ceLocFuncCodeQual = '3b-'
(0x3000000)ceLocNameCode = '25-----------------------'
(0x3000000)ceCodeListIdentCode = '3--'
(0x3000000)ceCodeListRespAgncyCode = '3--'
(0x3000000)ceLocName = '256! '
(0x3000000)segDTM02count = 4
(0x1000000)sgDTM02 = (
(0x3000000)ceDTM02SegCode = 'DTM'
(0x3000000)ceDtTmPerFuncCodeQual = '3e-'
(0x3000000)ceDtTmPerVal = '35---------------------------------'
(0x3000000)ceDtTmPdFmtCode = '3--'
)
(0x1000000)sgDTM02 = (
(0x3000000)ceDTM02SegCode = 'DTM'
(0x3000000)ceDtTmPerFuncCodeQual = '3f-'
(0x3000000)ceDtTmPerVal = '35---------------------------------'
(0x3000000)ceDtTmPdFmtCode = '3--'
)
(0x1000000)sgDTM02 = (
(0x3000000)ceDTM02SegCode = 'DTM'
(0x3000000)ceDtTmPerFuncCodeQual = '3g-'
(0x3000000)ceDtTmPerVal = '35---------------------------------'
(0x3000000)ceDtTmPdFmtCode = '3--'
)
(0x1000000)sgDTM02 = (
(0x3000000)ceDTM02SegCode = 'DTM'
(0x3000000)ceDtTmPerFuncCodeQual = '3h-'
(0x3000000)ceDtTmPerVal = '35---------------------------------'
(0x3000000)ceDtTmPdFmtCode = '3--'
)
My rather crude test data has the repeating sgLOC02 group (with the first field ceLocFuncCodeQual set respectively to 3a and 3b to differentiate them) and beneath each LOC02group there are four sgDTM02 groups (for these the first field ceDtTmPerFuncCodeQual is set to 3a, 3b, 3c, 3d etc. ...again to ensure that I really do map each individual segment!). The above result is correct...sgLOC02 '3a' contains sgDTM02 '3a', '3b, '3c', 3d' and sgLOC02 '3b' contains sgDTM02 '3f', '3g', '3h', '3i'.
The Trace node connects directly to the MQOutput node. However the data as written in the message does not match the above result. Below is a portion of an AMQSBCG dump:
000000F0: 4C4F 4333 612D 3235 2D2D 2D2D 2D2D 2D2D 'LOC3a-25--------'
00000100: 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D 2D33 '---------------3'
00000110: 2D2D 332D 2D32 3536 2120 2000 0000 0000 '--3--256! .....'
00000120: 0000 0000 0000 0000 0000 0000 0000 0000 '................'
00000130: 0000 0000 0000 0000 0000 0000 0000 0000 '................'
00000140: 0000 0000 0000 0000 0000 0000 0000 0000 '................'
00000150: 0000 0000 0000 0000 0000 0000 0000 0000 '................'
00000160: 0000 0000 0000 0000 0000 0000 0000 0000 '................'
00000170: 0000 0000 0000 0000 0000 0000 0000 0000 '................'
00000180: 0000 0000 0000 0000 0000 0000 0000 0000 '................'
00000190: 0000 0000 0000 0000 0000 0000 0000 0000 '................'
000001A0: 0000 0000 0000 0000 0000 0000 0000 0000 '................'
000001B0: 0000 0000 0000 0000 0000 0000 0000 0000 '................'
000001C0: 0000 0000 0000 0000 0000 0000 0000 0000 '................'
000001D0: 0000 0000 0000 0000 0000 0000 0000 0000 '................'
000001E0: 0000 0000 0000 0000 0000 0000 0000 0000 '................'
000001F0: 0000 0000 0000 0000 0000 0000 0000 0000 '................'
00000200: 0000 0000 0000 0000 0000 0000 0000 0000 '................'
00000210: 0000 0000 0000 0000 0444 544D 3361 2D33 '.........DTM3a-3'
00000220: 352D 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D '5---------------'
00000230: 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D '----------------'
00000240: 2D2D 332D 2D44 544D 3362 2D33 352D 2D2D '--3--DTM3b-35---'
00000250: 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D '----------------'
00000260: 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D 332D '--------------3-'
00000270: 2D44 544D 3363 2D33 352D 2D2D 2D2D 2D2D '-DTM3c-35-------'
00000280: 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D '----------------'
00000290: 2D2D 2D2D 2D2D 2D2D 2D2D 332D 2D44 544D '----------3--DTM'
000002A0: 3361 2D33 352D 2D2D 2D2D 2D2D 2D2D 2D2D '3a-35-----------'
000002B0: 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D '----------------'
000002C0: 2D2D 2D2D 2D2D 332D 2D4C 4F43 3362 2D32 '------3--LOC3b-2'
000002D0: 352D 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D 2D2D '5---------------'
This shows that the sgDTM02 groups have been written out as '3a', '3b', 3c', '3a'. The problem is related to indexing. However I am not sure where to start looking as the Trace output (post Compute node) is apparently correct. I have also run the flow through the MQS 2.0.2 Debugger with a break point between the Trace and the MQOutput and verified in the debugger trace file that '3a', '3b', '3c', '3d' are shown.
This is very puzzling! Can anyone suggest what would be happening in the MQOutput node to cause this discrepancy. I have verified that the number of correctly written sgDTM02 items is related to the Repeat Count of the higher level sgLOC02 item, i.e. if I alter my test data from three (as in this test) sgLOC02 items to four I will get four correctly written sgDTM02 items in the queue. Does the MQOutput node attempt to rebuild the tree somehow...that is what seems to be happening.
I apologise for this rather convoluted explanation but if anyone has the patience to look at it I would be grateful for any hints.....I have spent hours trying to figure it out!
Thanks,
TonyD |
|
Back to top |
|
 |
|
|
 |
|
Page 1 of 1 |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|
|