SlideShare uma empresa Scribd logo
1 de 96
Developer Workshop
Pat Patterson
Developer Evangelist Architect
@metadaddy
ppatterson@salesforce.com

Samantha Ready
Developer Evangelist
@samantha_ready
sready@salesforce.com
Login and Get Ready

Internet Username / Password
SF13 / SF13
http://bit.ly/dfc_beg_workbook
Be Interactive
http://developer.force.com/join
Free Developer
Environment
http://bit.ly/dfc_beg_workbook

Online
Workbook
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.
Introduction to the
Salesforce1 Platform
Salesforce1 Platform
APIs

Mobile
Services

Core
Services

SOAP
APIs

REST
APIs

Bulk
APIs

Tooli
ng
APIs

Metada
ta
APIs

Analyti
cs
APIs

Soci
al

ET API

Streami
ng
APIs

APIs

Mobile
SDK

Mobile
Packs

Offline
Support

Geolocat
ion

Custo
m
Action
s

Identi
ty

Private
App
Exchang
e

Mobile
Notificati
ons

Visualfo
rce1

Chatt
er

Workflo
ws

Analyti
cs

Ape
x

Multilangua
ge

Heroku
AddOns

Email
Servic
es

ET 1:1

ET
Fuel

Multitenant

Cloud
Databa
se

Datalevel
Securit
y

Schem
a
Builder

Sharin
g
Model

Translati
on
Workben
ch

Sear
ch

Heroku1

Monitori
ng
Build Employee Apps Fast with the Salesforce1 App
All your past investments...
All Your Apps
All Your CRM

...are now in the future
Notifications
Platform
Flexible UI

All Your
Customizations
All Your Devices

Download the Salesforce1 App
today.

Publisher
Actions
Salesforce1 Platform

6B

Lines of Apex

500M
API Calls
Per Day

4M+

Apps Built on
the Platform

72B
Records
Stored

Salesforce is a Platform Company. Period.
-Alex Williams, TechCrunch
1.4 Million
Data Modeling
Spreadsheet Versus Application

OR

Relational Data
Validated data
Process driven workflows
Approval System
Field Auditing
Users, Profiles and Permissions
Enterprise Collaboration

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
Invoice
Number

Status

Count

Total

INV-01

Shipped

16

$370

INV-02

New

20

$200

Merchandise

Invoice Line Items
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

Name

Price

Inventory

Pinot

Invoice

$20

15

Cabernet

$30

10

Malbec

$20

20

Zinfandel

$10

50
Chatter
Social framework for the enterprise
Tutorial 100
Optional: Tutorial 110
DECLARATIVE LOGIC
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) )
Validation Rules
Formulas which block data entry if evaluated as true
WHEN

IF

Record is
being
inserted or
updated

Formula
evaluates to
true

THEN
Return error
message
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
Email

Task

Update
Field

Outbound
Message
Approvals
System to route approvals through an organization
Define Criteria

Define Actions

Track Approval History
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
OPTIONAL: TUTORIAL 150
LUNCH:

Downstairs
APEX
Apex
Cloud based programming language
Apex Anatomy

 Class and Interface based
 Scoped Variables

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;
Inline SOQL
}
}


 Inline DML
DEVELOPER CONSOLE
Common Use Cases

Controllers

Custom API and
HTTP Callouts

Scheduled and Batched Tasks

Inbound/Outbound
Email Services

Triggers
Trigger Anatomy

 Object Definition
 Event Definition

trigger MerchandiseTrigger on Merchandise__c (before
insert, before update) {
Merchandise__c[] merch = Trigger.new;
if(Trigger.isInsert) {
MerchandiseUtil.checkMerchandise(merch);
}
 Trigger.old and new
// Do more stuff...
 Bulkify code
}
Unit Testing
@isTest
static public void testRequiredFields() {
Merchandise__c m = new Merchandise__c(Name = 'Test');
try {
insert m;
System.assert(false,
'Shouldn't be able to insert Merchandise without’ +
' quantity & price!');
} catch (DMLException e) {
// Expect to see an exception here – all is good
}
m.Quantity__c = 0;
m.Price__c = 9.99;
insert m;
}
Unit Testing
public WarehouseCSVController() {
Boolean dummy =
ApexPages.currentPage().getParameters().get(’dummy') != null;
if (dummy) {
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();
}
}
TUTORIAL 300
VISUALFORCE
Model View Controller
Application design paradigm to divide data, logic and UI
Visualforce
Cloud based component framework for interfaces
Visualforce Anatomy

Controllers
 StandardControllers
Custom
Custom Extensions

<apex:page StandardController="Contact"
extensions="duplicateUtility"
action="{!checkPhone}">
<apex:form>

 Data bound components

 Controller Callbacks

<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>
}

