Platform Development Basics

Get Started with Platform Development

Define the Salesforce platform. Describe the kinds of apps you can build with the platform. Install the DreamHouse app.
  • At Salesforce, services are grouped by “clouds.” Sales Cloud for CRM, Service Cloud for customer support, etc. Distinct purposes, but share the Salesforce Platform.
  • Salesforce Platform is like other platforms in that it is a group of technologies that supports the development of other technologies on top of it: from simple page layouts to full-scale applications.
    • Lets you develop custom data models and applications and “build complex business applications at a breakneck pace”
  • Related platforms/systems:
    • Heroku platform: empowers developers to build highly scalable web apps and back-end services using Python, Ruby, Go, etc and provides database tools to sync seamlessly with Salesforce data
    • Salesforce APIs: let developers integrate and connect enterprise data, networks, and identity information
    • Mobile SDK: suite of technologies that lets you build native, HTML5, and hybrid apps that have the same reliability and security as Salesforce apps

Develop Without Code

Describe the benefits of the metadata-driven development model. Define and give examples of the no-code and low-code development approaches.
  • With Salesforce, the UI is not just sitting on a “run-of-the-mill” relational database. The UI is actually an abstraction of the database that’s driven by metadata-aware architecture.
    • Objects are Database Tables. Fields are Columns. Records are Rows.
    • Metadata forms the structure of your org, whether fields, business processes, or something more complex.
  • Salesforce’s metadata-driven development model is one of the key differences between developing on Salesforce versus outside Salesforce. Salesforce automatically generates a lot of UI for you: dialogs, record lists, detail views, forms, CRUD rights, etc.
    • All this prebuilt functionality frees up development time to work on more sophisticated custom features.
  • Diagram of the system landscape available in the DreamHouse app (managed package)

  • Salesforce encourages you to minimize code with No-Code and Low-Code Declarative Development
    • Someone without any coding knowledge can develop entire apps in Salesforce using prebuilt components and point-and-click tools.
    • Writing things like validation rules or hooking up components with UI elements are “low code.”
  • No-code and low-code development capabilities that Salesforce provides means that developers can move faster
    • IE: Build more in less time
    • If you’re working on a team with non-coders, you can leave declarative development to them while you double down on more code-intensive projects

  • The relationship between objects, fields, and records, and Salesforce’s relational database?
    • They’re an abstraction of the underlying table structure
  • How does the metadata-driven architecture support declarative development?
    • It allows the platform to auto-generate basic components for your org’s customization, like dialogs and forms

Code with Salesforce Languages

Identify the benefits of Lightning components. Describe how Visualforce is used in Lightning Experience. Outline the ways Apex is used to support Lightning components and Visualforce.

Lightning Components

  • Component-based UI development framework for desktop and mobile.
  • Can now use both the Lightning Web Components model and the original Aura Components model. These can coexist and interoperate on a page.
  • Lightning web components are custom HTML elements built using HTML and modern JavaScript.
  • To view Lightning Components navigate: Setup > Quick Find > “Lightning Components” > Select a component > Developer Console
    • Developer Console is the Salesforce IDE that is used to develop, debug, and test code in the org.
    • Lighting components include XML markup which contains both Aura-specific-and static HTML tags. Uses a <namespace:tagName> convention
    • Lightning components use client-side JavaScript controllers and server-side Apex controllers
      • Create and access those controllers and other assets like component style sheets from the bundle menu

Apex

  • Apex can be used to extend the functionality of Process Builder by writing code.
  • Java-like syntax
  • Example code from Dream House app:
@InvocableMethod(label='Push Price Change Notification')
public static void pushNotification(List<Id> propertyId) {
  ...
}
  • @InvocableMethod allows other tools like Process Builder to execute the method.
  • Can also include SOQL inline:
Property__c property = [SELECT Name, Price__c from Property__c WHERE Id=:propId];

Visualforce

  • Visualforce will feel familiar to anyone who has done web development.
    • Visualforce lets you create and customize pages in Salesforce and integrate with other standard web tecnologies: HTML, CSS, JavaScript
  • With Lightning components, you’re developing components that can be pieced together to create pages. With Visualforce, you’re developing entire pages at once.
    • Lightning components are newer and better for mobile development
    • But, there are several situations where it makes more sense to use Visualforce

  • What types of elements do you see in the XML markup for Aura components?
    • Static HTML tabs, Aura component tags
  • What’s a situation where its better to use Lightning components and not Visualforce?
    • Your project will run primarily on mobile
  • What’s true about Apex controllers?
    • Lightning components use server-side Apex controllers

Extend the Salesforce Platform

List the Salesforce APIs. Explain how Heroku and Salesforce are related. Identify ways Salesforce interacts with IoT and bots.
  • Declarative Development in Salesforce using tools like Lightning App Builder and Process Builder require almost no interaction with Salesforce’s underlying APIs.
    • Moving into programmatic development, there are a robust set of APIs that let you access Salesforce data in many ways.
    • Every object in your org has an API name that lets you access data for that object.
  • The following table has the APIs included in Salesforce. It was taken from Trailhead.
API What it does
SOAP API Integrate your org’s data with other applications using standard SOAP protocols.
REST API Access objects in your org using standard REST protocols.
Metadata API Manage customizations in your org and build tools that manage your metadata model.
Tooling API Build custom development tools for platform applications.
Marketing Cloud API Expose Marketing Cloud capabilities with the REST API and get comprehensive access to most email functionality with the SOAP API.
Bulk API Load, delete, and perform asynchronous queries on large data sets.
Streaming API Send and receive notifications securely and efficiently. Notifications can reflect data changes in your org, or custom events.
Chatter REST API Build UI for Chatter, Communities, Recommendations, Files, Topics, and more.
Mobile SDK While it’s technically a software development kit, it’s worth including here. Integrate Native or Hybrid mobile apps directly with Salesforce.

Heroku

  • Heroku is a web development platform that lets you quickly build, deploy, and scale web apps.
    • Built on AWS
    • Allows flexibility regarding how to write your app: Java, Python, PHP, etc.
    • Heroku Connect unifies Salesforce data with Heroku Postgres data so no need to worry about moving info across platforms.
    • The DreamHouse managed package is exposed here

IoT, Bots, etc

  • Integrating Salesforce with IoT devices (smart locks, lights, thermostats)
  • Bots can be coded entirely in Apex and can connect to services like Slack, Facebook Messenger, Amazon Alexa, etc.
  • Use Apex and Einstein Vision API to create image recognition and classification engines
  • The Salesforce Developers portal is the best resource for all things related to developing on the Salesforce platform, including guides, blog posts, forums, and more info to get you started.

  • For sending secure notifications, which API?
    • Streaming API
  • Which heroku service allows you to unify Salesforce data with Postgres data?
    • Heroku Connect
  • Besides Trailhead, where is the best place to learn about Salesforce development?
    • Salesforce Developers portal