Discover millions of ebooks, audiobooks, and so much more with a free trial

Only $11.99/month after trial. Cancel anytime.

Mastering Application Development with Force.com
Mastering Application Development with Force.com
Mastering Application Development with Force.com
Ebook434 pages3 hours

Mastering Application Development with Force.com

Rating: 4 out of 5 stars

4/5

()

Read preview

About this ebook

Design and develop state-of-the-art applications using Force.com's powerful development platform

About This Book

- Flaunt your skillsets by developing complex applications that include demanding concepts such as triggers, Visualforce controllers, batch jobs, and Lightning components
- Earn the gratitude of your colleagues by structuring a project so that multiple developers can work independently of each other
- Kevin Poorman, the author of the book and a Force.com MVP, shares his years of Force.com knowledge and experience with you through the medium of telling examples

Who This Book Is For

If you're a Force.com developer with a fundamental understanding of Apex and JavaScript but now want to enhance your skills with tips, tricks, and guidance on the best architectural and engineering practices, then this book is for you.

What You Will Learn

- Creating triggers, and the best practices for writing them
- Developing a number of Visualforce controllers and extensions
- Integrating third-party web APIs into your Apex code
- Writing unit tests that cover testing bulk safety, user and profile settings, and negative tests
- Creating a Lightning component for use in Salesforce1
- Getting acquainted with various methods for deploying metadata between orgs
- Using the Rest sObject API for access to Salesforce objects and data using the REST methodology
- Learning about overarching architectural considerations such as naming conventions, testing practices, and data modeling practices

In Detail

Force.com is an extremely powerful, scalable, and secure cloud platform, delivering a complete technology stack, ranging from databases and security to workflow and the user interface. With salesforce.com's Force.com cloud platform, you can build any business application and run it on your servers.
The book will help you enhance your skillset and develop complex applications using Force.com. It gets you started with a quick refresher of Force.com's development tools and methodologies, and moves to an in-depth discussion of triggers, bulkification, DML order of operations, and trigger frameworks. Next, you will learn to use batchable and schedulable interfaces to process massive amounts of information asynchronously. You will also be introduced to Salesforce Lightning and cover components—including backend (apex) controllers, frontend (JavaScript) controllers, events, and attributes—in detail.
Moving on, the book will focus on testing various apex components: what to test, when to write the tests, and—most importantly—how to test. Next, you will develop a changeset and use it to migrate your code from one org to another, and learn what other tools are out there for deploying metadata. You will also use command-line tools to authenticate and access the Force.com Rest sObject API and the Bulk sObject API; additionally, you will write a custom Rest endpoint, and learn how to structure a project so that multiple developers can work independently of each other without causing metadata conflicts.
Finally, you will take an in-depth look at the overarching best practices for architecture (structure) and engineering (code) applications on the Force.com platform.

Style and approach

A step-by-step tutorial, with plenty of tips and tricks that will help you develop complex Force.com applications.
LanguageEnglish
Release dateJan 28, 2016
ISBN9781782172826
Mastering Application Development with Force.com

Related to Mastering Application Development with Force.com

Related ebooks

Computers For You

View More

Related articles

Reviews for Mastering Application Development with Force.com

Rating: 4 out of 5 stars
4/5

1 rating0 reviews

What did you think?

Tap to rate

