Deze blog is bedoeld voor Salesforce Developers die een kort overzicht willen van de meest relevante en interessante nieuwe features in Spring ’21.
Aangepaste property editors voor Invocable Actions
Als je een Invocable schrijft, kun je parameters definiëren die vanuit een Flow kunnen of moeten worden meegegeven. Op dit moment voer je elk van die parameters in een standaard invoerveld in. Met de nieuwe release kun je zelf een component bouwen waarin de Admin de parameters invoert. Je kunt nu dus je invoervelden groeperen, gegevensvalidatie doen en bijvoorbeeld verschillende invoertypen gebruiken (sliders, picklists, noem maar op) om ervoor te zorgen dat jouw Invocable precies die data binnenkrijgt die het nodig heeft.
Voor de release
Na de release
Actions
Op objecten kun je actions definiëren. Je koppelt zo’n knop of link aan bijvoorbeeld een Visualforce pagina of een Lightning Component om de gebruiker precies die functie te bieden die relevant is voor businessprocessen rondom het object. Lightning Web Components waren hiervoor nog niet beschikbaar, maar vanaf begin februari 2021 dus wel! Goed nieuws voor alle developers die altijd weer het beste uit zichzelf willen halen en de nieuwste technieken op het Salesforce Platform willen inzetten.
Uitfasering UI Namespace
Standaard-“ui:”-componenten zoals <ui:inputNumber> worden niet meer ondersteund. Dit gaat dus iets verder dan het advies in de documentatie om over te stappen op <lightning:input>. Voordeel van Lightning is al sinds lange tijd dat het direct de LDS styling toepast op je componenten. De documentatie (https://developer.salesforce.com/docs/component-library/bundle/ui:inputNumber/documentation) wijst je hierin trouwens ook heel duidelijk de weg.
Trouwens, als je toch wilt gaan refactoren, is het misschien een goed moment om over te stappen naar Lightning Web Components!
Einstein Intent beschikbaar in het Nederlands
Hey, Einstein praat ook met ons tegenwoordig! Hij heeft Nederlands geleerd. Als je een dataset aanmaakt, specificeer je de language parameter. Wanneer je de dataset traint om een model te genereren, geef je de algorithm parameter met de waarde multilingual-intent of multilingual-intent-ood mee.
Transaction Finalizers voor Queueables
Queuables hebben, in tegenstelling tot batchables, alleen een execute() method; geen start() en finish(). Voor het geval een queueable faalt, wordt de Finalizer geïntroduceerd in de nieuwste release. Je maakt die zelf door de System.FinalizerContext interface te implementeren. In de Finalizer zul je typisch foutafhandeling doen. Blijft je Queuable falen? Na vijf keer opnieuw proberen (één van de mogelijkheden binnen de Finalizer) zal Salesforce het proces beëindigen. Als je iets anders wilt dan foutafhandeling, zul je naar bijvoorbeeld een Batchable moeten kijken.
Voor nu: voor elke Queuable waarvoor je altijd al betere foutafhandeling had willen bouwen, dit is je kans!
Verbeterde toegang tot Custom Metadata
Vergelijkbaar met de mogelijkheid om Custom Settings records op te halen in Apex middels een static method, is dat nu ook mogelijk voor Custom Metadata: My_Custom_Metadata__mdt.getAll().
Voorheen gebruikte je hiervoor een SOQL-query. Met deze nieuwe methode kun je veilig velden toevoegen aan je Custom Metadata en die direct gebruiken in je logica, zonder je zorgen te maken dat je een SOQL-query over het hoofd ziet.
SFDX: Houd wijzigingen bij tussen je Lokale Project en een Sandbox
Metadatawijzigingen kunnen nu ook getraceerd worden in een Sandbox. Dit maakt de SFDX Tools bruikbaar voor gewone Sandboxes, naast Scratch Orgs.
Iedereen over naar SFDX!
SELECT * in Salesforce
Geloof het of niet, maar Salesforce heeft nu ook een SELECT * operator! Althans, je moet wel de Salesforce syntax gebruiken. Ook hier helpt Salesforce je waar het kan om zo efficiënt mogelijk je transacties uit te voeren, als je toch veel velden op wilt halen.
- Normaal specificeer je alle velden in een query die je wilt ophalen: SELECT Id, Name FROM ACCOUNT.
- Vrijwel elke andere query taal kent een equivalent van dit statement: SELECT * FROM ACCOUNT. Salesforce kent dat niet.
Sinds deze release hebben Salesforce Developers wél de mogelijkheid alle velden op te halen:
- SELECT FIELDS(ALL) FROM ACCOUNT -> Haalt alle velden op.
- SELECT FIELDS(STANDARD) FROM ACCOUNT -> Haalt alle standaard velden op.
- SELECT FIELDS(CUSTOME) FROM ACCOUNT -> Haalt alle custom velden op.
Gratis 3MB Platform Cache in je Managed Package
Maak je weleens een Managed Package en gebruik je weleens Platform Caching? Leuk nieuwtje: je hoeft niet meer van de 10MB caching te snoepen die je Salesforce-org beschikbaar heeft, maar je hebt alvast 3MB tot je beschikking. Een logische stap van Salesforce, want caching drukt de benodigde bandbreedte en/of querytijd.
Je gebruikt caching bijvoorbeeld wanneer je meerdere keren per dag dezelfde data ophaalt uit een extern systeem. Een lijst met actuele prijzen bijvoorbeeld. Als je weet dat die alleen ’s nachts wordt bijgewerkt, kun je die eenmaal ophalen, in de Cache stoppen en elk volgend proces de cache uit laten lezen. Dat scheelt je een (heel) aantal callouts, en zorgt voor een kortere doorlooptijd van je transactie.
Salesforce Functions: schrijf andere talen, direct op het Salesforce Platform!
Last best, als je het mij vraagt. Met Salesforce Functions kun je logica schrijven waarvoor allerlei voordelen gelden! Bijvoorbeeld dat je puur Javascript kunt schrijven, die direct toegang geeft tot Salesforce data, en die je aan kunt roepen vanuit Apex. Geen in-depth artikel hier, maar wel een tip om deze feature zeker eens te bekijken als je een wat complexere codebase op je org hebt!