JavaScript Remoting
@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();
$(".updateBtn").click(function() {
}
var id = j$(this).attr('data-id');
}
var inventory = parseInt(j$("#inventory"+id).val());
else {
$.mobile.showPageLoadingMsg();
return 'No item found with that ID';
}
MobileInventoryExtension.updateMerchandiseItem(id, inventory,handleUpdate);
}
});

 Access Apex from JavaScript
 Asynchronous Responses

Apex
JavaScript
in
Visualforce
Custom Components
<apex:component controller="GeoComponentController">
<apex:attribute name="lat"
type="Decimal"
description="Latitude for geolocation query"
assignTo="{!lat}” />
<apex:attribute name="lon"
type="Decimal"
description="Longitude for geolocation query"
assignTo="{!lon}” />

<c:GeoComponent lat=”8.9991" lon=”10.0019" />
Page Templates
<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>
Chatter Components

<chatter:follow/>
<chatter:newsfeed/>
<chatter:feed/>

<chatter:followers/>
<chatter:feedAndFollowers/>
Common Use Cases

Email Templates

Embed in Page Layouts

Mobile Interfaces

Generate PDFs

Page Overrides
TUTORIAL 330
INTEGRATION
OAuth
Industry standard method of user authentication
OAuth2 Flow

Invoke OAuth
User logs in,
Tokens sent to callback

Remote
Application

Salesforce
Platform

Call API

Return Data

Maintain session with
refresh token
WORKBENCH
REST API
API leveraging industry standard HTTP
REST API

1. Authenticate
login.salesforce.com

Mobile
Application

2. Access API
/services/data/query?q=
SELECT+Id,+Name+FROM+Account

3. Get JSON or XML
{
“Id” : “001E0000002Jv2bIAC”,
“Name” : “GenePoint”
}

Salesforce
Platform
WORKBENCH
SOAP API
XML messaging and WSDL based API
SOAP API

1. Authenticate
login.salesforce.com

Java Web
Server

2. Access API
<QUERY><SOQL>
SELECT Id from Account
</SOQL></QUERY>

3. Get XML
<RECORDS>
<RECORD type=“Account”>
<id>oax02fdr756aFdad</id>
</RECORD>
</RECORDS>

Salesforce
Platform
Bulk API
Asynchronous API for handling large datasets
Bulk API

1. Pull Recent Records

ETL
Tool

TITLE: AppCo
STREET: 1 Market Street
REF:0001

Legacy
Database

2. Push Updates
NAME: AppCo
MailingStreet: 1 Market Street
ExternalID:0001

Salesforce
Platform
Streaming API
Bayeux implementation for real-time delivery of data
Streaming API

1. Handshake

Java
Web Server

2. Subscribe to Topic

3. Get Updates

Salesforce
Platform
WORKBENCH
PUSH TOPICS
TUTORIAL 370
Salesforce1 Customization
Double-click to enter title

The Wrap Up
Double-click to enter text
check inbox

http://bit.ly/seattledevworkshp328
Double-click to enter title
Double-click to enter text

@forcedotcom
@metadaddy
@samantha_ready

#forcedotcom
#askforce
Double-click to enter title
Join A
Double-click to enter text

Developer User Group

http://bit.ly/fdc-dugs
Become
Double-click to enter titleA Leader
Developer User Group
Double-click to enter text

Email:
April Nassi
<anassi@salesforce.com>
Double-click to enter title
http://developer.force.com
Double-click to enter text
THANK YOU
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
Tools for building native, hybrid, and HTML5 apps on iOS and Android
OAuth2

http://developer.force.com/mobilesdk

Secure authentication and refresh token
management

API Wrappers
Interact with Salesforce REST APIs with
popular mobile platform languages

