|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
The nodes can't read the XML message |
« View previous topic :: View next topic » |
Author |
Message
|
Manuel_ch |
Posted: Thu Nov 17, 2005 9:33 am Post subject: |
|
|
Apprentice
Joined: 27 Jul 2005 Posts: 31
|
I manage to reproduce the error with my test flow :
The test flow have been completed :
MQInput=>Compute(C_FlowDate)->Trace1->Compute1=>Trace2->MQOutput
In the first Compute Node (C_FlowDate) I just insert a value :
Quote: |
SET OutputRoot = InputRoot;
-- Entrez le code SQL sous cette ligne. Le SQL au-dessus de cette ligne pourrait être régénéré, ce qui entraînerait la perte des modifications.
SET OutputRoot.XML.Siprog.MsgEntry.Header.FlowDate = '2005-11-17 15:14:00' ;
|
The Trace1 is clean and includes the new flowdate:
Quote: |
***Trace Root 18:34
(
(0x1000000)Properties = (
(0x3000000)MessageSet = ''
(0x3000000)MessageType = ''
(0x3000000)MessageFormat = ''
(0x3000000)Encoding = 273
(0x3000000)CodedCharSetId = 819
(0x3000000)Transactional = TRUE
(0x3000000)Persistence = TRUE
(0x3000000)CreationTime = GMTTIMESTAMP '2005-11-17 17:34:08.690'
(0x3000000)ExpirationTime = -1
(0x3000000)Priority = 0
(0x3000000)ReplyIdentifier = X'000000000000000000000000000000000000000000000000'
(0x3000000)ReplyProtocol = 'MQ'
(0x3000000)Topic = NULL
)
(0x1000000)MQMD = (
(0x3000000)SourceQueue = 'Q_MCHE'
(0x3000000)Transactional = TRUE
(0x3000000)Encoding = 273
(0x3000000)CodedCharSetId = 819
(0x3000000)Format = 'MQSTR '
(0x3000000)Version = 2
(0x3000000)Report = 0
(0x3000000)MsgType = 8
(0x3000000)Expiry = -1
(0x3000000)Feedback = 0
(0x3000000)Priority = 0
(0x3000000)Persistence = 1
(0x3000000)MsgId = X'414d5120514d5f4541495f315f494e5443706dc900327013'
(0x3000000)CorrelId = X'000000000000000000000000000000000000000000000000'
(0x3000000)BackoutCount = 0
(0x3000000)ReplyToQ = ' '
(0x3000000)ReplyToQMgr = 'QM_EAI_1_INTEVO '
(0x3000000)UserIdentifier = 'mqmie '
(0x3000000)AccountingToken = X'0332303800000000000000000000000000000000000000000000000000000006'
(0x3000000)ApplIdentityData = ' '
(0x3000000)PutApplType = 28
(0x3000000)PutApplName = 'MQSeries Client for Java '
(0x3000000)PutDate = DATE '2005-11-17'
(0x3000000)PutTime = GMTTIME '17:34:08.690'
(0x3000000)ApplOriginData = ' '
(0x3000000)GroupId = X'000000000000000000000000000000000000000000000000'
(0x3000000)MsgSeqNumber = 1
(0x3000000)Offset = 0
(0x3000000)MsgFlags = 0
(0x3000000)OriginalLength = -1
)
(0x1000010)XML = (
(0x1000000)Siprog = (
(0x1000000)MsgEntry = (
(0x1000000)Header = (
...etc...etc
(0x1000000)FlowDate = (
(0x2000000) = '2005-11-17 15:14:00'
)
)
(0x1000000)Content = (
...etc...etc
)
)
)
)
)
)
|
The Compute1 node is trying to substring our Content message :
Quote: |
SET OutputRoot = InputRoot;
-- Entrez le code SQL sous cette ligne. Le SQL au-dessus de cette ligne pourrait être régénéré, ce qui entraînerait la perte des modifications.
DECLARE extrait BLOB;
DECLARE chaine CHARACTER;
SET extrait = BITSTREAM(InputBody);
------------------------------
-- Chaine contient le message
------------------------------
SET chaine = CAST( extrait AS CHARACTER CCSID InputRoot.MQMD.CodedCharSetId);
--SET chaine = ASBITSTREAM( extrait OPTIONS RootBitStream CCSID InputRoot.MQMD.CodedCharSetId FORMAT CHARACTER);
DECLARE nPosition1 INTEGER;
DECLARE nPosition2 INTEGER;
DECLARE nPosition3 INTEGER;
SET nPosition1 = POSITION('<Content>' IN chaine);
SET nPosition2 = POSITION('</Content>' IN chaine);
SET nPosition3 = nPosition2 - 9 - nPosition1;
DECLARE sContent CHARACTER;
SET sContent = SUBSTRING (chaine FROM nPosition1+9 FOR nPosition3);
|
The Trace 2 after this compute gave us :
Quote: |
***Trace Root2 18:34
(
(0x1000000)Properties = (
(0x3000000)MessageSet = ''
(0x3000000)MessageType = ''
(0x3000000)MessageFormat = ''
(0x3000000)Encoding = 273
(0x3000000)CodedCharSetId = 819
(0x3000000)Transactional = TRUE
(0x3000000)Persistence = TRUE
(0x3000000)CreationTime = GMTTIMESTAMP '2005-11-17 17:34:08.690'
(0x3000000)ExpirationTime = -1
(0x3000000)Priority = 0
(0x3000000)ReplyIdentifier = X'000000000000000000000000000000000000000000000000'
(0x3000000)ReplyProtocol = 'MQ'
(0x3000000)Topic = NULL
)
(0x1000000)MQMD = (
(0x3000000)SourceQueue = 'Q_MCHE'
(0x3000000)Transactional = TRUE
(0x3000000)Encoding = 273
(0x3000000)CodedCharSetId = 819
(0x3000000)Format = 'MQSTR '
(0x3000000)Version = 2
(0x3000000)Report = 0
(0x3000000)MsgType = 8
(0x3000000)Expiry = -1
(0x3000000)Feedback = 0
(0x3000000)Priority = 0
(0x3000000)Persistence = 1
(0x3000000)MsgId = X'414d5120514d5f4541495f315f494e5443706dc900327013'
(0x3000000)CorrelId = X'000000000000000000000000000000000000000000000000'
(0x3000000)BackoutCount = 0
(0x3000000)ReplyToQ = ' '
(0x3000000)ReplyToQMgr = 'QM_EAI_1_INTEVO '
(0x3000000)UserIdentifier = 'mqmie '
(0x3000000)AccountingToken = X'0332303800000000000000000000000000000000000000000000000000000006'
(0x3000000)ApplIdentityData = ' '
(0x3000000)PutApplType = 28
(0x3000000)PutApplName = 'MQSeries Client for Java '
(0x3000000)PutDate = DATE '2005-11-17'
(0x3000000)PutTime = GMTTIME '17:34:08.690'
(0x3000000)ApplOriginData = ' '
(0x3000000)GroupId = X'000000000000000000000000000000000000000000000000'
(0x3000000)MsgSeqNumber = 1
(0x3000000)Offset = 0
(0x3000000)MsgFlags = 0
(0x3000000)OriginalLength = -1
)
(0x1000010)XML = (
(0x1000000)Siprog = (
(0x1000000)MsgEntry = (
(0x1000000)Header = (
etc ... etc ...
(0x1000000)FlowDate = (
(0x2000000) = '2005-11-17 15:14:00'
)
)
(0x1000000)Content = (
etc... etc ...
)
)
)
)
)
***Trace ExceptionList 18:34
(
(0x1000000)RecoverableException = (
(0x3000000)File = '/build/S210_P/src/DataFlowEngine/ImbDataFlowNode.cpp'
(0x3000000)Line = 536
(0x3000000)Function = 'ImbDataFlowNode::createExceptionList'
(0x3000000)Type = 'ComIbmComputeNode'
(0x3000000)Name = '9da8be56-0701-0000-0080-ddd07afc285a'
(0x3000000)Label = 'FL_F_MCHE.Compute1'
(0x3000000)Text = 'Node throwing exception'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 2230
(0x1000000)RecoverableException = (
(0x3000000)File = '/build/S210_P/src/DataFlowEngine/ImbRdl/ImbRdlStringFunctions.cpp'
(0x3000000)Line = 295
(0x3000000)Function = 'SubstringFnCall::evaluateFunction'
(0x3000000)Type = 'ComIbmComputeNode'
(0x3000000)Name = '9da8be56-0701-0000-0080-ddd07afc285a'
(0x3000000)Label = 'FL_F_MCHE.Compute1'
(0x3000000)Text = 'Illegal arguments for SUBSTRING functions'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 2499
(0x1000000)Insert = (
(0x3000000)Type = 2
(0x3000000)Text = '22'
)
(0x1000000)Insert = (
(0x3000000)Type = 2
(0x3000000)Text = '16'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'SUBSTRING('' FROM 9 FOR -9)'
)
)
)
)
|
My analyse is : if a first compute node modify the xml message, the second compute node fails to read the message.
In fact if the first compute node C_FlowDate is not here the Compute1 node works perfectly.
Is there anything I can do to make my environment working about it? |
|
Back to top |
|
 |
