ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » How to get PARSE statement working with DFDL

Post new topic  Reply to topic Goto page 1, 2  Next
 How to get PARSE statement working with DFDL « View previous topic :: View next topic » 
Author Message
lium
PostPosted: Thu Dec 27, 2012 12:48 pm    Post subject: How to get PARSE statement working with DFDL Reply with quote

Disciple

Joined: 17 Jul 2002
Posts: 184

I generated a DFDL schema, with MQInput node, I specify the "Input message parsing" properties of MQInput with the following value:

Message Domain: DFDL
Message Model: no value with greyed
Message: {}:DCPRMREC
Physical Format: no value with greyed

This works perfectly with the test data.
Now, I change the "Input message parsing" properties of MQInput to be BLOB, and want to get it working with PARSE statement,

I coded as the following:

CREATE LASTCHILD OF OutputLocalEnvironment.Message
DOMAIN('DFDL')
PARSE(structBlob,
0,
1208,
'',
'{}:DCPRMREC',
'',
RootBitStream);

However, I got exception:

ParserException
File:CHARACTER:F:\build\slot1\S800_P\src\MTI\MTIforBroker\DfdlParser\ImbDFDLDocHandler.cpp
Line:INTEGER:242
Function:CHARACTER:ImbDFDLDocHandler::getDFDLParser
Type:CHARACTER:
Name:CHARACTER:
Label:CHARACTER:
Catalog:CHARACTER:BIPmsgs
Severity:INTEGER:3
Number:INTEGER:5822
Text:CHARACTER:Cannot continue - messageTypeName is empty

PlEASE NOTE:
I used to work with message broker version 6, the message definition is insider message set with MRM domain, which worked perfect with the PARSE statement. However, We want to migrate the message set to message model in FDL.


So let me recap this:

Does any body knows how to get PARSE statement working with DFDL?

Any help would be great appreciated
Back to top
View user's profile Send private message
lium
PostPosted: Thu Dec 27, 2012 1:28 pm    Post subject: Reply with quote

Disciple

Joined: 17 Jul 2002
Posts: 184

In WMB 8, reference, you can find example of create statement as the following:

DECLARE inCCSID INT InputProperties.CodedCharSetId;
DECLARE inEncoding INT InputProperties.Encoding;
DECLARE inBitStream BLOB ASBITSTREAM(InputRoot.XMLNSC, inEncoding, inCCSID);
CREATE LASTCHILD OF OutputRoot DOMAIN('MRM')
PARSE(inBitStream, inEncoding, inCCSID, 'DP3UK14002001',
'TestCase', 'XML1', options);

My question can be put also in this way:

1. Does CREATE statement support DOMAIN('DFDL')?

2. If yes, how should we pass the value for the message set, message type and message format for DFDL which does not have message set and message format any more?

Thanks,
Back to top
View user's profile Send private message
lium
PostPosted: Thu Dec 27, 2012 2:13 pm    Post subject: Reply with quote

Disciple

Joined: 17 Jul 2002
Posts: 184

I turned on trace, and got:

2012-12-27 16:56:25.241796 6172 ParserException BIP5822E: The DFDL parser requires a valid document root.
The DFDL parser requires a valid document root, but the field was empty. DFDL parsing has stopped.
Possible causes are:
1. The document root has not been specified on the node.
2. The document root is not present in the Properties folder in the message tree.
3. The TYPE clause was not specified in ESQL for a CREATE ... PARSE statement.
4. The messageType parameter was not specified in Java for a createElementAsLastChildFromBitstream call.

Indeed, I specified the TYPE with value , not sure why it complains.
Back to top
View user's profile Send private message
kimbert
PostPosted: Sat Dec 29, 2012 12:33 pm    Post subject: Reply with quote

Jedi Council

Joined: 29 Jul 2003
Posts: 5542
Location: Southampton

Quote:
Does CREATE statement support DOMAIN('DFDL')?
yes - it supports all of the WMB parsers including DFDL.

It is possible that you have encountered a product defect. It is also possible that the info center is not helpful enough. Either way, I think a PMR would be appropriate.
Back to top
View user's profile Send private message
lium
PostPosted: Sat Dec 29, 2012 6:02 pm    Post subject: Reply with quote

Disciple

Joined: 17 Jul 2002
Posts: 184

Thanks Kimbert.

I think this issue has been solved.
Back to top
View user's profile Send private message
smdavies99
PostPosted: Sat Dec 29, 2012 10:59 pm    Post subject: Reply with quote

Jedi Council

Joined: 10 Feb 2003
Posts: 6076
Location: Somewhere over the Rainbow this side of Never-never land.

To help all of us in the future can you tell us how you solved the problem?
_________________
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
View user's profile Send private message
lium
PostPosted: Sun Dec 30, 2012 11:57 am    Post subject: Reply with quote

Disciple

Joined: 17 Jul 2002
Posts: 184

My experience is the DFDL is little more picky than MRM domain.
I am not sure if it is not as mature as MRM domain.

