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 » xml to MRM convert using element mapping

Post new topic  Reply to topic
 xml to MRM convert using element mapping « View previous topic :: View next topic » 
Author Message
szab
PostPosted: Fri May 02, 2008 1:51 am    Post subject: xml to MRM convert using element mapping Reply with quote

Novice

Joined: 01 May 2008
Posts: 14

hi,

I am a beginner, so please give me some advice how should I do the next mapping in ESQL.
I've got 2 message definitions: A.mxsd and B.mxsd.
I'd l ike to convert the inbound XML message to an MRM outbound message using a Compute node.
How can I map the elements of the inbound XML to the elements of the outbound MRM in ESQL ?
Is this ESQL code correct?
SET OutputRoot.MRM.B_Customer = InputRoot.XMLNS.Customer;

How should I set the message Format, Header to the outbound MRM?
how should I start the mapping from XML to MRM in ESQL?

The mapping should be:
Inbound XML Outbound MRM
A.mxsd ----mapping---- B.mxsd
Customer B_Customer
CustomerDetails B_CustomD
Accounts B_Accs
Account B_Acc
Name B_Name
Birth B_Birth
AccountNumber B_AccN
AccountType B_AccT
Ba B_Ba
Back to top
View user's profile Send private message
Vitor
PostPosted: Fri May 02, 2008 1:58 am    Post subject: Re: xml to MRM convert using element mapping Reply with quote

Grand High Poobah

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

szab wrote:
I am a beginner, so please give me some advice how should I do the next mapping in ESQL.


By telling your budget holder it's unreasonable to expect you to do this untrained?

szab wrote:
I've got 2 message definitions: A.mxsd and B.mxsd.


If A is the inbound message & B is the outbound message, don't use the XMLNS domain, use MRM for both.

If these are 2 separate output formats from a single input, you'll need to build 2 trees and PROPOGATE. As a beginner, you may find it clearer to use 2 compute nodes.

szab wrote:
Is this ESQL code correct?
SET OutputRoot.MRM.B_Customer = InputRoot.XMLNS.Customer;


Only if all the names match up. It's certainly not self documenting.

szab wrote:

How should I set the message Format, Header to the outbound MRM?


With SET statements.

szab wrote:

how should I start the mapping from XML to MRM in ESQL?


With SET statements

If you have both input and output messages in message sets, consider the Mapping node.
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
szab
PostPosted: Fri May 02, 2008 2:05 am    Post subject: Reply with quote

Novice

Joined: 01 May 2008
Posts: 14

thx for your quick answers, but i have to do the mapping in ESQL...
Any advice how and where to start ?
Back to top
View user's profile Send private message
szab
PostPosted: Fri May 02, 2008 2:10 am    Post subject: Reply with quote

Novice

Joined: 01 May 2008
Posts: 14

The mapping should be:
A.mxsd ---- mapping---- B.mxsd
Customer ----mapping---- B_Customer
CustomerDetails ----mapping---- B_CustomD
Accounts ----mapping---- B_Accs
Account ----mapping---- B_Acc
Name ----mapping---- B_Name
Birth ----mapping---- B_Birth
AccountNumber ----mapping---- B_AccN
AccountType ----mapping---- B_AccT
Ba ----mapping---- B_Ba

my incoming xml message looks like:

Code:
<?xml version="1.0"?>
<Customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:///c:/.../probBack1.xsd">
    <CustomerDetails>
        <Name>jdr</Name>
        <Birth>NMTOKEN</Birth>
    </CustomerDetails>
    <Accounts>
        <Account>
            <AccountNumber>haha</AccountNumber>
            <AccountType>hehe</AccountType>
            <Ba>1.23</Ba>
        </Account>
        <Account>
            <AccountNumber>ger</AccountNumber>
            <AccountType>geje</AccountType>
            <Ba>1.23</Ba>
        </Account>
        <Account>
            <AccountNumber>jsjv</AccountNumber>
            <AccountType>jsc</AccountType>
            <Ba>1.23</Ba>
        </Account>
    </Accounts>
</Customer>
Back to top
View user's profile Send private message
Vitor
PostPosted: Fri May 02, 2008 2:20 am    Post subject: Reply with quote

Grand High Poobah

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

szab wrote:
Any advice how and where to start ?


With your budget holder. WMB is a complex product and proper training is essential. This forum is a good technical resource, but a bad training medium.

It's still unclear if your A.msxd defines the input message, but assuming it does (which seems to be what you're implying) then it's a straightforward mapping exercise. You don't indicate any transformation & the most complex part of your structure is the repeating <Account> tag.

My advice: read the ESQL manual, look at the provided samples, set up a Compute node and observe the results with the debugger and/or some trace. In the absense of formal training (which I still strongly recommend) experiementation is your best tutor.


_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
kimbert
PostPosted: Fri May 02, 2008 4:13 am    Post subject: Reply with quote

