Nintex Workflow

Niniejszy artykuł stanowi kontynuację postu na temat tworzenia prostego newslettera z użyciem SharePoint Designer 2013, opisanego tutaj. Tym razem chciałbym pokazać, jak podobne rozwiązanie można przygotować, korzystając z platformy Nintex Workflow dla Office 365.

Przygotowania

Podobnie jak w przypadku rozwiązania z użyciem SharePoint Designer, teraz też aplikacja bazuje na dwóch listach, w dedykowanej witrynie zespołu:

  1. Newslettery, zbudowana z kolumn:
    1. Tytuł wiadomości (Title, tekst, wymagane)
    2. Treść wiadomości (Body, wiele linijek tekstu, włączona opcja formatowania HTML, wymagane)
  2. Skrzynka nadawcza, zbudowana z kolumn:
    1. Nazwa wysyłki/ kampanii (Title, tekst, wymagane)
    2. Odbiorcy SP (Recipients_SP, Osoba lub grupa, możliwe grupy, wielokrotny wybór)
    3. Odbiorcy Email (Recipients_EMAIL, wiele linijek tekstu, sam tekst)
    4. Data wysyłki (SendDate, data i czas, wymagane)
    5. Testowa wysyłka (TestDelivery, true/false)
    6. Wysłano (IsSent, true/false)
    7. Newsletter do wysłania (Newsletter, lookup do listy Newslettery, wymagane)

Workflow

Korzystanie z workflow zbudowanego z użyciem Nintex Workflow jest wygodniejsze, niż SPD 2013, z dwóch powodów – istnieje możliwość ustawienia harmonogramu uruchamiania przepływu pracy (wobec czego nie ma powodu, by workflow działał cały czas, a tylko pauzował po wykonaniu wszystkich akcji). Po drugie – workflow umożliwia wysyłanie wiadomości e-mail również do odbiorców spoza domeny, czyli tzw. zewnętrznych odbiorców.

Należy jednak pamiętać, iż wysyłanie maili do odbiorców zewnętrznych, z użyciem akcji „Send email” w Nintex Workflow powoduje, że dane są przetwarzane poza Twoim tenantem, w ramach usługi Nintex. Ta z kolei może być hostowana w innym regionie, zatem należy rozważyć wszelkie za i przeciw.

Zadaniem workflowu jest sprawdzanie listy Wysyłek i dla wszystkich niewysłanych jeszcze wiadomości, których data wysyłki jest starsza lub równa dacie bieżącej, wykonywanie procesu rozsyłania wiadomości. 

Jak wygląda rozwiązanie krok, po kroku? Sam workflow nie jest bardzo skomplikowany, aczkolwiek zawiera kilkadziesiąt akcji i operacji. Wygląda jak poniżej (niektóre grupy akcji są zwinięte, dla zachowania czytelności):

Newsletter with Nintex

Zmienne inicjujące

Zmienne te są opcjonalne. Można równie dobrze informacje te zaszyć po prostu w ramach przepływu, nie zaś inicjować je podczas pierwszego uruchomienia. Ja osobiście jestem zwolennikiem maksymalnie generycznych rozwiązań, które możliwe będą do użycia w innych witrynach i tenantach. W chwili pierwszego uruchomienia przepływ pracy wymaga podania następujących danych:

  1. var_Now_DateTime – data graniczna pierwszego uruchomienia joba.
  2. var_CurrentSiteRelativeURL_Txt – względny adres URL witryny, w której działa timerjob newslettera (rozpoczynający się od /). 
  3. var_InternalEmailDomain_Txt – domena adresów email organizacji – by umieć odróżnić mail zewnętrzny od własnego.
  4. var_AllowExternalEmails_Bool – ogólnie, czy ma mieć możliwość wysyłania wiadomości do odbiorców spoza organizacji.

Zebranie listy wysyłek i danych wysyłki

Workflow, korzystając z akcji „Query List” odpytuje listę wysyłek o wszystkie elementy, których data wysyłki jest starsza lub równa bieżącej dacie oraz nie zostały jeszcze wysłane. 

Następnie, dla każdego tak otrzymanego elementu pobiera: nazwę wysyłki, tytuł i treść powiązanego newslettera, oznaczenie, czy wysyłka jest testowa oraz listę odbiorców SP i EMAIL.

