SlideShare ist ein Scribd-Unternehmen logo
1 von 77
Track: Developers 
#CNX14 
#CNX14 
Intro to Force.com 
James Ward 
Platform Evangelist 
@_JamesWard
Track: Developers 
#CNX14 
Salesforce1 App 
Salesforce1 Platform APIs 
Force.com Heroku 
ExactTarget 
Fuel 
Sales 
Cloud 
Service 
Cloud 
Marketing 
Cloud 
AppExchang 
e 
Custom 
Employee Apps 
Customer & 
Partner Apps 
Salesforce1 Platform Services
Track: Developers 
#CNX14 
Idea 
Build App 
Idea 
buy & 
setup 
hardware 
install 
complex 
software 
define user 
access 
build & test 
security 
make it 
mobile & 
social 
setup 
reporting & 
analytics 
build 
app 
Traditional Platforms 
6-12 Months? 
App 
App
Track: Developers 
#CNX14 
Platform Services 
The Fastest Path From Idea To App
Track: Developers 
#CNX14 
Salesforce: #1 Enterprise Cloud Platform 
Market Share #1 
Enterprise Platform #1 
Magic Quadrant for 
Application Platform as a Service 
January, 2014 Analyst: Yefim V. Natis 
This graphic was published by Gartner, Inc. as part of a larger research document and should be evaluated in the context of the entire document. The Gartner document is available upon request from Salesforce.com. Gartner does not endorse any vendor, product or service depicted in its research 
publications, and does not advise technology users to select only those vendors with the highest ratings. Gartner research publications consist of the opinions of Gartner's research organization and should not be construed as statements of fact. Gartner disclaims all warranties, expressed or 
implied, with respect to this research, including any warranties of merchantability or fitness for a particular purpose.
Track: Developers 
#CNX14 
Declarative Approach Programmatic Approach 
Visualforce Pages 
Visualforce Components 
Apex Controllers 
Apex Triggers 
Metadata API 
REST API 
Bulk API 
Page Layouts 
Record Types 
Formula Fields 
Validation Rules 
Workflows and Approvals 
Custom Objects 
Custom Fields 
Relationships 
User 
Interface 
Business 
Logic 
Data 
Model
Track: Developers 
#CNX14 
Free Developer Environment 
http://developer.salesforce.com/signup
Declarative Data Model
Track: Developers 
#CNX14 
Salesforce Objects 
• Similar to Tables (with more metadata) 
• Standard objects out-of-the-box 
• Account, Contact, Opportunity, … 
• You can add custom fields to standard objects 
• Rating__c, Twitter__c, … 
• You can create custom objects 
• i.e. Speaker__c, Session__c, Hotel__c 
• Custom objects have standard fields 
• Id, Owner, LastModifiedDate, LastModifiedBy, …
Track: Developers 
#CNX14 
Rich Data Types 
• Auto Number 
• Formula 
• Roll-Up Summary 
• Lookup 
• Master-Detail 
• Checkbox 
• Currency 
• Date 
• Picklist (multi select) 
• Text 
• Text Area 
• Text Area (Long) 
• Text Area (Rich) 
• Text (Encrypted) 
• URL 
 Date/Time 
 Email 
 Geolocation 
 Number 
 Percent 
 Phone 
 Picklist
Track: Developers 
#CNX14 
Modeling One-to-Many Relationships 
An expense has one 
expense report 
An expense report has 
many expenses
Track: Developers 
#CNX14 
Modeling Many-to-Many Relationships 
A speaker can have 
many session 
assignments 
A session can have 
many speaker 
assignments
Track: Developers 
#CNX14 
Id 
• All objects are given an Id field 
• Globally unique Id is assigned at record creation 
• "Primary key" used to access records
Track: Developers 
#CNX14 
Record Name 
• Human readable / logical identifier 
• Text or Auto Number ("Intro to Apex" or SP-00002) 
• Uniqueness not enforced
Track: Developers 
#CNX14 
When you create an Object, you get… 
• A CRUD user interface 
• Instant Mobile App access (Salesforce1) 
• A REST API 
• Rich Metadata 
• Indexed search
Declarative Apps
Track: Developers 
#CNX14 
What's an Application? 
• Group of tabs that provide easy access to related features 
• Salesforce comes with standards apps 
• Sales, Call Center, Marketing, … 
• You can create your own apps 
• Tabs can be: 
• Object pages, Visualforce pages, Canvas app
Track: Developers 
#CNX14 
Page Layouts 
Let you customize all aspects of the layout, related lists, …
Programming with Apex
Track: Developers 
#CNX14 
What is Apex? 
• Salesforce platform language 
• Cloud based compiling, debugging and unit testing 
• Object-oriented 
• Strongly typed 
• Classes and Interfaces 
• Similar to Java
Track: Developers 
#CNX14 
Apex and Java 
Same 
• Primitive data types 
• Flow control (if, for, while, …) 
• Exception handling 
• Collections: Lists, Sets, … 
Different 
• Case insensitive 
• Single quote strings: 'Joe' 
• Id data type 
• Built-in support for data access
Track: Developers 
#CNX14 
Apex Class 
public class MortgageCalculator { 
public Double amount { get; set; } 
public Double rate { get; set; } 
public Integer years { get; set; } 
public Double calculateMonthlyPayment() { 
Integer months = years * 12; 
Double monthlyRate = rate / (12 * 100); 
return amount * (monthlyRate/ 
(1 - Math.pow(1 + monthlyRate, -months))); 
} 
}
Track: Developers 
#CNX14 
Development Tools 
• Developer Console 
• Force.com IDE (Eclipse Plugin) 
• Mavens Mate (Sublime Plugin) 
• Force CLI
Track: Developers 
#CNX14 
Developer Console 
• Browser Based IDE 
• Create Classes, Triggers, Pages 
• Execute Apex Anonymously 
• Execute SOQL Queries 
• Run Unit Tests 
• Review Debug Logs
Data Access with SOQL and 
DML
Track: Developers 
#CNX14 
SOQL 
• Salesforce Object Query language 
• Similar to SQL 
• Streamlined syntax to traverse object relationships 
• Built into Apex
Track: Developers 
#CNX14 
SELECT Id, Name, Phone 
FROM Contact
Track: Developers 
#CNX14 
SELECT Id, Name, Phone 
FROM Contact 
WHERE Phone <> null
Track: Developers 
#CNX14 
SELECT Id, Name, Phone 
FROM Contact 
WHERE Phone <> null 
AND Name LIKE '%rose%'
Track: Developers 
#CNX14 
SELECT Id, Name, Phone 
FROM Contact 
WHERE Phone <> null 
AND Name LIKE '%rose%' 
ORDER BY Name
Track: Developers 
#CNX14 
SELECT Id, Name, Phone, Account.Name 
FROM Contact 
WHERE Phone <> null 
AND Name LIKE '%rose%' 
ORDER BY Name
Track: Developers 
#CNX14 
SELECT Id, Name, Phone, Account.Name 
FROM Contact 
WHERE Phone <> null 
AND Name LIKE '%rose%' 
ORDER BY Name 
LIMIT 50
Track: Developers 
#CNX14 
Executing SOQL in the Developer Console
Track: Developers 
#CNX14 
Inlining SOQL in Apex 
Integer i = [select count() from Session__c];
Track: Developers 
#CNX14 
Inlining SOQL in Apex 
String level = 'Advanced'; 
List<Session__c> sessions = 
[SELECT Name, Level__c FROM Session__c 
WHERE Level__c = :level];
Track: Developers 
#CNX14 
Inlining SOQL in Apex 
List<String> levels = new List<String>(); 
levels.add('Intermediate'); 
levels.add('Advanced'); 
List<Session__c> sessions = 
[SELECT Name, Level__c FROM Session__c 
WHERE Level__c IN :levels];
Track: Developers 
#CNX14 
Inlining SOQL in Apex 
for (Speaker__c s : [select email__c from Speaker__c]) 
{ 
System.debug(s.email__c); 
}
Track: Developers 
#CNX14 
insert 
Session__c session = new Session__c(); 
session.name = 'Apex 101'; 
session.level__c = 'Beginner'; 
insert session;
Track: Developers 
#CNX14 
insert 
Session__c session = new Session__c( 
name = 'Apex 201', 
level__c = 'Intermediate' 
); 
insert session;
Track: Developers 
#CNX14 
update 
String oldName = 'Apex 101'; 
String newName = 'Apex for Beginners'; 
Session__c session = 
[SELECT Id, Name FROM Session__c 
WHERE Name=:oldName]; 
session.name = newName; 
update session;
Track: Developers 
#CNX14 
delete 
String name = 'Testing 501'; 
Session__c session = 
SELECT Name FROM Session__c 
WHERE Name=:name]; 
delete session;
Apex Triggers
Track: Developers 
#CNX14 
Trigger 
• Apex code executed on database events 
• Before or after: 
• Insert 
• Update 
• Delete 
• Undelete
Track: Developers 
#CNX14 
Before or After? 
• Before 
• Update or validate values before they are saved to the database 
• Example: Prevent double-booking of a speaker 
• After 
• Need access to values set by the database (Id, lastUpdated, …) 
• Example: Send speaker confirmation email
Track: Developers 
#CNX14 
Bulk Mode 
• Trigger API designed to support bulk operations 
• Data Import, Bulk API, etc. 
• Triggers work on bulk of records, not single records 
• Context variables provide access to data: 
• Trigger.old and Trigger.new (List) 
• Trigger.oldMap and Trigger.newMap (Map)
Track: Developers 
#CNX14 
Example 
Trigger on Account (after insert) { 
for (Account account : Trigger.new) { 
Case case = new Case(); 
case.Subject = 'Mail Welcome Kit'; 
case.Account.Id = account.Id; 
insert case; 
} 
}
Visualforce Pages
Track: Developers 
#CNX14 
Model-View-Controller 
Model 
Data + Rules 
Controller 
View-Model 
interactions 
View 
UI code 
 Separation of concerns 
