cancel
Showing results for 
Search instead for 
Did you mean: 

Issue with SOAP scenario.

manoj_khavatkopp
Active Contributor
0 Kudos

Hi Experts,

I have a proxy to soap scenario.

My proxy structure look like :

Records

          Name1    

          Address

And my SOAP WSDL file has two Message :

Update Name

               Name1

               Address

Update Address

               Address

With two different Soap Action in WSDL file like http://updateName and http://updateaddress

Now my requirement is if in proxy structure if data is their in Name1 filed then it should call Update Name message and if no data i.e Name1 is null then it should call Update Address message.

for this i have created   2  different inbound interface one for Update Name and one more for Update Address

2 differnt message mapping proxy ->update name and proxy->update Address

2 Oper mapping proxy_outbound ->  Message mapping->update Name_inbound and proxy_outbound->MM->update address_inbound

IN ID:

2 comm channel with 2 differnt action

1 interface determination, i have mentioned both OM without any condition.

2 receiver agreement with respective comm channel and inbound interface.

Now when i trigger data it sends for both message which should not happen ? what changes i should make  ?

kindly please explain me step by step

Regards,

Manoj

Accepted Solutions (1)

Accepted Solutions (1)

Harish
Active Contributor
0 Kudos

Hi Manoj,

2 differnt message mapping proxy ->update name and proxy->update Address

2 Oper mapping proxy_outbound ->  Message mapping->update Name_inbound and proxy_outbound->MM->update address_inbound

You can create one message mapping from one proxy message to two target message (multimapping) and one operation mapping with two inbound interface. and in the mapping check the condition. If name is empty then do not trigger name inbound message.

This change should work for the interface.

regards,

Harish

former_member184720
Active Contributor
0 Kudos

Just fyi.. With this approach soap action has to be set dynamically in the message mapping.

Harish
Active Contributor
0 Kudos

Thanks Hareesh.. but if two receiver interface in operation mapping then we need to create two receiver agreement/ICO and two receiver communication channel. So we can define the different soap action in receiver communication channel.

former_member184720
Active Contributor
0 Kudos

Yes.. you are right..

If you same channel then it has to be dynamic.. sorry for the confusion.

manoj_khavatkopp
Active Contributor
0 Kudos

HI Harish,

If i create one OM with 2 i/b interface , and 2 comm channel(with 2 diff action) with respective 2 receiver agreement now my question is during runtime if Name1 value exist does the respective Update Name message ll be called or both message ll b calld ?

nabendu_sen
Active Contributor
0 Kudos

Hi Manoj,

You need to understand Enhanced Interface Determination which I mentioned you could achieve through XPath. It will decide at runtime to call which Operation Mapping and trigger which Receiver Agreement as well Communication Channel (different SOAP Actions at different channels).

You dont need to worry about Receiver Determination as both the cases the Receiver would be same.

Regards,

Nabendu.

Answers (3)

Answers (3)

manoj_khavatkopp
Active Contributor
0 Kudos

I used 2 MM , 2 OM and 2 Comm channel with respective receiver agremnet and in interface determination  i have mentioned condition as :

Now when i send data which has customerID it is successfully going for Tender OM and data is successfully sent to web service .

But when i send an empty value i can see in Comm channel payload it has successfully used OM of Non tender but it gives me a error as :

I tried adding module as following :

But still the same error what could be the issue ?

nabendu_sen
Active Contributor
0 Kudos

This should an issue with the XML which you are sending to Web Service.

Test the same XML which you are sending with SOAP UI.

How to test Web services with soapUI - TechRepublic

Regards,

Nabendu.

former_member184720
Active Contributor
0 Kudos

>>>>But when i send an empty value i can see in Comm channel payload it has successfully used OM of Non tender but it gives me a error as


Error message describes something else. It's says it's unable to find the integrated configuration itself.


But how did you know that it is executing the OM of Non- tender?


However i would suggest you to check the condition in a different way i.e. based on length.


/LSP/Records/Header/Child[string-length(CustomerID)>0] exists


suman_saha
Contributor
0 Kudos

Hi Manoj,

You can do this easily using multimapping.(If you can use same channel)

Add both the message types in signation of message mapping.

For Update Name:

For Update Address remove the Not.


If you have different channels with different address and actions,you may put the same logic in 2 different Operation Mapping and assign them respective Interface determination.

Regards,

Suman

suman_saha
Contributor
0 Kudos

One more thing to be added:

It Name1 field comes with blank value then the above logic will work. But if the node itself is absent,then use Name1 -> exists ->createif -> UpdateName.

nabendu_sen
Active Contributor
0 Kudos

Hi Manoj,

You have to use Interface Determination routing logic to identify correct Mapping at Runtime. Otherwise it will trigger both the Mapping which is not desired in your case.

If your 'Name1' exists but with out value, try like below:

/p1:Records/Name1[string-length()>0]  EX




Ref:

If 'Name1' does not exist, try XPath like below:

To Exist Or Not to Exist is the Question - Process Integration - SCN Wiki

You don't need to make any changes in your Receiver Determination unlike the above blogs, use "EX" operator and the XPath expression in your Interface Determination (not in Receiver Determination)

Regards,

Nabendu.