Przewodnik po Flowee - jak budować aplikacje procesowe przy użyciu Flowee Help

Budowa list dokumentów procesowych oraz zasilenie checklisty (dla dowolnego taska manualnego)

Ten fragment procesu odpowiada za:

  • pobranie listy dokumentów z DMN,

  • pobranie identyfikatorów plików bazodanowych,

  • transformację danych do struktury domenowej,

  • zapis do domain data,

  • zbudowanie checklisty dla taska,

  • połączenie danych w jedną listę,

  • dodanie elementów do checklisty poprzez external task.

Image64

Krok 1: Business Rule Task „Lista dokumentów procesowych”

Task pobiera z tabel decyzyjnych listę typów dokumentów dla procesu.

➤ Dodanie elementu

Create task → Business rule task

Nazwa: Lista dokumentów procesowych

➤ Konfiguracja

W panelu Implementation ustaw:

a) Type (wymagane)

DMN

b) Decision Reference (wymagane)

DOCUMENTS_TYPES

=> reguła zawierająca grupę, typ, kod i nazwę biznesową dokumentów

Obraz zawierający tekst, linia, Czcionka, numer Zawartość wygenerowana przez AI może być niepoprawna.

c) Binding (wymagane)

latest

d) Result variable (wymagane)

documentDefinitions

e) Map decision result (wymagane)

resultList (List<map<String, Object<<)

Efektem wykonania będzie lista dokumentów zapisana w zmiennej procesowej documentDefinitions.

Krok 2: Business Rule Task „Id bazodanowe dla plików procesowych”

Task pobiera identyfikatory plików do dokumentów.

➤ Dodanie elementu

Create task → Business rule task

Nazwa: Id bazodanowe dla plików procesowych

➤ Konfiguracja

W panelu Implementation ustaw:

a) Type (wymagane)

DMN

b) Decision Reference (wymagane)

DOWNLOADABLE_DOCS_IDS

=>reguła mapująca biznesowy identyfikator pliku z aliasem wgranego do filestorage pliku poprzez administracyjny upload plików

Obraz zawierający tekst, zrzut ekranu, linia, Czcionka Zawartość wygenerowana przez AI może być niepoprawna.

c) Binding (wymagane)

latest

d) Result variable (wymagane)

documentFileStorageIds

e) Map decision result (wymagane)

resultList (List<map<String, Object<<)

Krok 3: Script Task „Lista dokumentów procesowych v2”

Task mapuje wynik DMN do nowej struktury danych.

➤ Konfiguracja

  1. Create task → Script task

  2. Nazwa:Lista dokumentów procesowych v2

  3. Właściwości:

➤ Script

// Wejściowy JSON def documentDefinitions = execution.getVariable('documentDefinitions') // Mapowanie do nowej struktury def transformedData = documentDefinitions.collect { doc -> [ metadata: doc ] } return transformedData

Krok 4: Script Task „Zapis typów dokumentów do domeny data”

Task zapisuje listę dokumentów do domain data.

➤ Konfiguracja

  1. Create task → Script task

  2. Nazwa: Zapis typów dokumentów do domeny data

  3. Script format: groovy

  4. Type: inline script

➤ Script

import groovy.json.JsonOutput def jsonOuput = new JsonOutput() def processInstanceId = execution.getProcessInstanceId() // remove "wniosek kredytowy" def docDefinitions = execution.getVariable('documentDefinitions') def filteredDefinitions = docDefinitions.findAll { it.type != 'doc_code0001' } def valuesMap = [ "formData.private.documentDefinitions": jsonOuput.toJson(filteredDefinitions), "formData.private.predefinedFiles": jsonOuput.toJson(execution.getVariable('documentFileStorageIds')), ] dataDelegate.setValuesByPath(processInstanceId, valuesMap)

Efekt: dane są dostępne w domenie formularza.

Krok 5: Script Task „Dokumenty do reklamacji”

Task buduje statyczną listę dokumentów wymaganych w zadaniu reklamacyjnym.

➤ Konfiguracja

  1. Create task → Script task

  2. Nazwa: Dokumenty do reklamacji

  3. Script format: groovy

  4. Type: inline script

  5. Result variable: taskChecklist

  6. Asynchronous continuation: Before

➤ Script

return [ [id: "doc_code00aa", required: true], [id: "doc_code00bb", required: true], [id: "doc_code00cc", required: true], [id: "doc_code00dd", required: false], [id: "doc_code00ee", required: false] ]

Krok 6: Script Task „Połączone itemy”

Task łączy dane z DMN, plików oraz checklisty do reklamacji w jedną strukturę.

➤ Konfiguracja

  1. Create task → Script task

  2. Nazwa: Połączone itemy

  3. Script format: groovy

  4. Type: inline script

  5. Result variable: checklistMergedTaskV2

  6. Asynchronous continuation: Before

➤ Script

(wklej dokładnie skrypt z definicji BPMN – bez zmian)

import groovy.json.JsonOutput def jsonOutput = new JsonOutput() def documentDefinitions = execution.getVariable('documentDefinitionsV2') def documentFileStorageIds = execution.getVariable('documentFileStorageIds') def taskChecklist = execution.getVariable('taskChecklist') // Mapowanie checklisty z dodaniem pola `required` def mappedChecklist = taskChecklist.collect { type -> def docDefinition = documentDefinitions.find { document -> document.metadata.type == type.id } if (docDefinition) { docDefinition.required = type.required docDefinition.metadata.required = type.required } return docDefinition }.findAll { it != null } // Usuwa `null`, jeśli nie znaleziono dopasowania // Dodanie dodatkowych pól do każdego dokumentu def finalDocs = mappedChecklist.collect { doc -> def predefinedFile = documentFileStorageIds.find { it -> it.type == doc.metadata.type }?.fileStorageId def downloadableOnly = doc.metadata.readonly def required = doc.required ?: false // Określenie wartości `definitionId` def definitionId if (required && predefinedFile) { definitionId = "read-write-required" } else if (!required && predefinedFile && !downloadableOnly) { definitionId = "read-write-not-required" } else if (required && !predefinedFile) { definitionId = "write-only-required" } else if (downloadableOnly && predefinedFile) { definitionId = "read-only" } else if (!required && !predefinedFile) { definitionId = "write-only-not-required" } return [ metadata: doc.metadata, predefinedFile: predefinedFile, definitionId: definitionId, context: "task" ] } // Konwersja do JSON i zwrócenie wyniku return S(jsonOutput.toJson(finalDocs))

Efekt: powstaje gotowa lista elementów checklisty.

Krok 7: Service Task „dodanie prewash do checklisty”

Task wywołuje external task odpowiedzialny za dodanie dokumentów do checklisty.

➤ Konfiguracja

  1. Create task → Service Task

  2. Nazwa: dodanie docs do checklisty

➤ Implementation

➤ Input parameters

Przejdź do: Extensions → Input/Output

Dodaj:

▶ baseDefinitionName

▶ checklistInstanceAlias

▶ itemsToAdd

▶contexts

Efekt działania

  • system posiada pełną listę dokumentów procesowych,

  • dane są zapisane w domain data,

  • checklista zostaje zasilona dokumentami dla zadania reklamacji.

09 lutego 2026