Author |
Message
|
muq1835 |
Posted: Thu Oct 04, 2012 10:04 am Post subject: Error : Invalid Document Structure MB 6.1.0.3 |
|
|
Newbie
Joined: 04 Oct 2012 Posts: 9
|
I have recently started learning Message broker and facing an issue in resetcontentdescriptor. I am using MB 6.1.0.3
I have created a message floe with message domain as BLOB.
I am using an RCD to covert the message to XML but facing the below mentioned exception.
I have checked my XML, it is well formed.
I am getting an error even if i am sending just one tag of XML.
Please help
Quote: |
ExceptionList
RecoverableException
File:CHARACTER:F:\build\S610_P\src\DataFlowEngine\ImbDataFlowNode.cpp
Line:INTEGER:957
Function:CHARACTER:ImbDataFlowNode::createExceptionList
Type:CHARACTER:ComIbmMQInputNode
Name:CHARACTER:contact admin#FCMComposite_1_1
Label:CHARACTER:contact admin.MQInput
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2230
Text:CHARACTER:Node throwing exception
RecoverableException
File:CHARACTER:F:\build\S610_P\src\DataFlowEngine\ImbComputeNode.cpp
Line:INTEGER:464
Function:CHARACTER:ImbComputeNode::evaluate
Type:CHARACTER:ComIbmComputeNode
Name:CHARACTER:contact admin#FCMComposite_1_9
Label:CHARACTER:contact admin.VerifyDCSH
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2230
Text:CHARACTER:Caught exception and rethrowing
RecoverableException
File:CHARACTER:F:\build\S610_P\src\DataFlowEngine\ImbRdl\ImbRdlStatementGroup.cpp
Line:INTEGER:602
Function:CHARACTER:SqlStatementGroup::execute
Type:CHARACTER:ComIbmComputeNode
Name:CHARACTER:contact admin#FCMComposite_1_9
Label:CHARACTER:contact admin.VerifyDCSH
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2488
Text:CHARACTER:Error detected, rethrowing
Insert
Type:INTEGER:5
Text:CHARACTER:.contact admin.Main
Insert
Type:INTEGER:5
Text:CHARACTER:113.4
Insert
Type:INTEGER:5
Text:CHARACTER:SET OutputRoot.XML.Message.DCSH = Environment.Variables.DCSH;
RecoverableException
File:CHARACTER:F:\build\S610_P\src\DataFlowEngine\ImbRdl\ImbRdlFieldRef.cpp
Line:INTEGER:2059
Function:CHARACTER:SqlFieldReference::navigateAbsoluteToParentOfFirst
Type:CHARACTER:ComIbmComputeNode
Name:CHARACTER:contact admin#FCMComposite_1_9
Label:CHARACTER:contact admin.VerifyDCSH
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2498
Text:CHARACTER:Navigation error
Insert
Type:INTEGER:5
Text:CHARACTER:.contact admin.Main
Insert
Type:INTEGER:5
Text:CHARACTER:113.8
Insert
Type:INTEGER:2
Text:CHARACTER:3
ParserException
File:CHARACTER:F:\build\S610_P\src\MTI\MTIforBroker\GenXmlParser2\XmlImbParser.cpp
Line:INTEGER:633
Function:CHARACTER:XmlImbParser::parseFirstChild
Type:CHARACTER:
Name:CHARACTER:
Label:CHARACTER:
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:5009
Text:CHARACTER:XML Parsing Errors have occurred
ParserException
File:CHARACTER:F:\build\S610_P\src\MTI\MTIforBroker\GenXmlParser2\XmlBrokerAsgardParser.cpp
Line:INTEGER:723
Function:CHARACTER:XmlBrokerAsgardParser::error
Type:CHARACTER:
Name:CHARACTER:
Label:CHARACTER:
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:5004
Text:CHARACTER:An error has been reported by the BIPXML4C component.
Insert
Type:INTEGER:2
Text:CHARACTER:186
Insert
Type:INTEGER:5
Text:CHARACTER:
Insert
Type:INTEGER:2
Text:CHARACTER:1
Insert
Type:INTEGER:2
Text:CHARACTER:1
Insert
Type:INTEGER:5
Text:CHARACTER:Invalid document structure
Insert
Type:INTEGER:5
Text:CHARACTER:XML
|
|
|
Back to top |
|
 |
