|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
Another WBIMB Mapping Node question |
« View previous topic :: View next topic » |
Author |
Message
|
TonyD |
Posted: Mon Sep 22, 2003 10:25 pm Post subject: Another WBIMB Mapping Node question |
|
|
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 |
|
 |
Bill.Matthews |
Posted: Tue Sep 23, 2003 1:30 pm Post subject: Another mapping node question |
|
|
 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 |
|
 |
TonyD |
Posted: Tue Sep 23, 2003 8:02 pm Post subject: |
|
|
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 |
|
 |
|
|
 |
|
Page 1 of 1 |
|
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
|
|
|
|