– No data access code in view 
– No view code in controller 
 Benefits 
– Minimize impact of changes 
– More reusable components
Track: Developers 
#CNX14 
Model-View-Controller in Salesforce 
View 
• Metadata 
• Standard Pages 
• Visualforce Pages 
• External apps 
Controller 
• Standard Controllers 
• Controller Extensions 
• Custom Controllers 
(all Apex) 
Model 
• Metadata 
• Objects 
• Triggers (Apex) 
• Classes (Apex)
Track: Developers 
#CNX14 
What's a Visualforce Page? 
• The View in MVC architecture 
• HTML page with tags executed at the server-side to generate dynamic content 
• Similar to JSP and ASP 
• Can leverage JavaScript and CSS libraries
Track: Developers 
#CNX14 
Expression Language 
• Anything inside of {! } is evaluated as an expression 
• Same expression language as Formulas 
• Same global variables are available. For example: 
• {!$User.FirstName} {!$User.LastName}
Track: Developers 
#CNX14 
Example 1 
<apex:page> 
<h1>Hello, {!$User.FirstName}</h1> 
</apex:page>
Track: Developers 
#CNX14 
Example 2 
<apex:page standardController="Contact"> 
<apex:form> 
Standard controller 
object 
<apex:inputField value="{!contact.firstname}"/> 
<apex:inputField value="{!contact.lastname}"/> 
<apex:commandButton action="{!save}" value="Save"/> 
</apex:form> 
</apex:page> 
Function in 
standard controller
Track: Developers 
#CNX14 
Standard Controller 
• A standard controller is available for all objects 
• You don't have to write it! 
• Provides standard CRUD operations 
• Create, Update, Delete, Field Access, etc. 
• Can be extended with more capabilities 
• Uses id in URL to access object
Track: Developers 
#CNX14 
Component Library 
• Presentation tags 
– <apex:pageBlock title="My Account Contacts"> 
• Fine grained data tags 
• <apex:outputField value="{!contact.firstname}"> 
• <apex:inputField value="{!contact.firstname}"> 
• Coarse grained data tags 
• <apex:detail> 
• <apex:pageBlockTable> 
• Action tags 
• <apex:commandButton action="{!save}" >
Track: Developers 
#CNX14 
Email 
Templates 
Embedded in Page 
Layouts 
Generate PDFs 
Custom Tabs 
Mobile 
Interfaces 
Page Overrides 
Where can I use Visualforce?
Apex Controller Extensions
Track: Developers 
#CNX14 
Custom Controllers 
• Custom class written in Apex 
• Can override standard behavior 
• Can add new capabilities
Track: Developers 
#CNX14 
Defining a Controller Extension 
<apex:page standardController="Speaker__c" 
extensions="SpeakerCtrlExt"> 
Provides basic 
CRUD 
Overrides standard 
actions and/or provide 
additional capabilities
Track: Developers 
#CNX14 
Anatomy of a Controller Extension 
public class SpeakerCtrlExt { 
private final Speaker__c speaker; 
private ApexPages.StandardController stdController; 
public SpeakerCtrlExt (ApexPages.StandardController ctrl) { 
this.stdController = ctrl; 
this.speaker = (Speaker__c)ctrl.getRecord(); 
} 
// method overrides 
// custom methods 
}
JavaScript in Visualforce
Track: Developers 
#CNX14 
Why JavaScript? 
• Build Engaging User Experiences 
• Leverage JavaScript Libraries 
• Build Custom Applications
Track: Developers 
#CNX14 
JavaScript in Visualforce Pages 
Visualforce Page 
JavaScript Remoting 
Remote Objects 
(REST)
Track: Developers 
#CNX14 
Examples
Track: Developers 
#CNX14 
Using JavaScript and CSS Libraries 
• Hosted elsewhere 
<script src="https://maps.googleapis.com/maps/api/js"></script> 
• Hosted in Salesforce 
• Upload individual file or Zip file as Static Resource 
• Reference asset using special tags
Track: Developers 
#CNX14 
Referencing a Static Resource 
// Single file 
<apex:includeScript value="{!$Resource.jquery}"/> 
<apex:image url="{!$Resource.myLogo}"/> 
// ZIP file 
<apex:includeScript value="{!URLFOR($Resource.MyApp, 'js/app.js')}"/> 
<apex:image url="{!URLFOR($Resource.MyApp, 'img/logo.jpg')}/> 
<link href="{!URLFOR($Resource.bootstrap, 'bootstrap/css/bootstrap.css')}" rel="stylesheet"/>
Track: Developers 
#CNX14 
JavaScript Remoting - Server-Side 
global with sharing class HotelRemoter { 
@RemoteAction 
global static List<Hotel__c> findAll() { 
return [SELECT Id, 
Name, 
Location__Latitude__s, 
Location__Longitude__s 
FROM Hotel__c]; 
} 
}
Track: Developers 
#CNX14 
"global with sharing"? 
• global 
• Available from outside of the application 
• with sharing 
• Run code with current user permissions. (Apex code runs in system context 
by default -- with access to all objects and fields)
Track: Developers 
#CNX14 
JavaScript Remoting - Visualforce Page 
<script> 
Visualforce.remoting.Manager.invokeAction( 
'{!$RemoteAction.HotelRemoter.findAll}', 
function (result, event) { 
if (event.status) { 
for (var i = 0; i < result.length; i++) { 
var lat = result[i].Location__Latitude__s; 
var lng = result[i].Location__Longitude__s; 
addMarker(lat, lng); 
} 
} else { 
alert(event.message); 
} 
} 
); 
</script>
REST APIs
Track: Developers 
#CNX14 
When? 
• Get Salesforce data from outside Salesforce 
• Integrate Salesforce in existing apps 
• Build consumer apps 
• Device integration (Internet of Things)
Track: Developers 
#CNX14 
Mobile SDK Example 
OAuth 
REST APIs
Track: Developers 
#CNX14 
Libraries 
• ForceTK 
• Salesforce REST API Toolkit 
• Nforce 
• node.js a REST API wrapper 
• ngForce 
• Visualforce Remoting integration in AngularJS 
• JSForce
Track: Developers 
#CNX14 
Take the after-session survey! 
Take the Survey in 
the Connections 
2014 Mobile App 
Join the 
Conversation! 
#CNX1 
4 
$50 
Starbucks 
Gift Card
Track: Developers 
#CNX14
Track: Developers 
#CNX14 
Questions?
Track: Developers 
#CNX14 
CUSTOMER JOURNEY 
SHOWCASE 
MARKETING 
THOUGHT LEADERS 
EMAIL MARKETING PRODUCT STRATEGY 
& ROADMAP 
PERSONAL 
TRANSFORMATION 
& GROWTH 
SOCIAL MARKETING MOBILE & WEB 
MARKETING 
DEVELOPERS HANDS-ON 
TRAINING 
INDUSTRY 
TRENDSETTERS 
CREATIVITY & 
INNOVATION 
SALESFORCE FOR 
MARKETERS 
ROUNDTABLES