Vitor |
Posted: Thu Oct 04, 2012 10:29 am Post subject: Re: Error : Invalid Document Structure MB 6.1.0.3 |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
muq1835 wrote: |
I have recently started learning Message broker and facing an issue in resetcontentdescriptor. I am using MB 6.1.0.3 |
You shouldn't be learning on v6.1.0.3; it's out of support and it's use is decreasing. You should be learning v7 or better still v8.
As a minimum apply all the v6.1 maintenance.
muq1835 wrote: |
I have created a message floe with message domain as BLOB.
I am using an RCD to covert the message to XML but facing the below mentioned exception. |
Why? Why not parse it on input?
muq1835 wrote: |
Please help |
Well. this:
Code: |
SET OutputRoot.XML.Message.DCSH = Environment.Variables.DCSH; |
doesn't describe an RCD in use, and this:
Code: |
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2498
Text:CHARACTER:Navigation error |
says that whatever Environment.Variables.DCSH is, the XML parser isn't associated with it.
Also don't get comfortable with the XML domain. Even in v6.1 it wasn't the domain of choice. It's now (in the still supported version of WMB) not something you should ever use. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
muq1835 |
Posted: Thu Oct 04, 2012 10:43 am Post subject: |
|
|
Newbie
Joined: 04 Oct 2012 Posts: 9
|
Thank you so much for the reply.....
I am assigned a project which still uses MB 6.1.0.3
Assignment which i am working on requires the message domain to be BLOB and depending on header value FR or XML appropriate RCD is used to parse the message again.
Error which i pasted is thrown after execution of RCD. RCD has the domain as XML.
i will try to implement all the maintainence patches for 6.1 |
|
Back to top |
|
 |
mqjeff |
Posted: Thu Oct 04, 2012 10:46 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
Don't set the domain on the RCD to XML.
Set it to XMLNSC.
Don't use the XML domain. Don't use constants that start with "XML". Use only the XMLNSC domain and only use constants that start with XMLNSC.
You can't just
Code: |
Set Environment.Variables.DCSH = InputRoot.XMLNSC.Message.DCSH; |
and expect it to function. The Environment tree doesn't have a parser associated with it.
So you can't stick that into environment and then retrieve it later.
And if you are doing LEARNING at a SITE that has a specific version, you should be working with people LOCALLY at the site to get training, not relying on the internet for training. |
|
Back to top |
|
 |
Vitor |
Posted: Thu Oct 04, 2012 10:48 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
muq1835 wrote: |
I am assigned a project which still uses MB 6.1.0.3 |
It shouldn't be, for all the reasons I gave above.
muq1835 wrote: |
Assignment which i am working on requires the message domain to be BLOB and depending on header value FR or XML appropriate RCD is used to parse the message again. |
I doubt it requires any such thing. I imagine whoever designed is related to the idiot who think 6.1.0.3 is a good idea, and just thinks it requires it.
muq1835 wrote: |
i will try to implement all the maintainence patches for 6.1 |
This will be pointless unless your environment is likewise updated. It's no good showing that your code works on your v6.1.0.10 development environment if it doesn't run on the v6.1.0.3 production environment.
It's also unlikely to solve your immediate problem, which is code related.
muq1835 wrote: |
Error which i pasted is thrown after execution of RCD.RCD has the domain as XML. |
Even under v6.1.0.3, an RCD didn't set the domain of the Environment tree. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
NealM |
Posted: Thu Oct 04, 2012 11:07 am Post subject: |
|
|
 Master
Joined: 22 Feb 2011 Posts: 230 Location: NC or Utah (depends)
|
I guess I'm missing something here. In v6.1 (and stipulating that yes XMLNSC is the better parser choice), and assuming that the RCD isn't associating a message set to Root, just strictly changing the domain from BLOB to XML, then the line:
SET OutputRoot.XML.Message.DCSH = Environment.Variables.DCSH;
should work, IFF the field Environment.Variables.DCSH contains a scalar character string. If it contains anything else, like an integer or an XML structure or a list, you will get an exception. So exactly what did you put into Environment.Variables.DCSH prior to that SET instruction? |
|
Back to top |
|
 |
