sao paolo workshop
DESCRIPTION
TRANSCRIPT
@reidcarlberg@joshbirk
bem vindos
WIFI SSID: SSID
USERNAME: uname
PASSWORD: pword
–adjective
1.acting one upon or with the other
2. Of or pertaining to a two-way system of electronic communications, as by means of television or computer.
Interactive
@forcedotcom / #forcewebinar
Developer Force Group
facebook.com/forcedotcom
Data ModelsDeclarative Logic
ApexVisualforce
HerokuSite.com
Chatter
REST API
Formula Fields
Mobile Interfaces OAuth
Spring MVC
git
Workflows
Triggers
Validation Rules
MVC Model
Governor Limits
Cloud Deployment
Controller SOQL
Binding Data
http://developer.force.com/join
Check Your Developer Edition Environment
http://developer.force.com/join
Got your coffee? Let’s get started:
http://bit.ly/brazilweek
Name, Title@twitter
Safe HarborSafe 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.
Customers, Partners, and Employees Are Demanding a New Generation of Apps. Now.
456 Million Tablets at Work
782 Million Smartphones at Work
2009 2010 2011 20122013(E) 2014(E)
2015(E) 2016(E)
“80% of new commercial enterprise apps will be deployed on cloud platforms in 2012”
IDC Predictions 2012: Competing for 2020
Chatter
Force.comHeroku Site.com
Database.com
Salesforce Touch Platform
App
Exc
hang
e
Sal
esf
orce
Ide
ntity
Your Apps Our Apps Any Apps
The Salesforce Platform
800,000 developers
9 Billion API calls last month
2.5x increase in demand for Force.com developers
You are the makers.
App Fundamentals for the Enterprise
Mobile Social Identity Data Marketplace
Data Modelling
Declarative Applications
Create relationships, requirements and validation rules
Apex, Visualforce and API’s automatically extended
Native Geolocation
SELECT Id, Warehouse_Location__latitude__s, Warehouse_Location__longitude__s,Street_Address__c, Name FROM Vendor__c WHERE DISTANCE(Warehouse_Location__c, GEOLOCATION(37.794539,-122.394717), 'mi') <= 10;
Business Logic
Workflows & Approvals
Apex & Visualforce
Enterprise API’s
Chatter
Business Logic
Data model is API enabled
Create Custom API Services
Apex & Visualforce
Go Mobile, Go Social
Mobile SDK for Android and iOS
Chatter Mobile and Chatter REST
Salesforce Identity & OAuth
Go Mobile, Go Social
OAuth2 Authentication
Leverage Existing Force.com Skills
Secure Offline Storage
Xcode Project Wizard
Extend and Market
Heroku
AppExchange
Heroku
Simple Cloud Deployment
Easy Maintenance
Quick Scaling
Polyglot Framework
Canvas
Canvas integrates Third Party applications with Salesforce UI
Identity enables access Salesforce data
Quickly Create EmbeddedHeroku Apps
AppExchange
1,700+ Apps 20k+ Reviews 1.4m+ Installs
The Salesforce Platform
InfrastructureServices
Network
Storage
Operating System
Database
App Server
Web Server
Data Center
Disaster Recovery
OperationsServices
Authentication
Availability
Monitoring
Patch Management
Upgrades
Backup
NOC
Troubleshooting
Your Innovative
AppApplicationServices
Security/Sharing
Integration
Customization
Web Services
Multi-Language
Workflow
Built-in ServicesTouch
Services
Native iOS SDK
Native Android SDK
HTML5
Xcode wizards
PIN code support
Custom APEX REST
Geo-location Mobile
APIs
SocialServices
Feeds
Profiles
Status updates
Groups
File sharing
Approvals
Messenger
Presence
PlatformServices
Globalization
APIs
Security
Analytics
Search
Identity
Chatter
Force.comHeroku Site.com
Database.com
Salesforce Touch Platform
App
Exc
hang
e
Sal
esf
orce
Ide
ntity
Your Apps Our Apps Any Apps
The Salesforce Platform
@ReidCarlberg
DATA MODELING
Safe HarborSafe 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.
Data Modeling
Declarative Applications
Create relationships, requirements and validation rules
Apex, Visualforce and API’s automatically extended
Spreadsheet Versus ApplicationRelational DataValidated dataProcess driven workflowsApproval SystemField AuditingUsers, Profiles and PermissionsEnterprise Collaboration
OR
With the same amount of programming…
Let’s Build an App!
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
TUTORIALS 1 & 2
Name, Title@twitter
BUSINESS LOGIC COLLABORATION
Safe HarborSafe 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
Business Logic
Workflows & Approvals
Apex & Visualforce
Enterprise API’s
Chatter
Validation Rules
Workflows Approvals
Declarative Programming
Formula Fields
Formula Fields• ‘Pre-packaged’ operations for performing common logic
• Support for commons functions– Math– Text– Date & Time – Logical
• Can chain functions togetherAND ( OR (
ISPICKVAL(StageName, "Closed Won"),
ISPICKVAL(StageName, "Negotiation/Review")),
ISBLANK(Delivery_Date__c) )
If Then Error
Implied on record save.
Formula evals true (error) or false (save)
Return error message (UI or API)
Validation Rules
When
Why
What
Workflows
TaskOutbound Message
Update Field
Workflows
ApprovalsSingle/Multi/Skip step processes
Route based on roles, or queues
Automation of manual processes
Approval via emails
Track Approval History
Define Actions
Approvals
Business Logic
Workflows & Approvals
Apex & Visualforce
Enterprise API’s
Chatter
CHATTER DEMO
Privacy and SecurityHome Tab / Profile Page Record Detail Page
Every internal user can see what you post
Only users with “Read” access to the record can see what
you post
Chatter Components
chatter:follow
chatter:newsfeed
chatter:feed
chatter:followers
chatter:feedAndFollowers
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);}
TUTORIALS 3 & 4
Joshua Birk, Developer Evangelist@joshbirk
APEX + VISUALFORCE
Safe HarborSafe 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.
Business Logic
Workflows & Approvals
Apex & Visualforce
Enterprise API’s
Chatter
Model View Controller (MVC) Pattern
Model Controller
View
Your Data Your Logic
Your Interface
Model View Controller (MVC) Pattern
Custom Objects Apex
Visualforce
Model View Controller (MVC) Pattern
Apexcloud-based programmatic language with direct access to Force.com data
public with sharing class myControllerExtension {
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; }}
Apex Class AnatomyClass and Interface based
Scoped Variables
Inline SOQL
Inline DML
What can you do with Apex?
Controllers Inbound/OutboundEmail Services
Custom API andHTTP Callouts
Database Triggers Scheduled and Batched Tasks
The Developer Console
VisualforceA component based framework for building user interfaces with web standards like HTML, CSS and JavaScript
<apex:page controller=“Contact” extension=“duplicateUtilty” 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>
Visualforce Page AnatomyStandard ControllersCustom ControllersCustom Extensions
Data bound components
Controller Callbacks
@RemoteAction public static String updateMerchandiseItem(String productId, Integer newInventory) { List<Merchandise__c> m = [SELECT Id, Name, Price__c, Total_Inventory__c, Description__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 RemotingAccess 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
What can you do with Visualforce?
Email Templates Generate PDFsEmbed in Page Layouts
Mobile Interfaces Web Sites
TUTORIAL #9
Salesforce Mobile
Mobile HTML Application
Mobile SDK Development
No additional development, admin configured and controlled
Web development skills required, easily made for multiple devices and screens
Offers access to device functionality and can create the most fast performing applications
Mobile HTML Application
Mobile SDK Development
Web development skills required, easily made for multiple devices and screens
Offers access to device functionality and can create the most fast performing applications
Salesforce MobileNo additional development, admin configured and controlled
MOBILE VF DEMO
Joshua Birk, Developer Evangelist@joshbirk
INTEGRATION + HEROKU
Safe HarborSafe 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.
Business Logic
Workflows & Approvals
Apex & Visualforce
Enterprise API’s
Chatter
REST API
curl https://na1.salesforce.com/services/data/v20.0/query/?q=SELECT+name+from+Account -H "Authorization: OAuth token" -H "X-PrettyPrint:1"
{ "done" : true, "totalSize" : 14, "records" : [ { "attributes" : { "type" : "Account", "url" : "/services/data/v20.0/sobjects/Account/001D000000IRFmaIAH" }, "Name" : "Test 1" }, { "attributes" : { "type" : "Account", "url" : "/services/data/v20.0/sobjects/Account/001D000000IomazIAB" }, "Name" : "Test 2" },
...
]}
OAuth
OAuth2 Flow
RemoteApplication
SalesforcePlatform
Sends App Credentials
User logs in,Token sent to callback
Confirms token
Send access token
Maintain session withrefresh token
Bulk APIAsynchronous API for handling large amounts of XML based data
Extract Transform Load (ETL)A type of toolset which allows for the easy migration and manipulation of data between different systems
Streaming APIA Bayeux implementation to provide real-time data updates to clients
Extend and Market
Heroku
AppExchange
Polyglot frameworkPaaS architecture which allows for multiple language to be deployed
$ git push heroku masterCounting 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 / PushDevelopment Changes
Push DeploymentsMonitor Application
HEROKU DEMO
Double-click to enter title
Double-click to enter text
The Wrap Up
http://bit.ly/brasildevweeksp
Double-click to enter title
Double-click to enter text
@forcedotcom@joshbirk
@reidcarlberg@larimaryprairie
#askforce
Double-click to enter title
Double-click to enter text
http://www.meetup.com/Sao-Paulo-Salesforce-Developer-User-
Group/
Double-click to enter title
Double-click to enter text
http://developer.force.comhttp://youtube.com
http://appexchange.com
simplicityis the ultimate form ofsophistication
Da Vinci