Co istotne, ponieważ wstawianym w polu „RichHTML” obrazom i łączom sięgającym do zasobów lokalnych zasobów SharePoint zmienia ścieżkę z bezwzględnej, na względną, dlatego konieczne jest użycie akcji „Regular Expression” w celu ponownej zamiany adresów na bezwzględne.

Wysyłka testowa

Jeśli wiadomość oznaczona jest jako wysyłka testowa, wówczas proces przygotowuje wiadomość e-mail i wysyła ją do użytkownika, który zlecił wysyłkę (CreatedBy). Po zakończonej wysyłce oznacza ją jako „Wysłaną”.

Przygotowanie do wysyłki produkcyjnej

Aplikacja dla każdego elementu, wstawionego w polu Recipients_SP sprawdza, czy wartość atrybutu „Account” zawiera claims („i:0#.f|membership|”) – jeśli tak, zwyczajnie dodaje adres e-mail do kolekcji. Jeśli nie, wówczas przyjmuje, że jest to grupa SharePoint i korzystając z akcji „Web Request” i adresu:

{Workflow Context:Current site URL}‍/_api/web/SiteGroups/getByName('‍{Variable:var_Recipient_SP_Txt}‍')/Users

Pobiera listę użytkowników obecnych w grupie. Następnie, każdy adres e-mail dodaje do kolekcji odbiorców.

Usuwanie duplikatów

Następnie, aplikacja łączy listę odbiorców z pola Recipients_SP z listą, z pola Recipients_EMAIL. Tak zbudowany string jest dzielony (akcja „Regular Expression” –> Split) do kolekcji. W kolejnym kroku, aplikacja dla każdego elementu z kolekcji sprawdza, czy istnieje w kolekcji bez duplikatów. 

Akcja „Remove duplicates” bierze pod uwagę wielkość znaków, toteż adres e-mail z dużymi znakami i małymi będą traktowane jako dwa różne rekordy.

Nintex Regular Expression "Check Match" option

Usuwanie duplikatów odbywa się poprzez użycie akcji „Regular Expression” i opcji „Check match” z aktywnym ustawieniem „Ignore case” –  w ten sposób możliwe jest faktyczne przygotowanie finalnej listy odbiorców, bez jakichkolwiek duplikatów.

Wysyłka produkcyjna

Finalnie proces przechodzi do wysyłki produkcyjnej. Dla każdego adresu ze słownika wykonuje tę samą operację – składa wiadomość e-mail i korzystając z akcji „Send Email” wysyła do wskazanego odbiorcy. Sprawdza przy tym, czy istnieje zgoda na wysyłkę wiadomości do odbiorców z zewnątrz. Jeśli nie – adresy mailowe spoza domeny pomija. Jeśli tak – wysyłka do adresu zewnętrznego jest realizowana z użyciem opcji „External email and attachment”.

Nintex Workflow - External email and attachment

Po zakończeniu wysyłki do odbiorców oznacza element na liście „Wysyłki” jako „Wysłany” i powraca do kroku 1, czyli czekania na kolejne uruchomienie.

Działanie

Od czerwca tego roku, w Nintex Workflow dla Office 365 została dodana nowa funkcja – harmonogram uruchamiania (źródło).

Nintex Workflow for Office 365, schedule

Dzięki temu, możliwe jest ustawienie, jak często workflow ma być uruchamiany i nie ma potrzeby symulowania tego zachowania z użyciem pauzowania. W ten sposób przygotowany proces będzie automatycznie uruchamiany co określony czas.

Najmniejszy interwał, to 1 godzina. Niestety nie da się ustawić harmonogramu na większą częstotliwość.

Nintex Workflow Scheduled

Podoba Ci się to rozwiązanie? Chciałbyś dowiedzieć się więcej lub użyć go u siebie? Zostaw info w komentarzu lub od razu skontaktuj się ze mną!

Cześć! Nazywam się Tomasz. Jestem wielkim fanem automatyzacji procesów i analizy biznesowej. Skupiam się na rozwijaniu moich umiejętności w pracy z produktami Nintex i Microsoft: w szczególności Office 365, SharePoint. Posiadam ponad 8 lat doświadczenia w pracy z SharePoint.