Weitere ähnliche Inhalte

Was ist angesagt?

Salesforce Apex Hours:- Salesforce DX
Salesforce Apex Hours:- Salesforce DXSalesforce Apex Hours:- Salesforce DX
Salesforce Apex Hours:- Salesforce DXAmit Chaudhary
 
Charlotte DevOpsDays 2020 - building a service delivery infrastructure
Charlotte DevOpsDays 2020 - building a service delivery infrastructure  Charlotte DevOpsDays 2020 - building a service delivery infrastructure
Charlotte DevOpsDays 2020 - building a service delivery infrastructure PaulaPaulSlides
 
Kasten securing access to your kubernetes applications
Kasten securing access to your kubernetes applicationsKasten securing access to your kubernetes applications
Kasten securing access to your kubernetes applicationsLibbySchulze
 
Collaborative Contract Driven Development
Collaborative Contract Driven DevelopmentCollaborative Contract Driven Development
Collaborative Contract Driven DevelopmentBilly Korando
 
API Developer Experience: Why it Matters, and How Documenting Your API with S...
API Developer Experience: Why it Matters, and How Documenting Your API with S...API Developer Experience: Why it Matters, and How Documenting Your API with S...
API Developer Experience: Why it Matters, and How Documenting Your API with S...SmartBear
 
Batch Processing with Mule 4
Batch Processing with Mule 4Batch Processing with Mule 4
Batch Processing with Mule 4NeerajKumar1965
 
apidays LIVE Hong Kong 2021 - GraphQL : Beyond APIs, graph your enterprise by...
apidays LIVE Hong Kong 2021 - GraphQL : Beyond APIs, graph your enterprise by...apidays LIVE Hong Kong 2021 - GraphQL : Beyond APIs, graph your enterprise by...
apidays LIVE Hong Kong 2021 - GraphQL : Beyond APIs, graph your enterprise by...apidays
 
Testing Your APIs: Postman, Newman, and Beyond
Testing Your APIs: Postman, Newman, and BeyondTesting Your APIs: Postman, Newman, and Beyond
Testing Your APIs: Postman, Newman, and BeyondPostman
 
Indy meetup#7 effective unit-testing-mule
Indy meetup#7 effective unit-testing-muleIndy meetup#7 effective unit-testing-mule
Indy meetup#7 effective unit-testing-muleikram_ahamed
 
Courier March Product Release Notes
Courier March Product Release NotesCourier March Product Release Notes
Courier March Product Release NotesLetterdrop
 
Pivotal Tracker Overview
Pivotal Tracker OverviewPivotal Tracker Overview
Pivotal Tracker OverviewDan Podsedly
 
Bhopal mule soft_meetup_17july2021_azuredevopsintegration_mulesoft
Bhopal mule soft_meetup_17july2021_azuredevopsintegration_mulesoftBhopal mule soft_meetup_17july2021_azuredevopsintegration_mulesoft
Bhopal mule soft_meetup_17july2021_azuredevopsintegration_mulesoftAnkitaJaggi1
 

Was ist angesagt? (16)

Salesforce Apex Hours:- Salesforce DX
Salesforce Apex Hours:- Salesforce DXSalesforce Apex Hours:- Salesforce DX
Salesforce Apex Hours:- Salesforce DX
 
Charlotte DevOpsDays 2020 - building a service delivery infrastructure
Charlotte DevOpsDays 2020 - building a service delivery infrastructure  Charlotte DevOpsDays 2020 - building a service delivery infrastructure
Charlotte DevOpsDays 2020 - building a service delivery infrastructure
 
Kasten securing access to your kubernetes applications
Kasten securing access to your kubernetes applicationsKasten securing access to your kubernetes applications
Kasten securing access to your kubernetes applications
 
Collaborative Contract Driven Development
Collaborative Contract Driven DevelopmentCollaborative Contract Driven Development
Collaborative Contract Driven Development
 
Power of LWC + Mulesoft
Power of LWC + MulesoftPower of LWC + Mulesoft
Power of LWC + Mulesoft
 
API Developer Experience: Why it Matters, and How Documenting Your API with S...
API Developer Experience: Why it Matters, and How Documenting Your API with S...API Developer Experience: Why it Matters, and How Documenting Your API with S...
API Developer Experience: Why it Matters, and How Documenting Your API with S...
 
Batch Processing with Mule 4
Batch Processing with Mule 4Batch Processing with Mule 4
Batch Processing with Mule 4
 
Meetup presentation-june26
Meetup presentation-june26Meetup presentation-june26
Meetup presentation-june26
 
Selenium-4-and-appium-2
Selenium-4-and-appium-2Selenium-4-and-appium-2
Selenium-4-and-appium-2
 
apidays LIVE Hong Kong 2021 - GraphQL : Beyond APIs, graph your enterprise by...
apidays LIVE Hong Kong 2021 - GraphQL : Beyond APIs, graph your enterprise by...apidays LIVE Hong Kong 2021 - GraphQL : Beyond APIs, graph your enterprise by...
apidays LIVE Hong Kong 2021 - GraphQL : Beyond APIs, graph your enterprise by...
 
Meetup bangalore-may22nd2021
Meetup bangalore-may22nd2021Meetup bangalore-may22nd2021
Meetup bangalore-may22nd2021
 
Testing Your APIs: Postman, Newman, and Beyond
Testing Your APIs: Postman, Newman, and BeyondTesting Your APIs: Postman, Newman, and Beyond
Testing Your APIs: Postman, Newman, and Beyond
 
Indy meetup#7 effective unit-testing-mule
Indy meetup#7 effective unit-testing-muleIndy meetup#7 effective unit-testing-mule
Indy meetup#7 effective unit-testing-mule
 
Courier March Product Release Notes
Courier March Product Release NotesCourier March Product Release Notes
Courier March Product Release Notes
 
