Jak dynamicky volat webovou službu použitím nástroje Process Builder v Salesforce?
nebo jak použít Process Builder namísto triggeru?
Napsal: Martin Bystriansky, CRM developer
Co tím chceme dosáhnout?
Chceme vytvořit univerzální aplikaci a dát běžnému administrátorovi možnost volat webovou službu dynamicky, tedy s různými vstupy a v různých časech a z kteréhokoliv místa v systému.
Případ budeme prezentovat na příkladu integrace na službu Staffin, která je možná díky naší vyvinuté appky Staffino INTEGRATION APP. Staffino je softwarové řešení mimo jiné na shromažďování přehledných informací v rámci CX / EX (Customer/Employee Experience). Staffino zasílá zákazníkům dotazníky, které vyhodnocuje a zpracovává a následně tyto informace poskytuje.
Jaký problém řešíme?
- Potřebujeme volat webovou službu a autentizovat se za pomoci tokenu.
- Chceme vytvořit jednoduchou architekturu tak, aby byla snadno použitelná.
- Potřebujeme získat data z webové služby, které nejsou dostupné okamžitě po našem prvním poptávce.
- Chceme umožnit uživateli – administrátorovi provést akci, po přijetí dat z WS.
- Nemůžeme použít trigger, protože nevíme, kdy se má WS volat. Tuto informaci má až uživatel aplikace, administrátor, který zná svůj systém.
Architekturu si popíšeme v těchto bodech:
- zadání a uchovávání tokenu,
- volání webové služby z prostředí Process Builderu,
- vytvoření Custom objektů pro ukládání dat,
- nastavení jobu pro opakované posílání neúspěšně zpracovaných volání (pro případ nedostupnosti služby).
Zadání a uchovávání tokenu
Na uchování autorizačního tokenu použijeme custom metadata. Vytvoříme custom lightning web component, abychom uživateli zjednodušili zadávání.
Minimum nastavení pro maximální pohodlí uživatelů
Volání webové služby z prostředí Process Builderu
Volání webové služby zabalíme do metody. K tomu, aby tato metoda byla dostupná i z Process Builderu, je třeba, aby obsahovala notaci @invocable method.
Pozor! Každá třída může obsahovat právě jednu invocable metodu. Jako vstup do této metody je nejlepší použít seznam Listů Objektů. Typ tohoto objektu si deklarujeme v naší třídě jako vnořenou třídu. Všechny parametry, které chceme, aby se daly plnit z Process Builderu musí obsahovat notaci @invocable variable.
Vytvoření custom objektů pro ukládání dat
Vytvoříme si objekty, které budou obrazem objektů, jaké se zpracovávají v rámci webové služby, což nám umožní minimalizovat potřebu konverze získaných dat pro jejich uložením do databáze Salesforce, zároveň získáváme možnost reportingu a monitoringu pro uživatele.
Objekt feedbacku predstavuje odpověď zákazníka a má vazbu na interakci – vyžádání názoru
Nastavení jobu pro opakované posílání neúspěšně zpracovaných volání (pro případ nedostupnosti služby)
Stejně, jak jsme udělali snadné nastavení pro získávání zpětné vazby, vytvoříme invocable metodu pro zpracování volání našeho WS, které selhaly na nedostupnost. Je jen na vás, zda necháte uživateli tuto metodu k dispozici pro nastavení jobu, ale mu vytvoříte jednodušší rozhraní, jak jsme to udělali my v základních nastaveních.
Naznačili jsme možnosti řešení softwarové požadavky přes Process Builder pro případy, kde není možné použít trigger. V případě naší aplikace lze dynamickou službu využít např. na vytvoření univerzálního konektoru na webovou službu, jejíž volání si už zákazník nastaví sám tak, aby vyhovovala jeho specifickým potřebám. Nám to umožní vytvořit aplikaci generickou, která poskytuje základní tunel se všemi jeho možnostmi a na druhou stranu umožní zákazníkovi plně využít základní funkcionalitu Salesforce – Process Builder a zároveň nemusí přizpůsobovat obsluhu systému ale přizpůsobí si systém, a to bez dalšího vývoje.