Manipulation de données Internet complexes dans les flux sans code en utilisant des types de données définis par Apex

Les flux peuvent désormais manipuler les types d'objet de données complexes qui sont généralement renvoyés par des appels à des services Web. Créez des variables définies par Apex dans des flux et traitez directement le JSON renvoyé par les appels Web.

Où : cette modification s'applique à Lightning Experience et à Salesforce Classic dans les éditions Enterprise, Performance, Unlimited et Developer.

Pourquoi : auparavant, des actions Apex et des enregistrements de services externes étaient utilisés pour manipuler les données Web, mais ces données devaient se présenter sous la forme de types de données primitifs, tels que des chaînes et des chiffres. Les données d'entreprise récupérées sur le Web à l'aide de solutions d'intégration telles que Mulesoft sont rarement composées uniquement ou principalement de types de données primitifs.

Avec les nouvelles ressources définies par Apex dans les flux, il n'est plus nécessaire qu'un flux utilise un code Apex pour traiter le JSON complexe renvoyé par les appels Web. Un développeur définit une classe Apex qui sert de modèle pour la conversion automatique depuis le Web vers un flux. Les objets renvoyés peuvent ensuite être entièrement manipulés dans un flux à l'aide d'approches déclaratives et sans aucun code supplémentaire. Cette solution est particulièrement utile pour la connexion de flux à des objets Web externes enrichis accédés via Mulesoft et des appels REST. Si le type de données n'est pas pris en charge, les flux peuvent transmettre la valeur à un composant Aura et vous pouvez utiliser un code Apex pour le traiter.

Par exemple, un concessionnaire a un flux d'écran qui permet aux clients d'effectuer une recherche dans les données d'inventaire de la concession, stockées dans une autre base de données. Le concessionnaire crée une classe Apex dans son organisation pour définir le type de données Car. Il crée ensuite un écran de flux qui inclut deux variables définies par Apex. Le flux transmet les variables entre le flux, une action Apex et un composant Aura.

La classe Apex Car définit des champs tels que Contact, Immatriculation et Modèle. L'annotation @AuraEnabled est requise pour chaque champ que vous souhaitez exposer dans le flux.
public class Car {

@AuraEnabled
public Contact contact {get;set;}

@AuraEnabled
public String registration {get;set;}

@AuraEnabled
public String model {get;set;}

}

L'objet Car complet, y compris le contact imbriqué, est stocké dans une variable définie par Apex {!Car_Inventory}.

Fenêtre Nouvelle ressource qui crée la variable définie par Apex Car_Inventory

Un écran de flux collecte une valeur d'entrée pour le modèle de voiture, qu'il stocke dans la variable de texte {!Car_Model}. La variable de texte est attribuée à la variable définie par Apex {!Car_Inventory.model}.

Fenêtre Modifier l'attribution qui définit la variable {!Car_Inventory.model} sur la valeur {!Car_Model}

Une méthode invocable définit l'action Apex Find Cars qui exécute la logique qui renvoie les résultats de recherche de voitures.
global class FindCars {

    @InvocableMethod(label='Find Cars')
   //Perform logic to return car results based on the model. 

        Return results;
    }

Les résultats de l'action Apex Find Cars sont stockés en tant que variable définie par Apex {!Car_Result}.

Fenêtre de l'action Apex Modifier qui stocke la valeur de sortie dans la variable {!CarResult}

Un composant Aura définit le composant d'écran DisplayCar avec l'attribut CarResult. Le type de l'attribut est la classe Apex Car qui détermine le type de données défini par Apex. Le composant d'écran affiche la valeur de l'attribut.
<aura:component implements="lightning:availableForFlowScreens" access="global">
	<aura:attribute name="CarResult" type="Car" access="global"/>

<!--Add some styling to the component and display the attribute’s value--> 
<div style=”box”>
        <p>{!v.CarResult.model} : {!v.CarResult.buildDate}</p>
</div>
</aura:component>

Dans le composant d'écran DisplayCar, l'attribut Car Result contient la variable définie par Apex {!CarResult} et affiche sa valeur à l'exécution.

Propriétés du composant d'écran DisplayCar qui définit l'attribut Car Result sur la variable {!CarResult}

Lors de l'utilisation de types de données définis par Apex, tenez compte des considérations suivantes :
  • Les types de données pris en charge dans une classe Apex sont Booléen, Nombre entier, Long, Décimal, Double, Date, DateHeure et Chaîne. Les valeurs uniques ainsi que les listes sont prises en charge pour chaque type de données. Des classes Apex multiples peuvent être combinées pour représenter des objets Web complexes.
  • Lorsque vous ouvrez pour la première fois la fenêtre d'un élément ou d'une ressource dans une organisation comptant plus de 200 classes Apex avec l'annotation @AuraEnabled, le chargement de la fenêtre peut être long.
  • À compter de la version Summer ‘19, si un flux invoque Apex, l'attribution de la classe Apex correspondante doit être disponible dans le profil ou l'ensemble d'autorisations de l'utilisateur actif.