Nintex Document Generation

Spotkałem się z następującym pytaniem ostatnio: w jaki sposób mogę użyć podpisu, jaki użytkownik złożył na formularzu, w aplikacji mobilnej Nintex Mobile, w dokumencie generowanym przez workflow, w akcji Document Generation? Niestety, wykonanie tego nie jest jeszcze całkowicie możliwe wyłącznie z użyciem produktów Nintex (z uwagi na fakt braku wsparcia dla danych binarnych – Nintex nie obsługuje pustych bitów). Dlatego zaproponowałem użycie Microsoft Flow.

Proces

  1. Użytkownik podpisuje formularz w Nintex Mobile.
  2. Podpis (zakodowany do base64) wraz z formularzem lądują na liście w SharePoint.
  3. Proces Nintex Workflow zostaje uruchomiony na zdarzenie utworzenia nowego elementu.
  4. Tworzy JSON, który będzie treścią żądania przesyłanego do Flow i zawiera:
    1. Tytuł formularza,
    2. Podpis zakodowany do base64.
  5. Flow odbiera żądanie i wgrywa plik do wskazanej biblioteki dokumentów, w locie konwertując go do pliku binarnego.
  6. Zwraca ścieżkę do pliku wraz z kodem „200” do Nintex, który odbiera ją i przystępuje do generowania pliku.
  7. Finalnie generuje dokument wraz z podpisem w środku.

Wykonanie

Microsoft Flow

Jego cel jest prosty – ma odebrać ciąg base64, przekonwertować go na strumień binarny i użyć do utworzenia pliku w określonej bibliotece dokumentów. Flow uruchamiany jest żądaniem, które powinno zawierać dane w formacie JSON, w których znajdują się tytuł formularza oraz zakodowany do base64 podpis:

{
  "Title": "Form's title or other text variable",
  "Signature": "The base64 encoded signature image"
}

 

Po odebraniu żądania natychmiast przystępuje do utworzenia nowego pliku (używając akcji „Create File”) korzystając z wyrażenia „Base64ToBinary”:

base64ToString(triggerBody()?['Signature'])

Create File in SharePoint in Microsoft Flow

Po utworzeniu pliku zwrotnie wysyła kod 200 i względną ścieżkę do pliku, używając akcji „Response”:

Response action Microsoft Flow

Nintex Workflow

Jest uruchamiany na zdarzenie utworzenia nowego elementu – użytkownik zapisuje nowy formularz. Jego celem jest przygotowanie struktury JSON w formacie oczekiwanym przez Flow. Następnie wysłanie jej używając akcji „Web Request”:

Nintex Web Request action configuration

Akcja jest także tak skonfigurowana, by informację zwrotną („Response Content”) od Flow zapisać do zmiennej.

Następnie buduje ściężkę absolutną do pliku, łącząc ze sobą zmienną kontekstową przepływu pracy – „Current Site URL” z informacją odebraną w akcji „Web Request” – względną ścieżką utworzonego pliku.

Następnie generuje dokument korzystając z akcji Document Generation.

Wynik

Działający proof of concept:

Working PoC

 

Poniżej załączyłem również pliki – wyeksportowane przepływy pracy Nintex i Flow:

 

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, Flow, PowerApps. Posiadam ponad 8 lat doświadczenia w pracy z SharePoint.