Introduction to External Objects and the OData Connector

12,750 views

Published on

With the new External Data Sources and External Objects feature, data repositories like SAP can be accessed in Salesforce by reference without the need for data replication. One of the standard connectors provided with External Data Sources is based on the Open Data protocol (OData) that provides for a standardized way of creating and consuming data APIs. Join us for an introduction to External Data Sources, External Objects, and the OData Connector. We'll cover both sides of data connectivity, including an overview of basic characteristics of External Objects, their setup and usage, as well as a survey of the OData ecosystem. You'll learn best practices for implementing OData-backed External Objects for integration solutions.

Published in: Technology

Introduction to External Objects and the OData Connector

  1. 1. Using External Objects for Integration Expose OData or proprietary data in your Salesforce org Alexey Syomichev, Salesforce.com, Software Architect @syomichev
  2. 2. Alexey Syomichev Architect @syomichev
  3. 3. Lawrence McAlpin PMTS @lmcalpin
  4. 4. Safe Harbor Safe harbor statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of any litigation, risks associated with completed and any possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for the most recent fiscal quarter. These documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site. Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.
  5. 5. An Alternative to ETL ▪ Extract-Transform-Load is very popular for data synchronization ▪ Synchronized dataset goes stale immediately External Data Source allows data interaction without physical movement
  6. 6. Session Outline ▪ Introduction to External Data Source and External Objects ▪ SAP Orders over OData demo ▪ OData ecosystem ▪ Advanced External Objects ▪ Apex Connector Framework ▪ Open discussion
  7. 7. What is an External Object? A tool to make data outside of Salesforce visible within our Platform. ▪ Data must be in a format we understand ▪ OData ▪ Apex connector framework ▪ Data must be accessible on the public Internet ▪ Basic ▪ OAuth
  8. 8. What can I do with an External Object? Standard and Custom Objects External Objects Write X Read X X REST and SOAP API X X (read only) Custom Tabs and Details X X (read only) SOQL X X (read only, no aggregation, no tracking) Search and SOSL X X Reports and Analytics X
  9. 9. External Data Sources
  10. 10. External Objects __x extension External ID External Data Source Fields have External Alias
  11. 11. Demo: OData connector Let’s consider an organization that ▪ maintains Account info in Salesforce, ▪ but uses SAP for sales order tracking.
  12. 12. SOQL ☺ Support basic queries (SELECT, WHERE, LIMIT, OFFSET) Support date literals Accuracy limited by your external data source
  13. 13. SOQL ☹ No aggregation (GROUP BY, HAVING, COUNT()) No object tracking (FOR VIEW, FOR REFERENCE)
  14. 14. SOSL ▪ Support basic queries (FIND, IN, RETURNING, WHERE, LIMIT, OFFSET) ▪ Accuracy limited by your external data source
  15. 15. OData Specification ▪ From http://www.odata.org/ : OData is a standardized protocol for creating and consuming data APIs. OData builds on core protocols like HTTP and commonly accepted methodologies like REST. The result is a uniform way to expose full-featured data APIs. ▪ Standardization effort is led by OASIS OData Technical Committee ▪ URIs for resource identification ▪ HTTP-based interaction ▪ Atom or JSON representation ▪ Industry adoption: Microsoft, SAP
  16. 16. OData Ecosystem: Libraries Producer libraries at http://www.odata.org/libraries/ • Java: • • • odata4j Apache Olingo .NET: • WCF Data Services • Visual Studio LightSwitch • PHP: odataphpprod • Ruby: https://github.com/lmcalpin/odata_server • Node.js: • datajs • JayData
  17. 17. OData Ecosystem: Tools And Products • Microsoft Dynamics • Microsoft SQL Server • Microsoft Sharepoint • Microsoft SQL Server 2012 Reporting Services • Windows Azure Table Storage • SAP Netweaver Gateway • IBM WebSphere eXtreme Scale REST data service • Jboss Teiidhttps://docs.jboss.org/author/display/TEIID/OData+Support
  18. 18. Lookup Relationships Lookup relationships can be established between internal and external objects. Spoilers! Don’t forget the safe harbor statement. (coming in Spring‘14)
  19. 19. External Lookup Relationships Target domain must be an external object The lookup field will be correspond to External IDs in the related object
  20. 20. External Lookup
  21. 21. External Lookup
  22. 22. External Lookup No lookup popup dialog (yet)
  23. 23. (Standard) Lookup Relationships Target domain must be an internal (standard or custom) object The lookup field must hold valid 15-digit case sensitive salesforce.com object IDs
  24. 24. Indirect Lookup Relationships Target domain must be an internal (standard or custom) object The lookup will find records that match on a non-key field Must be an “Is External Id” field
  25. 25. Relationship Queries Given a Product child and external object Supplier parent: Find all products from a given supplier: SELECT Name FROM Product2 WHERE supplier__r.companyName__c = ‘Tardis Biscuits, Ltd.’ Find active products for each of our suppliers: SELECT companyName__c, (SELECT Name FROM Products__r WHERE IsActive = true) FROM Supplier__x
  26. 26. Apex Connector Framework When exposing legacy data in OData format is not practical, force.com platform offers a development toolkit to build custom external connectors in Apex. ▪ The SDK consists of Apex interfaces and helper classes that allow Force.com platform developers to build their own external connectors; ▪ These connectors become available as External Data Source types and can be used to sync external objects in exactly the same way as any other external data source; ▪ Objects brought it by Apex connector can be used in the same way as any other external object;
  27. 27. Apex Connector Framework Let’s build a Bing search connector together 1.Create class BingDataSourceConnection - Implements sync(), query(), search() 2.Create class BingDataSourceProvider - Declares capabilities, authenticates new connections 3.Create a new External Data Source - Bing is now available as a data source type!
  28. 28. Search and SOSL FIND {uncle bob} RETURNING Product__x {"attributes"=>{"type"=>"Product__x", "url"=>"/services/data/v27.0/sobjects/Product__x/7"}, "ExternalId"=>"7", "DisplayUrl"=>"http://gallifrey. internal.salesforce.com/OData/Product(7)", "id__c"=>7}
  29. 29. Limits All normal Apex limits plus some limits specific to external data: Limit Default Total queries per org per hour 2000 Concurrent queries per org 10 Concurrent queries per app server 100 Service response size 4MB Total result set size 8MB
  30. 30. Alexey Syomichev Lawrence McAlpin Architect, @syomichev PMTS, @lmcalpin
  31. 31. We want to hear from YOU! Please take a moment to complete our session survey Surveys can be found in the “My Agenda” portion of the Dreamforce app

×