fschofer |
Posted: Mon Nov 21, 2005 8:00 am Post subject: |
|
|
 Knight
Joined: 02 Jul 2001 Posts: 524 Location: Mainz, Germany
|
Hi,
have you tried using InputRoot.XML instead of InputBody.
Maybe InputBody which means last child of InputRoot is finding something else
A second idea is to test what happens if you use InputRoot.XML.Siprog
Greetings
Frank |
|
Back to top |
|
 |
Manuel_ch |
Posted: Mon Nov 21, 2005 9:20 am Post subject: |
|
|
Apprentice
Joined: 27 Jul 2005 Posts: 31
|
I get the same result when I'm replacing BITSTREAM(InputBody) by BITSTREAM(InputRoot.XML) or BITSTREAM(ImputRoot.XML.Siprog) :
When the first compute Node C_FlowDate is present the second Compute Node Compute1 doesn't manage to resolve BITSTREAM(InputBody) or InputRoot.XML(.Siprog).
Quote: |
The trace of BITSTREAM(ImputRoot.XML.Siprog) with the node C_FlowDate present
2005-11-21 18:13:59.641841 2828 UserTrace BIP2537I: Node 'FL_F_MCHE.Compute1': Executing statement 'SET OutputRoot = InputRoot;' at (1, 1).
2005-11-21 18:13:59.642002 2828 UserTrace BIP2538I: Node 'FL_F_MCHE.Compute1': Evaluating expression 'InputRoot' at (1, 1 .
2005-11-21 18:13:59.642127 2828 UserTrace BIP2568I: Node 'FL_F_MCHE.Compute1': Performing tree copy of '' to 'OutputRoot'.
2005-11-21 18:13:59.642776 2828 UserTrace BIP2537I: Node 'FL_F_MCHE.Compute1': Executing statement 'DECLARE extrait BLOB;' at (4, 1).
2005-11-21 18:13:59.642883 2828 UserTrace BIP2537I: Node 'FL_F_MCHE.Compute1': Executing statement 'DECLARE chaine CHARACTER;' at (5, 1).
2005-11-21 18:13:59.642978 2828 UserTrace BIP2537I: Node 'FL_F_MCHE.Compute1': Executing statement 'SET extrait = BITSTREAM(InputRoot.XML.Siprog);' at (6, 1).
2005-11-21 18:13:59.643070 2828 UserTrace BIP2538I: Node 'FL_F_MCHE.Compute1': Evaluating expression 'BITSTREAM(InputRoot.XML.Siprog)' at (6, 15).
2005-11-21 18:13:59.645484 2828 UserTrace BIP2540I: Node 'FL_F_MCHE.Compute1': Finished evaluating expression 'BITSTREAM(InputRoot.XML.Siprog)' at (6, 15). The result was 'X'''.
2005-11-21 18:13:59.645751 2828 UserTrace BIP2537I: Node 'FL_F_MCHE.Compute1': Executing statement 'SET chaine = CAST(extrait AS CHARACTER CCSID InputRoot.MQMD.CodedCharSetId);' at (11, 1).
|
But when C_FlowDate is not connected Compute1 manage to read the message :
Quote: |
Trace without the node C_FlowDate
2005-11-21 18:08:32.949584 2828 UserTrace BIP2537I: Node 'FL_F_MCHE.Compute1': Executing statement 'SET OutputRoot = InputRoot;' at (1, 1).
2005-11-21 18:08:32.949691 2828 UserTrace BIP2538I: Node 'FL_F_MCHE.Compute1': Evaluating expression 'InputRoot' at (1, 1 .
2005-11-21 18:08:32.949802 2828 UserTrace BIP2568I: Node 'FL_F_MCHE.Compute1': Performing tree copy of '' to 'OutputRoot'.
2005-11-21 18:08:32.950057 2828 UserTrace BIP2537I: Node 'FL_F_MCHE.Compute1': Executing statement 'DECLARE extrait BLOB;' at (4, 1).
2005-11-21 18:08:32.950160 2828 UserTrace BIP2537I: Node 'FL_F_MCHE.Compute1': Executing statement 'DECLARE chaine CHARACTER;' at (5, 1).
2005-11-21 18:08:32.950256 2828 UserTrace BIP2537I: Node 'FL_F_MCHE.Compute1': Executing statement 'SET extrait = BITSTREAM(InputRoot.XML.Siprog);' at (6, 1).
2005-11-21 18:08:32.950382 2828 UserTrace BIP2538I: Node 'FL_F_MCHE.Compute1': Evaluating expression 'BITSTREAM(InputRoot.XML.Siprog)' at (6, 15).
2005-11-21 18:08:32.955001 2828 UserTrace BIP2540I: Node 'FL_F_MCHE.Compute1': Finished evaluating expression 'BITSTREAM(InputRoot.XML.Siprog)' at (6, 15). The result was 'X'3c53697.......e''.
2005-11-21 18:08:32.955287 2828 UserTrace BIP2537I: Node 'FL_F_MCHE.Compute1': Executing statement 'SET chaine = CAST(extrait AS CHARACTER CCSID InputRoot.MQMD.CodedCharSetId);' at (11, 1).
2005-11-21 18:08:32.955379 2828 UserTrace BIP2538I: Node 'FL_F_MCHE.Compute1': Evaluating expression 'CAST(extrait AS CHARACTER CCSID InputRoot.MQMD.CodedCharSetId)' at (11, 14).
2005-11-21 18:08:32.955501 2828 UserTrace BIP2538I: Node 'FL_F_MCHE.Compute1': Evaluating expression 'extrait' at (11, 20).
2005-11-21 18:08:32.955596 2828 UserTrace BIP2538I: Node 'FL_F_MCHE.Compute1': Evaluating expression 'InputRoot.MQMD.CodedCharSetId' at (11, 47).
2005-11-21 18:08:32.960041 2828 UserTrace BIP2539I: Node 'FL_F_MCHE.Compute1': Finished evaluating expression 'CAST(extrait AS CHARACTER CCSID InputRoot.MQMD.CodedCharSetId)' at (11, 14). This resolved to 'CAST(X'3c5369707....73e' AS CHARACTER CCSID 819 )'. The result was ''<Siprog><MsgEntry><Header><OrderId>7050000000000000000</OrderId><Hist... </Header><Content><Missi... ...sion></Content></MsgEntry></Siprog>''.
2005-11-21 18:08:32.960441 2828 UserTrace BIP2537I: Node 'FL_F_MCHE.Compute1': Executing statement 'DECLARE nPosition1 INTEGER;' at (14, 1).
2005-11-21 18:08:32.960567 2828 UserTrace BIP2537I: Node 'FL_F_MCHE.Compute1': Executing statement 'DECLARE nPosition2 INTEGER;' at (15, 1).
2005-11-21 18:08:32.960655 2828 UserTrace BIP2537I: Node 'FL_F_MCHE.Compute1': Executing statement 'DECLARE nPosition3 INTEGER;' at (16, 1).
2005-11-21 18:08:32.960750 2828 UserTrace BIP2537I: Node 'FL_F_MCHE.Compute1': Executing statement 'SET nPosition1 = POSITION('<Content>' IN chaine);' at (17, 1).
2005-11-21 18:08:32.960838 2828 UserTrace BIP2538I: Node 'FL_F_MCHE.Compute1': Evaluating expression 'POSITION('<Content>' IN chaine)' at (17, 1 .
2005-11-21 18:08:32.960948 2828 UserTrace BIP2538I: Node 'FL_F_MCHE.Compute1': Evaluating expression 'chaine' at (17, 42).
2005-11-21 18:08:32.961124 2828 UserTrace BIP2539I: Node 'FL_F_MCHE.Compute1': Finished evaluating expression 'POSITION('<Content>' IN chaine)' at (17, 1 . This resolved to 'POSITION('<Content>' IN '<Siprog><MsgEntry><Header><OrderId>7050000000000000000</OrderId><Hist... ber></Header><Content><Miss....sion></Content></MsgEntry></Siprog>')'. The result was '779'.
2005-11-21 18:08:32.961318 2828 UserTrace BIP2537I: Node 'FL_F_MCHE.Compute1': Executing statement 'SET nPosition2 = POSITION('</Content>' IN chaine);' at (18, 1).
2005-11-21 18:08:32.961406 2828 UserTrace BIP2538I: Node 'FL_F_MCHE.Compute1': Evaluating expression 'POSITION('</Content>' IN chaine)' at (18, 1 .
2005-11-21 18:08:32.961502 2828 UserTrace BIP2538I: Node 'FL_F_MCHE.Compute1': Evaluating expression 'chaine' at (18, 43).
|
Is there any explanation ? |
|
Back to top |
|
 |
jefflowrey |
Posted: Mon Nov 21, 2005 9:30 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
First off, and again,
Stop using Bitstream. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
JT |
Posted: Mon Nov 21, 2005 11:04 am Post subject: |
|
|
Padawan
Joined: 27 Mar 2003 Posts: 1564 Location: Hartford, CT.
|
What is the setting for Compute Mode property of the C_FlowDate node ? |
|
Back to top |
|
 |
Manuel_ch |
Posted: Tue Nov 22, 2005 6:52 am Post subject: |
|
|
Apprentice
Joined: 27 Jul 2005 Posts: 31
|
The property of the Compute Node C_FlowDate :
-Advanced :
. Consider warning as Error is not checked
. raise exception is checked
. Mode is Message
-Confirmation :
. Validate : None
This is the same config as the compute Node Compute1.
Manuel |
|
Back to top |
|
 |
Manuel_ch |
Posted: Mon Nov 28, 2005 9:05 am Post subject: |
|
|
Apprentice
Joined: 27 Jul 2005 Posts: 31
|
I want to test a other call InputRoot, by using ASBITSTREAM.
Quote: |
SET OutputRoot = InputRoot;
DECLARE extrait BLOB;
DECLARE chaine CHARACTER;
SET extrait = BITSTREAM(InputBody);
BITSTREAM(InputRoot.XML.Siprog);
SET chaine = CAST(extrait AS CHARACTER CCSID InputRoot.MQMD.CodedCharSetId);
|
What my code becomes to? |
|
Back to top |
|
 |
Manuel_ch |
Posted: Thu Jan 05, 2006 3:06 am Post subject: |
|
|
Apprentice
Joined: 27 Jul 2005 Posts: 31
|
Back from my hollidays, the problem still there.
Does anyones have an idear? |
|
Back to top |
|
 |
|
|
|
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
|
|
|
|