App Container
Embed HTML5 apps inside a container to
access powerful native device functionality

Secure Offline Storage
Store business data on a device with enterpriseclass encryption

Push Notifications
Dispatch real-time alerts directly to mobile
devices
Canvas
Framework for using third party apps within Salesforce
Canvas Anatomy

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
Polyglot Framework
PaaS allowing for the deployment of multiple languages
Heroku

Github Repo

Push Deployments
Monitor Application

Pull / Push
Development Changes

Local Repo

$ 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)
HEROKU
AppExchange
Application Market for the Salesforce Platform
http://appexchange.com

1,700+ Apps

20k+ Reviews

1.4m+ Installs

Mais conteúdo relacionado

Semelhante a Developer Workshop Workbook

Salesforce1 ELEVATE Workshop - Dublin
Salesforce1 ELEVATE Workshop - DublinSalesforce1 ELEVATE Workshop - Dublin
Salesforce1 ELEVATE Workshop - DublinJoshua Hoskins
 
Developer Tour on the Salesforce1 Platform
Developer Tour on the Salesforce1 PlatformDeveloper Tour on the Salesforce1 Platform
Developer Tour on the Salesforce1 PlatformSalesforce Deutschland
 
Developers guide to the Salesforce1 Platform
Developers guide to the Salesforce1 PlatformDevelopers guide to the Salesforce1 Platform
Developers guide to the Salesforce1 PlatformJohn Stevenson
 
Toronto dev group mar2019
Toronto dev group mar2019Toronto dev group mar2019
Toronto dev group mar2019rikkehovgaard
 
Integrating with salesforce
Integrating with salesforceIntegrating with salesforce
Integrating with salesforceMark Adcock
 
[MBF2] Plate-forme Salesforce par Peter Chittum
[MBF2] Plate-forme Salesforce par Peter Chittum[MBF2] Plate-forme Salesforce par Peter Chittum
[MBF2] Plate-forme Salesforce par Peter ChittumBeMyApp
 
#DF17Recap series: Integrate apps easier with the Salesforce platform
#DF17Recap series: Integrate apps easier with the Salesforce platform#DF17Recap series: Integrate apps easier with the Salesforce platform
#DF17Recap series: Integrate apps easier with the Salesforce platformSalesforce Developers
 
Developer Preview Live – Release Readiness LIVE, Spring '18
Developer Preview Live – Release Readiness LIVE, Spring '18Developer Preview Live – Release Readiness LIVE, Spring '18
Developer Preview Live – Release Readiness LIVE, Spring '18Salesforce Developers
 
Process Automation Showdown Session 1
Process Automation Showdown Session 1Process Automation Showdown Session 1
Process Automation Showdown Session 1Michael Gill
 
Force.com Friday: Intro to Force.com
Force.com Friday: Intro to Force.comForce.com Friday: Intro to Force.com
Force.com Friday: Intro to Force.comSalesforce Developers
 
Building Visualforce Custom Events Handlers
Building Visualforce Custom Events HandlersBuilding Visualforce Custom Events Handlers
Building Visualforce Custom Events HandlersSalesforce Developers
 
Intro to Apex - Salesforce Force Friday Webinar
Intro to Apex - Salesforce Force Friday Webinar Intro to Apex - Salesforce Force Friday Webinar
Intro to Apex - Salesforce Force Friday Webinar Abhinav Gupta
 
Boxcars and Cabooses: When One More XHR Is Too Much
Boxcars and Cabooses: When One More XHR Is Too MuchBoxcars and Cabooses: When One More XHR Is Too Much
Boxcars and Cabooses: When One More XHR Is Too MuchPeter Chittum
 
Building Mobile Apps That Deliver Salesforce to Your Employees
Building Mobile Apps That Deliver Salesforce to Your EmployeesBuilding Mobile Apps That Deliver Salesforce to Your Employees
Building Mobile Apps That Deliver Salesforce to Your EmployeesSalesforce Developers
 
Real Time Integration with Salesforce Platform Events
Real Time Integration with Salesforce Platform EventsReal Time Integration with Salesforce Platform Events
Real Time Integration with Salesforce Platform EventsSalesforce Developers
 
