cancel
Showing results for 
Search instead for 
Did you mean: 

Multiple Output XML based on input

d_mccarthy
Explorer
0 Kudos

I want to have multiple outbound files based on the contents of the input file. For instance, in the example below, I want to have multiple outputs based on Report_ID.

So I would have Output 1 with Report_ID of 001 (With 2 lines), Output 2 with Report_ID of 002 (With 1 line), Output 3 with Report_ID of 007 (With 1 line) and Output 4 with Report_ID of 009 (With 2 lines).

- <ns:INB xmlns:ns="...">

- <EXPENSES>

- <EXPENSE_LINES>

<EMP_ID>TUUK1</EMP_ID>

<Report_ID>001</Report_ID>

<Value>7</Value>

</EXPENSE_LINES>

- <EXPENSE_LINES>

<EMP_ID>TUUK1</EMP_ID>

<Report_ID>001</Report_ID>

<Value>3</Value>

</EXPENSE_LINES>

- <EXPENSE_LINES>

<EMP_ID>TUUK1</EMP_ID>

<Report_ID>002</Report_ID>

<Value>25</Value>

</EXPENSE_LINES>

- <EXPENSE_LINES>

<EMP_ID>TUUK1</EMP_ID>

<Report_ID>007</Report_ID>

<Value>6</Value>

</EXPENSE_LINES>

- <EXPENSE_LINES>

<EMP_ID>TUUK1</EMP_ID>

<Report_ID>009</Report_ID>

<Value>63</Value>

</EXPENSE_LINES>

- <EXPENSE_LINES>

<EMP_ID>TUUK1</EMP_ID>

<Report_ID>009</Report_ID>

<Value>3</Value>

</EXPENSE_LINES>

</EXPENSES>

</ns:INB>

Accepted Solutions (1)

Accepted Solutions (1)

former_member193386
Active Contributor
0 Kudos

You just need use others outputs in your mapping, it is possible when You acess the Builder in your Integration Directory and ind the middle of the screen when You build a mapping you acces the Messages folder, in this folder you add other messages type You need to use for your input or output interface. In your case, you add one message to input param and 2 or more messages in output param, and, for this messages you need to make the correct mapping to generate the lines wich you need

Answers (5)

Answers (5)

d_mccarthy
Explorer
0 Kudos

We are currently using 7.0 (upgrading soon to 7.11).

I have everything setup already, but its the mapping I am struggling with. I can not get the header once, with lines and a new message for Report_ID.

Can you help?

Much appreciated.

Former Member
0 Kudos

follow the these steps In Enterprise Service Buider

1.Create source Data type and Target Data type.

2.Create Source Message Type and Target message Type using the above created data type respectively.

3.create a otbound and Inbound Service Interfaces.

4.Create a Message Mapping .select the source message and go to the Signature Tab select the Target Message Type and change the occurence to 0..unbounded.

5,Create the Operation Mapping.for this select the Outbound and inbound interfaces as Source and Target Operations.

click on read Operations and Select the Message Mapping you have created in previous step.

Integration Directory

u2022 create sender and receiver Communication Component.

u2022 Assign the respective interfaces in the sender and receiver Tab of the Communication Component.

u2022 create sender and receiver communication channel selecting the respective Comm.Component.

u2022 create Receiver Determination.

u2022 Create Interface Determination.here select the Interface Mapping You have created in the ESR.

u2022 create Sender and Receiver Agreement.

Finally test your scenario.Taking the source payload from test tab of Message Mapping.Remove <ns0:Message1> and </ns0:Message1> tags while testing otherwise you will get the Split Error.

d_mccarthy
Explorer
0 Kudos

All your answers are helpful, but they still dont show me what to do. Can you please give me an example or something in plain English.

I am really only a beginner.

rodrigoalejandro_pertierr
Active Contributor
0 Kudos

hi,

you must use a Multimapping.

in your case in Message Mapping>Signature Tab>Change the occurrance of you target Message. later in mapping, create a new <MT_OutputFile> for each repor_Id to do this you use SplitByValue(ValueChange). dont forget to change the context of report_id. press right buttom on report_id>context>EXPENSES.

The numbers of lines for each message could be determinate ussing the logic of the mapping before.

let me know.

RP

Former Member
0 Kudos

You have to use Multimapping here.

for that create a Message mapping and switch to the signature tab ,change the Occurence of target Message Type to 0..unbounded.

Assign the Mapping as follows


Report_ID(Change the Context to Expences)-->splitByValue(value Change)-->collapeseContext--->TO THE Target Message Type

Report_ID(Change the Context to Expences)---> splitByValue(value Change)----->collapeseContext--->SplitByValue(ValueChange)---to the Target Report_Id.

EMP_ID(Change the Context to Expences)---> splitByValue(value Change)----->collapeseContext--->SplitByValue(ValueChange)---to the Target EMP_Id.


Value(Change the Context to Expences)------------------------------------------------------\
                                                                                formatByExample-----To the TargetValue

Report_ID(Change the Context to Expences)-->splitByValue(value Change)---------------------/

this works fine if the Values are coming in the Order otherwise you also have to use Sort and SortBy Key functions.

It will be better if you provide the target structure to provide the exact mapping with the target fields

Edited by: Kubra fatima on Jun 23, 2010 3:32 PM