如何以正确的范围将 Salesforce Flow 变量传递到 Apex Class?
How to pass Salesforce Flow variables into Apex Class with correct scope?
我正在尝试使用 Salesforce 中的 Flow 将变量传递到 Apex Class,该 Apex Class 执行到外部 API 的 HTTP Post。 Flow 抓住一个机会,解析它的一些字段,并将它们输入到 Apex class。从那里,Apex class 调用 InvocableMethod 来创建自定义对象以将这些输入存储为字符串列表,然后将它们传递给 'webservice' class,后者创建 JSON 对象的数据和 POST 它到 API.
我能够让 POST 与硬编码字符串一起正常工作,但是当我尝试使用输入变量时,Flow 错误提示输入参数“xxxxxx”不可用在引用的操作中。从“Apex-Class-xxxx”操作元素中删除它。
在 Flow 的调试屏幕中,我还可以看到这些输入正在从 Salesforce 中获取正确的值,但它会出错:为 Apex 操作指定了无效的输入参数
如何让这些输入正确进入 Apex class?
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();
.........
你基本上就在那里 -
在可调用方法上,您需要声明一个 list/array 您创建的用于存储输入的顶点对象,而不是字符串列表:
@InvocableMethod(label='xxxx' description='xxxxx')
public static List<String> sendToWebService(List<FlowInputs> request)
然后,您应该能够在请求 header/body 方法本身中对 json 进行格式化
我正在尝试使用 Salesforce 中的 Flow 将变量传递到 Apex Class,该 Apex Class 执行到外部 API 的 HTTP Post。 Flow 抓住一个机会,解析它的一些字段,并将它们输入到 Apex class。从那里,Apex class 调用 InvocableMethod 来创建自定义对象以将这些输入存储为字符串列表,然后将它们传递给 'webservice' class,后者创建 JSON 对象的数据和 POST 它到 API.
我能够让 POST 与硬编码字符串一起正常工作,但是当我尝试使用输入变量时,Flow 错误提示输入参数“xxxxxx”不可用在引用的操作中。从“Apex-Class-xxxx”操作元素中删除它。
在 Flow 的调试屏幕中,我还可以看到这些输入正在从 Salesforce 中获取正确的值,但它会出错:为 Apex 操作指定了无效的输入参数
如何让这些输入正确进入 Apex class?
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();
.........
你基本上就在那里 -
在可调用方法上,您需要声明一个 list/array 您创建的用于存储输入的顶点对象,而不是字符串列表:
@InvocableMethod(label='xxxx' description='xxxxx')
public static List<String> sendToWebService(List<FlowInputs> request)
然后,您应该能够在请求 header/body 方法本身中对 json 进行格式化