Data.com APIs in Action ? Bringing Data to Life in Salesforce
Data.com APIs in Action ? Bringing Data to Life in SalesforceData.com APIs in Action ? Bringing Data to Life in Salesforce
Data.com APIs in Action ? Bringing Data to Life in SalesforceSalesforce Developers
 

Semelhante a Developer Workshop Workbook (20)

Bbva workshop
Bbva workshopBbva workshop
Bbva workshop
 
Salesforce1 ELEVATE Workshop - Dublin
Salesforce1 ELEVATE Workshop - DublinSalesforce1 ELEVATE Workshop - Dublin
Salesforce1 ELEVATE Workshop - Dublin
 
Force.com Friday : Intro to Apex
Force.com Friday : Intro to Apex Force.com Friday : Intro to Apex
Force.com Friday : Intro to Apex
 
Developer Tour on the Salesforce1 Platform
Developer Tour on the Salesforce1 PlatformDeveloper Tour on the Salesforce1 Platform
Developer Tour on the Salesforce1 Platform
 
Developers guide to the Salesforce1 Platform
Developers guide to the Salesforce1 PlatformDevelopers guide to the Salesforce1 Platform
Developers guide to the Salesforce1 Platform
 
Toronto dev group mar2019
Toronto dev group mar2019Toronto dev group mar2019
Toronto dev group mar2019
 
Integrating with salesforce
Integrating with salesforceIntegrating with salesforce
Integrating with salesforce
 
[MBF2] Plate-forme Salesforce par Peter Chittum
[MBF2] Plate-forme Salesforce par Peter Chittum[MBF2] Plate-forme Salesforce par Peter Chittum
[MBF2] Plate-forme Salesforce par Peter Chittum
 
Bulkify Your Org
Bulkify Your OrgBulkify Your Org
Bulkify Your Org
 
#DF17Recap series: Integrate apps easier with the Salesforce platform
#DF17Recap series: Integrate apps easier with the Salesforce platform#DF17Recap series: Integrate apps easier with the Salesforce platform
#DF17Recap series: Integrate apps easier with the Salesforce platform
 
Developer Preview Live – Release Readiness LIVE, Spring '18
Developer Preview Live – Release Readiness LIVE, Spring '18Developer Preview Live – Release Readiness LIVE, Spring '18
Developer Preview Live – Release Readiness LIVE, Spring '18
 
Process Automation Showdown Session 1
Process Automation Showdown Session 1Process Automation Showdown Session 1
Process Automation Showdown Session 1
 
Force.com Friday: Intro to Force.com
Force.com Friday: Intro to Force.comForce.com Friday: Intro to Force.com
Force.com Friday: Intro to Force.com
 
Building Visualforce Custom Events Handlers
Building Visualforce Custom Events HandlersBuilding Visualforce Custom Events Handlers
Building Visualforce Custom Events Handlers
 
Intro to Apex - Salesforce Force Friday Webinar
Intro to Apex - Salesforce Force Friday Webinar Intro to Apex - Salesforce Force Friday Webinar
Intro to Apex - Salesforce Force Friday Webinar
 
Boxcars and Cabooses: When One More XHR Is Too Much
Boxcars and Cabooses: When One More XHR Is Too MuchBoxcars and Cabooses: When One More XHR Is Too Much
Boxcars and Cabooses: When One More XHR Is Too Much
 
Introduction to Data.com APIs
Introduction to Data.com APIsIntroduction to Data.com APIs
Introduction to Data.com APIs
 
Building Mobile Apps That Deliver Salesforce to Your Employees
Building Mobile Apps That Deliver Salesforce to Your EmployeesBuilding Mobile Apps That Deliver Salesforce to Your Employees
Building Mobile Apps That Deliver Salesforce to Your Employees
 
Real Time Integration with Salesforce Platform Events
Real Time Integration with Salesforce Platform EventsReal Time Integration with Salesforce Platform Events
Real Time Integration with Salesforce Platform Events
 
Data.com APIs in Action ? Bringing Data to Life in Salesforce
Data.com APIs in Action ? Bringing Data to Life in SalesforceData.com APIs in Action ? Bringing Data to Life in Salesforce
Data.com APIs in Action ? Bringing Data to Life in Salesforce
 

Mais de Salesforce Developers

Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSalesforce Developers
 
Maximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceMaximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceSalesforce Developers
 
