Vous êtes ici :
Gestionnaire de données
Le Gestionnaire de données est le composant de gestion d'état et d'orchestration du Configurateur de produit. Ce composant stocke les données de produits et utilise des événements de flux pour propager les données à d'autres composants de l'écran de flux.
Éditions requises
| Disponible avec : Lightning Experience |
| Disponible avec : les éditions Enterprise, Unlimited et Developer de Gestion du revenu (anciennement Revenue Cloud) avec la licence Revenue Cloud Growth ou Revenue Cloud Advanced |
Responsabilités du gestionnaire de données
- Maintenir le contexte de la transaction et l'état de configuration
- Invoquer l'API Configurator et traiter les réponses
- Traiter les événements LMS (Lightning Message Service) à partir de composants de l'interface utilisateur
- Fournir des données à l'interface utilisateur et exposer les propriétés réactives aux composants enfants
- Prendre en charge l'enregistrement et le chargement des configurations favorites
Nom d'API du gestionnaire de données
S01_DataManager
Propriétés d'entrée du Gestionnaire de données
Le Gestionnaire de données accepte les données des propriétés du composant parent ou de flux définies par les utilisateurs.
| Propriété | Type | Obligatoire | Description |
|---|---|---|---|
| transactionLineId | Chaîne | Oui | ID de ligne de produit ou de transaction racine |
| currentTransactionLineId | Chaîne | Oui | Ligne actuelle visualisée |
| transactionId | Chaîne | Oui | ID de transaction commerciale (devis, commande, etc.) |
| parentName | Chaîne | Oui | Nom ou titre de la transaction parente à laquelle la configuration se rapporte. |
| origine | Chaîne | Oui | Nom de l'objet parent de l'enregistrement de transaction. Exemple : 'Opportunité', 'Devis', 'Commande', 'Actif', etc. Cela identifie le type d'objet Salesforce qui lance la configuration. Utilisé pour la navigation, l'étiquette de l'interface utilisateur, etc. |
| addedNodes | Groupe | Non | Ressource de flux qui contient une collection d'enregistrements Apex ProductConfig__SalesTransactionItem associés à la transaction de l'enregistrement parent. |
| isNonBlockingEnabled | Booléen | Non | Activez le mode non bloquant. Lorsqu'elle est activée, elle permet aux utilisateurs de continuer à interagir avec l'interface utilisateur pendant que les appels d'API sont traités en arrière-plan. Les modifications sont mises en file d'attente et traitées de façon asynchrone sans bloquer l'interface utilisateur. Lorsqu'elle est désactivée, l'interface utilisateur est verrouillée pendant les appels d'API. |
| areMessagesFixed | Booléen | Non | Indique si le composant messages a une position fixe. Si true, le composant messages reste fixe en haut de l'écran et reste visible pendant le défilement (positionnement collant). Si false, le composant messages fait défiler le contenu de la page (positionnement relatif). Utile pour garder les erreurs/avertissements de validation toujours visibles pendant la configuration |
| contextId | Chaîne | Non | ID du contexte de transaction spécifié pour le Configurateur de produit |
| enableARCValidation | Booléen | Non | Indique si la validation ARC (Configuration du renouvellement des actifs) est exécutée pendant la configuration du produit |
| transactionLineGroupId | Chaîne | Non | ID du groupe qui contient la ligne de transaction actuelle configurée. Pour les devis, il correspond à l'ID de groupe de lignes de devis. Pour les commandes, il correspond à l'ID de groupe d'articles de commande. |
| explicabilitéActivé | Booléen | Non | Lorsque l'explicabilité est activée, le configurateur de produits fournit des explications détaillées sur les raisons pour lesquelles les produits sont masqués, désactivés ou recommandés. Affiche les détails d'exécution des règles et le raisonnement logique métier pour aider les utilisateurs à comprendre les contraintes de configuration. |
| userContext | Objet | Non | Nom d'API d'une variable de flux qui contient des données de qualification utilisateur. Cette variable est de type ProductConfig__UserContext et détermine l'éligibilité du produit en fonction d'attributs spécifiques à l'utilisateur. 1. Dans Flow Builder, créez un nom d'API de variable, par exemple userContextData. 2. Utilisez un élément Attribution ou Obtenir des enregistrements pour remplir la variable, puis définissez des champs tels que role, region, accountType, etc. Par exemple, {!userContextData.role} = {!$User.UserRole.Name} 3. Dans le Gestionnaire de données, sélectionnez {!userContextData} dans Contexte de l'utilisateur. L'API Configurator utilise ces données pour évaluer les règles de qualification et filtrer les produits disponibles. Par exemple, si vous avez des règles telles que « Afficher les produits Enterprise uniquement aux commerciaux Enterprise », l'API vérifie le rôle de l'utilisateur dans ce contexte. Sélectionnez un contexte utilisateur uniquement si vous avez des règles de qualification produit qui dépendent d'attributs spécifiques à l'utilisateur, tels que rôle, territoire, etc. Si tous les produits sont disponibles pour tous les utilisateurs, laissez ce champ vide. |
Propriétés de sortie du Gestionnaire de données
Le Gestionnaire de données écrit les propriétés de sortie que les clients peuvent lire. Une méthode interne génère des données et le FlowAttributeChangeEvent les répartit vers la propriété appropriée, comme indiqué dans cet exemple.
this.dispatchEvent(
new FlowAttributeChangeEvent(FLOW_REACTIVITY_MESSAGES, messages)
);
Le tableau ci-dessous montre les données que le Gestionnaire de données fournit aux autres composants. La colonne Source de données identifie le processus interne qui génère les données.
| Propriété | Type de données | Description | Source de données |
|---|---|---|---|
| en-tête | Objet | Informations sur l'en-tête du produit actuel | mergeContexts() |
| messages | Groupe | Messages de validation/erreur | Réponse d'API + règles |
| optionGroups | Groupe | Groupes de composants de produit (options) | mergeContexts() |
| attributeCategories | Groupe | Catégories d'attributs de produit | mergeContexts() |
| résumé | Objet | Résumé de configuration (arborescence des transactions fusionnées) | mergeContexts() |
| navigationRoute | Groupe | Chemin de navigation actuel, ou chemins de navigation | buildNavigationInfo() |
| searchInfo | Groupe | Données de recherche du catalogue de produits | buildSearchInfo() |
| tabulations | Groupe | Onglets disponibles pour les paquets multiracines | buildTabs() |
| currencyCode | Chaîne | Code de devise pour la tarification | Réponse d'API |
| transactionRecord | Objet | Détails de l'enregistrement de transaction | populateTransactionRecord() |
| headerTitle | Chaîne | Texte du titre de l'en-tête | generateHeaderTitle() |
| isInstantPricingToggleEnabled | Booléen | Indique si le commutateur de tarification instantanée est affiché | setToggleStates() |
| isInstantPricingEnabled | Booléen | État de tarification instantané actuel | Bascule/API |
| isProductValidationEnabled | Booléen | État de validation actuel | Bascule/API |
| showPrices | Booléen | Indique si les prix doivent être affichés | Logique d'état |
| showSummaryTotalSection | Booléen | Indique si la section Total récapitulatif doit être affichée | Remplacement d'assurance |
| favoriteData | Chaîne (JSON) |
Données de configuration des favoris | getFavoriteData() |
| isConfiguratorDisabled | Booléen | Si le configurateur est désactivé | État de l'interface utilisateur |
| isApiInProgress | Booléen | Indique si l'appel d'API est en cours | Cycle de vie de l'API |
| isPriceRampEnabled | Booléen | Si les rampes de prix sont activées | Vérification du contexte |
| isGroupRampEnabled | Booléen | Si les rampes de groupe sont activées | Calcul de groupe |
| salesTransactionItems | Groupe | Tous les éléments de transaction | Réponse d'API |
| layoutMode | Chaîne | Mode de présentation (standard ou compact) | Commutateur |
| searchResultOptionId | Chaîne | ID d'option de résultat de recherche sélectionné | Navigation dans la recherche |
| rootProductId | Chaîne | ID de produit racine | Données du catalogue |
| currentGroupName | Chaîne | Nom du groupe actuel | getCurrentGroupName() |
| contextMetadata | Objet | Métadonnées de contexte des attributs Élément de transaction commerciale personnalisables. Contient des définitions de champ (étiquettes, types de données, valeurs de liste de sélection) pour des attributs personnalisés qui peuvent être affichés dans l'interface utilisateur. | Analyse du contexte |
| eligiblePromotions | Groupe | Liste des promotions éligibles | API Promotion |
Événements que le Gestionnaire de données écoute
Le Gestionnaire de données écoute les événements Lightning Message Service (LMS) et les adaptateurs wire.
Pour écouter les événements LMS, le Gestionnaire de données s'abonne au canal de messagerie et reçoit les événements LMS que d'autres composants y ont publiés. Le tableau ci-dessous présente les actions d'événement LMS, leurs méthodes de gestionnaire et l'action exécutée.
| Action d’événement | Méthode Handler | Ce qu'il fait |
|---|---|---|
| valueChange | setState() | Met à jour l'état de configuration (sélections, quantités, attributs) |
| Navigation | navigate() | Navigue à travers la hiérarchie des offres groupées |
| closePreview | closePreview() | Ferme la fenêtre d'aperçu |
| basculeInstantPricing | setInstantPricing() | Active/désactive la tarification instantanée |
| basculeExplicabilité | setExplainability() | Active/désactive l'explicabilité |
| toggleRulesValidation | setProductValidation() | Active/désactive la validation |
| updatePrices | updatePrices() | Déclenche manuellement la tarification |
| validateProduct | validateProduct() | Déclenche manuellement la validation |
| cloneItems | cloneItems() | Clone des éléments de transaction |
| basculeCompactLayout | setLayoutModeOnToggle() | Bascule le mode de présentation |
| contextDefinitionChanged | setContextDefinition() | Met à jour la définition du contexte |
| saveFavConfiguration | handleSaveConfiguration() | Enregistre la configuration comme favorite |
| loadFavorite | handleLoadFavorite() | Charge la configuration favorite |
Les adaptateurs Wire écoutent automatiquement les modifications apportées aux données depuis la plate-forme de Salesforce, puis transmettent les modifications au Gestionnaire de données. Le tableau ci-dessous présente les événements de l'adaptateur wire que le Gestionnaire de données écoute.
| Adaptateur wire | Source | Ce qu'il écoute | Méthode Handler | Objet |
|---|---|---|---|---|
MessageContext |
Lightning/messageService | Contexte du message pour LMS | Sans objet (fournit le contexte) |
Active la communication LMS |
getContextServiceDefinition |
Lightning/industriesContextApi | Modifications de la définition du contexte | gotContextDefinition() |
Écoute les données de définition du contexte |
getObjectInfos (2nd) |
Lightning/uiObjectInfoApi | Informations sur l'objet Élément de transaction | getObjectInfos() | Écoute les métadonnées des éléments de transaction |
Déclenchements du Gestionnaire de données Événements
Le Gestionnaire de données déclenche des événements personnalisés, des événements flottants et des événements de changement d'attribut de flux.
Le tableau ci-dessous présente les événements personnalisés déclenchés par le Gestionnaire de données, y compris les événements bouillonnants et composés.
| Nom de l'événement | Bulles | Composé | Quand il se déclenche | Objet |
|---|---|---|---|---|
| chargement | Oui | Oui | Lors du chargement initial | Notifier le parent de l'état de chargement |
| procéder | Oui | Oui | Annuler à la racine OU Fermer la fenêtre | Fermer le configurateur sans enregistrer |
| enregistrer | Oui | Oui | Navigation Enregistrer et quitter | Enregistrer la configuration et quitter |
| close_modal | Oui | Oui | Fermer l'aperçu | Fermer la fenêtre d'aperçu |
| showConflictToast | Oui | Oui | Conflits d'API non bloquants détectés | Afficher le message flottant d'avertissement de conflit |
Le tableau ci-dessous montre l'événement flottant déclenché par le Gestionnaire de données.
| Nom de l'événement | Quand est-il déclenché | Objet |
|---|---|---|
| ShowToastEvent | Après avoir chargé le favori avec succès | Notifier l'utilisateur d'un chargement de favori réussi |
Le Gestionnaire de données répartit les événements FlowAttributeChange pour toutes les propriétés réactives à chaque mise à jour de l'interface utilisateur.
