By default, users can resume their paused interviews from the Paused Interviews component on their home page. If you want to customize how and where users can resume their interviews, use the pausedInterviewId attribute on the <flow:interview> component.
The following example shows how you can resume an interview—or start a new one—from a button on a page layout. When users click Survey Customer from a contact record, the Visualforce page does one of two things, depending on whether the user has any paused interviews for the “Survey Customers” flow.
If the user does, it resumes the first one.
If the user doesn’t, it starts a new one.
Create the Visualforce and Apex Controller
Because the Visualforce page will be referenced in a contact-specific button, it must use that standard controller. Use a controller extension to add more logic to the page with Apex, which is where the page gets the ID of the interview to resume.
This Apex controller extension performs a SOQL query to get a list of paused interviews. If nothing is returned from the query, getPausedId() returns a null value, and the Visualforce page starts a new interview. If at least one interview is returned from the query, the Visualforce page resumes the first interview in that list.
1public class MyControllerExtension_SurveyCustomers{23 // Empty constructor, to allow use as a controller extension4 public MyControllerExtension_SurveyCustomers(5 ApexPages.StandardController stdController){}67 // Flow support methods8 public String getInterviews(){return null; }910 public String showList{get; set; }1112 public String getPausedId(){13 String currentUser = UserInfo.getUserId();14 List<FlowInterview>interviews = 15[SELECT Id FROM FlowInterview WHERE CreatedById = :currentUser AND InterviewLabel LIKE '%Survey Customers%'];1617 if(interviews == null || interviews.isEmpty()){18 return null; // early out19}2021 // Return the ID for the first interview in the list22 return interviews.get(0).Id;23}24}
Reference the Visualforce Page from a Page Layout
To actually expose this Visualforce page to your users, make it available from the Contact page layout.
If you embed the Visualforce page directly in a page layout, every time a user accesses a contact, they automatically resume the first of their paused interviews—possibly unintentionally. It’s better for the user to make the conscious choice to start or resume an interview, so let’s use a custom button.
Tip
First create a custom button for the Contact object that links to the Visualforce page. Use these field values to create the button.
Field
Value
Label
Survey Customer
Display Type
Detail Page Button
Content Source
Visualforce Page
Content
YourVisualforcePage
Finally, add the button to your Contact page layout.