Pivotal Tracker Overview
Pivotal Tracker OverviewPivotal Tracker Overview
Pivotal Tracker Overview
 
Bhopal mule soft_meetup_17july2021_azuredevopsintegration_mulesoft
Bhopal mule soft_meetup_17july2021_azuredevopsintegration_mulesoftBhopal mule soft_meetup_17july2021_azuredevopsintegration_mulesoft
Bhopal mule soft_meetup_17july2021_azuredevopsintegration_mulesoft
 

Andere mochten auch

#CNX14 - Accelerate Pipeline with Pardot: The Salesforce B2B Marketing Automa...
#CNX14 - Accelerate Pipeline with Pardot: The Salesforce B2B Marketing Automa...#CNX14 - Accelerate Pipeline with Pardot: The Salesforce B2B Marketing Automa...
#CNX14 - Accelerate Pipeline with Pardot: The Salesforce B2B Marketing Automa...Salesforce Marketing Cloud
 
Information Architecture class8 02 27
Information Architecture class8 02 27Information Architecture class8 02 27
Information Architecture class8 02 27Marti Gukeisen
 
2011 eit program website presentation
2011 eit program website presentation2011 eit program website presentation
2011 eit program website presentationnfolk
 
IKT taikymas studijose. LieDM asociacijos požiūris
IKT taikymas studijose. LieDM asociacijos požiūrisIKT taikymas studijose. LieDM asociacijos požiūris
IKT taikymas studijose. LieDM asociacijos požiūrisAirina Volungeviciene
 
SALON_presentation-1
SALON_presentation-1SALON_presentation-1
SALON_presentation-1Yun Ko
 
Design de Interação para Dispositivos Móveis - turma de setembro 2011
Design de Interação para Dispositivos Móveis - turma de setembro 2011Design de Interação para Dispositivos Móveis - turma de setembro 2011
Design de Interação para Dispositivos Móveis - turma de setembro 2011Jane Vita
 
Sculpting Text: Easing the Pain of Designing in the Browser
Sculpting Text: Easing the Pain of Designing in the BrowserSculpting Text: Easing the Pain of Designing in the Browser
Sculpting Text: Easing the Pain of Designing in the BrowserStephen Hay
 
Hio v zavrsni izvjestaji_hrv
Hio v zavrsni izvjestaji_hrvHio v zavrsni izvjestaji_hrv
Hio v zavrsni izvjestaji_hrvUNDPhr
 
프로젝트제안서
프로젝트제안서프로젝트제안서
프로젝트제안서재혁 이
 
The Global Economic Impact of Private Equity Report 2008
The Global Economic Impact of Private Equity Report 2008 The Global Economic Impact of Private Equity Report 2008
The Global Economic Impact of Private Equity Report 2008 WorldEconomicForumDavos
 
Diamond jared colapso por que algunas sociedades perduran y otras desaparecen
Diamond jared   colapso por que algunas sociedades perduran y otras desaparecenDiamond jared   colapso por que algunas sociedades perduran y otras desaparecen
Diamond jared colapso por que algunas sociedades perduran y otras desaparecenosoconelalca
 

Andere mochten auch (17)

#CNX14 - Accelerate Pipeline with Pardot: The Salesforce B2B Marketing Automa...
#CNX14 - Accelerate Pipeline with Pardot: The Salesforce B2B Marketing Automa...#CNX14 - Accelerate Pipeline with Pardot: The Salesforce B2B Marketing Automa...
#CNX14 - Accelerate Pipeline with Pardot: The Salesforce B2B Marketing Automa...
 
Information Architecture class8 02 27
Information Architecture class8 02 27Information Architecture class8 02 27
Information Architecture class8 02 27
 
Wissh Graphics
Wissh GraphicsWissh Graphics
Wissh Graphics
 
RDF Resume
RDF ResumeRDF Resume
RDF Resume
 
Git for you
Git for youGit for you
Git for you
 
2011 eit program website presentation
2011 eit program website presentation2011 eit program website presentation
2011 eit program website presentation
 
授業資料 - ファイルシステム
授業資料 - ファイルシステム授業資料 - ファイルシステム
授業資料 - ファイルシステム
 
IKT taikymas studijose. LieDM asociacijos požiūris
IKT taikymas studijose. LieDM asociacijos požiūrisIKT taikymas studijose. LieDM asociacijos požiūris
IKT taikymas studijose. LieDM asociacijos požiūris
 
SALON_presentation-1
SALON_presentation-1SALON_presentation-1
SALON_presentation-1
 
Design de Interação para Dispositivos Móveis - turma de setembro 2011
Design de Interação para Dispositivos Móveis - turma de setembro 2011Design de Interação para Dispositivos Móveis - turma de setembro 2011
Design de Interação para Dispositivos Móveis - turma de setembro 2011
 
Sculpting Text: Easing the Pain of Designing in the Browser
Sculpting Text: Easing the Pain of Designing in the BrowserSculpting Text: Easing the Pain of Designing in the Browser
Sculpting Text: Easing the Pain of Designing in the Browser
 
Hio v zavrsni izvjestaji_hrv
Hio v zavrsni izvjestaji_hrvHio v zavrsni izvjestaji_hrv
Hio v zavrsni izvjestaji_hrv
 
프로젝트제안서
프로젝트제안서프로젝트제안서
프로젝트제안서
 
LieDM asociacija - 2013
LieDM asociacija - 2013LieDM asociacija - 2013
LieDM asociacija - 2013
 
Unifranz
UnifranzUnifranz
Unifranz
 
The Global Economic Impact of Private Equity Report 2008
The Global Economic Impact of Private Equity Report 2008 The Global Economic Impact of Private Equity Report 2008
The Global Economic Impact of Private Equity Report 2008
 
Diamond jared colapso por que algunas sociedades perduran y otras desaparecen
Diamond jared   colapso por que algunas sociedades perduran y otras desaparecenDiamond jared   colapso por que algunas sociedades perduran y otras desaparecen
Diamond jared colapso por que algunas sociedades perduran y otras desaparecen
 

Ähnlich wie #CNX14 - Intro to Force

Write better code faster with rest data contracts api strat
Write better code faster with rest data contracts   api stratWrite better code faster with rest data contracts   api strat
Write better code faster with rest data contracts api stratKris Chant
 
Coding Apps in the Cloud with Force.com - Part I
Coding Apps in the Cloud with Force.com - Part ICoding Apps in the Cloud with Force.com - Part I
Coding Apps in the Cloud with Force.com - Part ISalesforce Developers
 
Hands-On Workshop: Introduction to Development on Force.com for Developers
Hands-On Workshop: Introduction to Development on Force.com for DevelopersHands-On Workshop: Introduction to Development on Force.com for Developers
Hands-On Workshop: Introduction to Development on Force.com for DevelopersSalesforce Developers
 
salesforce_4+_years_exp
salesforce_4+_years_expsalesforce_4+_years_exp
salesforce_4+_years_expSrinivas .
 
Apex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong FoundationsApex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong FoundationsSalesforce Developers
 
Create Salesforce online IDE in 30 minutes
Create Salesforce online IDE in 30 minutesCreate Salesforce online IDE in 30 minutes
Create Salesforce online IDE in 30 minutesJitendra Zaa
 
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...Malin Weiss
 
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...Speedment, Inc.
 
Dynamics ax 2012 development overview
Dynamics ax 2012 development overviewDynamics ax 2012 development overview
Dynamics ax 2012 development overviewAli Raza Zaidi
 
iOS Beginners Lesson 1
iOS Beginners Lesson 1iOS Beginners Lesson 1
iOS Beginners Lesson 1Calvin Cheng
 