Review must be at least 10 words

    Book preview

    Mastering Application Development with Force.com - Poorman Kevin J.

    Table of Contents

    Mastering Application Development with Force.com

    Credits

    About the Author

    About the Reviewers

    www.PacktPub.com

    Support files, eBooks, discount offers, and more

    Why subscribe?

    Free access for Packt account holders

    Instant updates on new Packt books

    Preface

    What this book covers

    What you need for this book

    Who this book is for

    Conventions

    Reader feedback

    Customer support

    Downloading the example code

    Errata

    Piracy

    Questions

    1. A Conceptual Overview of Application Development on the Salesforce1 Platform

    Developing for the cloud

    Identifying the development tools

    Object-oriented building blocks of Force.com development

    Learning to master Salesforce1 development

    Using the Salesforce developer console

    Opening and creating metadata

    Running SOQL and SOSL queries

    Running unit tests

    Creating and opening Lightning Components

    Opening and reading debug logs and adjusting log levels

    An anonymous Apex execution

    Addressing problems

    Developer console exercises

    Summary

    2. Architecting Sustainable Triggers Using a Trigger Framework

    An overview of triggers

    Context is king

    Trigger variables

    An example trigger

    Safety in numbers

    Infinite cosmic power, itty bitty safety rope

    The SFDC-trigger-framework

    A cautionary note

    Using the framework

    Summary

    3. Asynchronous Apex for Fun and Profit

    Using batchable classes

    Additional extensions

    Schedulable classes

    Monitoring

    Scheduling from Apex

    Testing schedulable classes

    Exploring @future annotated methods

    When to use the @future annotation on methods

    Queueable classes

    Testing Queueable classes

    Knowing when to use what

    Summary

    4. Lightning Concepts

    The Lightning Process Builder

    The @InvocableActions interface

    Other caveats

    Process Builder wrap up

    Lightning Connect

    Limitations

    Example use cases

    Lightning Components

    Component files

    @auraEnabled Apex

    Lightning future

    Lightning App Builder

    Summary

    5. Writing Efficient and Useful Unit Tests

    Why do we write unit tests?

    Proving functionality

    Reducing the cost of change

    Encouraging modular, reusable code

    Identifying engineering bugs you didn't write

    Documenting expected behavior

    Tests + code = less likely to produce bugs

    What not to test?

    Managed package code

    Standard platform features

    When to write unit tests

    Structuring unit tests

    Using your own data

    Starting and stopping your tests

    Executing your code

    Positive tests

    Negative tests

    Permissions-based tests

    Assertions

    Creating your own assertion methods

    Mocking

    Tips and tricks for efficient testing

    Summary

    6. Deploying Your Code

    What does it mean to deploy?

    The Ant migration toolkit

    Targets, macros, and built-ins

    Build properties

    Choosing metadata

    Alas, I have become destructiveChanges.xml, destroyer of orgs

    The Force.com IDE deployments

    Change is good

    Summary

    7. Using, Extending, and Creating API Integrations

    In the beginning, we physically moved tapes around

    SOAP then REST – the evolution of modern APIs

    I oAuth, therefore I am

    Achievement unlocked – access token

    Putting it all together

    Bulk data for everyone! Look under your seat!

    All good things have their limits

    Use cases for the bulk API

    Creating your own API

    Let there be new records!

    Updating all that data

    Another one bites the dust

    The other way

    Heavy lifting

    Putting it all together

    Summary

    8. Team Development with the Salesforce1 Platform

    But we've always done it that way!

    Exacerbating the issues

    Technology to the rescue – caveat audiens

    The moving parts

    A high-level narrative overview

    Making it all work

    Impressionism versus Cubism

    All for one, and one for all

    Summary

    9. My Way – A Prescriptive Discussion of Application Development on Salesforce1

    Keep it simple

    Code reviews – pointed questions for Apex code review

    I've said it before, and I'll say it again—tests help you

    Make tools, and compose applications

    Work as a team

    Level up

    Model your data

    Using and abusing the platform – hic sunt dracones (here be dragons)

    Summary

    Where to go from here

    Podcasts

    Online help, training, and chat

    Index

    Mastering Application Development with Force.com


    Mastering Application Development with Force.com

    Copyright © 2016 Packt Publishing

    All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

    Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

    Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

    First published: January 2016

    Production reference: 1200116

    Published by Packt Publishing Ltd.

    Livery Place

    35 Livery Street

    Birmingham B3 2PB, UK.

    ISBN 978-1-78217-281-9

    www.packtpub.com

    Credits

    Author

    Kevin J. Poorman

    Reviewers

    Rakesh Gupta

    Zarna Chintan Naik

    Rahul Sharma

    Gautam Singh

    Commissioning Editor

    Rebecca Youe

    Acquisition Editor

    Sonali Vernekar

    Content Development Editor

    Shweta Pant

    Technical Editor

    Pranjali Mistry

    Copy Editor

    Pranjali Chury

    Project Coordinator

    Shipra Chawhan

    Proofreader

    Safis Editing

    Indexer

    Mariammal Chettiyar

    Production Coordinator

    Nilesh Mohite

    Cover Work

    Nilesh Mohite

    About the Author

    Kevin J. Poorman has been working with the Salesforce1 platform since 2008. He has architected and built a number of applications on the platform for enterprises and fortune 500 companies in the advertising industry. He has been a Force.com MVP for 3 years. He is active in the community as a developer user group leader, and he can also regularly be found blogging at http://www.codefriar.com, on Twitter (@codefriar), and on the #salesforce IRC channel as well as on the Salesforce developer forums and Salesforce stack overflow. He has also created and maintains the ngForce library for writing Angular.js apps on the platform. In 2015, Kevin joined the Salesforce Marketing Cloud as a senior customer success architect helping marketers succeed at mobile marketing. He regularly speaks on mobile development using Salesforce1, the Salesforce Marketing Cloud, Ionic, and RubyMotion.

    I'd like to take some time to thank those who helped this book become reality. First and foremost, my wife, Stephanie, who's been instrumental in encouraging me when I got anchored in the morass of writer's block. Also, I'd like to thank Reid Carlberg and Jeff Finken, who have always been more my mentors than bosses. And, I couldn't have done any of this without the support and friendship of the Salesforce MVP community. I am truly blessed to have been able to write this while standing on the shoulders of not just giants, but Titans who have never feared reaching out to help others. Thank you all.

    About the Reviewers

    Rakesh Gupta is a Salesforce MVP, evangelist, trainer, blogger, and an independent Salesforce consultant. He is from Katihar, Bihar, and he lives in Mumbai. He has been working on the Force.com platform since 2011. Currently, he is working as a Salesforce consultant and is a regular contributor to the Salesforce Success Community. He is the coauthor of Developing Applications with Salesforce Chatter and Salesforce.com Customization Handbook, Packt Publishing, and he is also a technical reviewer of Learning Force.com Application Development, Packt Publishing. He is the author of Learning Salesforce Visual Workflow, Packt Publishing. He has written more than 150 articles on Flow and Process Builder to demonstrate its use to minimize the code usage. He is one of the flow experts from the industry. He is very passionate about Force.com and shares information through various channels, including his blog at http://automationchampion.com.

    He has trained more than 200 professionals around the globe and handled corporate trainings. He has six certifications in Salesforce. He works on all the aspects of Salesforce and is an expert in data migration, integration, configuration, and customization. He is the leader of the Navi Mumbai and Nashik developer user groups in India. He is also the initiator of the Mumbai Salesforce user group. He organizes meetups at regular intervals for the groups he is part of.

    He can be reached at <info@automationchampion.com>, or you can follow him on Twitter at @rakeshistom.

    I would like to thank my parents, Kedar Nath Gupta and Madhuri Gupta, my sister, Sarika Gupta, and my friend Meenakshi Kalra for helping me make time for writing blogs and encouraging me. Also, I would like to thank the team at Packt Publishing and the author of this book for giving me this unique opportunity.

    Zarna Chintan Naik is a proprietor of YES CRM Consultants, a Salesforce.com consulting company based in Mumbai. YES CRM Consultants is primarily focused on Salesforce.com consulting, administration, and training services for clients based around the globe.

    Zarna and her team also have expertise in multiple appexchange products, including Conga Merge, Clicktools, Rollup Helper, and Drawloop.

    Zarna herself holds multiple certifications: Salesforce.com Certified Administrator, Developer, and Sales and Service Cloud Consultant. Previously, she worked for one of the leading Salesforce.com partners in the USA. She has also reviewed Learning Force.com Application Development, Packt Publishing. To know more about Zarna and YES CRM Consultants, log on to www.yescrm.org or visit her LinkedIn profile at https://in.linkedin.com/in/zarnadesai.

    I would like to thank my parents, in-laws, husband, sister, friends, and family for their continued support for my work.

    Rahul Sharma has been working on the Force.com platform since 2010 and is a certified advanced developer and administrator. He has worked on many applications involving custom development and integration. He is an active super contributor to the Force.com community and Stackexchange. He holds a bachelor's degree in electronic engineering and is based out of Mumbai, India. His areas of interest are JavaScript and mobile development other than Salesforce. He can be reached at about.me/rahuls91221.

    Some of the other books he has worked on are Learning Force.com Application Development and Visualforce Developer's Guide, both by Packt Publishing.

    Gautam Singh is a computer science engineer, blogger, online trainer, technical reviewer, and a smiling human being. He is from Patna, Bihar, and he lives in San Jose, California, USA.

    He has been working with the Salesforce platform since 2012, and from the very start he has contributed to motivating and training a large number of homo sapiens in Salesforce and its certificates. Recently, he was on the reviewer panel for Learning Force.com Fundamental, Packt Publishing.

    Currently, he works for Jade Global Inc. as a techno functional consultant. He holds numerous Salesforce certifications, such as Certified Developer [DEV-401], Certified Developer [ADM-201], Certified Advanced Developer [ADM-211], and Sales Cloud Consultant. He is now on course to complete the Salesforce Certified Advanced Developer [DEV-501].

    Gautam actively contributes to the Salesforce discussion platform and currently holds the SMARTIE [Trusted Contributor] position on developer boards. You can follow him through his active blog at http://singhgautam02.blogspot.in/.

    In his spare time, he is a backpacker who explores the beauty and heritage of India. If not with Salesforce, you can find him taking part in marathons or expressing his love for dogs.

    You can follow him on Twitter at @retweetgautam and he can be found on LinkedIn at http://www.linkedin.com/pub/gautam-singh/24/657/244.

    www.PacktPub.com

    Support files, eBooks, discount offers, and more

    For support files and downloads related to your book, please visit www.PacktPub.com.

    Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at for more details.

    At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.

    https://www2.packtpub.com/books/subscription/packtlib

    Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read Packt's entire library of books.

    Why subscribe?

    Fully searchable across every book published by Packt

    Copy and paste, print, and bookmark content

    On demand and accessible via a web browser

    Free access for Packt account holders

    If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view 9 entirely free books. Simply use your login credentials for immediate access.

    Instant updates on new Packt books

    Get notified! Find out when new books are published by following @PacktEnterprise on Twitter or the Packt Enterprise Facebook page.

    Preface

    Salesforce.com's platform is one of the most exciting and unique development platforms for business applications. A lot of Salesforce development can be done declaratively without writing code, but to truly master the platform, you'll need to be able to develop not only declaratively, but also with code. Ultimately, you will need to know when to use which toolset—declarative or code.

    It is relatively easy, in a world with Salesforce developer forums, Stack Overflow, and user groups, to find others who have faced the same issues you're facing. As a developer, it's likely that you can cobble together a solution from posted solutions. Understanding and tweaking those posts into a solution for your particular problem, however, requires a greater mastery of the platform.

    This book is all about mastering the platform; taking your skills as a developer and tuning them for the unique features of the Salesforce platform. We'll discuss the architecture and code and which tool to use for the job. It's going to be awesome. So let's get started…

    What this book covers

    Chapter 1, A Conceptual Overview of Application Development on the Salesforce1 Platform, is a quick refresher of the Force.com development tools and methodologies. We'll discuss the concepts of classes, triggers, and unit testing that we'll be mastering in the further chapters.

    Chapter 2, Architecting Sustainable Triggers Using a Trigger Framework, will dive deep into why you would need a trigger, when you should and should not use a trigger, and how to architect triggers for maintainability. Additionally, we'll dig into trigger frameworks that provide cleaner, more scalable solutions that solve many of the problems that plague traditional trigger development.

    Chapter 3, Asynchronous Apex for Fun and Profit, is all about Apex classes that implement the batchable, scheduleable, and queueable interfaces as well as the @future method Annotation.

    Chapter 4, Lightning Concepts, discusses the four new features of the Salesforce platform that carry the Lightning moniker. We'll start with Lightning connect and move on to cover process builder, app builder, and lightning components.

    Chapter 5, Writing Efficient and Useful Unit Tests, talks about unit testing, which is the single most important activity an application developer has to master. However, writing unit tests is rarely seen as exciting. In this chapter, we'll look at how to write useful unit tests that help us maintain our application over time.

    Chapter 6, Deploying Your Code, takes you to the next step—you've written and tested your code, now what? This chapter is a tour of the many ways to deploy your application metadata from one org to another. Specifically, we'll cover the Ant migration toolkit, IDE deployment, and Change sets. Additionally, we'll briefly touch on packaging as a means of deploying metadata.

    Chapter 7, Using, Extending, and Creating API Integrations, demonstrates how to use the sObject and bulk APIs provided by Salesforce as well as how to create your own custom REST endpoints with Apex. Finally, we'll build out a set of classes to make calling external REST APIs as painless as possible.

    Chapter 8, Team Development with the Salesforce1 Platform, discusses and works through the pitfalls of team development in general and the unique solutions available to us on the Salesforce1 Platform.

    Chapter 9, My Way—A Prescriptive Discussion of Application Development on Salesforce1, looks at overarching best practices for Architecture and Engineering of applications on the Force.com platform in depth. Specifically, we discuss the nature of keeping things simple, testing things well, naming things intuitively, and writing maintainable code. While the rest of the book has been descriptive of the best practices, this chapter is an opinionated prescription for developing Salesforce1 applications.

    What you need for this book

    All you need to get the most out of this book is your brain, your computer with a modern web browser, and a free Salesforce developer org. You can sign up for a free developer org at https://developer.salesforce.com/signup. Of course other tools can help, but they aren't required. Optional tools include Sublime Text 3 (with the MavensMate plugin), Atom (with the MavensMate plugin), and Intellij (with the Illuminated Cloud plugin). Again, these are all completely optional. In later chapters, we'll discuss some JavaScript-related tools but we'll discuss installing them when we get there.

    Who this book is for

    This book is for Salesforce developers. The more you know about Apex, the more you'll take away from this book. Hopefully, as you master more and more of the platform, you'll be able to revisit this book and take away more each time. Regardless of how much Apex you know, this book can teach us all something about how to master the platform.

    Conventions

    In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.

    Code, and code mixed in with text are shown as follows: A block of code is set as follows:

    public class AccountTriggerHandler extends triggerHandler {

      public override void beforeInsert() {

        AccountLib.sanitizeDataForAccounts(Trigger.new);

        ContactLib.createContacts(Trigger.new);

        OpportunityLib.createOpps(Trigger.new);

      }

    }

    When we wish to draw your attention to a particular part of a code block, the relevant lines or items are set in bold:

    global void execute(Database.BatchableContext BC, List scope) {

      List toDelete = new List();

      List toUpdate = new List();

      for (Account a : scope) {

        if(a.bad_account__c){

          toDelete.add(a);

        } else {

          toUpdate.add(a);

        }

    New terms and important words are shown in bold. Words that you see on the screen, for example, in menus or dialog boxes, appear in the text like this: Another tab in the bottom pane is the Tests tab.

    Note

    Warnings or important notes appear in a box like this.

    Tip

    Tips and tricks appear like this.

    Reader feedback

    Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.

    To send us general feedback, simply send an e-mail to <feedback@packtpub.com>, and mention the book title via the subject of your message. If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.

    Customer support

    Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

    Downloading the example code

    You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.

    Errata

    Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you would report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the errata submission form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded on our website, or added to any list of existing errata, under the Errata section of that title. Any existing errata can be viewed by selecting your title from http://www.packtpub.com/support.

    Piracy

    Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any

    Enjoying the preview?
    Page 1 of 1