Praca z flow loop elemnt w Salesforce

Nowy flow builder zalewa administratorów udogodnieniami do tego stopnia, iż co świeższym z nich może być trudno się w tym wszystkim odnaleźć. Możliwości podejścia drag and drop czy też kodowania bez kodu będą powoli otwierać oczy publiczności i utrudniać pracę programistów – dla których zostaną już jedynie naprawdę skomplikowane zadania. Ostatnio, w czasie pracy z platformą salesforce miałem dość ciekawe przeżycie. Jeden z moich nowych administratorów miał problem z zrozumieniem jak działa element “loop” ( czyli pętla ). Całe to zajście zainspirowało mnie do napisania nieco dłuższego niż zazwyczaj artykułu. Jeśli ktoś w twoim teamie ma problem ze zrozumieniem salesforce flow, być może to właśnie artykuł dla niego.

Nie wdając się w wszystkie szczegóły zadania, przedstawimy je następująco:

    Chcemy zbudować flow, który zmieni wartość pola Address dla zadanej listy accountów na puste.

Rys. 1 Struktura flow’a

Tak zdefiniowane zadanie zostało wykonane przez administratora zgodnie z rysunkiem 

( Rys. 1). Po czym w fazie testowania administrator ku, swojemu zdziwieniu spostrzegł, iż nic kompletnie się nie zmienia dla zadanych account’ów. Flow przechodził bez błędu, co nie ułatwiło młodemu specjaliście procesu debugowania. Cały problem tkwił w zrozumieniu tego jak działa element loop i jak pracuje on z danymi.

Rozbijając pracę elementu loop na kroki, nasz bloczek wykonuje je aż dwa:

  1. Z podanej do elementu loop listy pobiera jeden rekord ( jeśli to pierwsze przejście pętli jest to pierwszy element z listy, natomiast dla kolejnych powtórzeń są to kolejne elementy list następujące po poprzednim aż do wyczerpania )
  2. Następnie z pobranego elementu listy tworzona jest kopia, która zapisywana jest do zmiennej w pętli. 

Rys. 2 Okno edycji elementu loop

Klucz w zrozumieniu problemu jest w słowie kopia. Zmienia ono wszystko ponieważ, jeśli jest to tylko kopia rekordu z listy, to jakiekolwiek zmiany na niej wykonane nie są utrwalane w liście. Co za tym idzie, dokonanie update’u z pomocą takiej listy da nam 100% pewności, że przywrócimy rekord do stanu z początku flow. Co też przyjdzie nam uczynić by obejść tę niedogodność? Jak wykorzystać nowo zdobytą wiedzę?

Otóż poprawiony flow zamieściłem na kolejnym rysunku ( Rys. 3 ). Nie zawiera on informacji o tym, iż stworzyłem również dodatkową zmienną typu record Account, która zawiera listę rekordów. Od teraz z pomocą pierwszego bloczku assign dokonujemy zmian na kopii rekordu z listy, który podał nam bloczek loop. A następnie z pomocą drugiego bloczka assign dokonujemy dodania, wcześniej zmienionej kopii, do naszej nowej zmiennej. W ten sposób po zakończeniu pętli prócz listy rekordów account, która podaliśmy jako zmienną wejściową do flow, mamy również listę rekordów account z pustymi adresami. Taka przygotowana przez nas lista zostanie następnie użyta w bloczku update do dokonania zmian w naszej bazie. 

Rys. 3 Flow po poprawkach

Poniżej zamieszczam ekrany edycji obu elementów assign tak dla porównania i sprawdzenia.

Rys. 4 Pierwszy element assign

Rys. 5 Drugi element assign

Zachęcam do kontaktu z ME PL w sprawie szkoleń dla pracowników lub pomocy w implementacji.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *