on 11-12-2014 5:35 PM
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
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
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 ?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
>>>>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
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.