Local development with Open Source Base Components
Local development with Open Source Base ComponentsLocal development with Open Source Base Components
Local development with Open Source Base ComponentsSalesforce Developers
 
TrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsTrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsSalesforce Developers
 
Why developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX IndiaWhy developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX IndiaSalesforce Developers
 
CodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local DevelopmentCodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local DevelopmentSalesforce Developers
 
CodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web ComponentsCodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web ComponentsSalesforce Developers
 
Enterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsEnterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsSalesforce Developers
 
TrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsTrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsSalesforce Developers
 
Lightning web components - Episode 4 : Security and Testing
Lightning web components  - Episode 4 : Security and TestingLightning web components  - Episode 4 : Security and Testing
Lightning web components - Episode 4 : Security and TestingSalesforce Developers
 
LWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura InteroperabilityLWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura InteroperabilitySalesforce Developers
 
Lightning web components episode 2- work with salesforce data
Lightning web components   episode 2- work with salesforce dataLightning web components   episode 2- work with salesforce data
Lightning web components episode 2- work with salesforce dataSalesforce Developers
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionSalesforce Developers
 
Migrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCPMigrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCPSalesforce Developers
 
Scale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in SalesforceScale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in SalesforceSalesforce Developers
 
Replicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data CaptureReplicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data CaptureSalesforce Developers
 
Modern Development with Salesforce DX
Modern Development with Salesforce DXModern Development with Salesforce DX
Modern Development with Salesforce DXSalesforce Developers
 
Integrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectIntegrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectSalesforce Developers
 

Mais de Salesforce Developers (20)

Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce Developers
 
Maximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceMaximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component Performance
 
Local development with Open Source Base Components
Local development with Open Source Base ComponentsLocal development with Open Source Base Components
Local development with Open Source Base Components
 
TrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsTrailheaDX India : Developer Highlights
TrailheaDX India : Developer Highlights
 
Why developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX IndiaWhy developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX India
 
CodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local DevelopmentCodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local Development
 
CodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web ComponentsCodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web Components
 
Enterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsEnterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web Components
 
TrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsTrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer Highlights
 
Live coding with LWC
Live coding with LWCLive coding with LWC
Live coding with LWC
 
Lightning web components - Episode 4 : Security and Testing
Lightning web components  - Episode 4 : Security and TestingLightning web components  - Episode 4 : Security and Testing
Lightning web components - Episode 4 : Security and Testing
 
LWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura InteroperabilityLWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura Interoperability
 
Lightning web components episode 2- work with salesforce data
Lightning web components   episode 2- work with salesforce dataLightning web components   episode 2- work with salesforce data
Lightning web components episode 2- work with salesforce data
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An Introduction
 
Migrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCPMigrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCP
 
Scale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in SalesforceScale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in Salesforce
 
Replicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data CaptureReplicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data Capture
 
Modern Development with Salesforce DX
Modern Development with Salesforce DXModern Development with Salesforce DX
Modern Development with Salesforce DX
 
Get Into Lightning Flow Development
Get Into Lightning Flow DevelopmentGet Into Lightning Flow Development
Get Into Lightning Flow Development
 
Integrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectIntegrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS Connect
 

Último

From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 

Último (20)

From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 

Developer Workshop Workbook

