当前位置: 首页 > 知识库问答 >
问题:

如何将Salesforce Flow变量传递到具有正确范围的Apex类中?

冯招
2023-03-14

我正在尝试使用Salesforce中的use a流将变量传递到Apex类,该类执行到外部API的HTTP Post。流抓住一个机会,解析它的一些字段,并将它们输入Apex类。从那里,Apex类调用InvocableMethod来创建一个自定义对象,以将这些输入存储为字符串列表,然后将其传递给“webservice”类,该类创建数据的JSON对象并将其发布到API。

我能够让帖子正确地处理硬编码字符串,但当我尝试使用输入变量时,流出错,说输入参数“xxxxxx”在引用的操作中不可用。将其从“Apex Class xxxx”动作元素中删除。

在流的调试屏幕中,我还可以看到这些输入正在从Salesforce获取正确的值,但它错误地说:为Apex操作指定了无效的输入参数

如何让这些输入正确进入Apex类?

global class MyApexClass
{
    //Stores output from 'sendToWebService' to be converted to JSON
    public class Body {
      public String address;
      public String companywebsite;
      public String companyname;
      public string opportunityid;

    }
    //Stores inputs from Flow 
    public class FlowInputs {
        @InvocableVariable public String Address;
        @InvocableVariable public String CompanyWebsite;
        @InvocableVariable public String CompanyName;
        @InvocableVariable public String OppId;
    }
    //Method to call webservice method since InvocableVariables can't be passed to it directly
    @InvocableMethod(label='xxxx' description='xxxxx')
    public static List<String> sendToWebService(List<String> flowData){
        List<String> outList;

        for (String input : flowData){
            outList.add(input);
        }
        
        SendToAPI(outList);
    
        return outList;
    }

    //creates an object to store inputs, converts to JSON, and sends it to the API via HTTP POST
    webservice static void SendToAPI(List<String> accountData){
        
        Http m_http = new Http();
        HttpRequest req = new HttpRequest();
        .........

共有1个答案

谭景福
2023-03-14

你基本上在那里-

在invocable方法上,您需要声明用于存储输入的apex对象的列表/数组,而不是字符串列表:

@InvocableMethod(label='xxxx' description='xxxxx')
public static List<String> sendToWebService(List<FlowInputs> request)

然后,您应该能够在请求头/体方法本身内对json进行格式化

 类似资料:
  • 问题内容: 好的,所以我想在动态生成的模板url中使用作用域变量。所以我尝试了这个: html js 我原本希望返回的值,但最终却得到了。结果导致templateUrl为。 那么,我该怎么办才能获取范围变量的值而不是原始文本? 问题答案: 作用域值不能从指令的templateUrl中访问。这些属性尚未编译,因此无法在此上下文中访问范围。 这是一种可能适合您的解决方法。 见Plunkr 我在这里所做

  • 我想在Postman中参数化我的测试。这是POST请求的示例正文:

  • 问题内容: 与Firebase问题相比,这更像是JavaScript关闭问题。在以下代码中,Firebase回调无法识别父作用域中的变量myArr。 问题答案: 回调函数可以很好地识别/修改。问题是,当执行标记为“不工作”的标签时,回调尚未触发。 让我们稍微更改一下代码: 现在,可能会更容易了解发生了什么。 您注册一个侦听器,该侦听器将调用添加到Firebase中的每个帖子 这将导致对服务器的调用

  • 问题内容: 尽管在ChildCtrl中实例化了一个“新”变量,我如何进行变量更改并将其轻松传播回ParentCtrl?加分点数最少,甚至没有$ on和$ watch(使其更易于实现) ParentCtrl ChildCtrl / ChildCtrl2 / ChildCtrl3 / ChildCtrl4 视图 我的ChildCtrl的区别就足够大了,我无法轻松抽象出主布局和ng-view,但是它们都

  • 问题内容: 我知道变量作用域由块的开始和块的结尾包围。如果在块内声明了相同的变量,则会发生编译错误。但是,请看以下示例。 在这里,可以在方法中重新声明,尽管它已经在类中声明了。但是在块中,无法重新声明。 为什么类范围变量的重新声明不产生错误,而方法范围变量的重新声明却产生错误? 问题答案: 这是因为不是变量,而是实例字段。允许局部变量与字段具有相同的名称。为了区分变量和具有相同名称的字段,我们在实

  • 问题内容: 我知道变量作用域由块的开始和块的结尾包围。如果在块内声明了相同的变量,则会发生编译错误。但是,请看以下示例。 在这里,可以在方法中重新声明,尽管它已经在类中声明了。但是在块中,无法重新声明。 为什么类范围变量的重新声明不产生错误,而方法范围变量的重新声明却产生错误? 问题答案: 这是因为不是变量,而是实例字段。允许局部变量与字段具有相同的名称。为了区分变量和具有相同名称的字段,我们在实