This chapter starts with an overview of Visual Workflow (also called Flow) and its benefits, which take the discussion forward to the various business requirements where we can use Flow. We will discuss various business problems and how we can develop an application without using code to solve them. By the end of this chapter, you will have learned various ways to invoke a Flow and the fundamentals of Visual Workflow.
In the next few chapters, you will be briefed about various concepts related to Visual Workflow and learn numerous ways to create point-and-click tools without using code. We will also see different ways to streamline our sales process and automate our business process using a Flow. In the last few chapters, we will go through how to automatically launch a Flow using Process Builder. The following topics will be covered in this chapter:
Business problems
The benefits of Visual Workflow
System requirements for using Visual Workflow
An overview of the Visual Workflow lifecycle
An overview of the Cloud Flow Designer
An overview of Visual Workflow building blocks
The various ways to invoke a Flow
Visual Workflow is a drag and drop interface that allows you to automate business processes by creating applications using click not code. Using Visual Workflow we can create, update, edit, delete, send an e-mail, submit records for approval, post to chatter, and take user input in Salesforce and then make those Flows available to the business users or systems. Visual Workflow can execute business processes, interact with the database, invoke Apex classes (an Apex class implements the Process.Plugin
interface), and create a series of screens to take user input in order to collect and update data in Salesforce and Flows can also be built with no user interface to allow them to be run from automated processes.
As a Salesforce administrator or developer you may get multiple business requirements from businesses to streamline the processes. Many of them are achievable by using out of the box (OOB) concepts, and for others, we have to use Apex or Visualforce pages. Visual Workflow gives us another method that will let us implement many business processes without needing custom coding. A few examples are discussed in the following sections.
Sara Bareilles is working as a Vice President, Sales, in a company named Appiuss. She wants to auto close all the open opportunities with the Closed Lost stage, when an account out of business field (that is, custom field) is checked.
There are several ways to solve the given business requirement; these are mentioned in the following sections.
Because this requirement means that many child records (opportunities) need to be updated when a parent record (Account
) is edited, we can't achieve the preceding business requirement using the Workflow rule. The next possibility is to use an Apex trigger. Generally, a developer writes an Apex trigger on the Account
object to update all the open opportunities when an account's custom field, out of business, gets updated to True
. The following is the sample code:
trigger UpdateRelatedOpportunites on Account (after update) { for (Account AccountToUpdate : trigger.new) { If (AccountToUpdate.Out_Of_Business__c==True) { // Your logic; } } }
In addition, you'll need a test class, and then use a change set to deploy the trigger and test classes to production. This also means that any change to the business logic will require more development work.
Another way to achieve the same business requirement is to use a combination of Visual Workflow and autolaunch Flow/Process Builder. Here is the description of the next screenshot:
A sample Flow update all the open Opportunity stage to the Closed-Lost related to an account which is marked as out of business
A process on the Account object, it will fire when the out of business checkbox is checked
The following screenshot represents solutions for a similar business scenario by using Visual Workflow and Process Builder:

Process Builder is one of the ways to automate complex business processes using click not code similar to the Workflow rule and Visual Workflow. We will discuss more about this in Chapter 5, Developing Applications with Process Builder.
Robby Williams is working as a Customer Success Manager in Appiuss. He wants to send a reminder e-mail on a weekly basis to all the users who don't have a profile picture on Chatter.
Again, there are plenty of ways to solve this requirement. Some of the ways are as follows.
We can't achieve this goal by the Workflow rule. For this, we have to write an Apex class that implements the Schedulable
interface for the class and then use Schedule Apex to run it on a regular basis. The following is the code for this Apex class:
global class SendChatterEmail implements Schedulable { global SendChatterEmail (){ // Batch Constructor } // Start Method global Database.QueryLocator start(){ /* Use SOQL query to get the records you want to operate upon select Id, fullPhotoUrl from User where isactive = true AND FullPhotoUrl like '%photo/005%'*/ } // Execute Logic global void execute(){ // perform the operation } global void finish(){ // Logic which we want to execute at finish } }
An alternative way to accomplish the same business requirement is to use a combination of Visual Workflow and Process Builder. Here is the description of the next screenshot:
The following screenshot represents the solution for business scenario 2 using Visual Workflow and Process Builder:

There are certain benefits of using Visual Workflow. They are as follows:
It allows you to create an automated business process using click not code.
Visual Workflow does not require coding, and even if you do not know Apex code you can still develop business processes.
Using screens, fields, and choices, you can implement complex business processes to make sure that your users are entering data in the right format.
Through Visual Workflow, you can manipulate data for certain objects that are not available for the Workflow rule. For example, when a "contact role" is created or updated as primary for an opportunity then create a new task.
It allows you to auto submit records for approval.
You can post messages on Chatter. For example, if opportunity status gets Closed Won, post a message on Chatter group.
It allows you to embed the Flow into the Visualforce page and using the Force.com Site you can expose it for unauthenticated access.
Once you embed your Flow into the Visualforce page, it allows you to use HTML, CSS, JavaScript, and other Visualforce components.
Since it is not code, you don't need to write test classes.
You can make changes directly to your production organization, just like other configuration changes.
Every time unhandled processes fail or an error occurs in the Flow, the author will get an e-mail from Salesforce with the error details.
Using the debug log you can debug your Flow. Visual Workflow also has a built-in debugging tool. To open the debug window, press Ctrl + Shift + M (on PC) or command + shift + M (on Mac).
It allows you to invoke the Apex class that implements the
Process.Plugin
interface.
Visual Workflow are available for Enterprise, Performance, Unlimited, and Developer Editions. You can access Flow on any platform. The requirements are as follows:
The Cloud Flow Designer is a tool to create Flows, configure screens, and define business logic for your Flows without writing a single line of code. Visual Workflow has three different parts, these are as follows:
Design: This allows you to create the Flows using the Flow Designer, which has a drag and drop user interface that allows you to draw the Flow structure and configure how it runs, without writing a single line of code.
Administration: Once you have created a Flow, you can manage it, edit its properties, activate, deactivate, delete, save as a new version or new Flow, or run it as well.
Runtime: A Flow user can run the active Flow from a custom button, link, Visualforce page or directly from the Flow URL. If it is autolaunch Flow, then systems can run active Flows through Process Builder or an Apex class.
The Cloud Flow Designer is a tool that allows you to implement business requirements by constructing Flows (without any code); this is a way to collect, update, edit, and create data in Salesforce. The Cloud Flow Designer user interface has different functional parts.

These functional parts are as follows:
The button bar: You can use Save, Save As, Run, Run with Latest, Close, undo, and redo changes to run or view properties of your Flow buttons available in the button bar. The status indicator marked in the red rectangle on the right-hand side of the bar shows the status (Active or Inactive) of your Flow.
Save As: If you want to clone the Flow you are working on or save as a new version, then use this option.
Run: This runs the most recent version of the Flow you are working in. If the Flow comprises subflow elements, then each subflow refers to the active version of its referenced Flow. If the referenced Flow has no active version, then the subflow element runs the latest version of its referenced Flow.
Run with Latest: This button will only appear if you are working in a Flow that contains a subflow element.
Close: If you are working on a Flow and want to close it, then use this button. If Flow is not saved and you clicked on the Close button, then it will return you to the Flow list page or else you will be redirected to the Flow detail page.
Undo or Redo: Use these to undo or redo recent activities on the canvas.
- Flow Properties: Click on the screwdriver
icon to see information related to your Flow, such as Name, Unique Name, Description, its type (Autolaunched Flow or Flow), Interview Label, Version, and created and modified dates. Salesforce allows you to change Name, Description, and Interview Label of your Flow at any time.
The Flow canvas: You can use this area to design your Flow. To edit any element in the main canvas, double-click on it.
The zoom control: This is a slider that helps you to zoom in and out of the canvas so that you can focus on particular areas. This feature is also combined with the search options on the Explorer tab, so it will highlight results on the canvas tab.
Palette: This is the area where you can find all the element types available for your Flow. You have to drag and drop elements from the palette onto the canvas to use it. To see the element description/properties in the Description panel (7), click on an element in the palette. Once you have created new elements, they will appear in the Explorer tab. The Palette tab also has a search field to quickly find what you need.
Resources: The Resources tab allows you to create new resources for your Flow, for example, variables, formulas, and templates. Once you have created new resources, they will appear in the Explorer tab. To create new resources, double-click on it.
Explorer: The Explorer tab contains all the elements and resources added to the Flow. Double-click on the items from the list to edit them and click to view their details and usage in the Description panel (7).
Description: The Description panel shows the item's description when you view an item in the Palette or Resources tab. It has two subtabs, as follows:
From Chapter 2, Creating Flow through Point and Click, we will start using the elements, variables, and concepts that we learned here.
Flow has three major building blocks known as Element, Connector, and Resource. With the help of these blocks, you can easily develop Flows.

Element represents an action that Flow can use to display or collect information from the Flow user, create or update records, delete records, or loop logic. Element is, basically, used to manipulate the data. Connector is used to establish the path between the elements. Resource is used to hold the data that you can reference in your Flow.
Flow elements represent actions that Flow can execute such as Record Update, Record Lookup, Fast Lookup, Loop, Screen, and Decision. This is used to read, write, or delete data. Using the element (Screen), you can also display data and capture input from users. Use the Palette tab to drag and drop new elements onto your canvas. Once you add elements it will be available on the canvas and Explorer tabs. There are several types of elements available under the Palette tab. They are as follows:
From Chapter 2, Creating Flow through Point and Click, we will start using these elements.
Resources are used to hold the data that you can reference in your Flow. The Explorer tab displays the resources that you added to the Flow. To create new resources double-click on this tab. Global constants and system variables are automatically provided by the system. There are several types of resources available under the Resource tab. They are as follows:
From Chapter 2, Creating Flow through Point and Click, we will start using these resources.
A connector is used to establish the path between the Flow elements. A connector looks like an arrow that points from one element to another. There are several types of connectors available. They are as follows:
From Chapter 2, Creating Flow through Point and Click, we will start using these connecters.
As soon as you are done with Flow development, the next task is to configure Flow access for business users, so they can use it. There are various ways through which you can invoke/launch your Flows. They are as follows:
The Flow URL
A custom button or URL
A web or Visualforce tab
A combination of the Visualforce page and the Force.com Site or customer portal and partner portal
The Login Flow
The Visualforce page
Process Builder
The Apex
start()
methodThe Invocable Action resource in the Force.com REST API
In this chapter, we have gone through various concepts related to Visual Workflow. We started with the business scenario where you can use Visual Workflow and followed with the benefits of using Flow. We also covered the requirements for Visual Workflow. Then we moved forward and discussed the lifecycle of the Flow development and had an overview of Cloud Flow Designer. Finally, we discussed various ways through which you can invoke your Flow. In the next chapter, we will go through variable, element creation concepts, and we will also cover how to design your Flow.