MultiDatePick pour les développeurs et architectes Salesforce
Comment le calendrier s'intègre à votre organisation : où sont stockés les paramètres, ce que reçoit un flux d'écran, les types Apex que vos flux peuvent parcourir en boucle, le fonctionnement de la sécurité et le passage des configurations d'une organisation à l'autre.
MultiDatePick est conçu pour que les administrateurs n'aient jamais besoin d'un développeur. Cette page s'adresse aux cas où un développeur ou un architecte intervient malgré tout : pour examiner le package, construire des flux autour de lui ou faire passer sa configuration d'une sandbox à l'autre.
Ce que contient le package
| Élément | Rôle |
|---|---|
| Composant Date | Choisir plusieurs dates, faire glisser des plages, ajouter des récurrences. Enregistre un enregistrement par date ou par plage, ou renvoie les dates à un flux d'écran. |
| Composant Date Time | Des dates avec des créneaux horaires, communs ou propres à chaque date, avec contrôle des conflits. Enregistre un enregistrement par date, par bloc horaire, ou un parent avec des sous-blocs. |
| Composant Booking | Réserver des salles, des équipements, des véhicules ou des personnes (n'importe quel objet, y compris Utilisateur) avec capacité, heures ouvrables, jours bloqués et règles de réservation. |
| Assistant de configuration | Un onglet Lightning qui écrit les configurations, avec aperçu en direct, import et export JSON. |
| Actions de flux | Parse Date Entries from JSON et Format MultiDatePick Time Range, pour les flux qui enregistrent eux-mêmes les enregistrements. |
| Ensembles d'autorisations | MultiDatePick - Setup, MultiDatePick - User, MultiDatePick - All Access, et MultiDatePick - Guest pour les sites publics. |
Où sont stockés les paramètres
Chaque configuration enregistrée est un enregistrement de métadonnées personnalisées (Custom Metadata) : Config__mdt contient les paramètres, et Config_Extension__mdt contient les plus récents, en JSON dans Settings__c. Un emplacement sur une page ou un écran de flux désigne sa configuration dans Config Name ; toute propriété que vous définissez aussi sur l'emplacement remplace les valeurs texte et numériques de la configuration.
- Déployable : les configurations sont des métadonnées, elles passent donc par les ensembles de modifications, Salesforce CLI ou votre pipeline CI/CD comme toute autre métadonnée.
- Portable : l'assistant exporte une configuration en JSON et l'importe dans une autre organisation, en mappant tout objet ou champ qui y manque.
- Vérifiable : un enregistrement par configuration, lisible dans Configuration, si bien qu'un changement apparaît dans un diff.
Vos données restent les vôtres
Le calendrier lit et écrit vos propres objets. Pas de modèle de données MultiDatePick à synchroniser, pas de service externe, pas d'appel externe (callout) : les sélections deviennent des enregistrements ordinaires sur l'objet de votre choix, avec les champs que vous mappez (date, date de fin, heures de début et de fin, statut, nom, ressource). Les déclencheurs, flux, règles de validation et rapports sur ces objets continuent de fonctionner comme d'habitude.
Sorties du flux d'écran
Placez un composant sur un écran de flux, renseignez Config Name, puis lisez ces valeurs après l'écran :
| Sortie | Type | Contenu |
|---|---|---|
| Selected Dates | Collection de texte | Chaque date choisie au format YYYY-MM-DD. Parcourez-la en boucle pour créer un enregistrement par date. |
| Date Ranges JSON | Texte | Les plages choisies, chacune avec une date de début et une date de fin, quand Output Date Ranges as JSON est activé. |
| Dates With Times JSON | Texte | Composant Date Time : chaque date avec son heure de début et son heure de fin. |
| Successful Bookings Count | Nombre | Composant Booking : le nombre de réservations créées par l'enregistrement. |
Passez un enregistrement dans Parent Record Id et le calendrier affiche les dates existantes de cet enregistrement et peut en enregistrer de nouvelles lui-même. Pour que ce soit le flux qui enregistre, choisissez Mon flux les enregistre dans l'assistant : le calendrier masque alors son propre bouton Enregistrer et se contente de transmettre les sélections au flux.
Parcourir les sélections en boucle dans un flux
Pour les sorties JSON, l'action Parse Date Entries from JSON transforme le texte en une collection que votre flux peut parcourir en boucle, sans Apex à écrire :
| Type défini par Apex | Champs |
|---|---|
MultiDatePickEntryCollection | data (les entrées), totalCount, success, errorMessage |
MultiDatePickEntry | fromDate, toDate, startTime, endTime, resourceId, resourceName, bookingStatus, relatedRecordId, label |
Le Guide des flux d'écran détaille la boucle pas à pas, et l'article sur les boucles de flux propose trois flux de départ que vous pouvez déployer avec VS Code.
Modèle de sécurité
- Chaque requête et chaque enregistrement s'exécutent en mode utilisateur : les autorisations d'objet, la sécurité au niveau du champ et le partage s'appliquent à la personne qui utilise le calendrier, y compris les utilisateurs invités des sites publics.
- Rien ne quitte l'organisation : pas d'appels externes, pas de serveurs externes, pas de sous-traitants.
- Validé par le Security Review de Salesforce. Détails sur la page Confiance & sécurité.
- Accessibilité : un rapport VPAT 2.5 selon les WCAG 2.1 niveaux A et AA, sur la page Accessibilité.
Passer une configuration de la sandbox à la production
- Construisez et testez dans une sandbox avec l'assistant de configuration.
- Déplacez la configuration : déployez ses enregistrements
Config__mdtetConfig_Extension__mdtavec votre outil habituel, ou exportez-la en JSON depuis l'assistant et importez-la en production. - Déplacez la page ou le flux qui l'utilise. Les emplacements désignent la configuration par son nom, rien d'autre ne change donc.
- Attribuez les ensembles d'autorisations aux personnes qui l'utilisent, et MultiDatePick - Guest sur les sites publics.
Questions fréquentes des développeurs
Faut-il écrire de l'Apex pour utiliser MultiDatePick ?
Non. Les composants chargent et enregistrent eux-mêmes les enregistrements, et les flux qui enregistrent par eux-mêmes utilisent l'action fournie Parse Date Entries from JSON au lieu d'Apex personnalisé.
Les configurations peuvent-elles passer par un pipeline CI/CD ?
Oui. Chaque configuration est un enregistrement de métadonnées personnalisées (Config__mdt, plus Config_Extension__mdt pour les paramètres récents) : elle se déploie comme n'importe quelle autre métadonnée.
MultiDatePick ajoute-t-il des objets pour mes données ?
Non. Il enregistre dans les objets que vous choisissez : vos enregistrements, vos automatisations et vos rapports restent où ils sont.
Comment gère-t-il les fuseaux horaires et les langues ?
Les dates et heures suivent le fuseau horaire et les paramètres régionaux Salesforce de chaque utilisateur, et l'interface est traduite en neuf langues.