bbva workshop
Post on 21-Oct-2014
165 views
DESCRIPTION
TRANSCRIPT
Salesforce1 PlatformBasics
David ScruggsPlatform Engineer
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.
What are we doing?
Setup and Introductions
Salesforce1 Platform Overview
Declarative Development
User Interface
Mobility
Programmatic Development and Heroku
Setup and Introductions
Login and get ready
Internet Username/PasswordSF13/SF13
Be interactive
http://developer.force.com/join
http://bit.ly/heroku_qs
http://eclipse-plugin.herokuapp.com/
SETUP: Free Developer Environment
Online Workbook
http://bit.ly/basics_book
http://bit.ly/heroku_qsIf needed:
http://bit.ly/c9heroku
If you’re interested: http://bit.ly/force_apex_book
Salesforce1 Platform Overview
Salesforce is a Platform Company. Period. -Alex Williams, TechCrunch
500MAPI Calls Per Day6BLines of
Apex4M+
Apps Built on the Platform
72BRecords Stored
Salesforce1 Platform
1.4 million…and growing
CoreServices
Chatter
Multi-languag
e
Translation
Workbench
Email Service
s
Analytics
CloudDatabas
e
Scheema
Builder
Search
Visualforce
MonitoringMulti-tenant
Apex
Data-level
Security
Workflows
APIs
Mobile Services
Social
APIs
Analytics
APIs
Bulk APIs
Rest APIs
Metadata
APIs
Soap APIs
Private App
Exchange
Custom Actions
Identity
Mobile Notificatio
ns
Tooling
APIs
Mobile Packs
Mobile SDK
Offline Support
Streaming
APIs
Geolocation
ET 1:1 ET Fuel
Heroku1
Heroku Add-Ons
Sharing Model
ET API
Salesforce1 Platform
Every Object, Every Field: Salesforce1 Mobile Accessible
AppExchange Apps:
Dropbox Concur Evernote ServiceMax More
Custom Apps and Integrations:
SAP Oracle Everything Custom More
Sales, Service and Marketing
Accounts Cases CampaignsDashboards More
Declarative and Programmatic
Declarative Programmatic
Visualforce PagesVisualforce Components
Apex ControllersApex Triggers
Metadata APIREST APIBulk API
Formula FieldsValidation Rules
Workflows and Approvals
ObjectsFields
Relationships
Page LayoutsRecord Types
User Interface
Business Logic
Data Model
Your App
Every Object, Every Field: API Enabled
GET
POST
PATCH
DELETE
OAuth 2.0HTTPS
Every Object, Every Field: Apex and Visualforce Enabled
Visualforce PagesVisualforce Components
Apex ControllersApex Triggers
Custom UICustom UI
Custom LogicCustom Logic
ChatterFramework for the social enterprise
Declarative Development
Declarative ApplicationsBusiness logic expressed without programming
Warehouse Application Requirements
Track price and inventory on hand for all merchandise
Create invoices containing one or more merchandise items as a line items
Present total invoice amount and current shipping status
Warehouse Application Requirements
Track price and inventory on hand for all merchandise
Create invoices containing one or more merchandise items as a line items
Present total invoice amount and current shipping status
Warehouse Application Requirements
Track price and inventory on hand for all merchandise
Create invoices containing one or more merchandise items as a line items
Present total invoice amount and current shipping status
Warehouse Data Model
Merchandise
Name Price Inventory
Pinot $20 15
Cabernet $30 10
Malbec $20 20
Zinfandel $10 50
Invoice
Number Status Count Total
INV-01 Shipped 16 $370
INV-02 New 20 $200
Invoice Line Items
Invoice Line Merchandise Units Sold
Unit Price
Value
INV-01 1 Pinot 1 15 $15
INV-01 2 Cabernet 5 10 $150
INV-01 3 Malbec 10 20 $200
INV-02 1 Pinot 20 50 $200
Declarative Logic: Validation Rules Formulas which validate data before being entered or modified
How Validation Rules Work
WHEN THENIF
Line Item is added or Updated
Quantity__c <= 0 Error: “Line Item’s Quantity Should Be Greater Than 0”
Record isinserted or updated
Statement evaluates to true
Block Insert/UpdateReturn error message
Hands On Tutorials#1: Create your data model
#2: Customize your user interface
Declarative Logic: Formula Fields Fields which can calculate data in real time
Formula Fields
Excel style formulas
Functions can be nested
Support for commons functions
– Math
– Text
– Date & Time
– Logical
–
CASE(MONTH( date ),
1, "January",2, "February",3, "March",4, "April",5, "May",6, "June",7, "July",8, "August",9, "September",10, "October",11, "November","December",
)
Warehouse Data Model
Merchandise
Name Price Inventory
Pinot $20 15
Cabernet $30 10
Malbec $20 20
Zinfandel $10 50
Invoice
Number Status Count Total
INV-01 Shipped 16 $370
INV-02 New 20 $200
Invoice Line Items
Invoice Line Merchandise Units Sold
Unit Price
Value
INV-01 1 Pinot 1 15 $15
INV-01 2 Cabernet 5 10 $150
INV-01 3 Malbec 10 20 $200
INV-02 1 Pinot 20 50 $200
Formula Field Item Total = Unit Price X Quantity
Declarative Logic: Roll-Up Summary Fields Fields which can summarize data based on child records
Warehouse Data Model
Merchandise
Name Price Inventory
Pinot $20 15
Cabernet $30 10
Malbec $20 20
Zinfandel $10 50
Invoice
Number Status Count Total
INV-01 Shipped 16 $370
INV-02 New 20 $200
Invoice Line Items
Invoice Line Merchandise Units Sold
Unit Price
Value
INV-01 1 Pinot 1 15 $15
INV-01 2 Cabernet 5 10 $150
INV-01 3 Malbec 10 20 $200
INV-02 1 Pinot 20 50 $200
Roll-Up Field Sum of Line Item Value
Child of Master-Detail
Count or Aggregate
Roll-Up Summary Fields
Declarative Logic: WorkflowsEvent based actions to express business logic
How Workflows Work
WHEN THENIF
Invoice is updated 30 days later, status is open
Change status to“Pending”
Record isinserted or updated
DefinedConditions are met
PerformWorkflow actions
Workflow Actions
TaskOutbound MessageUpdate
FieldEmail
Warehouse Data Model
Merchandise
Name Price Inventory
Pinot $20 15
Cabernet $30 10
Malbec $20 20
Zinfandel $10 50
Invoice
Number Status Count Total
INV-01 Shipped 16 $370
INV-02 New 20 $200
Invoice Line Items
Invoice Line Merchandise Units Sold
Unit Price
Value
INV-01 1 Pinot 1 20 $20
INV-01 2 Cabernet 5 10 $150
INV-01 3 Malbec 10 20 $200
INV-02 1 Pinot 20 50 $200
Workflow RuleWhen updated, if unit price is blank then fill it withthe Merchandise price value
Declarative Logic: ApprovalsFramework for approval on record updates
Approvals
Define Criteria
Define Actions
• Single / Multi / Skip Processes
• Role and User based Routing
• Chatter and Email Approvals
Approvals
Security and Identity ServicesServices to authenticate users and control data visibility
Security and Identity Services
• User Profiles• User Groups and Hierarchies
• Permission Sets• SSO / SAML• OAuth 2.0• Connected Apps
• User Profiles• User Groups and Hierarchies
• Permission Sets• SSO / SAML• OAuth 2.0• Connected Apps
Hands On Tutorials#3: Add App Logic with Clicks,
Not Code#4: Secure your System
Mobility
LUNCHSalesforce1 MobileiOS and Android app for Salesforce1
Stay Up to Date with Notifications & Feeds
Developers
Stay Up to Date with Notifications & Feeds
Customers
Salesforce1 Mobile
Users
Distribute, & Manage Apps and Identity
Administrators
Embed Apps to Extend Business Processes
ISVs
Use Visualforce, HTML5, CSS, & JavaScript to Customize UI
Salesforce1 Mobile
Specify order and pin favorites
Control visibility with profiles & permission sets
Personalize with recent items
Add apps
Declarative & programmatic actions
Universal Notifications
Custom apps with HTML5, JavaScript, Visualforce, and Force.com Canvas
Global and contextual actions
Salesforce1
Hands On Tutorials#7: Create a Salesforce1 App
User Interface
VisualforceComponent-based user interface framework on Salesforce1
Every Object, Every Field: Apex and Visualforce Enabled
Visualforce PagesVisualforce Components
Apex ControllersApex Triggers
Custom UICustom UI
Custom LogicCustom Logic
<apex:page StandardController="Contact" extensions="duplicateUtility" action="{!checkPhone}">
<apex:form>
<apex:outputField var="{!Contact.FirstName}” /> <apex:outputField var="{!Contact.LastName}" />
<apex:inputField var="{!Contact.Phone}" /> <apex:commandButton value="Update" action="{!quicksave}" />
</apex:form>
</apex:page>
Visualforce Components
Standard & Custom ControllersCustom Extensions
Data bound components Controller Callbacks
• Apex FormsVisualforce component bound to an Apex Method
• Javascript RemotingAnnotated Apex methods exposed to JavaScript
Interacting with Data
Mobile Cards
Display Visualforce or Related Lookups
1. Record header
2. Mobile cards display above all
related items
3. Set width to 100%. It sizes
automatically. Mobile card content
can’t be scrolled.
4. Control height from the PLE
5. Related lists display after mobile
cards
Publisher Actions
Create actions and add them to the Chatter publisher
• Global vs Object Level• Create actions
• Log-a-call actions
• Update actions
• Custom actions• VF
• Canvas
Visualforce Use Cases
• Embed custom UI into tabs and layouts• Visualforce dashboards• Generate PDF• Email templates
Programmatic Development and Heroku
ApexCloud-based programming language on Salesforce1
Introduction to Apex
• Object-Oriented Language• Dot Notation Syntax• Cloud based compiling, debugging and unit
testing• “First Class” Citizen on the Platform
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; }}
Apex Anatomy
Class and Interface based Scoped Variables Inline SOQL Inline DML
Apex Triggers
• Event Based Logic
• Associated with Object Types
• Before or After:• Insert
• Update
• Delete
• Undelete
Custom Controllers and Extensions
• Provide Custom Logic to Visualforce
• Extensions can be used with Standard Controllers
• One controller can span multiple pages
• Can expose logic via Remote Action
Asynchronous Apex
• Batch & Scheduled Interfaces• Asynchronous processing
• Can handle queues of data• Can be scheduled to run later
• Similar to a cron job
Apex Use Cases
• Outbound Email• Inbound Email• Custom API Endpoints• HTTP callouts
Declarative before ProgrammaticUse declarative features when possible:
• Quicker to build• Easier to maintain and debug• Possible addition of new features• Do not count against governor limits
For example:• Will a workflow suffice instead of a trigger?• Will a custom layout work instead of
Visualforce?
What is Heroku?
Everything you need to build, run and scale customer apps
Run virtually any language at any scale
DynosEnterprise grade Postgres as a service
DatabasesMarketplace for logging, data and more
Add-ons
Supported Languages Buildpacks Databases
Heroku supports…
Ruby
Node.js
Java
Python
PHP (beta)
– Dart
– GO!
– Scala
– Clojure
– Erlang
– Perl
– And more…
Postgres
Redis
Mongo
CouchDB
Hadoop
TempDB
MySQL
Elasticsearch
Neo4j
Heroku is…
Smart driving assistant tracks driving, parking and vehicle performance
Developers able to focus on feature development by using Heroku Add-ons to provide infrastructure services
Product improvements deployed frequently to delight early adopters
Help people drive smarter and bring the power of connectivity to every car
Admittedly “obsessive about creating great user experiences in well-engineered products,” Automatic knew the Heroku platform would provide the flexibility their product requires while allowing them to focus less on infrastructure and more on user experience.
Heroku Demo
Heroku Exerciseshttp://bit.ly/heroku_qs
Alternatively:http://bit.ly/c9heroku
Double-click to enter title
Double-click to enter text
The Wrap Up
LUNCHSalesforce1 APIsFamily of APIs on the Salesforce1 Platform
LUNCHCanvasFramework for embedding third party apps in Salesforce
LUNCHMobile SDKDevelopment Kit for building hybrid and native iOS and Android apps
LUNCHAppExchangeEnterprise marketplace for Salesforce1 Apps
LUNCHHerokuPolyglot framework for hosting applications
Double-click to enter title
Double-click to enter text
http://developer.force.com
Developer Groups
Join a Salesforce Developer Grouphttp://bit.ly/fdc-dugs
Los Angeles Salesforce Developer Group:http://www.meetup.com/Los-Angeles-Force-com-Developer-Group/
Become a User Group LeaderEmail: April Nassi <[email protected]>
simplicity is the ultimate form ofsophistication
- Da Vinci
Thank You