cancel
Showing results for 
Search instead for 
Did you mean: 

GetMessageID in splitted messages

Former Member
0 Kudos

Hi experts,

my need is to fill a mapping field with message ID.

I've used this UDF:

String Constant;

java.util.Map map;

// get runtime constant map

map = container.getTransformationParameters();

// get value of header field by using variable key

Constant = (String) map.get(StreamTransformationConstants.MESSAGE_ID);

return Constant;

The problem is:

my interface is 1 to unbounded, I need to retrieve message ID of every message after the split, using above UDF I think I've retrieved the message ID of message before the split, is correct?

Thanks

Fabio

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

Yes, u will get the message id before split.

If u want message id's after split then, Use DynamicConfigurationBean at the receiver communication channel and catch the messageid.

Regards,

Sunitha

Former Member
0 Kudos

Hi sunithaganugu,

may i know where to find the list of namespace of the attribute i would like to use. e.g. refToMessageId, how i know what is it nanespace?

Regards,

Philip

Answers (4)

Answers (4)

Former Member
0 Kudos

you may also use one BPM pattern to split the messages in loop

http://help.sap.com/saphelp_nw2004s/helpdata/en/11/13283fd0ca8443e10000000a114084/frameset.htm

Former Member
0 Kudos

for every split, assume a transformation step withing your BPM. This transformation step would contain a map, which should have small java code for dynamic configuration. So whenever there is a split this small peice of code will return you the message id. refer - http://wiki.sdn.sap.com/wiki/display/Snippets/UDFtoReadMessageIDofaPIMessage

former_member854360
Active Contributor
0 Kudos

Hi,

Check this thread

former_member854360
Active Contributor
0 Kudos

Hi,

A mapping-based message split will ultimately produce n individual messages, but not until it reaches the Adapter Engine (AE). Inside the Integration Engine (IE), the messages are grouped together and persisted as one bulk message. The bulk message is sent to the AE where it splits the bulk message into individual messages and persists them.

are you using any 1:N multimapping without BPM? then this splitting happens in adapter level.

you can use Bpm transform step to do multimapping

Set target container as multiline

Then use for each block to send the splitted message one by one.

And in Mapping you will get the MSGID for individual message.

Otherwise you need to catch it in Adapter level.

Please see

Defining Variables for Attributes in the Message Header
       5.      If the variable refers to an attribute of the message header, add the prefix message: to the name of the variable under Reference.

You can specify the following attributes of the message header:

u25CB     sender_party, sender_service, receiver_party, receiver_service, interface_name, interface_namespace

u25CB     message_id (message ID with hyphens, for example 9fbe1ff1-9a0d-11d9-8665-cbf10a126331)

u25CB     message_id_hex (message ID in hexadecimal format, for example 9fbe1ff19a0d11d98665cbf10a126331)

u25CB     If one of the message attributes contains characters that are not permitted in a file name, for example \, /, :, *, ?, ", <, >, |, these characters are replaced by an underscore ("_").



For example, if you want to specify the interface name from the message header in the target directory or in the file name scheme, enter message:interface_name as the reference.

http://help.sap.com/saphelp_nwpi711/helpdata/en/44/6a316af5a23672e10000000a114a6b/frameset.htm

naveen_chichili
Active Contributor
0 Kudos

Hi Fabio,

check blog:http://wiki.sdn.sap.com/wiki/display/Snippets/UDFtoReadMessageIDofaPIMessage

Regards,

Naveen