SalesForce: Can it display an external page / can it post to another SF implementation
I've been asked to look at two requirements for SalesForce, but I'm struggling to find simple answers! I don't need to know HOW to do any of these things, just if it is possible and if its complex/normal/easy.
1) Can SF display an "external" web page in a frame of some kind?
e.g. Display one of our Extranet pages in SF, possibly inside a frame of somekind.2) Can one "implementation" of SF talk 开发者_C百科to another one? e.g. We have a main SF implementation, but would like a separate one for a sister company, but so that they can "talk" to each other, based on triggers etc?
3) Can SF talk to external web services? e.g. We have some existing WCF WebServices...can SF call them based on triggers/user clicking a button etc?
LOTS of thanks for any answsers :)
Yes, simple. You can easily add a web-based Tab (Setup->Create->Tabs) or embed an
<iframe>
in your Visualforce pages if you need it to appear next to something else.Yes, complexity simple-medium I think (I never played with it). Please quickly read help for Setup->Customize->Salesforce to Salesforce. If for some reason this will not meet your requirements (maybe ask your support rep for details on this feature?) the you could use some web-service integration... Which leads us to #3
Yes, also simple/medium complexity. Salesforce can send "outbound messages" to webservices, can accept incoming messages... If your webservices can be described in WSDL then you could even tell Salesforce to generate an Apex class stub that matches WSDL (something like Apache Axis for Java). And even without WSDLs you should be able to send, receive and parse XML messages. Check out help for Setup->Develop->Apex Classes->generate from WSDL and Setup->Develop->API.
These webservice calls of course can happen on clicking of button, be scheduled in daily batches etc.
So, this should at the very least give you some hints and terms which you can google for :)
Everything eyescream said is accurate, but just wanted to add:
1) Yes, easy
2) My experience with salesforce to salesforce has been that I would have been better off doing it through web services. Depending on your requirements, salesforce to salesforce may work, but from experience I'd recommend the webservices route.
3) Interestingly, salesforce does not allow you to make callouts from triggers, ie interact with another system off a trigger. The workaround is you have to define your callout function as @future which tells salesforce that it needs to be done but you don't care when, then you have the trigger just call that function. There are special restrictions on @future functions, see documentation. However, there are no such restrictions on calling a similar function from a button. I recently ran into this issue where using a trigger to sync account data with google calendar required the use of @future and its special considerations while a button that said "sync w/ google" would have been easier to implement. The trigger works in the end, but the devil is in the details.
Either way, all of what you're talking about is very doable.
There are also some HTTP classes to make HTTP requests and handle the HTTP responses. For more information, see this: http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#CSHID=apex_classes_restful_http.htm|StartTopic=Content%2Fapex_classes_restful_http.htm|SkinName=webhelp
精彩评论