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 » Another WBIMB Mapping Node question

Post new topic  Reply to topic
 Another WBIMB Mapping Node question « View previous topic :: View next topic » 
Author Message
TonyD
PostPosted: Mon Sep 22, 2003 10:25 pm    Post subject: Another WBIMB Mapping Node question Reply with quote

Knight

Joined: 15 May 2001
Posts: 540
Location: New Zealand

I managed to find and fix my mapping expression errors so that the 'Syntax Error' warnings disappeared. However, after deployng the flow I have run into a further challenge, which someone may have already worked through.
When creating mapping expressions one can select from a list box that specifies 'Source fields' or 'Target fields'. You can then select an element or field from the respective list and drag its name into the pane where the expression is being built, These fields are of the format 's_MessageName.ElementName' (for input fields) or 't_msg_MessageName.ElementName' for output fields), e.g. 's_POLICY.PolicyNumber' and 't_msg_RENEWAL.PolNo'.
However, looking at a trace of a flow execution that subsequently fails, I see that field references are generated under the covers to 'source_POLICY' and 'target_msg_RENEWAL'. The flow then tries to navigate to 's_POLICY' elements in the input message and fails because the elements do not exist.
I would have expected that the generated field references would have been declared as 's_POLICY' and 't_msg_RENEWAL', matching the formats above.
It is quite possible that I'm interpreting this incorrectly, or have made a mistake somewhere. Any suggestions? I do have CSD01 installed.
An extract from the Trace output is shown below:
Code:

Node 'mfEBG_POL.Mapping': Executing statement 'DECLARE source_POLICY REFERENCE TO InputRoot.MRM;' at (.IBM_WBIMB_mfEBG_POL_Mapping.Main, 8.2).
Node 'mfEBG_POL.Mapping': Executing statement 'CREATE FIELD OutputRoot.MRM;' at (.IBM_WBIMB_mfEBG_POL_Mapping.Main, 9.2).
Node 'mfEBG_POL.Mapping': Executing statement 'DECLARE target_msg_IFCPOLICYDET REFERENCE TO OutputRoot.MRM;' at (.IBM_WBIMB_mfEBG_POL_Mapping.Main, 10.2).
Node 'mfEBG_POL.Mapping': Executing statement 'CALL mfEBG_POL_Mapping(source_POLICY, target_msg_IFCPOLICYDET);' at (.IBM_WBIMB_mfEBG_POL_Mapping.Main, 11.2).
Node 'mfEBG_POL.Mapping': Executing statement 'BEGIN ... END;' at (.mfEBG_POL_Mapping, 4.1).
Node 'mfEBG_POL.Mapping': Executing statement 'SET t_msg_IFCPOLICYDET.DP_RECTYPE = 'POL';' at (.mfEBG_POL_Mapping, 6.1).
Node 'mfEBG_POL.Mapping': Assigning value ''POL'' to field / variable 't_msg_IFCPOLICYDET.DP_RECTYPE'.
Node 'mfEBG_POL.Mapping': Executing statement 'IF s_POLICY.TxnType IS NOT NULL THEN... END IF;' at (.mfEBG_POL_Mapping, 7.1).
Node 'mfEBG_POL.Mapping': Evaluating expression 's_POLICY.TxnType IS NOT NULL' at (.mfEBG_POL_Mapping, 7.21).
Node 'mfEBG_POL.Mapping': Evaluating expression 's_POLICY.TxnType' at (.mfEBG_POL_Mapping, 7.4).
Node 'mfEBG_POL.Mapping': (.mfEBG_POL_Mapping, 7.13) : Failed to navigate to path element because it does not exist.
Node 'mfEBG_POL.Mapping': Finished evaluating expression 's_POLICY.TxnType IS NOT NULL' at (.mfEBG_POL_Mapping, 7.21). The result was 'FALSE'.
Back to top
View user's profile Send private message Send e-mail
Bill.Matthews
PostPosted: Tue Sep 23, 2003 1:30 pm    Post subject: Another mapping node question Reply with quote

Master

Joined: 23 Sep 2003
Posts: 232
Location: IBM (Retired)

Tony,

This is basically what happens. After coping the headers and setting the output properties, a reference pointer (Source_xxx) is set for the InputRoot.MRM. Then a Create Field for the OutputRoot.MRM is done and the second reference pointer (Target_zzz) is created.

Then a new procedure is called and the two reference pointers are passed. Within this procedure, the reference pointers are named as s_xxx and t_zzz.

In your example, the msg_MessageName that is appended to the t_ (i.e. t_msg_MessageName.... ) is the name of the message (as built by either the C or Cobol importer).

When you look at the mapping node's editor, you can see that an automatic check for each input field being null is included.

Based on your example, I would guess that your input message is an XML structure. If that is so, did your MQInput node specify the parser as MRM or XML? If XML was specified, try changing it to MRM (with the appropiate additional information) and try it again.



Keep in mind that the mapping node only does MRM to MRM.
_________________
Bill Matthews
Back to top
View user's profile Send private message
TonyD
PostPosted: Tue Sep 23, 2003 8:02 pm    Post subject: Reply with quote

Knight

Joined: 15 May 2001
Posts: 540
Location: New Zealand

Thanks, for the explanation Bill....
Quote:

Then a new procedure is called and the two reference pointers are passed. Within this procedure, the reference pointers are named as s_xxx and t_zzz.

I guess that this is the bit that I did not know about.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Another WBIMB Mapping Node question
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.