cancel
Showing results for 
Search instead for 
Did you mean: 

PI-AEX multi-mapping for 1 to 1 scenario only during PI runtime

Former Member
0 Kudos

Dear guys

at the moment I am working on several interfaces where ONE source message have to be mapped to SEVERAL  SINGLE target message, which differ in some sub-parts but also have common (equal) parts.

I am thinking of ways to reuse this mapping logic of this parts without replicating the mapping logic in each message mapping which leads to increased effort during modification of this common parts e.g. bug fixing.

sample

source message type: source_common   is mapped to target message target_A as well as to target_B

target_A and target_B do have some equal parts which should be mapped equally.

I know the option to add all target message to one single message mapping using occurrency 0..1 but I prefer to use separate message mappings for each target message.

At the moment I think of a hybrd approach using mulit mapping

  1. MAPPING 1 common message mapping which has one source message, but two target messages:
    • target1: occurency 1..1 target_A (only common parts filled)
    • target2: occurency 1..1 source_common (buffer the origin incoming message for second message step)
  2. MAPPING 2 specific message mapping which has two input but only one target message
    • soruce1: occurency 1..1 target_A (only common parts filled)
    • soruce2: occurency 1..1 source common (buffer the origin incoming message for second message step)

          these two source messages are mapped to the final target message target_A

Testing these approache by manually test the two message mappings works fine the message envelope <ns0:Messages> ... is created. But I am not able to setup an operation mapping for this mutli mapping scenario.

Whiling spefifying one source (input MAPPING 1) and one target message (output MAPPING 2) I am facing following error message

Mapping program Message Mapping XXX does not match the operation mapping: Number or occurrence of message mapping source or target messages does not match number or occurrence of source or target interfaces.


Obviously the signature of the operation mapping is not fine. I tried to add the additional service interfaces/operations (target as well as source) but was not able to run the scenario successfully.

When I remove one mapping step and adjust the service interfaces/operations the test of the operation mapping is fine, but so far I could not find a service interfaces/operations setup to include both mapping steps and test the operation mapping.


For sure there is the possibility to define my own compositeMessage which includes both messages. Unfortunately the source message is defined as message type while the target message is an external definition (XSD) for my understanding this approach will not work out of the box and I have either include the source message as XSD as well or other way around.


Does anyone already face this issue or are there any further approaches to be able to use multi mapping in 1 to 1 scenario with buffering several messages.


Any help appreciated.


best regards

Jochen

Message was edited by: Jochen Gugel

Accepted Solutions (0)

Answers (1)

Answers (1)

Harish
Active Contributor
0 Kudos

Hi Jochen,

The best approach is to export source message type XSD and include in the target XSD and import as external definition.

The other option to return the common message part as XML (use the option return as XML in the message mapping). but then this part will be come to single node as XML. The problem will arrive when you need to map this part to target in next mapping. that you need figure out.

reference for return as xml -

regards,

Harish

Former Member
0 Kudos

Hi Harish

thanks for your input.

as the message type is extended and the external definition is build up by several sub XSD files this is not an easy task.

Furthermore the XSD are normally placed in other SWCV and for my understanding referencing only works if XSD are in the same SWCV and namespace. So I have to replicate the XSD definitions.

Please correct me if I am wrong.

output als XML for sure is an option  but it would be tricky to use it in the second mapping step and will lead to huge mapping effort.

for me the best solution would be to get the multi mapping error within operation mapping solved.

But I suggest that is not designed for this approach.

Do you have idea regarding the multi mapping approach?

best regards

Jochen