Notas do Editor

  1. This is the deck for the Private Salesforce Developer Workshops as well as the Beginner’s Track of the ELEVATE program.For the private workshops, use the blue platform bumper slides. For ELEVATE, use the darker ELEVATE ones. The font included in the zip is for the ELEVATE slides.The speaker notes are provided as a guide, not necessarily specific speeches. These notes will not insist on demos, presenters should prep their presentations with the demos they are comfortable with.The recommended agenda can be found here: https://docs.google.com/a/salesforce.com/spreadsheet/ccc?key=0Akr6pvkAv8X5dGFEN2ZWNUxWbS1SVFBoRS1oZU5kQWc#gid=6Errors, comments, suggestions in either the deck or the workbook can be mentioned on Josh Birk’s Chatter feed, or written up in Google Docs and shared with Josh Birk and Mario Korf.
  2. Change this slide to match the local internet requirements.The bit.ly link points to the latest HTML draft of the new workbook. This is different than the official workbook on developer.force.com and there are schema differences, so attendees cannot mix and match.
  3. Highlight that this is not just a day of talking to them, this is a dialogue and they should ask questions as they like – even ones that don’t pertain to the current “section”. Projects they’re working on, features they have heard about, etc.
  4. Safe Harbor
  5. Safe Harbor
  6. So when you are first asked to start tracking data, it might be very tempting to just open up a spreadsheet and start adding rows. But why do that when for the same amount of programming you can get all these features on the right side?
  7. Let’s have an exercise in requirements gathering. Here is some of the core needs for our Warehouse application. What nouns here should we be looking at to model our data with?
  8. Let’s have an exercise in requirements gathering. Here is some of the core needs for our Warehouse application. What nouns here should we be looking at to model our data with?
  9. Let’s have an exercise in requirements gathering. Here is some of the core needs for our Warehouse application. What nouns here should we be looking at to model our data with?
  10. Here is an overview of what our data model will look like.
  11. We also have another thing built right into your data model: Chatter. Chatter is a collaboration engine for your users, and it can interact directly with your data.
  12. Safe Harbor
  13. When we say declarative, we might also refer to the as “clicks not code”. Or citizen development. This is development without needing to use programmatic logic, and it is a very powerful way to build and maintain your applications.
  14. Let’s revisit that spreadsheet idea. You can already see how custom objects and validation rules make for a more robust system. But we can take it even farther, even without coding a single line.
  15. You used a formula to define your validation rule – but what if you could define a field itself this way? This gives you data which is calculated in real time, but can be treated like a normal custom field.
  16. Formula fields work like formulas work in Excel spreadsheets.The formula here insists that a delivery date is needed for these stages.
  17. What’s more important than data? Clean data. Validation rules allow you to block bad data before it even gets into the system.
  18. Validation rules are applied anytime data is being inserted or updated. If your formula evaluates to true, the user will get an error instead of the system being updated.This is true no matter what, through the browser, through an API, through a mobile app. These are rules baked right into your data layer.
  19. Roll-up fields are similar to formula fields, but they play off that master-child relationship you created in the first tutorial. Here, you can do calculations on the fly based on that relationship.
  20. A simple roll-up field might simply count the number of children that are in the relationship. In terms of your invoice, you could count how many line items are related. Or, if you wanted, you could aggregate a child field like value – and get the full value of that invoice.
  21. Workflows are where we start to see specific business rules being replicated in the system. They allow you to perform actions on your data based on specific conditions.
  22. They are broken up like this: When you insert or update a record, and that record meets specific criteria you have set – the system allows you to perform various actions.
  23. The system could send an email, create a task, update a field, or even send a message to an external endpoint.These actions could occur immediately, or they could be time-based and occur at a specific point down the road.
  24. Approvals are where we can put a real human element to controlling your data. This is another example of a feature we have created because we know enterprise apps will need this. Instead of having you create your own approval app, just use our.
  25. Similar to workflows, records can be submitted to approval if they meet certain criteria. You can then perform actions based on if the record was submitted, approved or denied. For instance, you might want to change the status of the record so that you can easily track the progress.You can also track the whole approval history on the record layout.
  26. Approvals have lots of options.
  27. Security is another aspect of our platform we take very seriously. Yes, we want you to be able to create a robust data structure. Your app should have the ability to perform complex business rules. But on top of all that, we need to keep it secure.
  28. The Salesforce Platform is a robust family of Identity and security features. You can assign users profiles, and even define users within groups, queues and hierarches. Permission sets allow you to group specific privileges across profiles, making it easier to maintain exactly who can do what. We also have multiple options for how people sign in: we’re an Identity Provider ourself, we support SAML and have implemented OAuth 2.0. For mobile, we have defined connected apps specifically so that admins can maintain who can use what out in the field.
  29. Update to let them know where lunch is
  30. Safe Harbor
  31. For when declarative logic is not enough, we provide Apex. Apex is a cloud-based programming language, very similar to Java – except that you can code, compile and deploy all right from your Salesforce instance. You’ll see how we can create robust programmatic functions right from your browser.
  32. For those unfamiliar with OO, here’s what a simple class structure looks like. NOTE: If you’re using this slide deck for a very technical audience, breeze through this section and get to meatier features of Apex, otherwise go into a basic discussion about how Apex is divided into classes, refers to information with variables, etc.Now note however, the big difference – we can access and manipulate data with just a few lines of code, no additional configuration required. Apex will automatically know everything you’ve done declaratively for your application.
  33. So what can you use Apex? In the next tutorial, we’ll talk about Controllers – which is how you primarily use Apex without our custom page framework. However, you can also use Apex to both extend some our existing API’s, and also to call out to others. It has a full HTTP request and response library. You can also communicate via email, both outbound – send out emails to recipients … and inbound. With inbound email you setup an Apex class, get a email address associated with it, and then you can have Apex react programmatically to it.Scheduled and Batched Apex allows you to run tasks in the background. A scheduled Apex job will run at a specific time, perform some logic and be done. With a batch job, it will also run at a specific time – but it will run against a set of records defined by SOQL until it is done all those records. Scheduled jobs are great for checking against your data and send out updates or alerts, while batched jobs can provide functions like data archiving and clean up.Finally, we triggers. Let’s take a closer look at those.
  34. A trigger looks a lot like a class, and behaves in a very similar way – but part of the definition is specifically defining what object it should act on, and when. Unlike an Apex class, triggers are called when events occur on specific object types. For instance, here we will call a utility method any time Merchandise is updated.
  35. Want to make Chatter smarter? You can extend it with Apex Triggers to associate highly custom behaviors. Here if someone adds a hash tag “promote”, Apex will automatically add it to the promotion and even update the record to let everyone know it just did that. We’ll also be doing a deeper dive into Apex and triggers today as well.
  36. Unit testing is code to test your code. There are three basic parts to a good unit test – creating test data which simulates a scenario, and in a unit test all the data is transient … it never actually goes into the system. Next you will want to execute as much of your code as possible. We call that code coverage. To go from sandbox to production, you’ll need 75% coverage. But 75% probably shouldn’t be your target. Actually, 100% should probably be your target. The last bit is assertions, which prove that the outcome is what you expected.And we take this seriously on our side. Anyone want to guess how many of your unit tests Salesforce runs while testing our releases? It’s what you’d want – it’s 100%. So by writing good unit tests, you’re helping us not break your code.
  37. Here is an example of code coverage. In thise case, we’re not testing for the dummyscenario.
  38. If you aren’t familiar with the MVC paradigm: Model View Controller, here is an easy way to think about. Think about how your arm moves. It’s not just one slab of jelly. You start with bones – and the defines the basic structure of the arm. That’s your Model, or Data section. You’ve worked with this already, using the declarative process. Now how do those bones perform actions? Muscle. You’ve already added a little muscle with workflows and validation rules, and we’ll see more later with Apex. But for now, we want to talk about the skin – adding a cosmetic interface to the app.
  39. This is where Visualforce comes into play. Visualforce is our user interface framework in the cloud, allowing you to create custom pages quickly and easy via components.
  40. What do we mean by components? Well you’d start with a page component, and that will define how the whole page is going to be rendered. And then you can add things like a form and fields for the form. Now everything you see here will be HTML when it gets outputted. So you’d have and HTML form, HTML input tages, etc. To the browser, it is just standard HTML.But how are we binding data here? We define a controller, which gets access to server-side logic. Whenever you see these brackets and that exclamation point, you’re looking at dynamically bound data which will effect how the component is rendered.However, the server-side logic here is a little interesting. Do Standard Controller demo, then go back to describe custom controllers and extensions.
  41. Now that you’ve seen how controllers normally look, let’s look at a different trick Visualforce has. You can also access server-side code directly via JavaScript. The Apex code is specified with the @RemoteAction annotation, and then we can call it from JavaScript easily. This is a very lightweight approach to communicating with data. You’ll see an example of this as part of the tutorial.
  42. You can also create completely custom components with your own logic that utilize attributes you define. This makes your Visualforce portable and easy to maintain.
  43. On the flip side, Visualforce also has template support, you can define a page and which sections can be utilized, and then another page can define those sections for the template.
  44. Visualforce also has components specifically for duplicating the Chatter interface, if you want to use that with your pages.
  45. Other uses for Visualforce include creating custom email templates, embedding Visualforce into existing layouts, rendering PDF instead of HTML, creating custom Mobile interfaces and also completely overriding a page.
  46. Before we get into specifics about API integration – let’s talk a bit about Identity. Identity services, being able to authenticate your users securely – is incredibly important, especially once we start accessing the platform from third parties.Now many of you may have existing applications which use our API’s – who here has written a mobile or desktop app that logs into Salesforce, for instance? If you wrote that app with a username and password screen, consider what you are taking on there: you have to handle those credentials with the same care we do on login.salesforce.com, right?
  47. What if you didn’t have to? Stupid question time: who has used Facebook? Right, exactly – and if you’ve used Facebook you have probably seen those popups that say things like “Farmville would like to do these three things as you”. You hit confirm, and Farmville has access to some of your Facebook account, but only the parts you let it. And you never gave them your password. And at any time, you can revoke the app.That’s Oauth, and the Salesforce Platform has an excellent implementation of it. It works by having the app send the user to the first party platform, in this case Salesforce, who logs the person in. The application and the plattform essentially confirm each other, and then at the end of it – the app gets a session token with only the permissions you granted.
  48. Now let’s talk about our specific API’s. We have API’s to fit a wide range of use cases. Our REST API is very versatile, and one of the main use cases is mobile applications.
  49. That’s because the REST API is very lightweight. You access it with industry standard HTTP calls. So when you call http://cnn.com, that’s an HTTP GET call. Your browser returns HTML, and you see a web page. This is the same, but authenticated, and you get JSON back. JSON is a very lightweight data type and many languages and frameworks already know how to parse it.
  50. Now our old workhorse is our SOAP API.
  51. The flow of SOAP is very similar to REST, but the messaging is different. With SOAP, you are sending and receiving an XML message in a specific format. This can get heavy, size-wise, but it is also very stable and predictable. You can create a document called a WSDL (Web Services Definition Language) which defines how those messages look, and a lot of languages like Java and C# can easily consume a WSDL and create classes that talk to the API automatically.
  52. Now our Bulk API is meant specifically for loading large datasets. It’s asynchrounous to maximize the the server processing and allow for potentially lengthy load times.
  53. ETL (Extract Transform Load) tools can leverage the Bulk API to insert rows, pull data, and even modify the data in between … to say, match up columns with different names.
  54. Like the Bulk API – the Streaming API is designed for a very specific problem. What if you need real time updates, but you don’t want the API cost of constantly asking the server is anything has changed?{I usually talk about a Python dev who wrote a script to grab specific accounts, hand them off to a local process and then attach a resulting PDF to the account. It reduced a 45 minute process to a couple of minutes, and it made the system far more responsive. But to make it realtime, he polled the API every millisecond, which killed his API limit. Modified to work with the Streaming API, it now works great}
  55. The Streaming API gets a handshake from the platform, and then can subscribe to topics. Topics are mostly defined by SOQL to describe the kind of data the topic is pushing. Then, as long as that handshake is open – the updates get sent down to the client.
  56. Time to wrap things up
  57. Check inboxes for the survey link, or go to this link.
  58. You can find us easily on Twitter.
  59. Join your local DUG
  60. Or start one
  61. If there is one URL to remember…
  62. But now let’s talk about important parts of the platform that we don’t have time to cover today. Like the Mobile SDK, which allows you to easily create iOS and Android applications that run on the Salesforce Platform.
  63. Salesforce.com provides a host of Mobile SDK’s – Native, Hybrid, HTML5 – to help streamline your mobile app development efforts.These SDK’s are the fastest way to connect mobile apps on the extended Salesforce platform. In fact, they were designed so you can mobile-enable features from any of the major platforms that Salesforce offers.Mobile SDK’s can be found online at developer.force.com/mobile along with a handy developer workbook.
  64. Let’s talk about using Canvas, which allows me to easily put third part applications into Salesforce in a secure manner.
  65. For instance, maybe I have a large internal intranet applications. I don’t want to port all that functionality into Salesforce, but I do want to be able to integrate this one interface. Canvas allows you to easily bring that interface into the Salesforce UI, and in a very intelligent way.
  66. Heroku supports a polyglot framework: meaning it deploy many different languages.
  67. Describe AppExchange and packaging in general. If you’ve had the ISV team on hand, you can skip these as they would have already covered the material.