You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flow Apex动作中访问嵌套包装类?

Salesforce Flow无法访问Apex Invocable方法中嵌套包装类字段的解决方案

你的代码已为属性添加@InvocableVariable,但Flow仍无法访问深层嵌套字段,核心原因是Flow对Invocable动作的嵌套对象有几个易忽略的要求,以及多层嵌套可能存在的兼容性问题。以下是具体解决方案:

解决方案1:为@InvocableVariable添加label属性并刷新Flow引用

Flow对带有明确label的变量识别更友好,同时确保所有嵌套类为public(你的代码已满足)。修改后重新编译类,并在Flow中删除原有Invocable动作、重新添加:

public class RecordCompletenessAction {
    public class FlowOutputWrapper { 
        @InvocableVariable(label='Parent Wrapper')
        public ParentWrapper parent; 

        @InvocableVariable(label='Overall Weightage')
        public Integer overallWeightage; 
    } 

    public class ParentWrapper { 
        @InvocableVariable(label='Field 1')
        public MyWrapper field1; 

        @InvocableVariable(label='Field 2')
        public MyWrapper field2; 
    } 

    public class MyWrapper { 
        @InvocableVariable(label='Field Name')
        public String fieldName; 

        @InvocableVariable(label='Display Flag')
        public Boolean display; 
    } 

    @InvocableMethod(label='Process Record Completeness')
    public static List<FlowOutputWrapper> processFlowAction(List<Id> recordIds) { 
        List<FlowOutputWrapper> results = new List<FlowOutputWrapper>(); 

        ParentWrapper parent = new ParentWrapper(); 
        parent.field1 = new MyWrapper(); 
        parent.field1.fieldName = 'Example Field'; 
        parent.field1.display = true; 

        FlowOutputWrapper output = new FlowOutputWrapper(); 
        output.parent = parent; 
        output.overallWeightage = 80; 

        results.add(output); 
        return results; 
    } 
}

解决方案2:减少嵌套层级(改用扁平结构)

若三层嵌套仍无法被识别,可将内层属性直接提升到上层,使用无嵌套的扁平结构,Flow可直接访问所有字段:

public class RecordCompletenessAction {
    public class FlowOutputWrapper { 
        @InvocableVariable(label='Field 1 Name')
        public String field1Name; 
        
        @InvocableVariable(label='Field 1 Display')
        public Boolean field1Display; 

        @InvocableVariable(label='Overall Weightage')
        public Integer overallWeightage; 
    } 

    @InvocableMethod(label='Process Record Completeness')
    public static List<FlowOutputWrapper> processFlowAction(List<Id> recordIds) { 
        List<FlowOutputWrapper> results = new List<FlowOutputWrapper>(); 

        FlowOutputWrapper output = new FlowOutputWrapper(); 
        output.field1Name = 'Example Field'; 
        output.field1Display = true; 
        output.overallWeightage = 80; 

        results.add(output); 
        return results; 
    } 
}

解决方案3:将嵌套类改为顶级类

将ParentWrapper和MyWrapper改为独立的顶级public类,可规避Flow对内部嵌套类的识别问题:

// 顶级类
public class ParentWrapper { 
    @InvocableVariable(label='Field 1')
    public MyWrapper field1; 

    @InvocableVariable(label='Field 2')
    public MyWrapper field2; 
}

// 顶级类
public class MyWrapper { 
    @InvocableVariable(label='Field Name')
    public String fieldName; 

    @InvocableVariable(label='Display Flag')
    public Boolean display; 
}

public class RecordCompletenessAction {
    public class FlowOutputWrapper { 
        @InvocableVariable(label='Parent Wrapper')
        public ParentWrapper parent; 

        @InvocableVariable(label='Overall Weightage')
        public Integer overallWeightage; 
    } 

    @InvocableMethod(label='Process Record Completeness')
    public static List<FlowOutputWrapper> processFlowAction(List<Id> recordIds) { 
        List<FlowOutputWrapper> results = new List<FlowOutputWrapper>(); 

        ParentWrapper parent = new ParentWrapper(); 
        parent.field1 = new MyWrapper(); 
        parent.field1.fieldName = 'Example Field'; 
        parent.field1.display = true; 

        FlowOutputWrapper output = new FlowOutputWrapper(); 
        output.parent = parent; 
        output.overallWeightage = 80; 

        results.add(output); 
        return results; 
    } 
}

Flow对嵌套对象的限制说明

Salesforce官方支持Invocable动作中的嵌套包装类,但实际使用存在以下限制:

  • 三层及以上嵌套可能出现识别异常,建议最多使用两层嵌套。
  • 内部类必须为public,且所有需暴露给Flow的属性必须带有@InvocableVariable注解。
  • 修改Apex类后,需重新在Flow中添加Invocable动作,确保Flow加载最新的类结构。

内容的提问来源于stack exchange,提问作者yogesh lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 08:47:35