Configure the Client-Side Controller for a Flow Local Action

When a component is executed as a flow local action, the flow calls the invoke method in the client-side controller. To run the code asynchronously in your client-side controller, such as when you're making an XML HTTP request (XHR), return a Promise. When the method finishes or the Promise is fulfilled, control is returned back to the flow.

Asynchronous Code

When a Promise is resolved, the next element in the flow is executed. When a Promise is rejected or hits the timeout, the flow takes the local action's fault connector and sets $Flow.FaultMessage to the error message.

By default, the error message is “An error occurred when the elementName element tried to execute the c:myComponent component.” To customize the error message in $Flow.FaultMessage, return it as a new Error object in the reject() call.

({
   invoke : function(component, event, helper) {
      return new Promise(function(resolve, reject) {
         // Do something asynchronously, like get data from
         // an on-premise database

         // Complete the call and return to the flow
         if (/* request was successful */) {
            // Set output values for the appropriate attributes
            resolve();
         } else {
            reject(new Error("My error message")); }
      });
   }
})

If you’re making callouts to an external server, add the external server to the allowlist in your org and enable or configure CORS in the external server.

Note

Synchronous Code

When the method finishes, the next element in the flow is executed.

({
   invoke : function(component, event, helper) { 
      // Do something synchronously, like open another browser tab
      // with a specified URL

      // Set output values for the appropriate attributes
    }
 })