Hands-On Workshop: Introduction to Coding for on Force.com for Admins and Non...
Hands-On Workshop: Introduction to Coding for on Force.com for Admins and Non...Hands-On Workshop: Introduction to Coding for on Force.com for Admins and Non...
Hands-On Workshop: Introduction to Coding for on Force.com for Admins and Non...Salesforce Developers
 
Elevate london dec 2014.pptx
Elevate london dec 2014.pptxElevate london dec 2014.pptx
Elevate london dec 2014.pptxPeter Chittum
 
Intro to .NET for Government Developers
Intro to .NET for Government DevelopersIntro to .NET for Government Developers
Intro to .NET for Government DevelopersFrank La Vigne
 
Apex Code Analysis Using the Tooling API and Canvas
Apex Code Analysis Using the Tooling API and CanvasApex Code Analysis Using the Tooling API and Canvas
Apex Code Analysis Using the Tooling API and CanvasSalesforce Developers
 
GraphQL: The Missing Link Between Frontend and Backend Devs
GraphQL: The Missing Link Between Frontend and Backend DevsGraphQL: The Missing Link Between Frontend and Backend Devs
GraphQL: The Missing Link Between Frontend and Backend DevsSashko Stubailo
 

Ähnlich wie #CNX14 - Intro to Force (20)

Write better code faster with rest data contracts api strat
Write better code faster with rest data contracts   api stratWrite better code faster with rest data contracts   api strat
Write better code faster with rest data contracts api strat
 
Coding Apps in the Cloud with Force.com - Part I
Coding Apps in the Cloud with Force.com - Part ICoding Apps in the Cloud with Force.com - Part I
Coding Apps in the Cloud with Force.com - Part I
 
Hands-On Workshop: Introduction to Development on Force.com for Developers
Hands-On Workshop: Introduction to Development on Force.com for DevelopersHands-On Workshop: Introduction to Development on Force.com for Developers
Hands-On Workshop: Introduction to Development on Force.com for Developers
 
salesforce_4+_years_exp
salesforce_4+_years_expsalesforce_4+_years_exp
salesforce_4+_years_exp
 
Apex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong FoundationsApex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong Foundations
 
Create Salesforce online IDE in 30 minutes
Create Salesforce online IDE in 30 minutesCreate Salesforce online IDE in 30 minutes
Create Salesforce online IDE in 30 minutes
 
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
 
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
 
Dynamics ax 2012 development overview
Dynamics ax 2012 development overviewDynamics ax 2012 development overview
Dynamics ax 2012 development overview
 
iOS Beginners Lesson 1
iOS Beginners Lesson 1iOS Beginners Lesson 1
iOS Beginners Lesson 1
 
Hands-On Workshop: Introduction to Coding for on Force.com for Admins and Non...
Hands-On Workshop: Introduction to Coding for on Force.com for Admins and Non...Hands-On Workshop: Introduction to Coding for on Force.com for Admins and Non...
Hands-On Workshop: Introduction to Coding for on Force.com for Admins and Non...
 
Resume
ResumeResume
Resume
 
Elevate london dec 2014.pptx
Elevate london dec 2014.pptxElevate london dec 2014.pptx
Elevate london dec 2014.pptx
 
Intro to .NET for Government Developers
Intro to .NET for Government DevelopersIntro to .NET for Government Developers
Intro to .NET for Government Developers
 
Apex Code Analysis Using the Tooling API and Canvas
Apex Code Analysis Using the Tooling API and CanvasApex Code Analysis Using the Tooling API and Canvas
Apex Code Analysis Using the Tooling API and Canvas
 
ChandanResume
ChandanResumeChandanResume
ChandanResume
 
Linq
LinqLinq
Linq
 
GraphQL: The Missing Link Between Frontend and Backend Devs
GraphQL: The Missing Link Between Frontend and Backend DevsGraphQL: The Missing Link Between Frontend and Backend Devs
GraphQL: The Missing Link Between Frontend and Backend Devs
 
Resume (1)
Resume (1)Resume (1)
Resume (1)
 

Mehr von Salesforce Marketing Cloud

Salesforce Marketing Cloud Partner Webinar: A New Twist on Growing Your List!
Salesforce Marketing Cloud Partner Webinar: A New Twist on Growing Your List! Salesforce Marketing Cloud Partner Webinar: A New Twist on Growing Your List!
Salesforce Marketing Cloud Partner Webinar: A New Twist on Growing Your List! Salesforce Marketing Cloud
 
#CNX14 - Using Ruby for Reliability, Consistency, and Speed
#CNX14 - Using Ruby for Reliability, Consistency, and Speed#CNX14 - Using Ruby for Reliability, Consistency, and Speed
#CNX14 - Using Ruby for Reliability, Consistency, and SpeedSalesforce Marketing Cloud
 
#CNX14 - Building Enterprise Mobile Apps With Salesforce1
#CNX14 - Building Enterprise Mobile Apps With Salesforce1#CNX14 - Building Enterprise Mobile Apps With Salesforce1
#CNX14 - Building Enterprise Mobile Apps With Salesforce1Salesforce Marketing Cloud
 
#CNX14 - Get Started with Mobile Marketing: Email, SMS, Push and Responsive E...
#CNX14 - Get Started with Mobile Marketing: Email, SMS, Push and Responsive E...#CNX14 - Get Started with Mobile Marketing: Email, SMS, Push and Responsive E...
#CNX14 - Get Started with Mobile Marketing: Email, SMS, Push and Responsive E...Salesforce Marketing Cloud
 
#CNX14 - Personalized Experiences: Web & Email Customization Made Easy
#CNX14 - Personalized Experiences: Web & Email Customization Made Easy#CNX14 - Personalized Experiences: Web & Email Customization Made Easy
#CNX14 - Personalized Experiences: Web & Email Customization Made EasySalesforce Marketing Cloud
 
#CNX14 - The Power to Predict: The How-To's of Personalized Content
#CNX14 - The Power to Predict: The How-To's of Personalized Content#CNX14 - The Power to Predict: The How-To's of Personalized Content
#CNX14 - The Power to Predict: The How-To's of Personalized ContentSalesforce Marketing Cloud
 
#CNX14 - Make Audiences the Center of Your Advertising for Greater Performance
#CNX14 - Make Audiences the Center of Your Advertising for Greater Performance#CNX14 - Make Audiences the Center of Your Advertising for Greater Performance
#CNX14 - Make Audiences the Center of Your Advertising for Greater PerformanceSalesforce Marketing Cloud
 
#CNX14 - Social Listening: From Getting Started to Executing at Scale
#CNX14 - Social Listening: From Getting Started to Executing at Scale#CNX14 - Social Listening: From Getting Started to Executing at Scale
#CNX14 - Social Listening: From Getting Started to Executing at ScaleSalesforce Marketing Cloud
 
#CNX14 - Great Customer Service is Great Marketing
#CNX14 - Great Customer Service is Great Marketing#CNX14 - Great Customer Service is Great Marketing
#CNX14 - Great Customer Service is Great MarketingSalesforce Marketing Cloud
 
#CNX14 - Content Marketing: The Art of Business Storytelling
#CNX14 - Content Marketing: The Art of Business Storytelling#CNX14 - Content Marketing: The Art of Business Storytelling
#CNX14 - Content Marketing: The Art of Business StorytellingSalesforce Marketing Cloud
 
#CNX14 - Propelling Your Career with Mentors & Sponsors
#CNX14 - Propelling Your Career with Mentors & Sponsors#CNX14 - Propelling Your Career with Mentors & Sponsors
#CNX14 - Propelling Your Career with Mentors & SponsorsSalesforce Marketing Cloud
 
