How To: Prosty newsletter z użyciem Nintex Workflow dla Office 365
Table of Contents
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:
- Newslettery, zbudowana z kolumn:
- Tytuł wiadomości (Title, tekst, wymagane)
- Treść wiadomości (Body, wiele linijek tekstu, włączona opcja formatowania HTML, wymagane)
- Skrzynka nadawcza, zbudowana z kolumn:
- Nazwa wysyłki/ kampanii (Title, tekst, wymagane)
- Odbiorcy SP (Recipients_SP, Osoba lub grupa, możliwe grupy, wielokrotny wybór)
- Odbiorcy Email (Recipients_EMAIL, wiele linijek tekstu, sam tekst)
- Data wysyłki (SendDate, data i czas, wymagane)
- Testowa wysyłka (TestDelivery, true/false)
- Wysłano (IsSent, true/false)
- 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.
[tds_info] 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.[/tds_info]
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):
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:
- var_Now_DateTime – data graniczna pierwszego uruchomienia joba.
- var_CurrentSiteRelativeURL_Txt – względny adres URL witryny, w której działa timerjob newslettera (rozpoczynający się od /).
- var_InternalEmailDomain_Txt – domena adresów email organizacji – by umieć odróżnić mail zewnętrzny od własnego.
- 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.
[tds_warning] 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.[/tds_warning]
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”.
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).
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.
[tds_note] Najmniejszy interwał, to 1 godzina. Niestety nie da się ustawić harmonogramu na większą częstotliwość.[/tds_note]
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ą!