1

I am trying to pass the recordId and Flow API Name from my LWC to an Apex Class using the imperative method.
I have not issue passing the Flow Name however I recordId is always returning as Null.

I compared my code to that in the post below, but could not find the issue How to pass the record id to controller method from LWC

LWC js

import { LightningElement, api } from 'lwc';
import callFlow from '@salesforce/apex/FlowController.callFlow';

export default class LaunchFlowDemo extends LightningElement{ 
  flowname = 'CaseFollow_Unfollow';
  @api recordId;
  @api async invoke() {
    let result = await callFlow({flow_name: this.flowname},{flow_recordId: this.recordId});
  }
}

Apex Class

public class FlowController {
     
   public FlowController(){
    }
      @AuraEnabled(cacheable=false)
      public static void callFlow(Id flow_recordId, String flow_name) {
      
       system.debug('flow_recordId =' + flow_recordId);
       
      //string flowName ='CaseFollow_Unfollow';
      //Id recordId='5004V00001AOwDAQA1';
      
      Map<String, Object> recordMap = new Map<String, Object>();
        recordMap.put('recordId', flow_recordId);
        
      Flow.Interview myFlow = Flow.Interview.createInterview(flow_Name, recordMap);
      
      myFlow.start();
    } 
}
3
  • in what type of page is your lwc used?
    – glls
    Mar 10, 2022 at 4:23
  • 1
    pls check that in your invoke method, just before you call the apex, is the recordId filled
    – Damecek
    Mar 10, 2022 at 7:06
  • @gills - I am calling this from an Action button on the record page - there is no LWC page. Mar 10, 2022 at 14:41

1 Answer 1

0

I figured out the issue - it was not with the recordId rather they syntax i was using for the Apex Method. I was putting each of the parameters in separate braces. I adjusted the code accordingly...

LWC js

import callFlow from '@salesforce/apex/FlowController.callFlow';
import {LightningElement, api } from 'lwc';
import {ShowToastEvent} from 'lightning/platformShowToastEvent';

export default class LaunchFlowDemo extends LightningElement{ 
    
    flowname = 'CaseFollow_Unfollow';
    
    @api recordId
    @api async invoke() {
      
      callFlow({flow_recordId: this.recordId, flow_name: this.flowname})  
          .then(()=>{
              this.showToast("Success",'Case Unfollowed',"success")             
          }).catch(error=>{
              //error handling
              this.showToast("Error",error.message,"error")
          });
      }
    showToast(title, message, variant){
        this.dispatchEvent(new ShowToastEvent({
            title, message, variant
        }))
    }
}

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .