You need to sign in to do that
Don't have an account?
Value of Partner WSDL when relying on schemas
Hi,
as opposed to writing java code, I'm using a java-based tool (Oracle BPEL) for calling the Web Services API. My use-case is simply to bi-directionally synchronize cloud-based Contact data with an in-house Contact Master.
For calls inbound to force.com, I have been advised by our force.com consulting partner to use the Partner WSDL (to insulate the middleware from configuration changes in the cloud). I have proof-of-concepted both WSDLs, and they both work fine. However, the partner API seems to me to have little value for my particular use case, as:
1) The tool I am using finds it much easier to transform messages when it has source and target XSDs/schemas. However, the Contact object's complex type is only in the Enterprise WSDL schema, and not in the Partner WSDL schema. Although I can use the Enterprise WSDL complex type to build the message and then copy the nodes to the appropriate Partner WSDL node, I don't see the value in that ... why not just use the Enterprise WSDL ?
2) Also, this is an in-house development for a single organization. I'm not trying to develop a multi-organizaiton product.
3) Finally, it seems to me that if contract-impacting configuration changes to custom fields are made in the Cloud (i.e. such as field renames or field deletes) that strong typing is an advantage - as it's better to fail than have things continue to operate in a possibly unintended fashion. So long as non-mandatory custom field additions in the cloud don't force me to rebuild my integrations, I'm happy, and I believe the Enterprise WSDL will not need to be rebuilt in this case.
For the reasons above, I prefer the advice from salesforce.com at http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_partner.htm
which encourages me to use the Enterprise WSDL for my fairly simple use case. However, as I'm new to force.com, I'm hoping for some validation from some of the experts out there.
Thanks, Conor.
All Answers
For single org use, it really comes down to the tools/environment you're using, some of them feel more natural with the enterprise WSDL, some feel more natural with the partner WSDL, go with whatever seems like a better fit for you.
Hi mpierse, Simon, thanks for the useful insights.
mpierce: "...when changes need to be made you don't have to re-download the wsdl and regenerate classes."
As my transformation tool uses a copy of the the Contact xsd/schema (only held in the Enterprise WSDL) to prepare the object before calling the Partner WSDL operation, I would have to do this anyway."
mpierce: "...the loosely typed api is easier to wrap and modify in case you need things like thread safety"
The tool I am using does it's own thread management, and will assure thread safety.
As regards wrapping for reusable marshalling, etc.., the tool can leverage the sObject type extensibility (to Contact, Account, etc...) in the Enterprise WSDL schema
Simon: "...go with whatever seems like a better fit for you"
Right now, that's Enterprise WSDL for my (single org, Oracle BPEL) use case.
Thx, Conor.