Gerenciador de dados
O Gerenciador de dados é o componente de gerenciamento de estado e orquestração para o Product Configurator. Esse componente armazena dados do produto e usa eventos de fluxo para propagar os dados para outros componentes na tela de fluxo.
Edições obrigatórias
| Disponível em: Lightning Experience |
| Disponível em: Edições Enterprise, Unlimited e Developer do Revenue Management (anteriormente Revenue Cloud) com a licença Revenue Cloud Growth ou a licença Revenue Cloud Advanced |
Responsabilidades do gerente de dados
- Manter o contexto da transação e o estado de configuração
- Chamar a API do configurador e processar respostas
- Processar eventos do Lightning Message Service (LMS) de componentes da IU
- Fornecer dados à IU e expor propriedades reativas a componentes filhos
- Oferecer suporte para salvar e carregar configurações favoritas
Nome da API do Gerente de dados
S01_DataManager
Propriedades de entrada do Gerente de dados
O Gerente de dados aceita dados de propriedades pai ou de componente de fluxo definidas pelos usuários.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| transactionLineId | String | Sim | ID de linha da transação ou produto raiz |
| currentTransactionLineId | String | Sim | Linha atual que está sendo visualizada |
| transactionId | String | Sim | ID da transação de vendas (cotação, pedido e assim por diante) |
| parentName | String | Sim | Nome ou título da transação pai à qual a configuração pertence. |
| origem | String | Sim | Nome do objeto pai do registro da transação. Exemplo: "Oportunidade", "Cotação", "Pedido", "Ativo" e assim por diante. Isso identifica qual tipo de objeto do Salesforce inicia a configuração. Usado para navegação, rótulo da IU e assim por diante. |
| addedNodes | Matriz | Não | Recurso de fluxo que contém uma coleção de registros do Apex ProductConfig__SalesTransactionItem associados à transação do registro pai. |
| isNonBlockingEnabled | Booleano | Não | Ative o modo sem bloqueio. Quando ativada, isso permite que os usuários continuem interagindo com a UI enquanto as chamadas à API estão sendo processadas em segundo plano. As alterações são colocadas em fila e processadas de modo assíncrono sem bloquear a UI. Quando desativada, a IU fica bloqueada durante chamadas à API. |
| areMessagesFixed | Booleano | Não | Se o componente de mensagens tem uma posição fixa. Quando verdadeiro, o componente de mensagens permanece fixo na parte superior da tela e permanece visível durante a rolagem (posicionamento persistente). Quando falso, o componente de mensagens rola com o conteúdo da página (posicionamento relativo). Útil para manter erros/avisos de validação sempre visíveis durante a configuração |
| contextId | String | Não | ID do contexto da transação especificado para o Product Configurator |
| enableARCValidation | Booleano | Não | Indica se a validação do ARC (configuração de renovação de ativo) é executada durante a configuração do produto |
| transactionLineGroupId | String | Não | ID do grupo que contém a linha da transação atual que está sendo configurada. Para Cotações, esse é o ID do grupo de linhas de cotação. Para Pedidos, esse é o ID do grupo de itens do pedido. |
| explainabilityEnabled | Booleano | Não | Quando a Capacidade de explicação está habilitada, o Product Configurator fornece explicações detalhadas sobre por que os produtos são ocultados, desabilitados ou recomendados. Mostra os detalhes da execução da regra e o raciocínio da lógica de negócios para ajudar os usuários a entender as restrições de configuração. |
| userContext | Objeto | Não | Nome de API de uma variável de fluxo que contém dados de qualificação do usuário. Essa variável é do tipo ProductConfig__UserContext e determina a elegibilidade do produto com base em atributos específicos do usuário. 1. No Flow Builder, crie um nome de API de variável, por exemplo, userContextData. 2. Use um elemento Atribuição ou Obter registros para preencher a variável e definir campos como role, region, accountType etc. Por exemplo, {!userContextData.role} = {!$User.UserRole.Name} 3. No Gerenciador de dados, para Contexto do usuário, selecione {!userContextData}. A API do configurador usa esses dados para avaliar regras de qualificação e filtrar quais produtos estão disponíveis. Por exemplo, se você tiver regras como "Mostrar produtos empresariais apenas a representantes de vendas empresariais", a API verificará o papel do usuário nesse contexto. Selecione um contexto de usuário apenas se você tiver regras de qualificação de produto que dependam de atributos específicos do usuário, como papel, território e assim por diante. Se todos os produtos estiverem disponíveis a todos os usuários, deixe esse campo vazio. |
Propriedades de saída do Gerente de dados
O Gerente de dados grava propriedades de saída que os clientes podem ler. Um método interno gera dados e o FlowAttributeChangeEvent envia os dados para a propriedade relevante, como mostra este exemplo.
this.dispatchEvent(
new FlowAttributeChangeEvent(FLOW_REACTIVITY_MESSAGES, messages)
);
Esta tabela mostra quais dados o Gerenciador de dados fornece a outros componentes. A coluna Origem de dados identifica o processo interno que gera os dados.
| Propriedade | Tipo de dados | Descrição | Origem de dados |
|---|---|---|---|
| cabeçalho | Objeto | Informações do cabeçalho do produto atual | mergeContexts() |
| mensagens | Matriz | Mensagens de erro/validação | Resposta da API + regras |
| optionGroups | Matriz | Grupos de componentes do produto (opções) | mergeContexts() |
| attributeCategories | Matriz | Categorias de atributos do produto | mergeContexts() |
| resumo | Objeto | Resumo da configuração (árvore de transações mescladas) | mergeContexts() |
| navigationRoute | Matriz | Caminho de navegação atual ou trilhas de navegação | buildNavigationInfo() |
| searchInfo | Matriz | Dados de pesquisa para o catálogo de produtos | buildSearchInfo() |
| guias | Matriz | Guias disponíveis para pacotes de várias raízes | buildTabs() |
| currencyCode | String | Código de moeda para precificação | Resposta da API |
| transactionRecord | Objeto | Detalhes do registro da transação | populateTransactionRecord() |
| headerTitle | String | Texto do título do cabeçalho | generateHeaderTitle() |
| isInstantPricingToggleEnabled | Booleano | Se a opção de precificação instantânea é mostrada | setToggleStates() |
| isInstantPricingEnabled | Booleano | Estado de precificação instantânea atual | Alternância/API |
| isProductValidationEnabled | Booleano | Estado de validação atual | Alternância/API |
| showPrices | Booleano | Se os preços serão exibidos | Lógica de estado |
| showSummaryTotalSection | Booleano | Se deseja mostrar a seção total do resumo | Substituição de seguro |
| favoriteData | String (JSON) |
Dados de configuração para favoritos | getFavoriteData() |
| isConfiguratorDisabled | Booleano | Se o configurador está desabilitado | Estado da IU |
| isApiInProgress | Booleano | Se a chamada de API está em andamento | Ciclo de vida da API |
| isPriceRampEnabled | Booleano | Se as rampas de preço estão habilitadas | Verificação de contexto |
| isGroupRampEnabled | Booleano | Se as rampas de grupo estão habilitadas | Cálculo do grupo |
| salesTransactionItems | Matriz | Todos os itens da transação | Resposta da API |
| layoutMode | String | Modo de layout (padrão ou compacto) | Alternância |
| searchResultOptionId | String | ID da opção de resultado da pesquisa selecionada | Navegação de pesquisa |
| rootProductId | String | ID do produto raiz | Dados do catálogo |
| currentGroupName | String | Nome do grupo atual | getCurrentGroupName() |
| contextMetadata | Objeto | Metadados de contexto para atributos personalizáveis de Item da transação de vendas. Contém definições de campo (rótulos, tipos de dados, valores de lista de opções) para atributos personalizados que podem ser exibidos na UI. | Análise de contexto |
| eligiblePromotions | Matriz | Lista de promoções elegíveis | API de promoção |
O Gerenciador de dados de eventos escuta
O Gerenciador de dados escuta eventos do Lightning Message Service (LMS) e adaptadores de conexão.
Para ouvir eventos do LMS, o Gerenciador de dados assina o canal de mensagens e recebe eventos do LMS que outros componentes publicaram lá. Esta tabela mostra ações de evento do LMS, seus métodos de manipulador e o que as ações fazem.
| Ação do evento | Método do manipulador | O que faz |
|---|---|---|
| valueChange | setState() | Atualiza o estado de configuração (seleções, quantidades, atributos) |
| navegar | navigate() | Navega pela hierarquia de pacotes |
| closePreview | closePreview() | Fecha a janela de visualização |
| toggleInstantPricing | setInstantPricing() | Ativa/desativa a precificação instantânea |
| capacidade de explicação | setExplainability() | Ativa/desativa a capacidade de explicação |
| toggleRulesValidation | setProductValidation() | Ativa/desativa a validação |
| updatePrices | updatePrices() | Aciona manualmente a precificação |
| validateProduct | validateProduct() | Aciona manualmente a validação |
| cloneItems | cloneItems() | Clona itens de transação |
| toggleCompactLayout | setLayoutModeOnToggle() | Alterna o modo de layout |
| contextDefinitionChanged | setContextDefinition() | Atualiza a definição de contexto |
| saveFavConfiguration | handleSaveConfiguration() | Salva a configuração como favorita |
| loadFavorite | handleLoadFavorite() | Carrega a configuração favorita |
Os adaptadores de conexão escutam automaticamente as alterações de dados da plataforma do Salesforce e passam as alterações de dados para o Gerenciador de dados. Esta tabela mostra os eventos do adaptador de conexão que o Gerenciador de dados escuta.
| Adaptador de fio | Origem | O que ele escuta | Método do manipulador | Objetivo |
|---|---|---|---|---|
MessageContext |
Lightning/messageService | Contexto da mensagem para LMS | Não aplicável (informa o contexto) |
Habilita a comunicação do LMS |
getContextServiceDefinition |
Lightning/industriesContextApi | Alterações de definição de contexto | gotContextDefinition() |
Escute dados de definição de contexto |
getObjectInfos (2nd) |
Lightning/uiObjectInfoApi | Informações do objeto de item de transação | getObjectInfos() | Escute os metadados do item de transação |
Incursões do Gerenciador de dados de eventos
O Gerenciador de dados aciona eventos personalizados, eventos de toast e eventos de alteração de atributo de fluxo.
Esta tabela mostra as ações personalizadas do Gerenciador de dados, incluindo bolhas e eventos compostos.
| Nome do evento | Bolhas | Composto | Quando Fogo | Objetivo |
|---|---|---|---|---|
| carregando | Sim | Sim | Durante o carregamento inicial | Notificar pai do estado de carregamento |
| continuar | Sim | Sim | Cancelar na janela raiz OU fechar | Feche o configurador sem salvar |
| salvar | Sim | Sim | Salvar e sair da navegação | Salvar configuração e sair |
| close_modal | Sim | Sim | Fechar visualização | Fechar janela de visualização |
| showConflictToast | Sim | Sim | Conflitos de API não de bloqueio detectados | Mostrar toast de aviso de conflito |
Esta tabela mostra as incursões de evento de toast do Gerenciador de dados.
| Nome do evento | Quando é Descarregado | Objetivo |
|---|---|---|
| ShowToastEvent | Depois de carregar favorito com sucesso | Notificar o usuário de um carregamento de favorito bem-sucedido |
O Gerente de dados envia eventos de FlowAttributeChange para todas as propriedades reativas em cada atualização da IU.
