cancel
Showing results for 
Search instead for 
Did you mean: 

JMS sender (mq) - MTB - XI payload issue

Former Member
0 Kudos

JMS -> PI -> SAP (no BPM at this moment)

MQ has data like this:

(1)

JMS ID : c1....afa

Data length: 40

Message data: 11abc

(2)

JMS ID : c1....afa

Data length: 60

Message data: 22xyz...

(3)

JMS ID : c1....afa

Data length: 10

Message data: 33fghad

I want above to read into PI as:

<?xml version="1.0" encoding="utf-8"?>

<ns:MT_data xmlns:ns="http://namespace">

<Recordset>

<Header>

<key>11</key>

<f1>abc</f1>

</Header>

<Line>

<key>22</key>

<f1>xyz</f1>

</Line>

<End>

<key>33</key>

<f1>fghad</f1>

</End>

</Recordset>

</ns:MT_data>

Followed help page http://help.sap.com/saphelp_nw04/Helpdata/EN/24/4cad3baabd4737bab64d0201bc0c6c/content.htm, with xml.conversionType as StructPlain2XML to configure sender JMS channel.

It is converting to XML messages (total 3) with first payload = Header, second payload=Line and 3rd payload=End.

I tried "Correlation Settings" under "Processing Tab" of sender JMS channel to bundle Q having same JMS id (JMS ID : c1....afa) , but no help. It is NOT compiling multiple Q message data to one XI payload.

Question:

Do I need to use BPM to collect JMS data with same JMS ID so that I get header, line and End structures?

Or

Any setting need to be done in JMS sender channel - to bundle multiple JMS message to one XI payload?

Thanks

Edited by: ravi shankar on Oct 2, 2009 4:32 PM

Accepted Solutions (0)

Answers (3)

Answers (3)

Former Member
0 Kudos

.

Former Member
0 Kudos

FYI- used java program to group message from existing Q and placed the grouped message into new Q.

To benefit other users, here is the sample java code at http://www.wcsadmin.com/Code/ReadWriteMessage.java

I will be using BPM to group MQ messages as suggested instead of using java program to group the message.

Very useful information. Thanks and awarded points.

Former Member
0 Kudos

Hey Ravi,

As Shabz mentioned, BPM should help you in collecting your 3 JMS messages to creating a single payload out of it.

For this, you can use the BpmPatternCollectPayload pattern available under SAP BASIS SCV.

For more details : http://help.sap.com/saphelp_nwpi71/helpdata/EN/0e/56373f7853494fe10000000a114084/frameset.htm

Thanks,

Pooja Pandey

Shabarish_Nair
Active Contributor
0 Kudos

if those are multiple message coming in from JMS, then you will have to use a bpm to collect those message and then do the required transformation to extract and map values to the target field.

Former Member
0 Kudos

Shabarish. Thanks.

Follow-up question reg BPM.

Now there are 3 XI payloads (header, line, end). There are several header, line, end payloads.

How do I relate various XI payloads and form the needed recordset1 (header, line, end), recordset2 (header,line,end)....?

MQ has JMS ID set to same for header, line, end.

In BPM, is there a way to read JMS ID attribute (via PI correlation settings) and group the recordset?

Appreciate the help.

Correlation Settings

Set XI Conversation ID (ConversationID) To:

 No value

If you choose this setting, the XI conversation ID is not set.

 JMSMessageID (Uniqueness Is JMS-Provider-Dependent)

 JMSCorrelationID (Uniqueness Is JMS-Sender-Dependent)

 JMSProperty (Uniqueness Is JMS-Sender-Dependent)

Enter the JMS Property Name. This value is set for the XI message ID.

 Stored JMSCorrelationId of request