Set Flow Variable Values from a Visualforce Page

After you embed your flow in a Visualforce page, set the initial values of variables, record variables, collection variables, and record collection variables through the <apex:param> component.

You can set variables only at the beginning of an interview. The <apex:param> tags are evaluated only once, when the flow is launched.

You can set only variables that allow input access. If you reference a variable that doesn’t allow input access, attempts to set the variable are ignored. Compilation can fail for the Visualforce page, its <apex:page> component, or the Apex class.

The following table lists the ways you can set a flow’s variable, record variable, and record collection variable values using Visualforce.

MethodVariablesRecord VariablesCollection VariablesRecord Collection Variables
Without a controllercheckmark   
With a standard controllercheckmarkcheckmark  
With a standard List controller   checkmark
With a custom Apex controllercheckmarkcheckmarkcheckmarkcheckmark
With an Interview Mapcheckmarkcheckmarkcheckmarkcheckmark

This example sets myVariable to the value 01010101 when the interview starts.

You can use standard Visualforce controllers to set variables by passing in data from a record. This example sets the initial value of myVariable to the Visualforce expression {!account} when the interview starts.

Because record collection variables represent an array of values, you must use a standard list controller or a custom Apex controller. This example sets myCollection to the value of {!accounts} when the interview starts.

For finer control over your Visualforce page than a standard controller allows, write a custom Apex controller that sets the variable value, and then reference that controller in your Visualforce page. This example uses Apex to set myVariable to a specific account’s Id when the interview starts.

This example uses Apex to set a record collection variable myAccount to the Id and Name field values for every record with a Name of Acme.

This example uses an Interview map to set the value for accVar to a specific account’s Id when the interview starts.

Here’s a similar example that sets the value for accVar to a new account when the interview starts.

This example uses a map to add two values to a string collection variable (stringCollVar) and two values to a number collection variable (numberCollVar).