Author |
Message
|
WMBSAM |
Posted: Tue Nov 03, 2009 12:34 pm Post subject: Validation issue |
|
|
 Voyager
Joined: 02 Oct 2009 Posts: 90 Location: Atlanta
|
I have 2 message flows which interact with each other.
the first flow process the message and then puts in a queue and the same queue becomes input for the other message flow. now the issue is the Soap message has all the data types correctly in the message before the message is put in the queue but the wen the same message is retrieved by the MQ input node of the other message flow all the elements in the soap messages are converted into character datatype
this are the properties i have set for the Input mq node
message domain: XMLNSC
message set: *******messageset
Parsing timing:Complete
Validation:Content and Value
i don't want all the elements in the in teh character datatype because the message is huge and many elements have different datatype
any suggestions???  |
|
Back to top |
|
 |
sridhsri |
Posted: Tue Nov 03, 2009 1:17 pm Post subject: |
|
|
Master
Joined: 19 Jun 2008 Posts: 297
|
What do you mean by the message is getting converted to char type ? What error do you see ?
p.s: If you are dealing with large messages, it might be a good idea to have lazy parsing instead of immediate - it improves performance. |
|
Back to top |
|
 |
WMBSAM |
Posted: Tue Nov 03, 2009 1:34 pm Post subject: |
|
|
 Voyager