Jedi Council

Joined: 29 Jul 2003
Posts: 5542
Location: Southampton

Quote:
Is this ESQL code correct?
SET OutputRoot.MRM.B_Customer = InputRoot.XMLNS.Customer;
You should use XMLNSC in new message flows, not XMLNS. Especially if the message flow is also using the MRM domain.

I hope B_Customer is not the root element of the output message. The MRM domain is different from the others, in that the root element is represented by the 'MRM' node itself.
Back to top
View user's profile Send private message
szab
PostPosted: Fri May 02, 2008 5:00 am    Post subject: Reply with quote

Novice

Joined: 01 May 2008
Posts: 14

Sadly, B_Customer is the rootElement...
Back to top
View user's profile Send private message
kimbert
PostPosted: Fri May 02, 2008 5:27 am    Post subject: Reply with quote

Jedi Council

Joined: 29 Jul 2003
Posts: 5542
Location: Southampton

Don't be too sad. This should be correct:
Code:
SET OutputRoot.MRM = InputRoot.XMLNSC.Customer;
Back to top
View user's profile Send private message
szab
PostPosted: Fri May 02, 2008 5:38 am    Post subject: Reply with quote

Novice

Joined: 01 May 2008
Posts: 14

thx a lot, I thought the same
Back to top
View user's profile Send private message
szab
PostPosted: Sat May 03, 2008 6:05 am    Post subject: Reply with quote

Novice

Joined: 01 May 2008
Posts: 14

another question but the same XML message mapping,formatting that i posted before:
The incoming XML consists of 3 Account elements but the output MRM message has only 1 Account element with a restriction. If the AccountType element has 'hehe' value from the 3 Account elements in the incoming XML, then only the B_AccT element should be set in the output MRM message.
How can I achieve this criteria in ESQL?
I tried to code something similar but it didn't work ...
anyone help?

Code:
DECLARE accRef REFERENCE TO InputRoot.XMLNSC.Customer.Accounts;
      
      DECLARE I INTEGER 1 ;      
      SET I = 1;
      WHILE (I <= CARDINALITY(accRef.*[])) DO
         IF(accRef.Account[I].AccountType = hehe) THEN
         SET OutputRoot.MRM.B_Accs.B_Acc.B_AccT = accRef.Account[I].AccountType;
      
         SET I = I + 1;
         END IF;END WHILE;
[/code]
Back to top
View user's profile Send private message
n1ghtrain
PostPosted: Sat May 03, 2008 10:59 am    Post subject: Reply with quote

Apprentice

Joined: 23 Mar 2006
Posts: 48
Location: Bangalore

maybe you should try 'hehe' instead of hehe
and OutputRoot.MRM.B_Accs.B_Acc[I].B_AccT
Back to top
View user's profile Send private message Yahoo Messenger
kimbert
PostPosted: Sun May 04, 2008 11:53 am    Post subject: Reply with quote

Jedi Council

Joined: 29 Jul 2003
Posts: 5542
Location: Southampton

Quote:
maybe you should try 'hehe' instead of hehe
and OutputRoot.MRM.B_Accs.B_Acc[I].B_AccT
I don't think that's the requirement.
Quote:
only the B_AccT element should be set in the output MRM message
So there's only on B_AccT element, and it does not need a subscript.

szab: If my comment above is correct then you can exit the loop after finding a match.
Back to top
View user's profile Send private message
szab
PostPosted: Thu May 08, 2008 4:33 am    Post subject: Reply with quote

Novice

Joined: 01 May 2008
Posts: 14

Hi again!
Could anyone tell me why not creates this code the output MRM tree?
I've checked every possible failure(project references, messageDefinition, MessageType,Set,Format in ESQL, and so on) but I've only got the red line as output MRM tree. Did I use the references correctly? or why is this happening?

Code:
   DECLARE CustomRef REFERENCE TO InputRoot.MRM;
      
   WHILE LASTMOVE(CustomRef) DO
      DECLARE genCustomRef REFERENCE TO CustomRef.GenericCustomer;
      DECLARE outref REFERENCE TO OutputRoot.MRM;
   
      WHILE LASTMOVE(genCustomRef) DO
         [color=red]SET outref.B2_GenCustom.antx_id = InputRoot.MRM.Customer.CustomerId ;[/color]
         SET outref.B2_GenCustom.Antx_name = genCustomRef.FullName;
         SET outref.B2_GenCustom.Antx_persid = genCustomRef.PersonalID;
         SET outref.B2_GenCustom.Antxcounterpart = genCustomRef.BasicNumber ;
         SET outref.B2_GenCustom.Isresident = genCustomRef.DeviseNative ;
         SET outref.B2_GenCustom.Antx_classes_id = genCustomRef.Type ;
         MOVE genCustomRef NEXTSIBLING;
      END WHILE;
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » xml to MRM convert using element mapping
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.