Kopiowanie załączników z taska do załączników elementu listy
Table of Contents
W tym krótkim poście pomogę Ci zbudować przepływ pracy w Nintex for Office 365, który pozwoli Ci skopiować załączniki, które zostały dodane do zadania, do załączników powiązanego elementu listy. Element listy jest oczywiście tym, wokół którego działa cały przepływ pracy.
Formularz zadania
Najpierw musisz zbudować formularz zadania.
To naprawdę nie ma znaczenia, który typ designera wybierzesz – każdy pozwala na użycie kontrolki załączników (zaś w „New responsive designer” – kontrolki nazwanej „File upload”):
Skonfiguruj formularz tak, jak potrzebujesz. Po zakończeniu wróć do akcji zadania.
Akcja zadania
Niezależnie od tego, czy korzystasz z akcji „Assign a task”, czy „Start a task process”, musisz skonfigurować pole, które zwraca identyfikator zadania (lub zadań):
Później użyjesz tych identyfikatorów, aby pobrać załączniki z powiązanych zadań (lub zadania).
Workflow
Po zakończeniu zatwierdzania daj przepływowi pracy chwilę oddechu. Zauważyłem, że czasami workflow był wznawiany znacznie szybciej niż załączniki były ładowane do elementu zadania. W rezultacie wznowiony workflow posiadał info m.in. tylko o jednym załączniku z 3 przesłanych.
Następnie dla każdego zadania wykonaj poniższe kroki:
- Przygotuj nagłówek żądania HTTP
- Wykonaj żądanie GET HTTP do poniższego adresu URL:
{ADRES URL WITRYNY}/_api/lists/getbytitle('Workflow Tasks')/items(TASK ID FOR CURRENT LOOP RUN)/AttachmentFiles?$select=FileName,ServerRelativeUrl
- Zwrócony wynik będzie posiadać poniższą strukturę JSON:
{"value": [{"FileName": "xyz.jpg", "ServerRelativeUrl": "somepath/xyz.jpg"}]}
– musisz wyciągnąć jedynie tabelkę. - Następnie wykonaj poniższe kroki dla każdego elementu w tabelce.
Następnie dla każdego wyodrębnionego załącznika (w pętli iteruj po słowniku var_Data_dict i zapisz element jako np. var_Item_dict):
- Pobierz ze słownika nazwę pliku
- Pobierz ze słownika ścieżkę
- Przygotuj słownik z nagłówkiem żądania (jak powyżej, opcjonalnie możesz dodać linię z
Content-Type: application/json
) - Wykonaj żądanie POST do poniższego adresu URL:
{Workflow Context:Current site URL}/_api/web/getfilebyserverrelativeurl(@v0)/copyto(strnewurl=@v1,boverwrite=true)?@v0='{Variable:var_Path_txt}'&@v1='/SITE RELATIVE URL TO LIST/Attachments/{Current Item:ID}/{Variable:var_Filename_txt}'
I to wszystko! Załącznik zadania jest teraz dodany do listy załączników powiązanego elementu listy. Powodzenia!