Joined: 02 Oct 2009 Posts: 90 Location: Atlanta
|
i mean each element of the message is getting converted to Character datatype
here is the message i am getting after mq input node
Quote: |
afterrequestqueue: ( ['MQROOT' : 0x78ca728]
(0x01000000:Name ):Properties = ( ['MQPROPERTYPARSER' : 0x3dcd5b0]
(0x03000000:NameValue):MessageSet = 'SummaryMessageSet' (CHARACTER)
(0x03000000:NameValue):MessageType = '' (CHARACTER)
(0x03000000:NameValue):MessageFormat = '' (CHARACTER)
(0x03000000:NameValue):Encoding = 546 (INTEGER)
(0x03000000:NameValue):CodedCharSetId = 1208 (INTEGER)
(0x03000000:NameValue):Transactional = FALSE (BOOLEAN)
(0x03000000:NameValue):Persistence = FALSE (BOOLEAN)
(0x03000000:NameValue):CreationTime = GMTTIMESTAMP '2009-11-03 20:18:54.450' (GMTTIMESTAMP)
(0x03000000:NameValue):ExpirationTime = -1 (INTEGER)
(0x03000000:NameValue):Priority = 0 (INTEGER)
(0x03000000:NameValue):ReplyIdentifier = X'414d5120574d42325f564953412020207b64f04a20005a06' (BLOB)
(0x03000000:NameValue):ReplyProtocol = 'MQ' (CHARACTER)
(0x03000000:NameValue):Topic = NULL
(0x03000000:NameValue):ContentType = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceType = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceToken = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourcePassword = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceIssuedBy = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedType = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedToken = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedPassword = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedIssuedBy = '' (CHARACTER)
)
(0x01000000:Name ):MQMD = ( ['MQHMD' : 0x76aa3f8]
(0x03000000:NameValue):SourceQueue = 'Request' (CHARACTER)
(0x03000000:NameValue):Transactional = FALSE (BOOLEAN)
(0x03000000:NameValue):Encoding = 546 (INTEGER)
(0x03000000:NameValue):CodedCharSetId = 1208 (INTEGER)
(0x03000000:NameValue):Format = 'MQSTR ' (CHARACTER)
(0x03000000:NameValue):Version = 2 (INTEGER)
(0x03000000:NameValue):Report = 0 (INTEGER)
(0x03000000:NameValue):MsgType = 8 (INTEGER)
(0x03000000:NameValue):Expiry = -1 (INTEGER)
(0x03000000:NameValue):Feedback = 0 (INTEGER)
(0x03000000:NameValue):Priority = 0 (INTEGER)
(0x03000000:NameValue):Persistence = 0 (INTEGER)
(0x03000000:NameValue):MsgId = X'414d5120574d42325f564953412020207b64f04a20005a05' (BLOB)
(0x03000000:NameValue):CorrelId = X'414d5120574d42325f564953412020207b64f04a20005a06' (BLOB)
(0x03000000:NameValue):BackoutCount = 0 (INTEGER)
(0x03000000:NameValue):ReplyToQ = ' ' (CHARACTER)
(0x03000000:NameValue):ReplyToQMgr = 'WMB2 ' (CHARACTER)
(0x03000000:NameValue):UserIdentifier = 'wmbuser ' (CHARACTER)
(0x03000000:NameValue):AccountingToken = X'16010515000000fa47c305c9289470a02b39653bc3020000000000000000000b' (BLOB)
(0x03000000:NameValue):ApplIdentityData = ' ' (CHARACTER)
(0x03000000:NameValue):PutApplType = 11 (INTEGER)
(0x03000000:NameValue):PutApplName = 'I\6.1\bin\DataFlowEngine.exe' (CHARACTER)
(0x03000000:NameValue):PutDate = DATE '2009-11-03' (DATE)
(0x03000000:NameValue):PutTime = GMTTIME '20:18:54.450' (GMTTIME)
(0x03000000:NameValue):ApplOriginData = ' ' (CHARACTER)
(0x03000000:NameValue):GroupId = X'000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):MsgSeqNumber = 1 (INTEGER)
(0x03000000:NameValue):Offset = 0 (INTEGER)
(0x03000000:NameValue):MsgFlags = 0 (INTEGER)
(0x03000000:NameValue):OriginalLength = -1 (INTEGER)
)
(0x01000000:Folder):XMLNSC = ( ['xmlnsc' : 0x78ca950]
(0x01000000:Folder)http://www.xyz.com/abc= (
(0x03000102:NamespaceDecl)http://www.w3.org/2000/xmlns/:summaryreqmsg = 'http://www.xyz.com/abc' (CHARACTER)
(0x03000102:NamespaceDecl)http://www.w3.org/2000/xmlns/:xsi = 'http://www.w3.org/2001/XMLSchema-instance' (CHARACTER)
(0x03000100:Attribute )http://www.w3.org/2001/XMLSchema-instance:schemaLocation = 'http://www.abc.com/xyz.xsd' (CHARACTER)
(0x01000000:Folder )http://www.abc.com/rxyzHeader = (
(0x03000000:PCDataField):RequestTS = '2009-10-28T18:22:23.118Z' (CHARACTER)
(0x03000000:PCDataField):ApplicationID = 'hdfkL' (CHARACTER)
(0x03000000:PCDataField):RequestMessageID = '1146649' (CHARACTER)
(0x03000000:PCDataField):CorrelationID = '1146649' (CHARACTER)
(0x03000000:PCDataField):UserID = 'ninse3190u_at' (CHARACTER)
(0x03000000:PCDataField):UserBID = '200611' (CHARACTER)
)
(0x01000000:Folder ):RequestData = (
(0x03000000:PCDataField)http://www.abc.com/xyzType = 'SAML' (CHARACTER)
(0x03000000:PCDataField):MaxRows = '50' (CHARACTER)
(0x03000000:PCDataField):MerfID = 'NTsdfh706' (CHARACTER)
(0x03000000:PCDataField):StartDate = '2009-04-20' (CHARACTER)
(0x03000000:PCDataField):StartTime = '00:00:00' (CHARACTER)
(0x03000000:PCDataField):EndsDate = '2009-04-20' (CHARACTER)
(0x03000000:PCDataField):EndTransTime = '23:59:59.999' (CHARACTER)
|
|
|
Back to top |
|
 |
kimbert |
Posted: Tue Nov 03, 2009 2:13 pm Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Before v6.1, XMLNSC was not able to validate against a schema. So it had to build the message tree using the CHARACTER data type only ( just like XMLNS still does ).
When we added schema validation in v6.1, we had to remain backward compatible with v6.0. So the default is still to build the tree using CHARACTER data only. Even if validation is enabled.
However, we did provide a new option 'Build tree using XML Schema'. If you have set Validation to 'Content and Value' you will be able to enable this option.
The SOAP domain was new for v6.1, so it was free to set this option ON by default. |
|
Back to top |
|
 |
WMBSAM |
Posted: Tue Nov 03, 2009 2:23 pm Post subject: |
|
|
 Voyager
Joined: 02 Oct 2009 Posts: 90 Location: Atlanta
|
hello Kimbert thanks for the reply in time but i had another question if we see the available properties for the MQ input node the message type property gets disabled so how come the validation happens for the input message with the schema that is specific to the input message?? |
|
Back to top |
|
 |
WMBSAM |
Posted: Tue Nov 03, 2009 2:57 pm Post subject: |
|
|
 Voyager
Joined: 02 Oct 2009 Posts: 90 Location: Atlanta
|
Hello kimbert i have tested the flow by making the changes that you have recommended but there was no change in the message all the elements are of character data type.I really suspect how the validator knows against which message definition the message has to be validated as there is no message type option???
Note: let me also inform that wen i use the MRM domain there is no such issue as i am able to specify the message type option......  |
|
Back to top |
|
 |
kimbert |
Posted: Tue Nov 03, 2009 3:29 pm Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
More message broker history coming up...
* The MRM parser supports a variety of formats, including XML. In a non-XML message, it is ( usually ) not possible to work out *from the incoming message* which message type to use. So the MRM parser requires you to supply the message type.
* The XMLNSC parser only ever deals with XML. The root tag of the input XML document identifies the global element declaration that should be used. So there's no need for the message type to be set.
* For the same reason, you can get away without setting message type in MRM XML as well. If you do set it, the root tag of the incoming message gets checked against it. XMLNSC doesn't offer that facility, but the possibility has been discussed once or twice. |
|
Back to top |
|
 |
AkankshA |
Posted: Tue Nov 03, 2009 11:44 pm Post subject: |
|
|
 Grand Master
Joined: 12 Jan 2006 Posts: 1494 Location: Singapore
|
WMBSAM wrote: |
Hello kimbert i have tested the flow by making the changes that you have recommended but there was no change in the message all the elements are of character data type.I really suspect how the validator knows against which message definition the message has to be validated as there is no message type option???
Note: let me also inform that wen i use the MRM domain there is no such issue as i am able to specify the message type option......  |
shouldn't the parse timing be Immediate in this case ?? _________________ Cheers |
|
Back to top |
|
 |
kimbert |
Posted: Wed Nov 04, 2009 2:13 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
i have tested the flow by making the changes that you have recommended but there was no change in the message all the elements are of character data type |
This is a very widely used option, and I have never heard of any problem with it. I suggest that you check your test setup and try again. |
|
Back to top |
|
 |
WMBSAM |
Posted: Wed Nov 04, 2009 6:02 pm Post subject: |
|
|
 Voyager
Joined: 02 Oct 2009 Posts: 90 Location: Atlanta
|
My bad thank you kimbert for the valuable information issue resolved!!!  |
|
Back to top |
|
 |
|