Вы находитесь здесь:
Определенный Apex тип данных
С помощью определенного Apex типа данных потоки могут манипулировать видами сложных объектов данных, которые обычно возвращаются из вызовов веб-служб. Создайте определенные Apex переменные в потоках и напрямую обработайте JSON, возвращенный из веб-вызовов.
Требуемые версии
| Просмотр поддерживаемых версий. |
Разработчик может определить класс Apex, который будет служить схемой для автоматического преобразования из веб-в поток, что позволит полностью манипулировать итоговыми объектами в потоках с помощью декларативных подходов и без дополнительного кода. Определенные Apex ресурсы полезны для подключения потоков к обогащенным внешним веб-объектам, доступным посредством Mulesoft и вызовов REST. Если тип данных не поддерживается, потоки могут передать значение в компонент Lightning, и вы можете использовать Apex для работы с ним.
Расширение потоков посредством определенного Apex типа данных
С помощью сочетания Apex, потока и компонентов Lightning можно автоматизировать бизнес-процессы, которые задействуют сложные объекты данных, обычно возвращаемые из вызовов веб-служб. Например, получение внешних данных о веб-продукте с последующим созданием записей в 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"
}
}
}
См. также:
Объекты модели JSON с классом Apex
Определите сложный объект данных в классе Apex. Например, можно создать соответствующий класс Apex для объекта JSON. Класс действует как шаблон и преобразовывает JSON в объект, используемый в потоке.
После определения классов Apex для веб-продукта создайте действие Apex для получения данных из веб-службы посредством вызова REST. Храните полученные данные в переменных потока, использующих определенный Apex тип данных. Потом манипулируйте данными в потоках, Apex и компонентах Lightning.
Ниже указан образец шаблона WebProduct Apex. Он содержит основной класс WebProduct и классы для Price и Identifiers. WebProduct содержит три типа данных.
- Поля модель и фирменный стиль используют примитивный тип данных «Строка».
- Поле цены ссылается на класс
Price. Обязательно сохраните каждый класс в отдельных файлах классов, поскольку внутренние классы не поддерживаются в определенных Apex типах данных для потоков. - Поле коды такое же, как стоимость, но представлено списком. Класс
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 определяет поля currencyValue, имя и валюту.
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;
}
Создание действия Apex
После создания механизма перевода данных JSON в ресурсы потока, можно создать класс Apex, извлекающий данные JSON. Используйте примечание @InvocableMethod для определения класса как действия Apex для потоков.
Класс GetWebProduct Apex определяет действие Apex. Он получает данные о продукте из конечной точки REST и анализирует ответ JSON в объекте WebProduct Apex.
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 «Получить веб-продукт» автоматически сохраняет данные о веб-продукте в {!Get_Web_Product}.
Теперь вы можете манипулировать данными в потоках, Apex и компонентах Lightning. Например, создавайте поток для генерирования данных о продукте, создав цикл кодов и коллекцию продуктов. Сохраните коллекцию записей в Salesforce и отобразите данные в компоненте экрана потока.
Добавление настраиваемого значка в заданное Apex действие
Добавьте настраиваемые значки к заданным Apex действиям вызова, чтобы облегчить их поиск на холсте Flow Builder.
Настраиваемый значок может быть файлом SVG или текущим значком системы Salesforce Lightning Design System (SLDS).
Файлы SVG должны соответствовать следующим требованиям.
- Элемент
<svg>в файле содержит атрибутыid,xmlnsиviewBox. - Элемент
<svg>в файле не содержит атрибутовstyle,heightиwidth. - Файл не содержит элемента
<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 загрузите файл как статический ресурс в вашей организации.
- Установите атрибут
iconNameInvocableMethodпримечания для вызываемого действия на имя значка.
Для значков 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 - значение атрибута
idэлемента <svg> в файле SVG. -
namespace — пространство имен пакета, содержащего вызываемое действие для настройки. Если вызываемое действие находится в управляемом пакете, namespace__ является обязательным префиксом. В ином случае это необязательно. Чтобы использовать настраиваемый значок для вызываемого действия в управляемом пакете, объявите метод, определяющий вызываемое действие как
global.
Для значков SLDS укажите имя в качестве slds:category:name. Например:
public class CustomSldsIcon {
@InvocableMethod(iconName='slds:standard:choice')
public static void run() {}
}- категория - это имя категории значка.
- name - имя файла в SLDS.
При добавлении вызываемого действия в Flow Builder, настраиваемый значок отображается на холсте Flow Builder для его представления.