#CNX14 - Use Chatter and Communities to Drive Stronger Customer Engagement
#CNX14 - Use Chatter and Communities to Drive Stronger Customer Engagement#CNX14 - Use Chatter and Communities to Drive Stronger Customer Engagement
#CNX14 - Use Chatter and Communities to Drive Stronger Customer EngagementSalesforce Marketing Cloud
 
#CNX14 - Accelerate Pipeline with Pardot: The Salesforce B2B Marketing Automa...
#CNX14 - Accelerate Pipeline with Pardot: The Salesforce B2B Marketing Automa...#CNX14 - Accelerate Pipeline with Pardot: The Salesforce B2B Marketing Automa...
#CNX14 - Accelerate Pipeline with Pardot: The Salesforce B2B Marketing Automa...Salesforce Marketing Cloud
 
#CNX14 - Marketing and Sales United With a Common Goal
#CNX14 - Marketing and Sales United With a Common Goal#CNX14 - Marketing and Sales United With a Common Goal
#CNX14 - Marketing and Sales United With a Common GoalSalesforce Marketing Cloud
 
#CNX14 - 7 Technology Trends Transforming Customer Communication
#CNX14 - 7 Technology Trends Transforming Customer Communication#CNX14 - 7 Technology Trends Transforming Customer Communication
#CNX14 - 7 Technology Trends Transforming Customer CommunicationSalesforce Marketing Cloud
 
#CNX14 - The Connected Nonprofit and the Connected Campus: Creating Stronger ...
#CNX14 - The Connected Nonprofit and the Connected Campus: Creating Stronger ...#CNX14 - The Connected Nonprofit and the Connected Campus: Creating Stronger ...
#CNX14 - The Connected Nonprofit and the Connected Campus: Creating Stronger ...Salesforce Marketing Cloud
 
#CNX14 - The Strategic Formula for Email Conversion Success
#CNX14 - The Strategic Formula for Email Conversion Success#CNX14 - The Strategic Formula for Email Conversion Success
#CNX14 - The Strategic Formula for Email Conversion SuccessSalesforce Marketing Cloud
 

Mehr von Salesforce Marketing Cloud (20)

Salesforce Marketing Cloud Partner Webinar: A New Twist on Growing Your List!
Salesforce Marketing Cloud Partner Webinar: A New Twist on Growing Your List! Salesforce Marketing Cloud Partner Webinar: A New Twist on Growing Your List!
Salesforce Marketing Cloud Partner Webinar: A New Twist on Growing Your List!
 
#CNX14 - Using Ruby for Reliability, Consistency, and Speed
#CNX14 - Using Ruby for Reliability, Consistency, and Speed#CNX14 - Using Ruby for Reliability, Consistency, and Speed
#CNX14 - Using Ruby for Reliability, Consistency, and Speed
 
#CNX14 - Building Enterprise Mobile Apps With Salesforce1
#CNX14 - Building Enterprise Mobile Apps With Salesforce1#CNX14 - Building Enterprise Mobile Apps With Salesforce1
#CNX14 - Building Enterprise Mobile Apps With Salesforce1
 
#CNX14 - Disruption Panel
#CNX14 - Disruption Panel#CNX14 - Disruption Panel
#CNX14 - Disruption Panel
 
#CNX14 - Get Started with Mobile Marketing: Email, SMS, Push and Responsive E...
#CNX14 - Get Started with Mobile Marketing: Email, SMS, Push and Responsive E...#CNX14 - Get Started with Mobile Marketing: Email, SMS, Push and Responsive E...
#CNX14 - Get Started with Mobile Marketing: Email, SMS, Push and Responsive E...
 
#CNX14 - Personalized Experiences: Web & Email Customization Made Easy
#CNX14 - Personalized Experiences: Web & Email Customization Made Easy#CNX14 - Personalized Experiences: Web & Email Customization Made Easy
#CNX14 - Personalized Experiences: Web & Email Customization Made Easy
 
#CNX14 - The Power to Predict: The How-To's of Personalized Content
#CNX14 - The Power to Predict: The How-To's of Personalized Content#CNX14 - The Power to Predict: The How-To's of Personalized Content
#CNX14 - The Power to Predict: The How-To's of Personalized Content
 
#CNX14 - Make Audiences the Center of Your Advertising for Greater Performance
#CNX14 - Make Audiences the Center of Your Advertising for Greater Performance#CNX14 - Make Audiences the Center of Your Advertising for Greater Performance
#CNX14 - Make Audiences the Center of Your Advertising for Greater Performance
 
#CNX14 - Social Listening: From Getting Started to Executing at Scale
#CNX14 - Social Listening: From Getting Started to Executing at Scale#CNX14 - Social Listening: From Getting Started to Executing at Scale
#CNX14 - Social Listening: From Getting Started to Executing at Scale
 
#CNX14 - Great Customer Service is Great Marketing
#CNX14 - Great Customer Service is Great Marketing#CNX14 - Great Customer Service is Great Marketing
#CNX14 - Great Customer Service is Great Marketing
 
#CNX14 - Content Marketing: The Art of Business Storytelling
#CNX14 - Content Marketing: The Art of Business Storytelling#CNX14 - Content Marketing: The Art of Business Storytelling
#CNX14 - Content Marketing: The Art of Business Storytelling
 
#CNX14 - Crisis Communication
#CNX14 - Crisis Communication#CNX14 - Crisis Communication
#CNX14 - Crisis Communication
 
#CNX14 - Propelling Your Career with Mentors & Sponsors
#CNX14 - Propelling Your Career with Mentors & Sponsors#CNX14 - Propelling Your Career with Mentors & Sponsors
#CNX14 - Propelling Your Career with Mentors & Sponsors
 
#CNX14 - Use Chatter and Communities to Drive Stronger Customer Engagement
#CNX14 - Use Chatter and Communities to Drive Stronger Customer Engagement#CNX14 - Use Chatter and Communities to Drive Stronger Customer Engagement
#CNX14 - Use Chatter and Communities to Drive Stronger Customer Engagement
 
#CNX14 - Accelerate Pipeline with Pardot: The Salesforce B2B Marketing Automa...
#CNX14 - Accelerate Pipeline with Pardot: The Salesforce B2B Marketing Automa...#CNX14 - Accelerate Pipeline with Pardot: The Salesforce B2B Marketing Automa...
#CNX14 - Accelerate Pipeline with Pardot: The Salesforce B2B Marketing Automa...
 
#CNX14 - Marketing and Sales United With a Common Goal
#CNX14 - Marketing and Sales United With a Common Goal#CNX14 - Marketing and Sales United With a Common Goal
#CNX14 - Marketing and Sales United With a Common Goal
 
#CNX14 - 7 Technology Trends Transforming Customer Communication
#CNX14 - 7 Technology Trends Transforming Customer Communication#CNX14 - 7 Technology Trends Transforming Customer Communication
#CNX14 - 7 Technology Trends Transforming Customer Communication
 
#CNX14 - The Connected Nonprofit and the Connected Campus: Creating Stronger ...
#CNX14 - The Connected Nonprofit and the Connected Campus: Creating Stronger ...#CNX14 - The Connected Nonprofit and the Connected Campus: Creating Stronger ...
#CNX14 - The Connected Nonprofit and the Connected Campus: Creating Stronger ...
 
#CNX14 - The Strategic Formula for Email Conversion Success
#CNX14 - The Strategic Formula for Email Conversion Success#CNX14 - The Strategic Formula for Email Conversion Success
#CNX14 - The Strategic Formula for Email Conversion Success
 
