Loading
自动执行业务流程
目录
选择筛选器

          没有结果
          没有结果
          以下是一些搜索提示

          检查关键字的拼写。
          使用更普遍的搜索词。
          选择更少的筛选器,并扩大搜索范围。

          搜索所有 Salesforce 帮助
          Apex 定义的数据类型

          Apex 定义的数据类型

          通过 Apex 定义的数据类型,流可以操纵通常从对 Web 服务调用返回的各种复杂数据对象。在流中创建 Apex 定义的变量,并直接处理从 Web 调用返回的 JSON。

          所需的 Edition

          查看支持的版本。

          开发人员可以定义 Apex 类,以用作从 Web 到流自动转换的模式,并允许使用声明性方法完全操纵在流中执行的结果对象,无需其他代码。对于将流连接到通过 Mulesoft 和 REST 调用访问的丰富外部 Web 对象,Apex 定义的资源非常有用。如果不支持数据类型,流可将值传输到 Lightning 组件,您可以使用 Apex 对其进行操作。

          示例
          示例 通过汽车经销商的屏幕流,客户可以搜索经销商的库存数据;该数据将存储在其他数据库中。经销商将在组织中创建 Apex 类,以定义汽车数据类型。然后,经销商创建包含 2 个 Apex 定义的变量的屏幕流。流将在流、Apex 动作和 Lightning 组件之间传输变量。

          使用 Apex 定义的数据类型扩展流

          对于通常从调用 Web 服务返回的复杂数据对象的业务流程,您可以使用 Apex、流和 Lightning 组件组合将其自动化。例如,获取有关 Web 产品的外部产品数据,然后在 Salesforce 中创建记录。

          对 REST 端点的调用将返回具有产品数据的 JSON 响应。

          {
             "model": "Vintage Cruiser Jacket",
             "brand": "Acme",
             "identifiers": [
               {
                 "SKU": "A-J001"
               },
               {
                 "SKU": "A-J002"
               },
               {
                 "SKU": "A-J003"
               }
             ],
             "price": {
               "amount": {
                 "currencyValue": "500.00",
                 "name": "Amount",
                 "currency": "USD"
               },
               "salesUnit": {
                 "code": "EA",
                 "name": "Each"
               }
             }
          }
          

          使用 Apex 类建模 JSON 对象

          在 Apex 类中,定义复杂数据对象。例如,您可为 JSON 对象创建匹配 Apex 类。类用作模板,并将 JSON 转换为流可以使用的对象。

          在定义 Web 产品的 Apex 类后,您可以创建 Apex 操作,以使用 REST 调用从 Web 服务获取数据。对于使用 Apex 定义的数据类型的流变量,将在其中存储返回的数据。然后,对流、Apex 和 Lightning 组件中的数据执行操作。

          示例
          示例

          以下是 WebProduct Apex 模板的示例。它包含主要WebProduct类以及PriceIdentifiers的类。WebProduct有三种类型的数据。

          • modelbrand 字段使用基元字符串数据类型。
          • 价格字段引用Price类。请确保将每个类保存在单独的类文件中,因为流的 Apex 定义的数据类型不支持内部类。
          • identifiers 字段与 price 相似,但代表为列表。Identifiers 类允许流访问 JSON 数组,以表示三个特定 SKU 编号的列表。
          • parse方法将 JSON 转换为流程可访问的 Apex 对象。
          • 流的 Apex 类中的字段需要@AuraEnabled注解。
          public class WebProduct {
          
          @AuraEnabled
          public String model;
          
          @AuraEnabled
          public String brand;
          
          //Because the identifiers information is an array in the JSON schema, we create a separate class called Identifiers and define a property that contains a List.
          @AuraEnabled
          public List<Identifiers> identifiers;
          
          //This field has an Apex-defined data type in the Price Apex class.
          @AuraEnabled
          public Price price;
          
          //This method is used as part of the Create Apex Action section.
          public static WebProduct parse(String json) {
          return (WebProduct) System.JSON.deserialize(json, WebProduct.class);
          }
          

          Identifiers Apex 类定义了 SKU 字段。

          public class Identifiers {
          
          @AuraEnabled
          public String SKU;
          
          }
          

          Price Apex 类定义了金额salesUnit 字段。

          public class Price {
          
          //This field has an Apex-defined data type in the Amount Apex class.
          @AuraEnabled
          public Amount amount;
          
          
          //This field has an Apex-defined data type in the SalesUnit Apex class.
          @AuraEnabled
          public SalesUnit salesUnit;
          
          }
          

          Amount Apex 类定义了 currencyValuenamecurrency 字段。

          public class Amount {
          
          @AuraEnabled
          public String currencyValue;
          
          @AuraEnabled
          public String name;
          
          @AuraEnabled
          public String currency;
          
          }
          
          

          SalesUnit Apex 类定义了代码名称字段。

          public class SalesUnit {
          
          @AuraEnabled
          public String code;
          
          @AuraEnabled
          public String name;
          
          }
          
          提示
          提示 您可以使用第三方工具,以将 JSON 转换为 Apex。

          创建 Apex 操作

          在创建将 JSON 数据转换为流资源的机制后,您可以创建检索 JSON 数据的 Apex 类。使用@InvocableMethod注解将类定义为流的 Apex 操作。

          GetWebProduct Apex 类定义了 Apex 操作。它从 REST 端点获取产品数据,并将 JSON 响应解析为 WebProduct Apex 对象。

          从 API 版本 66.0 开始,用作可调用操作参数的自定义 Apex 类需要可访问的无参数构造函数。在此示例中,请求和结果内部类未定义任何构造函数,因此 Apex 提供隐式无参数构造函数。如果您向这些类添加其他构造函数,类需要具有适当访问修改符(公共或全局)的显式无参数构造函数。

          开发人员可以通过创建 InvocableActionExtension 元数据文件来自定义此 Apex 操作在 Flow Builder 中的显示方式。此元数据允许您控制输入顺序和分组,添加自定义标题,定义输入参数的选项列表,并为特定输入创建自定义属性编辑器。有关更多信息,请查看元数据 API 开发人员指南中的“InvocableActionExtension”。

          示例
          示例
          global with sharing class GetWebProduct {
           
              @InvocableMethod
              public static List<Results> GetWebProduct(List<Requests> requests)
                 {
                      Http http = new Http();
                      HttpRequest request = new HttpRequest();
                      String endpoint = requests[0].endpoint;
                      String submittedId = requests[0].submittedId;
                      request.setEndpoint(endpoint + submittedId );
                      request.setMethod('GET');
                      HttpResponse response = http.send(request);
                     
                      Results curResult = new Results();
                      String responseJSON = response.getBody();
                     
                      WebProduct curProduct = WebProduct.parse(responseJSON);        
                      curResult.WebProduct = curProduct;
                     
                      List<Results> resultsList = new List<Results>();
                      resultsList.add(curResult);
                      return resultsList;
                 }
              
              global class Requests {
                  @InvocableVariable
                  global String submittedId;
                  
                  @InvocableVariable
                  global String endpoint;       
              }
              
              global class Results {
                  @InvocableVariable
                  global WebProduct WebProduct;
              }
          
          }
          
          备注
          备注

          本示例使用全局访问权限修改器,因为它专为受管软件包场景设计。如果您创建 Apex 操作只是为了在您的组织中使用,您可以使用公用,而不是全局。

          配置 Apex 操作

          将 Apex 操作添加到屏幕流,并配置输入。

          示例
          示例

          获取 Web 产品 Apex 操作自动将 Web 产品数据存储到 {!Get_Web_Product} 中。

          获取 Web 产品的新建操作窗口

          现在,您可对流、Apex 和 Lightning 组件中的数据执行操作。例如,通过循环标识符和组合产品集合构建流,以生成产品数据。将记录集合保存到 Salesforce,并在流屏幕组件中显示数据。

          适用于具有 Apex 定义的数据类型的扩展流的流画布

          将自定义图标添加到 Apex 定义操作

          将自定义图标添加到 Apex 定义的可调用操作中,以使其更易在 Flow Builder 画布中找到。

          自定义图标可以是 SVG 文件或现有 Salesforce Lightning 设计系统 (SLDS) 图标。

          SVG 文件必须满足这些要求。

          • 文件中的 <svg> 元素包括 idxmlnsviewBox 属性。
          • 文件中的 <svg> 元素不包括 styleheightwidth 属性。
          • 文件不包含<clipPath>元素。
          • 文件中的每个<path>元素都包括一个fill属性。

          例如,支持此 SVG 文件作为自定义图标。

          <svg id="top" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path fill="#673ab7" d="M12,44c-1.657,0-3-1.343-3-3V7c0-1.657,1.343-3,3-3h16l11,11v26c0,1.657-1.343,3-3,3H12z"/><path fill="#5e35b1" d="M39 15L28.883 14.125 39 24.124z"/><path fill="#b39ddb" d="M39,15h-8c-1.657,0-3-1.343-3-3V4L39,15z"/><path fill="#f5f5f5" d="M22 23H32V25H22zM22 28H32V30H22zM22 33H32V35H22zM17.5 22.5A1.5 1.5 0 1 0 17.5 25.5 1.5 1.5 0 1 0 17.5 22.5zM17.5 27.5A1.5 1.5 0 1 0 17.5 30.5 1.5 1.5 0 1 0 17.5 27.5zM17.5 32.5A1.5 1.5 0 1 0 17.5 35.5 1.5 1.5 0 1 0 17.5 32.5z"/></svg>

          仅支持标准对象和自定义对象 SLDS 图标作为 Apex 定义的可调用操作的自定义图标。

          • 如果您使用的是 SVG 文件,请在贵组织中将该文件作为静态资源上传。
          • 将可调用操作的InvocableMethod注释的iconName属性设置为图标的名称。

          对于 SVG 图标,将名称指定为 resource:namespace__iconName:svgID。例如:

          public class CustomSvgIcon { 
          
          @InvocableMethod(iconName='resource:google:top') 
          public static void run() {} 
          
          }
          public class CustomSvgIcon { 
          
          @InvocableMethod(label='myIcon' iconName='resource:myPackageNamespace__google:top')
          global static List<Integer> myMethod(List<Integer> request) {
          List<Integer> results = new List<Integer>();
          results.add(1);
          return results;
          
          }
          • iconName 是您在上传图标时指定的名称。

          • svgID 是 SVG 文件中 <svg> 元素的 id 属性的值。

          • Namespace 是软件包的命名空间,包含要自定义的可调用操作。如果可调用操作在受管软件包中,则 namespace__是必填前缀。否则,它是可选项。要对受管软件包中的可调用操作使用自定义图标,请将定义可调用操作的方法声明为 global

          对于 SLDS 图标,将名称指定为 slds:category:name。例如:

          public class CustomSldsIcon { 
          
          @InvocableMethod(iconName='slds:standard:choice') 
          public static void run() {} 
          
          }
          • category 是图标类别的名称。
          • name 是 SLDS 中文件的名称。

          当用户在 Flow Builder 中添加可调用操作时,自定义图标将显示在 Flow Builder 画布上以表示它。

           
          正在加载
          Salesforce Help | Article