Newer Version Available
Associate Flows to Records with Apex
If you want to control how you trigger the creation of a RecordAction, you can use
Apex to associate flows to records. The RecordAction object is exposed as a standard object
in Apex. You can trigger it before a DML operation, on delete or undelete, and even provide
custom error handling.
Here are some scenarios that Apex better accommodates.
- Triggering before a DML operation rather than after
- Triggering on delete and undelete DML operations
- Validating data before the action is run
- Custom error handling
- Partial completion rather than complete failure
Example
This example uses an Apex class and trigger pair to demonstrate how to associate a flow to a newly created account that satisfies specific criteria. In the class, a method is defined that takes in a list of accounts and creates a RecordAction for each of them, setting the new account as the RecordId and the ActionDefinition as an active flow. The trigger is called after the insert of an account record. If the criterion (type is Customer) is satisfied, the class method is executed, and it adds the defined flow to the new account.
Apex Class
1public class RecordActionHandler {
2 public static void addNewCustomerFlow(Account[] accts) {
3 RecordAction[] recordActions = new List<RecordAction>();
4 for (Account a : accts) {
5 RecordAction ra = new RecordAction(RecordId=a.Id, ActionDefinition='New_Customer_Flow', Order=1);
6 recordActions.add(ra);
7 }
8
9 try {
10 insert recordActions;
11 } catch (DMLException e) {
12 System.debug('An unexpected error has occurred: ' + e.getMessage());
13 }
14 }
15}Apex Trigger
1trigger RecordActionTrigger on Account (after insert) {
2 Account[] customerAccounts = new List<Account>();
3 for (Account a : Trigger.new) {
4 if (a.Type == 'Customer') {
5 customerAccounts.add(a);
6 }
7 }
8 RecordActionHandler.addNewCustomerFlow(customerAccounts);
9}