muq1835 |
Posted: Thu Oct 04, 2012 11:27 am Post subject: |
|
|
Newbie
Joined: 04 Oct 2012 Posts: 9
|
After RCD node i have a compute node with the following code.
Quote: |
SET OutputRoot = InputRoot;
SET Environment.Variables.StructError = 0;
IF InputBody.Message.DCSH.HeaderVersion IS NULL THEN
SET Environment.Variables.DCSH.HeaderVersion = 'XXX';
SET Environment.Variables.StructError = 1;
ELSE
SET Environment.Variables.DCSH.HeaderVersion = InputBody.Message.DCSH.HeaderVersion;
END IF;
IF InputBody.Message.DCSH.RequestingSystem IS NULL THEN
SET Environment.Variables.DCSH.RequestingSystem = 'XXXX';
SET Environment.Variables.StructError = 1;
ELSE
SET Environment.Variables.DCSH.RequestingSystem = InputBody.Message.DCSH.RequestingSystem;
END IF;
IF InputBody.Message.DCSH.ReplyFormat IS NULL THEN
SET Environment.Variables.DCSH.ReplyFormat = 'XM';
SET Environment.Variables.StructError = 1;
ELSE
SET Environment.Variables.DCSH.ReplyFormat = InputBody.Message.DCSH.ReplyFormat;
END IF;
IF InputBody.Message.DCSH.iEOSOWFlag IS NULL THEN
SET Environment.Variables.DCSH.iEOSOWFlag = 'XX';
SET Environment.Variables.StructError = 1;
ELSE
SET Environment.Variables.DCSH.iEOSOWFlag = InputBody.Message.DCSH.iEOSOWFlag;
END IF;
IF InputBody.Message.DCSH.XlateRequestAccount IS NULL THEN
SET Environment.Variables.DCSH.XlateRequestAccount = 'X';
SET Environment.Variables.StructError = 1;
ELSE
SET Environment.Variables.DCSH.XlateRequestAccount = InputBody.Message.DCSH.XlateRequestAccount;
END IF;
IF InputBody.Message.DCSH.XlateReplyAccount IS NULL THEN
SET Environment.Variables.DCSH.XlateReplyAccount = 'X';
SET Environment.Variables.StructError = 1;
ELSE
SET Environment.Variables.DCSH.XlateReplyAccount = InputBody.Message.DCSH.XlateReplyAccount;
END IF;
IF InputBody.Message.DCSH.XlateRequestDealer IS NULL THEN
SET Environment.Variables.DCSH.XlateRequestDealer = 'X';
SET Environment.Variables.StructError = 1;
ELSE
SET Environment.Variables.DCSH.XlateRequestDealer = InputBody.Message.DCSH.XlateRequestDealer;
END IF;
IF InputBody.Message.DCSH.XlateReplyDealer IS NULL THEN
SET Environment.Variables.DCSH.XlateReplyDealer = 'X';
SET Environment.Variables.StructError = 1;
ELSE
SET Environment.Variables.DCSH.XlateReplyDealer = InputBody.Message.DCSH.XlateReplyDealer;
END IF;
IF InputBody.Message.DCSH.MessageOptionFuture IS NULL THEN
SET Environment.Variables.DCSH.MessageOptionFuture = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX';
SET Environment.Variables.StructError = 1;
ELSE
SET Environment.Variables.DCSH.MessageOptionFuture = InputBody.Message.DCSH.MessageOptionFuture;
END IF;
IF InputBody.Message.DCSH.AuditActivity IS NULL THEN
SET Environment.Variables.DCSH.AuditActivity = 'XX';
SET Environment.Variables.StructError = 1;
ELSE
SET Environment.Variables.DCSH.AuditActivity = InputBody.Message.DCSH.AuditActivity;
END IF;
IF InputBody.Message.DCSH.BlockingFactor IS NULL THEN
SET Environment.Variables.DCSH.BlockingFactor = 'XX';
SET Environment.Variables.StructError = 1;
ELSE
SET Environment.Variables.DCSH.BlockingFactor = InputBody.Message.DCSH.BlockingFactor;
END IF;
IF InputBody.Message.DCSH.AuthUserID IS NULL THEN
SET Environment.Variables.DCSH.AuthUserID = 'XXXXXXXX';
SET Environment.Variables.StructError = 1;
ELSE
SET Environment.Variables.DCSH.AuthUserID = InputBody.Message.DCSH.AuthUserID;
END IF;
IF InputBody.Message.DCSH.FutureUse IS NULL THEN
SET Environment.Variables.DCSH.FutureUse = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
SET Environment.Variables.StructError = 1;
ELSE
SET Environment.Variables.DCSH.FutureUse = InputBody.Message.DCSH.FutureUse;
END IF;
IF InputBody.Message.DCSH.ReplyingSystem IS NULL THEN
SET Environment.Variables.DCSH.ReplyingSystem = 'XXXX';
SET Environment.Variables.StructError = 1;
ELSE
SET Environment.Variables.DCSH.ReplyingSystem = InputBody.Message.DCSH.ReplyingSystem;
END IF;
IF InputBody.Message.DCSH.TransactionStatus IS NULL THEN
SET Environment.Variables.DCSH.TransactionStatus = 'XXXX';
SET Environment.Variables.StructError = 1;
ELSE
SET Environment.Variables.DCSH.TransactionStatus = InputBody.Message.DCSH.TransactionStatus;
END IF;
IF Environment.Variables.StructError = 1 THEN
SET OutputRoot.XML.Message.DCSH = Environment.Variables.DCSH;
END IF;
SET Environment.Variables.DCSH = NULL;
RETURN TRUE;
|
|
|
Back to top |
|
 |