#CNX14 - Data for Designers
#CNX14 - Data for Designers#CNX14 - Data for Designers
#CNX14 - Data for Designers
 

#CNX14 - Intro to Force

  • 1. Track: Developers #CNX14 #CNX14 Intro to Force.com James Ward Platform Evangelist @_JamesWard
  • 2. Track: Developers #CNX14 Salesforce1 App Salesforce1 Platform APIs Force.com Heroku ExactTarget Fuel Sales Cloud Service Cloud Marketing Cloud AppExchang e Custom Employee Apps Customer & Partner Apps Salesforce1 Platform Services
  • 3. Track: Developers #CNX14 Idea Build App Idea buy & setup hardware install complex software define user access build & test security make it mobile & social setup reporting & analytics build app Traditional Platforms 6-12 Months? App App
  • 4. Track: Developers #CNX14 Platform Services The Fastest Path From Idea To App
  • 5. Track: Developers #CNX14 Salesforce: #1 Enterprise Cloud Platform Market Share #1 Enterprise Platform #1 Magic Quadrant for Application Platform as a Service January, 2014 Analyst: Yefim V. Natis This graphic was published by Gartner, Inc. as part of a larger research document and should be evaluated in the context of the entire document. The Gartner document is available upon request from Salesforce.com. Gartner does not endorse any vendor, product or service depicted in its research publications, and does not advise technology users to select only those vendors with the highest ratings. Gartner research publications consist of the opinions of Gartner's research organization and should not be construed as statements of fact. Gartner disclaims all warranties, expressed or implied, with respect to this research, including any warranties of merchantability or fitness for a particular purpose.
  • 6. Track: Developers #CNX14 Declarative Approach Programmatic Approach Visualforce Pages Visualforce Components Apex Controllers Apex Triggers Metadata API REST API Bulk API Page Layouts Record Types Formula Fields Validation Rules Workflows and Approvals Custom Objects Custom Fields Relationships User Interface Business Logic Data Model
  • 7. Track: Developers #CNX14 Free Developer Environment http://developer.salesforce.com/signup
  • 9. Track: Developers #CNX14 Salesforce Objects • Similar to Tables (with more metadata) • Standard objects out-of-the-box • Account, Contact, Opportunity, … • You can add custom fields to standard objects • Rating__c, Twitter__c, … • You can create custom objects • i.e. Speaker__c, Session__c, Hotel__c • Custom objects have standard fields • Id, Owner, LastModifiedDate, LastModifiedBy, …
  • 10. Track: Developers #CNX14 Rich Data Types • Auto Number • Formula • Roll-Up Summary • Lookup • Master-Detail • Checkbox • Currency • Date • Picklist (multi select) • Text • Text Area • Text Area (Long) • Text Area (Rich) • Text (Encrypted) • URL  Date/Time  Email  Geolocation  Number  Percent  Phone  Picklist
  • 11. Track: Developers #CNX14 Modeling One-to-Many Relationships An expense has one expense report An expense report has many expenses
  • 12. Track: Developers #CNX14 Modeling Many-to-Many Relationships A speaker can have many session assignments A session can have many speaker assignments
  • 13. Track: Developers #CNX14 Id • All objects are given an Id field • Globally unique Id is assigned at record creation • "Primary key" used to access records
  • 14. Track: Developers #CNX14 Record Name • Human readable / logical identifier • Text or Auto Number ("Intro to Apex" or SP-00002) • Uniqueness not enforced
  • 15. Track: Developers #CNX14 When you create an Object, you get… • A CRUD user interface • Instant Mobile App access (Salesforce1) • A REST API • Rich Metadata • Indexed search
  • 17. Track: Developers #CNX14 What's an Application? • Group of tabs that provide easy access to related features • Salesforce comes with standards apps • Sales, Call Center, Marketing, … • You can create your own apps • Tabs can be: • Object pages, Visualforce pages, Canvas app
  • 18. Track: Developers #CNX14 Page Layouts Let you customize all aspects of the layout, related lists, …
  • 20. Track: Developers #CNX14 What is Apex? • Salesforce platform language • Cloud based compiling, debugging and unit testing • Object-oriented • Strongly typed • Classes and Interfaces • Similar to Java
  • 21. Track: Developers #CNX14 Apex and Java Same • Primitive data types • Flow control (if, for, while, …) • Exception handling • Collections: Lists, Sets, … Different • Case insensitive • Single quote strings: 'Joe' • Id data type • Built-in support for data access
  • 22. Track: Developers #CNX14 Apex Class public class MortgageCalculator { public Double amount { get; set; } public Double rate { get; set; } public Integer years { get; set; } public Double calculateMonthlyPayment() { Integer months = years * 12; Double monthlyRate = rate / (12 * 100); return amount * (monthlyRate/ (1 - Math.pow(1 + monthlyRate, -months))); } }
  • 23. Track: Developers #CNX14 Development Tools • Developer Console • Force.com IDE (Eclipse Plugin) • Mavens Mate (Sublime Plugin) • Force CLI
  • 24. Track: Developers #CNX14 Developer Console • Browser Based IDE • Create Classes, Triggers, Pages • Execute Apex Anonymously • Execute SOQL Queries • Run Unit Tests • Review Debug Logs
  • 25. Data Access with SOQL and DML
  • 26. Track: Developers #CNX14 SOQL • Salesforce Object Query language • Similar to SQL • Streamlined syntax to traverse object relationships • Built into Apex
  • 27. Track: Developers #CNX14 SELECT Id, Name, Phone FROM Contact
  • 28. Track: Developers #CNX14 SELECT Id, Name, Phone FROM Contact WHERE Phone <> null
  • 29. Track: Developers #CNX14 SELECT Id, Name, Phone FROM Contact WHERE Phone <> null AND Name LIKE '%rose%'
  • 30. Track: Developers #CNX14 SELECT Id, Name, Phone FROM Contact WHERE Phone <> null AND Name LIKE '%rose%' ORDER BY Name
  • 31. Track: Developers #CNX14 SELECT Id, Name, Phone, Account.Name FROM Contact WHERE Phone <> null AND Name LIKE '%rose%' ORDER BY Name
  • 32. Track: Developers #CNX14 SELECT Id, Name, Phone, Account.Name FROM Contact WHERE Phone <> null AND Name LIKE '%rose%' ORDER BY Name LIMIT 50
  • 33. Track: Developers #CNX14 Executing SOQL in the Developer Console
  • 34. Track: Developers #CNX14 Inlining SOQL in Apex Integer i = [select count() from Session__c];
  • 35. Track: Developers #CNX14 Inlining SOQL in Apex String level = 'Advanced'; List<Session__c> sessions = [SELECT Name, Level__c FROM Session__c WHERE Level__c = :level];
  • 36. Track: Developers #CNX14 Inlining SOQL in Apex List<String> levels = new List<String>(); levels.add('Intermediate'); levels.add('Advanced'); List<Session__c> sessions = [SELECT Name, Level__c FROM Session__c WHERE Level__c IN :levels];
  • 37. Track: Developers #CNX14 Inlining SOQL in Apex for (Speaker__c s : [select email__c from Speaker__c]) { System.debug(s.email__c); }
  • 38. Track: Developers #CNX14 insert Session__c session = new Session__c(); session.name = 'Apex 101'; session.level__c = 'Beginner'; insert session;
  • 39. Track: Developers #CNX14 insert Session__c session = new Session__c( name = 'Apex 201', level__c = 'Intermediate' ); insert session;
  • 40. Track: Developers #CNX14 update String oldName = 'Apex 101'; String newName = 'Apex for Beginners'; Session__c session = [SELECT Id, Name FROM Session__c WHERE Name=:oldName]; session.name = newName; update session;
  • 41. Track: Developers #CNX14 delete String name = 'Testing 501'; Session__c session = SELECT Name FROM Session__c WHERE Name=:name]; delete session;
  • 43. Track: Developers #CNX14 Trigger • Apex code executed on database events • Before or after: • Insert • Update • Delete • Undelete
  • 44. Track: Developers #CNX14 Before or After? • Before • Update or validate values before they are saved to the database • Example: Prevent double-booking of a speaker • After • Need access to values set by the database (Id, lastUpdated, …) • Example: Send speaker confirmation email
  • 45. Track: Developers #CNX14 Bulk Mode • Trigger API designed to support bulk operations • Data Import, Bulk API, etc. • Triggers work on bulk of records, not single records • Context variables provide access to data: • Trigger.old and Trigger.new (List) • Trigger.oldMap and Trigger.newMap (Map)
  • 46. Track: Developers #CNX14 Example Trigger on Account (after insert) { for (Account account : Trigger.new) { Case case = new Case(); case.Subject = 'Mail Welcome Kit'; case.Account.Id = account.Id; insert case; } }
  • 48. Track: Developers #CNX14 Model-View-Controller Model Data + Rules Controller View-Model interactions View UI code  Separation of concerns – No data access code in view – No view code in controller  Benefits – Minimize impact of changes – More reusable components
  • 49. Track: Developers #CNX14 Model-View-Controller in Salesforce View • Metadata • Standard Pages • Visualforce Pages • External apps Controller • Standard Controllers • Controller Extensions • Custom Controllers (all Apex) Model • Metadata • Objects • Triggers (Apex) • Classes (Apex)
  • 50. Track: Developers #CNX14 What's a Visualforce Page? • The View in MVC architecture • HTML page with tags executed at the server-side to generate dynamic content • Similar to JSP and ASP • Can leverage JavaScript and CSS libraries
  • 51. Track: Developers #CNX14 Expression Language • Anything inside of {! } is evaluated as an expression • Same expression language as Formulas • Same global variables are available. For example: • {!$User.FirstName} {!$User.LastName}
  • 52. Track: Developers #CNX14 Example 1 <apex:page> <h1>Hello, {!$User.FirstName}</h1> </apex:page>
  • 53. Track: Developers #CNX14 Example 2 <apex:page standardController="Contact"> <apex:form> Standard controller object <apex:inputField value="{!contact.firstname}"/> <apex:inputField value="{!contact.lastname}"/> <apex:commandButton action="{!save}" value="Save"/> </apex:form> </apex:page> Function in standard controller
  • 54. Track: Developers #CNX14 Standard Controller • A standard controller is available for all objects • You don't have to write it! • Provides standard CRUD operations • Create, Update, Delete, Field Access, etc. • Can be extended with more capabilities • Uses id in URL to access object
  • 55. Track: Developers #CNX14 Component Library • Presentation tags – <apex:pageBlock title="My Account Contacts"> • Fine grained data tags • <apex:outputField value="{!contact.firstname}"> • <apex:inputField value="{!contact.firstname}"> • Coarse grained data tags • <apex:detail> • <apex:pageBlockTable> • Action tags • <apex:commandButton action="{!save}" >
  • 56. Track: Developers #CNX14 Email Templates Embedded in Page Layouts Generate PDFs Custom Tabs Mobile Interfaces Page Overrides Where can I use Visualforce?
  • 58. Track: Developers #CNX14 Custom Controllers • Custom class written in Apex • Can override standard behavior • Can add new capabilities
  • 59. Track: Developers #CNX14 Defining a Controller Extension <apex:page standardController="Speaker__c" extensions="SpeakerCtrlExt"> Provides basic CRUD Overrides standard actions and/or provide additional capabilities
  • 60. Track: Developers #CNX14 Anatomy of a Controller Extension public class SpeakerCtrlExt { private final Speaker__c speaker; private ApexPages.StandardController stdController; public SpeakerCtrlExt (ApexPages.StandardController ctrl) { this.stdController = ctrl; this.speaker = (Speaker__c)ctrl.getRecord(); } // method overrides // custom methods }
  • 62. Track: Developers #CNX14 Why JavaScript? • Build Engaging User Experiences • Leverage JavaScript Libraries • Build Custom Applications
  • 63. Track: Developers #CNX14 JavaScript in Visualforce Pages Visualforce Page JavaScript Remoting Remote Objects (REST)
  • 65. Track: Developers #CNX14 Using JavaScript and CSS Libraries • Hosted elsewhere <script src="https://maps.googleapis.com/maps/api/js"></script> • Hosted in Salesforce • Upload individual file or Zip file as Static Resource • Reference asset using special tags
  • 66. Track: Developers #CNX14 Referencing a Static Resource // Single file <apex:includeScript value="{!$Resource.jquery}"/> <apex:image url="{!$Resource.myLogo}"/> // ZIP file <apex:includeScript value="{!URLFOR($Resource.MyApp, 'js/app.js')}"/> <apex:image url="{!URLFOR($Resource.MyApp, 'img/logo.jpg')}/> <link href="{!URLFOR($Resource.bootstrap, 'bootstrap/css/bootstrap.css')}" rel="stylesheet"/>
  • 67. Track: Developers #CNX14 JavaScript Remoting - Server-Side global with sharing class HotelRemoter { @RemoteAction global static List<Hotel__c> findAll() { return [SELECT Id, Name, Location__Latitude__s, Location__Longitude__s FROM Hotel__c]; } }
  • 68. Track: Developers #CNX14 "global with sharing"? • global • Available from outside of the application • with sharing • Run code with current user permissions. (Apex code runs in system context by default -- with access to all objects and fields)
  • 69. Track: Developers #CNX14 JavaScript Remoting - Visualforce Page <script> Visualforce.remoting.Manager.invokeAction( '{!$RemoteAction.HotelRemoter.findAll}', function (result, event) { if (event.status) { for (var i = 0; i < result.length; i++) { var lat = result[i].Location__Latitude__s; var lng = result[i].Location__Longitude__s; addMarker(lat, lng); } } else { alert(event.message); } } ); </script>
  • 71. Track: Developers #CNX14 When? • Get Salesforce data from outside Salesforce • Integrate Salesforce in existing apps • Build consumer apps • Device integration (Internet of Things)
  • 72. Track: Developers #CNX14 Mobile SDK Example OAuth REST APIs
  • 73. Track: Developers #CNX14 Libraries • ForceTK • Salesforce REST API Toolkit • Nforce • node.js a REST API wrapper • ngForce • Visualforce Remoting integration in AngularJS • JSForce
  • 74. Track: Developers #CNX14 Take the after-session survey! Take the Survey in the Connections 2014 Mobile App Join the Conversation! #CNX1 4 $50 Starbucks Gift Card
  • 77. Track: Developers #CNX14 CUSTOMER JOURNEY SHOWCASE MARKETING THOUGHT LEADERS EMAIL MARKETING PRODUCT STRATEGY & ROADMAP PERSONAL TRANSFORMATION & GROWTH SOCIAL MARKETING MOBILE & WEB MARKETING DEVELOPERS HANDS-ON TRAINING INDUSTRY TRENDSETTERS CREATIVITY & INNOVATION SALESFORCE FOR MARKETERS ROUNDTABLES

Hinweis der Redaktion

  1. They should create a brand new DE org if they have not done so recently. They should not use a Trial, Sandbox or Production org. Emphasize our DE orgs are free and do not expire (they are not product trials)