Вы находитесь здесь:
Менеджер данных
Диспетчер данных - это компонент управления состоянием и оркестрации для конфигуратора продуктов. Этот компонент сохраняет данные о продукте и использует события потока для распространения данных на другие компоненты в окне потока.
Требуемые версии
| Доступно в версиях: Lightning Experience |
| Доступно в версиях: Enterprise, Unlimited и Developer Edition of Revenue Management (ранее Revenue Cloud) с лицензией Revenue Cloud Growth или Revenue Cloud Advanced |
Обязанности менеджера данных
- Сохранение контекста транзакции и состояния конфигурации
- Вызов API конфигуратора и обработка ответов
- Обработка событий службы сообщений Lightning (LMS) из компонентов пользовательского интерфейса
- Предоставление данных пользовательскому интерфейсу и предоставление доступа к реактивным свойствам дочерним компонентам
- Поддержка сохранения и загрузки избранных конфигураций
API-имя менеджера данных
S01_DataManager
Свойства ввода диспетчера данных
Диспетчер данных принимает данные из свойств родительского компонента или компонента потока, заданных пользователями.
| Свойство | Тип | Обязательно | Описание |
|---|---|---|---|
| transactionLineId | Строка | Да | Код корневого продукта или строки транзакции |
| currentTransactionLineId | Строка | Да | Просматриваемая текущая строка |
| transactionId | Строка | Да | Код транзакции продажи (смета, заказ и прочие) |
| parentName | Строка | Да | Имя или название родительской транзакции, к которой относится конфигурация. |
| происхождение | Строка | Да | Имя родительского объекта записи транзакции. Пример: 'Opportunity', 'Quote', 'Order', 'Asset' и т. д. Таким образом определяется тип объекта Salesforce, запускающий конфигурацию. Используется для навигации, метки пользовательского интерфейса и т. д. |
| addedNodes | Массив | Нет | Ресурс потока, содержащий коллекцию записей Apex ProductConfig__SalesTransactionItem, связанных с транзакцией родительской записи. |
| isNonBlockingEnabled | Логическое значение | Нет | Включите режим неблокировки. При включении, это позволяет пользователям продолжать взаимодействие с пользовательским интерфейсом, пока вызовы API обрабатываются в фоновом режиме. Изменения ставятся в очередь и обрабатываются асинхронно без блокировки пользовательского интерфейса. При выключении пользовательский интерфейс блокируется во время вызовов API. |
| areMessagesFixed | Логическое значение | Нет | Имеет ли компонент сообщений фиксированное положение. При истинности компонент сообщений остается фиксированным вверху экрана и остается видимым во время прокрутки (прилипание). При ложном компонент сообщений прокручивается вместе с содержимым страницы (относительное расположение). Рекомендуем использовать ошибки/предупреждения проверки, которые всегда отображаются во время настройки |
| contextId | Строка | Нет | Код контекста транзакции, указанного для конфигуратора продуктов |
| enableARCValidation | Логическое значение | Нет | Указывает, выполняется ли проверка ARC (конфигурация продления актива) во время конфигурации продукта |
| transactionLineGroupId | Строка | Нет | Код группы, содержащей настраиваемую текущую строку транзакции. В сметах это код группы строк сметы. В заказах это код группы элементов заказа. |
| объяснимостьВключено | Логическое значение | Нет | При включении объясняемости конфигуратор продуктов предоставляет подробные объяснения, почему продукты скрыты, отключены или рекомендованы. Отображает сведения о выполнении правил и аргументацию бизнес-логики, чтобы помочь пользователям понять ограничения конфигурации. |
| userContext | Объект | Нет | API-имя переменной потока, содержащей квалификационные данные пользователя. Эта переменная имеет тип ProductConfig__UserContext и определяет право продукта на основе пользовательских атрибутов. 1. В Flow Builder создайте API-имя переменной, например userContextData. 2. Используйте элемент «Назначение» или «Получение записей» для заполнения переменной и установки полей, например, роль, регион, accountType и т. д. Например, {!userContextData.role} = {!$User.UserRole.Name} 3. В диспетчере данных в контексте пользователя выберите {!userContextData}. Configurator API использует эти данные для оценки правил квалификации и фильтрации доступных продуктов. Например, при наличии правил типа «Показывать продукты предприятия только торговым представителям предприятия», API проверяет роль пользователя в этом контексте. Выберите контекст пользователя только при наличии правил определения продукта, которые зависят от определенных атрибутов пользователя, например, роль, территория и т. д. Если все продукты доступны всем пользователям, оставьте это поле пустым. |
| instantPricing | Логическое значение | Нет | Логическое значение, указывающее, включено ли мгновенное ценообразование по умолчанию. |
Выводные свойства менеджера данных
Диспетчер данных записывает свойства вывода, доступные клиентам для чтения. Внутренний метод создает данные, и FlowAttributeChangeEvent отправляет данные в соответствующее свойство, как показано в данном примере.
this.dispatchEvent(
new FlowAttributeChangeEvent(FLOW_REACTIVITY_MESSAGES, messages)
);
Данная таблица отображает данные, предоставляемые диспетчером данных другим компонентам. Столбец «Источник данных» определяет внутренний процесс, создающий данные.
| Свойство | Тип данных | Описание | Источник данных |
|---|---|---|---|
| заголовок | Объект | Текущие сведения о заголовке продукта | mergeContexts() |
| сообщения | Массив | Сообщения о проверке/ошибке | Ответ API + правила |
| optionGroups | Массив | Группы компонентов продукта (параметры) | mergeContexts() |
| attributeCategories | Массив | Категории атрибутов продукта | mergeContexts() |
| сводка | Объект | Сводка конфигурации (дерево объединенных транзакций) | mergeContexts() |
| navigationRoute | Массив | Текущий путь навигации или пути пути | buildNavigationInfo() |
| searchInfo | Массив | Данные поиска каталога продуктов | buildSearchInfo() |
| вкладки | Массив | Доступные вкладки для многокорневых пакетов | buildTabs() |
| currencyCode | Строка | Код валюты для ценообразования | Ответ API |
| transactionRecord | Объект | Сведения о записи транзакции | populateTransactionRecord() |
| headerTitle | Строка | Текст заголовка | GeneHeaderTitle() |
| isInstantPricingToggleEnabled | Логическое значение | Отображается ли переключатель мгновенного ценообразования | setToggleStates() |
| isInstantPricingEnabled | Логическое значение | Текущее состояние мгновенного ценообразования | Переключатель/API |
| isProductValidationEnabled | Логическое значение | Текущее состояние проверки | Переключатель/API |
| showPrices | Логическое значение | Отображать ли цены | Логика состояния |
| showSummaryTotalSection | Логическое значение | Отображать ли сводный общий раздел | Страховое переопределение |
| избранноеДанные | Строка (JSON) |
Данные конфигурации для избранных | getFavoriteData() |
| isConfiguratorDisabled | Логическое значение | Отключен ли конфигуратор | Состояние пользовательского интерфейса |
| isApiInProgress | Логическое значение | Выполняется ли вызов API | Жизненный цикл API |
| isPriceRampEnabled | Логическое значение | Включены ли ценовые рампы | Проверка контекста |
| isGroupRampEnabled | Логическое значение | Включены ли групповые пандусы | Вычисление группы |
| salesTransactionItems | Массив | Все элементы транзакции | Ответ API |
| layoutMode | Строка | Режим макета (стандартный или компактный) | Переключатель |
| searchResultOptionId | Строка | Код выбранного варианта результата поиска | Навигация поиска |
| rootProductId | Строка | Код корневого продукта | Данные каталога |
| currentGroupName | Строка | Текущее имя группы | getCurrentGroupName() |
| contextMetadata | Объект | Контекстные метаданные для настраиваемых атрибутов элемента транзакции продажи. Содержит определения полей (метки, типы данных, значения раскрывающегося списка) для настраиваемых атрибутов, которые могут отображаться в пользовательском интерфейсе. | Анализ контекста |
| rightPromotions | Массив | Список подходящих рекламных акций | API рекламной акции |
События, прослушиваемые диспетчером данных
Диспетчер данных прослушивает события службы сообщений Lightning (LMS) и проводные адаптеры.
Чтобы прослушать события LMS, диспетчер данных подписывается на канал сообщений и получает события LMS, опубликованные другими компонентами. Данная таблица отображает действия события LMS, методы их обработки и действия.
| Действие события | Метод обработчика | Что он делает |
|---|---|---|
| valueChange | setState() | Обновляет состояние конфигурации (выборки, количества, атрибуты) |
| переход | navigate() | Навигация по иерархии пакетов |
| closePreview | closePreview() | Закрытие окна предварительного просмотра |
| toggleInstantPricing | setInstantPricing() | Переключение мгновенного ценообразования |
| toggleОбъясняемость | setExplainability() | Переключает объяснимость включения/выключения |
| toggleRulesValidation | setProductValidation() | Переключает проверку включения/выключения |
| updatePrices | updatePrices() | Вручную запускает ценообразование |
| validateProduct | validateProduct() | Вручную запускает проверку |
| cloneItems | cloneItems() | Клонирует элементы транзакций |
| toggleCompactLayout | setLayoutModeOnToggle() | Режим макета переключателя |
| contextDefinitionChanged | setContextDefinition() | Обновление определения контекста |
| saveFavConfiguration | handleSaveConfiguration() | Сохраняет конфигурацию в избранном |
| loadFavorite | handleLoadFavorite() | Загрузка избранной конфигурации |
Проводные адаптеры автоматически прослушивают изменения данных из Salesforce Platform и передают изменения данных диспетчеру данных. Данная таблица отображает события проводного адаптера, прослушиваемые диспетчером данных.
| Проводной адаптер | Источник | Что он слушает | Метод обработчика | Цель |
|---|---|---|---|---|
MessageContext |
Lightning/messageService | Контекст сообщения для LMS | Не применимо (предоставляет контекст) |
Включает связь LMS |
getContextServiceDefinition |
Lightning/industriesContextApi | Изменения определения контекста | gotContextDefinition() |
Прослушивание данных определения контекста |
getObjectInfos (2nd) |
Lightning/uiObjectInfoApi | Сведения об объекте элемента транзакции | getObjectInfos() | Прослушивание метаданных элемента транзакции |
Пожары менеджера данных событий
Диспетчер данных запускает настраиваемые события, всплывающие события и события изменения атрибутов потока.
Данная таблица отображает настраиваемые события пожаров диспетчера данных, включительно с настраиваемыми и составными событиями.
| Имя события | Пузыри | Составлено | Когда стреляет | Цель |
|---|---|---|---|---|
| загрузка | Да | Да | Во время начальной загрузки | Уведомление родителя о состоянии загрузки |
| продолжить | Да | Да | Отмена в корневом окне ИЛИ закрытие | Закрытие конфигуратора без сохранения |
| сохранение | Да | Да | Сохранение и выход из навигации | Сохранение конфигурации и выход |
| close_modal | Да | Да | Закрытие предварительного просмотра | Окно закрытия предварительного просмотра |
| showConflictToast | Да | Да | Обнаружены конфликты API без блокировки | Показать предупреждение о конфликте |
Данная таблица отображает последнее событие, запущенное диспетчером данных.
| Имя события | Когда он запущен | Цель |
|---|---|---|
| ShowToastEvent | После успешной загрузки избранного | Уведомление пользователя об успешной загрузке избранного |
Диспетчер данных отправляет события FlowAttributeChange для всех реактивных свойств при каждом обновлении пользовательского интерфейса.