So I used OutputRoot to store the result rather than OutputLocalEnvironment to solve this problem.
Back to top
View user's profile Send private message
kimbert
PostPosted: Sun Dec 30, 2012 1:46 pm    Post subject: Reply with quote

Jedi Council

Joined: 29 Jul 2003
Posts: 5542
Location: Southampton

Quote:
My experience is the DFDL is little more picky than MRM domain.
This sounds like potentially useful feedback - can you explain exactly what you mean by that?
Quote:
I am not sure if it is not as mature as MRM domain.
It is newer, but it is based on some very sound technical foundations. DFDL has advantages that MRM cannot compete with. For any v8 user the strategic choice is DFDL for new message flows that deal with non-XML data formats.
Quote:
So I used OutputRoot to store the result rather than OutputLocalEnvironment to solve this problem.
Hmmm - that should make exactly zero difference to anything. Are you 100% sure that you did not change something else at the same time?
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Sun Dec 30, 2012 8:45 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

Did he have a parser attached to OutputLocalEnvironment ?
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
lium
PostPosted: Mon Dec 31, 2012 7:57 am    Post subject: Reply with quote

Disciple

Joined: 17 Jul 2002
Posts: 184

Yes, once I switched from the OutputLocalEnvironment to OutputRoot, everything is different.
The MRM has existed very long time, however, DFDL is so new, so it makes sense to me.
Back to top
View user's profile Send private message
Vitor
PostPosted: Mon Dec 31, 2012 9:27 am    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

lium wrote:
Yes, once I switched from the OutputLocalEnvironment to OutputRoot, everything is different.


No it isn't, or if it is it shouldn't be as kimbert points out.

lium wrote:
The MRM has existed very long time, however, DFDL is so new, so it makes sense to me.


You're the only one it makes sense to.
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
RadhamaniRamadoss
PostPosted: Thu Jun 13, 2013 1:33 am    Post subject: Reply with quote

Apprentice

Joined: 08 Oct 2009
Posts: 42

I have the same problem but with OutputRoot itself.

The esql code is as below,
(CARDINALITY(Environment.OriginalMessage.DFDL[]) > 0) THEN
SET OutputRoot.DFDL = Environment.OriginalMessage.DFDL;
SET OutputLocalEnvironment.Destination.MQ.DestinationData.queueName = Environment.ErrorHandler.Config.Retry.RetryQueue;

The error is "Text:CHARACTER:Cannot continue - messageTypeName is empty"

The same code works for MRM,

SET OutputRoot.MRM = Environment.OriginalMessage.MRM;
SET OutputLocalEnvironment.Destination.MQ.DestinationData.queueName = Environment.ErrorHandler.Config.Retry.RetryQueue;


Not sure how to fix this.Please help.
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Thu Jun 13, 2013 5:08 am    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

Remember also the error line somewhere above where it complained about message root? MRM does not require a message root as a tag. DFDL does.
Same difference between XML and MRM

I know this sounds a bit esoteric. So try this:
declare a root element below the parser (document root) and try parse to that...
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
kimbert
PostPosted: Thu Jun 13, 2013 8:18 am    Post subject: Reply with quote

Jedi Council

Joined: 29 Jul 2003
Posts: 5542
Location: Southampton

Which version are you using? Have you already updated to 8.0.0.2?
Back to top
View user's profile Send private message
mqceries
PostPosted: Tue Jun 18, 2013 1:35 pm    Post subject: Reply with quote

Acolyte

Joined: 02 Dec 2011
Posts: 70

RadhamaniRamadoss wrote:
I have the same problem but with OutputRoot itself.

The esql code is as below,
(CARDINALITY(Environment.OriginalMessage.DFDL[]) > 0) THEN
SET OutputRoot.DFDL = Environment.OriginalMessage.DFDL;
SET OutputLocalEnvironment.Destination.MQ.DestinationData.queueName = Environment.ErrorHandler.Config.Retry.RetryQueue;

The error is "Text:CHARACTER:Cannot continue - messageTypeName is empty"

The same code works for MRM,

SET OutputRoot.MRM = Environment.OriginalMessage.MRM;
SET OutputLocalEnvironment.Destination.MQ.DestinationData.queueName = Environment.ErrorHandler.Config.Retry.RetryQueue;


Not sure how to fix this.Please help.


I hope the tree you are trying to copy have same DFDL, and secondly i believe you cant copy the DFDL to a DFDL like that, the way you are doing once debug you will be DFDL inside the DFDL and the file wont be written. We had the similar situation and i used this..

Offcourse there is every possible thing that i have understood this wrong and jumped in... if so pls correct.

Code:

DELETE FIELD OutputRoot.DFDL.MSG_xxxxx;
            SET OutputRoot.DFDL = rPack;

rPack is a reference to outputlocalenvironment.DFDL.Message. and both out put and this do have same DFDL

Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Goto page 1, 2  Next Page 1 of 2

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » How to get PARSE statement working with DFDL
Jump to:  



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
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.