Feature Switches - usnadní denní operativu a jsou cool
O co jde?
Přeskočme teorii a pojďme si říct, k čemu takový "Feature switch" (také známé jako "Feature Flag") může sloužit ve světě Salesforce Core Platformy v pár příkladech z reálné implementace.
Datová Migrace
Mějme produkční prostředí, kde jsou nasazeny Flows a Apex Triggers přes objekty jako je např. Account, Case a Opportunity. Přesně na těchto objektech chcete povést datovou migraci nebo hromadnou datovou aktualizaci. V tento moment je potřeba se zamyslet, zda-li daná exekuce změny dat nespustí zmíněné Flows či Apex Triggers - otázka samozřejmě je, zda chceme danou automatizaci startovat, či ne. A právě zde často zjistíme, že je potřeba určíte procesy prostě vypnout a po dané migraci zase zapnout. A jaké máme řešení?
- Deaktivovat (Setup-> Flows) všechna Flows (jeden po druhém samozřejmě), která se nemají spouštět v rámci datových změn.
- Deaktivovat Apex Triggers. A tady už je třeba provést fyzický deploy konkrétního Apex Triggeru kde v META souboru říkáme Status = Inactive. Po datové změně/migraci pak opět nasadit Tigger kde Status = Active.
- Představme si, že máme jeden Custom Metadata object, kde definujeme Flow/Trigger a k tomu zda se má spouštět nebo ne.
- Vše na jednom místě, rychlý ruční zásah a navíc bez nutnosti 2x nasazovat Tiggery. Konkrétní řešení níže.
Produkční problém
Padá proces (v našem případě nově nasazený Apex Trigger na produkci)? Uživatelé si stěžují na problém při uložení záznamu?
Ok, ale co teď? Samozřejmě nechcete nechat chybu na produkci a ohrozit běžný provoz. Je třeba rychle zasáhnout a bez námi oblíbených "Feature Switches" máte jen možnost rychle nasadit deaktivovaný Apex Trigger, provést investigaci problému, opravit a opět nasadit aktivní Trigger.
Vypnutí / zapnutí funkcionality
A co takové UI? Ano, i tam lze použít "Feature Switches" a to např. na LWC. Součástí naší Componenty může být jednoduché tlačítko, které si říká o data mimo Salesforce, ale my víme, že externí systém nebude dostupný. Proč tedy tlačítko na danou dobu neskrýt a tím zabránit uživatelům jej použit. Nebo lépe nahradit inteligentní informativní zprávou, že systém není dostupný bez nutnosti na daný button kliknout?
Konkrétní řešení
Nebudu to protahovat, a zároveň říkám, že standardní řešení neexistuje (pokud o něm ale víte, napište!). Ale toto "kolo" už za nás nekdo vyvinul! A díky kologeovi J. Fisherovi je i zadarmo (pozor na Copyright) a funguje perfektně! Stačí nasadit nebo mít součástí Salesforce / git projektu.
Závěr
"Be smart" a investujte pár minut na nasazení popsaného řešení. Ať už výše zmíněného nebo jiného se stejným účelem. Jakmile saháte do Flow, Apexu nebo LWC apod. mějte na paměti "Feature Switches".