on 06-21-2007 9:05 PM
XI environment with SP16
I have a simple integration process scenario with a container operation collecting two messages (identical).
The input to the interface mapping correctly has 0..outbounded and the map is just a java pass through. The process consists of just one receive step, two container operations, a transformation step and a async send step. The output received only contains the first
message in the collection.
Is there any obvious reason why this is happening? (I have checked and rechecked for proper types, attributes, and tested the transformation step individually.
Thanks in advance for any help.
Krish
Thanks for the response, guys.
The following are the properties of all the steps of the integration process.
1. Receive1 ReceivedMsg, Asynchronous, Start Process (Yes)
2. Transformation Step - Input ReceivedMsg, Target -> D2 (container variable)
3. Container Operation - ReceivedMsgColl, Append, ReceivedMsg
4. Container Operation - ReceivedMsgColl, Append, D2
5. Transformation Step 2 - IM_MULTIPASS, ReceivedMsgColl, DeliveryMsg
6. Send Step - Asynchronous, DeliveryMsg
IM_MULTIPASS
source msg (0..unbounded) MI_ABS_GENERIC (type of ReceivedMsg and DeliveryMsg)
target MI_ABS_GENERIC, mapping program: java program passthru
Regards,
Krish
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Krish,
Your first step is receiver, fine. The next two steps are container isn't it, can u please tell the property for these two container.
Best regards,
raj.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
HI,
What is the outcome of Interface Mapping ? How many messages you get as a result of N:1 Transformation step..
Test this in the integration repository .. Also hope you have changed the occurence of Interface Mapping as 0..n in the source side.
Hope this helps,
Rgds,
Moorthy
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I did find that when I checked the Integration Process it gave the warning:
D2 initialized in Transformation Step but not used.
D2 is used in the container operation (append to the collection).
When I test the Interface Mapping in the repository, it gave the correct result (a trivial Java passthru mapping program).
Also, when I interchange the container operations, I get ReceivedMsg or D2 (indicating that the collection is being filled properly).
The packaging of the two in the collection into a <Messages><Message1>.. envelope is not happening before the Transformation Step as is revealed by the output received.
Regards,
Krish
Raj,
There are three container variables in the above scenario: ReceivedMsg, D2 (same type as ReceivedMsg) and ReceivedMsgColl (multiline). All three have values.
D2 is basically a copy of ReceivedMsg, and the collection should containe (by virtue of two append steps) the two messages.
It is just that when I use ReceivedColl as the input to the transformation step, it only passes the first variable in the collection: Instead of getting a <Messages>..</Messages> I just get the first element of the collection.
As I had mentioned in the earlier email, if I interchange the two container operations, I get the corresponding message.
Regards,
Visva
(Further to Raj's suggestion to inspect the Grpahical Workflow Log, this is the following I got:
Arithmetic operation 'RECEIVEDMSGCOLL = &D2& Append ' executed. Result: '[XC.ZXI_PROXY_MI_ABS_GENERIC_0001.1A583BC0204311DC'
Arithmetic operation 'RECEIVEDMSGCOLL = &RECEIVEDMSG& Append ' executed. Result: '[XC.ZXI_PROXY_MI_ABS_GENERIC_0001.1A583BC0204311DC')
ReceivedMsg and D2 are the two container variables being added to the collection.
In order to test whether the collection really contains the two messages, I alternately used the parameter to the Send step as ReceivedMsgColl[1] and ReceivedMessageColl[2] respectively. It correctly sends the first and second elements of the collection.
Therefore we can conclude that the input to the transformation step (Collection containing two messages) does not come in as a multi message. Once again, I checked if the Occurrence in Interface Mapping is 0..unbounded, and unit tested it.
Regards,
Krish
Hi Henrique,
Thanks for your response.
I did have 0..unbounded in the source message settings. (I did see the <Messsages>.. wrapper in the Test tab and in fact it works ok if we use Message Mapping (in my case where multiple messages are of the same type). However, when I have multiple (different) type messages, I got a Mapping..BaseruntimeException even though it worked ok during unit test.
Now, if I have a Java mapping, it clearly does not pass multiple messages (with 0..unbounded in interface mapping for source). I only get the first in the collection.
I have a feeling that XI does not do any preprocessing in the case of Java mapping step (including the wrapping of multiple messages). If that is true, then it is a bug.
Another thing: when I have different type of messages as input - not a collection but distinct message types in the interface mapping - and if I have Java mapping, then I get an error "No Message interface defined for parameter 2" in the workflow log. But I am more concerned with why it does not wrap multiple messages and pass it to the java mapping transformation step.
Regards,
Krish
User | Count |
---|---|
87 | |
10 | |
10 | |
10 | |
7 | |
6 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.