View
827
Download
4
Category
Tags:
Preview:
Citation preview
welcome
Interactive Questions? Current projects? Feedback?
http://developer.force.com/join
Check Your Developer Edition Environment
http://developer.force.com/join
Online Workbook
h"p://bit.ly/workbook_2013
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 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, 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, risks associated with 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 quarter ended July 31, 2011. This document and others 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 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.
Steve Sasson Engineered the first digital camera prototype
Eastman Kodak Filed for bankruptcy in 2012
Steve Sasson Worked for Eastman Kodak in 1975
We are witnessing the Post PC Revolution
456 Million Tablets at Work
782 Million Smartphones at Work
2009 2010 2011 2012 2013(E) 2014(E) 2015(E) 2016(E)
“By 2015, one of every seven dollars spent on packaged software, server, and storage offerings will
be through the public cloud model.”
http://www.idc.com/prodserv/idc_cloud.jsp
Salesforce Platform Cloud based, multi-tenant, enterprise class PaaS
1,000,000 Salesforce Platform Developers
9 Billion API calls last month
2.5x Increased demand for Force.com developers
YOU are the makers
Use Case: Mobile Development
Cloud-Based Data Authentication Services REST API Native + HTML5 Support Reports + Analytics Secure Offline Storage
The Salesforce Platform
Infrastructure Services
Network Storage
Operating System Database
App Server Web Server Data Center
Disaster Recovery
Operations Services
Authentication Availability Monitoring
Patch Management Upgrades Backup NOC
Troubleshooting
Your Innovative
App Application Services
Security/Sharing Integration
Customization Web Services
Multi-Language Workflow
Built-in Services Touch
Services
Native iOS SDK Native Android SDK
HTML5 Xcode wizards
PIN code support Custom APEX REST Geo-location Mobile
APIs
Social Services
Feeds Profiles
Status updates Groups
File sharing Approvals Messenger Presence
Platform Services
Globalization APIs
Security Analytics Search Identity
Mobile Social Identity Data Marketplace
The Salesforce Platform
Now it’s your turn Building a cloud based application
DATA MODELING
Data Modeling
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 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, 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, risks associated with 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 quarter ended July 31, 2011. This document and others 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 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.
Spreadsheet Versus Application Relational Data Validated data Process driven workflows Approval System Field Auditing Users, Profiles and Permissions Enterprise Collaboration
OR
With the same amount of programming…
Let’s Build an App
Let’s Build an App
Validation Rules Formulas which block data entry if evaluated as true
WHEN THEN IF
Record is being
inserted or updated
Formula evaluates to
true
Return error message
Warehouse Application Requirements
• Track price and inventory on hand for all merchandise
• Create invoices containing one or more merchandise items as a line items
• Present total invoice amount and current shipping status
Warehouse Application Requirements
• Track price and inventory on hand for all merchandise
• Create invoices containing one or more merchandise items as a line items
• Present total invoice amount and current shipping status
Warehouse Application Requirements
• Track price and inventory on hand for all merchandise
• Create invoices containing one or more merchandise items as a line items
• Present total invoice amount and current shipping status
Warehouse Data Model
Merchandise
Name Price Inventory
Pinot $20 15
Cabernet $30 10
Malbec $20 20
Zinfandel $10 50
Invoice
Number Status Count Total
INV-01 Shipped 16 $370
INV-02 New 20 $200
Invoice Line Items
Invoice Line Merchandise Units Sold
Unit Price Value
INV-01 1 Pinot 1 15 $20
INV-01 2 Cabernet 5 10 $150
INV-01 3 Malbec 10 20 $200
INV-02 1 Pinot 20 50 $200
Chatter Social framework for the enterprise
TUTORIAL 100 Create an App and Database
Optional: TUTORIAL 110
http://bit.ly/workbook_2013
Tutorial 100 Optional: Tutorial 110
DECLARATIVE LOGIC
DECLARATIVE LOGIC
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 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, 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, risks associated with 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 quarter ended July 31, 2011. This document and others 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 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.
Declarative Apps Creating business applications with clicks not code
Spreadsheet Versus Application
Formula Fields Operations for performing common logic
Excel style formulas Support for commons functions
Math Text Date & Time Logical
Can chain functions together: AND ( OR (
ISPICKVAL(StageName, "Closed Won"), ISPICKVAL(StageName, "Negotiation/Review")), ISBLANK(Delivery_Date__c) )
Roll-Up Fields Field type calculating on rows of child data
Child of Master-Detail
Count or Aggregate
Workflows Event based business logic
When this happens
Meets this Criteria?
Perform These Actions
Task Outbound Message
Update Field Email
Approvals System to route approvals through an organization
Track Approval History
Define Criteria
Define Actions
Single/Multi/Skip step processes
Route based on roles, or queues
Approval via emails or Chatter
Security Identity, data security and user services
User Profiles
Groups, Queues and Hierarchies
Permission Sets
SSO, SAML, OAuth 2.0
Connected Apps
TUTORIAL 120 App Logic with Clicks not Code
Optional: TUTORIAL 150
http://bit.ly/workbook_2013
TUTORIAL 120 OPTIONAL: TUTORIAL 150
LUNCH: Downstairs
APEX
APEX
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 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, 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, risks associated with 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 quarter ended July 31, 2011. This document and others 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 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.
Apex Cloud based programming language
public with sharing class myControllerExtension implements Util { private final Account acct; public Contact newContact {get; set;} public myControllerExtension(ApexPages.StandardController stdController) { this.acct = (Account)stdController.getRecord(); } public PageReference associateNewContact(Id cid) { newContact = [SELECT Id, Account from Contact WHERE Id =: cid LIMIT 1]; newContact.Account = acct; update newContact; } }
Class and Interface based Scoped Variables Inline SOQL Inline DML
þ þ
þ þ
Apex Anatomy
DEVELOPER CONSOLE DEMO
DEVELOPER CONSOLE
Controllers Inbound/Outbound Email Services
Custom API and HTTP Callouts
Triggers Scheduled and Batched Tasks
Common Use Cases
trigger MerchandiseTrigger on Merchandise__c (before insert, before update) { Merchandise__c[] merch = Trigger.new; if(Trigger.isInsert) { MerchandiseUtil.checkMerchandise(merch); }
}
Object Definition Event Definition Trigger.old and new Bulkify code
þ þ
þ þ
Trigger Anatomy
Chatter Triggers
if(feed_text == ‘promote’) { rec.status__c = ‘Approved’; addToEmailPromotion(rec); FeedItem post = new FeedItem(); post.ParentId = rec.Id; post.Body = ‘Record added to promotion’; feedsToInsert.addITem(post); }
CHATTER TRIGGER DEMO
APEX TRIGGERS
@isTest static public void testRequiredFields() { Merchandise__c m = new Merchandise__c(Name = 'Test'); //assertion: Merchandise requires Price and Quantity try { insert m; } catch (DMLException e) { System.assert(e.getMessage().length() > 0); } m.Quantity__c = 0; m.Price__c = 9.99; //assertion: Merchandise requires Price and Quantity try { insert m; System.assert(String.valueOf(m.Id).length() > 0); } catch (DMLException e) { System.debug(e.getMessage()); }
Unit Testing
public WarehouseCSVController() { Boolean beRandom =
ApexPages.currentPage().getParameters().get('random') != null; if(beRandom) { allMerchandise = new List<Merchandise__c>(); for(Integer x = 0; x < 1500; x++) { Merchandise__c m = new
Merchandise__c(Name='Widget '+String.valueOf(x), Quantity__c=100, Price__c=49.99);
allMerchandise.add(m); } } else { allMerchandise =
WarehouseDataQuery.getAllMerchandise(); }
}
Unit Testing
TUTORIAL 300 Code Custom App Logic
http://bit.ly/workbook_2013
TUTORIAL 300
VISUALFORCE
VISUALFORCE
Model View Controller Application design paradigm to divide data, logic and UI
Visualforce Cloud based component framework for interfaces
Standard Controllers Custom Controllers Custom Extensions Data bound components Controller Callbacks
þ
þ
þ
Visualforce Anatomy
<apex:page StandardController="Contact" extensions="duplicateUtility" action="{!checkPhone}"> <apex:form> <apex:outputField var="{!Contact.FirstName}” /> <apex:outputField var="{!Contact.LastName}" /> <apex:inputField var="{!Contact.Phone}" /> <apex:commandButton value="Update" action="{!quicksave}" /> </apex:form> </apex:page>
STANDARD CONTROLLER DEMO
STANDARD CONTROLLER
@RemoteAction public static String updateMerchandiseItem(String productId, Integer newInventory) { List<Merchandise__c> m = [SELECT Id, Total_Inventory__c from Merchandise__c
WHERE Id =: productId LIMIT 1]; if(m.size() > 0) { m[0].Total_Inventory__c = newInventory; try { update m[0]; return 'Item Updated'; } catch (Exception e) { return e.getMessage(); } } else { return 'No item found with that ID'; } } }
JavaScript Remoting Access Apex from JavaScript Asynchronous Responses
þ þ
j$(".updateBtn").click(function() { var id = j$(this).attr('data-id'); var inventory = parseInt(j$("#inventory"+id).val()); j$.mobile.showPageLoadingMsg(); MobileInventoryExtension.updateMerchandiseItem(id,inventory,handleUpdate); });
Apex
Visualforce
<apex:component controller="WarehouseAccountsController"> <apex:attribute name="lat" type="Decimal" description="Latitude for geolocation query" assignTo="{!lat}” /><apex:attribute name="long" type="Decimal" description="Longitude for geolocation query" assignTo="{!lng}” /> <c:GeoComponent lat=”8.9991" long=”10.00119" />
Custom Components
<apex:page > <apex:insert name="detail" /> <div style="position:relative; clear:all;"> <apex:insert name="footer" /> </div> </apex:page> <apex:page StandardController="Invoice__c" > <apex:composition template="WarehouseTemplate"> <apex:define name="detail"> <apex:detail subject="{!Invoice__c.Id}" /> </apex:define>
Page Templates
chatter:follow
chatter:newsfeed
chatter:feed
chatter:followers
chatter:feedAndFollowers
Chatter Components
Email Templates Generate PDFs Embed in Page Layouts
Mobile Interfaces Page Overrides
Common Use Cases
TUTORIAL 330 Create a Visualforce Mobile App
http://bit.ly/workbook_2013
TUTORIAL 330
MOBILE VF DEMO
MOBILE VF
INTEGRATION
INTEGRATION
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 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, 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, risks associated with 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 quarter ended July 31, 2011. This document and others 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 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.
OAuth Industry standard method of user authentication
Remote Application
Salesforce Platform
Sends App Credentials
User logs in, Token sent to callback
Confirms token
Send access token
Maintain session with refresh token
OAuth2 Flow
WORKBENCH LOGIN DEMO
WORKBENCH
REST API API leveraging industry standard HTTP
Mobile Application
Salesforce Platform
login.salesforce.com
REST API
1. Authenticate
/services/data/query? SELECT ID FROM ACCOUNT
2. Access API
{“sObject”: “Account”, “id” : “oax02fdr756aFdad”}
3. Get JSON or XML
WORKBENCH REST DEMO
WORKBENCH
SOAP API XML messaging and WSDL based API
Java Web Server
Salesforce Platform
login.salesforce.com
SOAP API
1. Authenticate
<QUERY><SOQL> SELECT Id from Account </SOQL></QUERY>
2. Access API
<RECORDS> <RECORD type=“Account”>
<id>oax02fdr756aFdad</id> </RECORD>
</RECORDS>
3. Get XML
Bulk API Asynchronous API for handling large datasets
ETL Tool
Salesforce Platform
BULK API
2. Push Updates
TITLE: AppCo STREET: 1 Market Street
REF:0001
1. Pull Recent Records Legacy
Database
NAME: AppCo MailingStreet: 1 Market Street
ExternalID:0001
Streaming API Bayeux implementation for real-time delivery of data
Java Web Server
Salesforce Platform
STREAMING API
1. Handshake
2. Subscribe to Topic
3. Get Updates
WORKBENCH PUSHTOPICS DEMO
WORKBENCH PUSH TOPICS
TUTORIAL 370 INTEGRATE SYSTEMS
http://bit.ly/workbook_2013
TUTORIAL 370
Fundamentals for the Enterprise
Mobile Social Identity Data Marketplace
Mobile SDK iOS and Android SDK for developing with Force.com
Mobile SDK: Accelerate App Development
API Wrappers Interact with Salesforce REST APIs with popular mobile platform languages
Secure Offline Storage Store business data on a device with enterprise-class encryption
Push Notifications Dispatch real-time alerts directly to mobile devices
Tools for building native, hybrid, and HTML5 apps on iOS and Android
OAuth2 Secure authentication and refresh token management
App Container Embed HTML5 apps inside a container to access powerful native device functionality
http://developer.force.com/mobilesdk
Canvas Framework for using third party apps within Salesforce
Any Language, Any Platform
• Only has to be accessible from the user’s browser • Authentication via OAuth or Signed Response • JavaScript based SDK can be associated with any language • Within Canvas, the App can make API calls as the current user • apex:CanvasApp allows embedding via Visualforce
Canvas Anatomy
Polyglot Framework PaaS allowing for the deployment of multiple languages
$ git push heroku master Counting objects: 67, done. Delta compression using up to 4 threads. Compressing objects: 100% (53/53), done. Writing objects: 100% (67/67), 26.33 KiB, done. Total 67 (delta 5), reused 0 (delta 0)
Github Repo Heroku
Local Repo
Pull / Push Development Changes
Push Deployments Monitor Application
HEROKU DEMO
HEROKU
AppExchange Application Market for the Salesforce Platform
1,700+ Apps
20k+ Reviews
1.4m+ Installs
http://appexchange.com
Double-click to enter title Double-click to enter text The Wrap Up
check inbox
h"p://bit.ly/sea"ledevworkshp328
Double-click to enter title Double-click to enter text
@forcedotcom
#forcedotcom #askforce
Double-click to enter title Double-click to enter text
Join A Developer User Group
http://bit.ly/fdc-dugs
Double-click to enter title Double-click to enter text
Become A Developer User Group Leader
Email:
April Nassi <anassi@salesforce.com>
Double-click to enter title Double-click to enter text http://developer.force.com
simplicity is the ultimate form of sophistication
Da Vinci
THANK YOU
THANK YOU
Recommended