Vitor |
Posted: Thu Oct 04, 2012 12:12 pm Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
muq1835 wrote: |
After RCD node i have a compute node with the following code. |
Which makes my teeth bleed, but as you say, you're learning.
As I and others have said, that kind of assignment only works if the source (the Environment) is a single scalar or is associated with a valid parser which WMB can use to map source to target.
Yours isn't so it doesn't.
You need something like:
Code: |
CREATE LASTCHILD OF Environment.Variables DOMAIN('XMLNSC') NAME DCSH |
to achieve what you want.
You clearly also need someone on site to help you with this sort of basic issue. And your code.  _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
NealM |
Posted: Thu Oct 04, 2012 12:40 pm Post subject: |
|
|
 Master
Joined: 22 Feb 2011 Posts: 230 Location: NC or Utah (depends)
|
muq1835, something not to be used here because it would cause you to do some other logic changes, but for future reference, do an InfoCenter/Toolkit Help search on the COALESCE function. It was made for substituting a fixed value for a null, whether it be from a database table column or a parsed data structure. |
|
Back to top |
|
 |
muq1835 |
Posted: Thu Oct 04, 2012 1:07 pm Post subject: |
|
|
Newbie
Joined: 04 Oct 2012 Posts: 9
|
Currenty there are more than 100 flows which are deployed in my application and are programmed in this fashion. they have to 2 RCD one for XML and one for MRM. Input message domain is BLOB
once the message is passed thru RCD for xml messages it throws an error XML cannot be parsed.
As the RCD was not able to convert the BIT stream INPUTBODY is NULL.
I have tried using the same with XMLNS and still getting the same error. |
|
Back to top |
|
 |
NealM |
Posted: Thu Oct 04, 2012 1:20 pm Post subject: |
|
|
 Master
Joined: 22 Feb 2011 Posts: 230 Location: NC or Utah (depends)
|
Is this a new story from above? The error you posted above, the RCD worked just fine, the exception was in the ESQL in the Compute Node that follows.
Have someone at work show you how to set your flow's usertrace level, and how to retrieve and read the trace; You will see where it blew up.
And it will remain that way (broken) unless you do something like implement vitor's advice to assign a parser domain to a portion of your Environment.
The v6.1 ESQL manual is available as a .pdf. I suggest you download it and look through it, it is filled with examples. |
|
Back to top |
|
 |
Vitor |
Posted: Fri Oct 05, 2012 6:28 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
muq1835 wrote: |
Currenty there are more than 100 flows which are deployed in my application and are programmed in this fashion. they have to 2 RCD one for XML and one for MRM. Input message domain is BLOB |
Again, I'll forgive you this because you're learning.
muq1835 wrote: |
once the message is passed thru RCD for xml messages it throws an error XML cannot be parsed.
As the RCD was not able to convert the BIT stream INPUTBODY is NULL. |
That's not the problem you originally posted.
muq1835 wrote: |
I have tried using the same with XMLNS and still getting the same error. |
Of course you are. Why would you think that would help? If you thought about it at all, rather than applied the "randomly changing things in case it helps" method.
I supplied you code to help with your original problem. What did you think was wrong with it? _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
muq1835 |
Posted: Fri Oct 05, 2012 11:06 am Post subject: |
|
|
Newbie
Joined: 04 Oct 2012 Posts: 9
|
I am extremely sorry i was not able to convey my actual problem.
My issue is with RCD.
When i run the flow under debug mode in MB toolkit 6.1.0.3. Once the flow passes the RCD i see XML parsing errors.
What i assume is BIT stream was not conerted properly to XML domain.
InputBody is NULL. so i am not able to do anything with it.
Thank you so much for your help |
|
Back to top |
|
 |
Vitor |
Posted: Fri Oct 05, 2012 1:18 pm Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
muq1835 wrote: |
I am extremely sorry i was not able to convey my actual problem. |
I don't think you're able to understand your actual problem.
muq1835 wrote: |
My issue is with RCD. |
Unlikely.
muq1835 wrote: |
When i run the flow under debug mode in MB toolkit 6.1.0.3. Once the flow passes the RCD i see XML parsing errors. |
The debugger is not a good tool to use, especially for this problem. All this proves is that the debugger can't display the XML. As has been said many times on this forum take a user trace. The debuuger shows you what's happened (mostly), the trace shows you why.
muq1835 wrote: |
What i assume is BIT stream was not conerted properly to XML domain. |
Why assume? You can find out if you try.
muq1835 wrote: |
InputBody is NULL. so i am not able to do anything with it. |
InputBody may be NULL (though that's unlikely) but InputRoot will not be. Do you think that because the debugger told you that? I find it implausible.
Thank you so much for your help[/quote] _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
|