Ako dynamicky volať webovú službu použitím nástroja Process Builder v Salesforce?
alebo ako použiť Process Builder namiesto Triggeru?
Napísal: Martin Bystriansky, CRM developer
Čo tým chceme dosiahnuť?
Chceme vytvoriť univerzálnu aplikáciu a dať bežnému administrátorovi možnosť volať webovú službu dynamicky, teda s rôznymi vstupmi a v rôznych časoch a z ktoréhokoľvek miesta v systéme.
Prípad budeme prezentovať na príklade integrácie na službu Staffino, ktorá je možná vďaka našej vyvinutej appke STAFFINO INTEGRATION APP. Staffino je softvérové riešenie okrem iného na zhromažďovanie prehľadných informácií v rámci CX/EX (Customer/Employee Experience). Staffino zasiela zákazníkom dotazníky, ktoré vyhodnocuje a spracúva a tieto informácie poskytuje.
Aký problém riešime?
- Potrebujeme volať webovú službu a autentifikovať sa za pomoci tokenu.
- Chceme vytvoriť jednoduchú architektúru tak, aby bola ľahko použiteľná.
- Potrebujeme získať dáta z webovej služby, ktoré nie sú dostupné okamžite po našom prvom dopyte.
- Chceme umožniť užívateľovi – administrátorovi vykonať akciu, po prijatí dát z WS.
- Nemôžeme použiť trigger, pretože nevieme, kedy sa má WS volať. Túto informáciu má až užívateľ aplikácie, administrátor, ktorý pozná svoj systém.
Architektúru si popíšeme v týchto bodoch:
- zadanie a uchovávanie tokenu,
- volanie webovej služby z prostredia Process Builderu,
- vytvorenie Custom objektov pre ukladanie dát,
- nastavenie JOBu pre opakované posielanie neúspešne spracovaných volaní (pre prípad nedostupnosti služby).
Zadanie a uchovávanie tokenu
Na uchovanie autorizačného tokenu použijeme custom metada. Vytvoríme custom lightning web component, aby sme užívateľovi zjednodušili zadávanie.
Minimum nastavení pre maximálne pohodlie užívateľov
Volanie webovej služby z prostredia Process Builderu
Volanie webovej služby zabalíme do metódy. Na to, aby táto metóda bola dostupná aj z Process Buildera, je potrebné, aby obsahovala notáciu @invocable method.
Pozor! Každá trieda môže obsahovať práve jednu invocable metódu. Ako vstup do tejto metódy je najlepšie použiť zoznam Listov Objektov. Typ tohto objektu si deklarujeme v našej triede ako vnorenú triedu. Všetky parametre, ktoré chceme, aby sa dali plniť z Process Buildera musia obsahovať notáciu @invocable variable.
Vytvorenie custom objektov pre ukladanie dát
Vytvoríme si objekty, ktoré budú obrazom objektov, aké sa spracúvajú v rámci webovej služby, čo nám umožní minimalizovať potrebu konverzie získaných dát pre ich uložením do databázy Salesforce, zároveň získavame možnosť reportingu a monitoringu pre užívateľov.
Objekt feedbacku predstavuje odpoveď zákazníka a má väzbu na interakciu – vyžiadanie názoru
Nastavenie JOBu pre opakované posielanie neúspešne spracovaných volaní (pre prípad nedostupnosti služby)
Rovnako, ako sme spravili jednoduché nastavenie pre získavanie spätnej väzby, vytvoríme invocable metódu pre spracovanie volaní nášho WS, ktoré zlyhali na nedostupnosť. Je len na vás, či necháte užívateľovi túto metódu k dispozícii pre nastavenie JOBu, ale mu vytvoríte jednoduchšie rozhranie, ako sme to spravili my v základných nastaveniach.
Naznačili sme možnosti riešenia softvérovej požiadavky cez Process Builder pre prípady, kedy nie je možné použiť trigger. V prípade našej aplikácie je možné dynamickú službu využiť napr. na vytvorenie univerzálneho konektora na webovú službu, ktorej volanie si už zákazník nastaví sám tak, aby vyhovovala jeho špecifickým potrebám. Nám to umožní vytvoriť aplikáciu generickú, ktorá poskytuje základný tunel so všetkými jeho možnosťami a na druhú stranu umožní zákazníkovi naplno využiť základnú funkcionalitu Salesforce – Process Builder a zároveň nemusí prispôsobovať obsluhu systému ale prispôsobí si systém, a to bez ďalšieho vývoja.