How To: wykorzystanie podpisu z Nintex Mobile w Document Generation
Table of Contents
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
- Użytkownik podpisuje formularz w Nintex Mobile.
- Podpis (zakodowany do base64) wraz z formularzem lądują na liście w SharePoint.
- Proces Nintex Workflow zostaje uruchomiony na zdarzenie utworzenia nowego elementu.
- Tworzy JSON, który będzie treścią żądania przesyłanego do Flow i zawiera:
- Tytuł formularza,
- Podpis zakodowany do base64.
- Flow odbiera żądanie i wgrywa plik do wskazanej biblioteki dokumentów, w locie konwertując go do pliku binarnego.
- Zwraca ścieżkę do pliku wraz z kodem „200” do Nintex, który odbiera ją i przystępuje do generowania pliku.
- 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'])
Po utworzeniu pliku zwrotnie wysyła kod 200 i względną ścieżkę do pliku, używając akcji „Response”:
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”:
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:
Poniżej załączyłem również pliki – wyeksportowane przepływy pracy Nintex i Flow:
[wpdm_package id=’1019′]
[wpdm_package id=’1018′]