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

Konfiguracja komunikacji między Flowee a Portalem Klienta

Ten fragment procesu odpowiada za:

  • inicjalizację struktury danych dla komunikacji,

  • wysyłanie wiadomości systemowej do Portalu Klienta.

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

Krok 1: Script Task „Setup danych dla komunikacji”

Task tworzy strukturę danych procesowych dla komunikacji między Flowee a Portalem.

➤ Dodanie elementu do diagramu

  1. Z lewego menu wybierz Create taskScript task

  2. Nazwa: Setup danych dla komunikacji

  3. Podłącz do diagramu przepływem z poprzedniego elementu.

➤ Konfiguracja

➤ Script

import groovy.json.JsonOutput def jsonOuput = new JsonOutput() def communicationInitData = [ 'flowee': [ 'messages': [] ], 'system': [ 'messages': [] ], 'portal': [ 'messages': [] ] ] def valuesMap = [ 'communication': jsonOuput.toJson(communicationInitData) ] dataDelegate.setValuesByPath(processInstanceId, valuesMap)

Efekt działania

Proces posiada zmienną communication, w której przygotowane są trzy kanały wiadomości: flowee, system i portal.
Znaczenie kanałów:

  • System: wiadomości systemowe wysłane z Flowee do klienta na portal

  • Portal: wiadomości wysyłane z portalu do Flowee do zadania komunikacja

  • Flowee: wiadomości wysyłane przez Doradcę do klienta na portal

Krok 2: Script Task „wiadomość systemowa”

Task dodaje wiadomość systemową do kanału communication.system.messages.

➤ Dodanie elementu do diagramu

  1. Z lewego menu wybierz Create taskScript task

  2. Nazwa: wiadomość systemowa

  3. Podłącz do diagramu przepływem z poprzedniego taska.

➤ Konfiguracja

➤ Input parameter

Dodaj w Extensions → Input/Output:

➤ Script

import groovy.json.JsonSlurper import groovy.json.JsonOutput import java.time.ZonedDateTime import java.time.format.DateTimeFormatter def slurper = new JsonSlurper() def jsonOuput = new JsonOutput() def processInstanceId = execution.getProcessInstanceId() def communication = dataDelegate.getValueByPath(processInstanceId, 'communication.system.messages') if (communication == '-') { return; } def messages = slurper.parseText(communication) messages << [ content: content, system: "system", sender: "", creationTime: ZonedDateTime.now().format(DateTimeFormatter.ISO_INSTANT) ] def valuesMap = [ 'communication.system.messages': jsonOuput.toJson(messages) ] dataDelegate.setValuesByPath(processInstanceId, valuesMap)

Efekt działania

  • w procesie powstaje zmienna communication z przygotowaną strukturą kanałów,

  • systemowa wiadomość trafia do communication.system.messages z odpowiednim timestampem,

  • dalsze taski procesu (np. wysyłka wiadomości do Portalu) mogą korzystać z tej zmiennej.

Wysyłka wiadomości z Flowee do Portalu Klienta

Ten fragment procesu odpowiada za:

  • odebranie nowej wiadomości w procesie,

  • zapisanie jej w strukturze komunikacji (communication.flowee.messages),

  • przygotowanie do wysyłki do Portalu Klienta lub dalszej obsługi w procesie.

Obraz zawierający tekst, Prostokąt, Produkty papierowe Zawartość wygenerowana przez AI może być niepoprawna.

Krok 1: Start Event dla nowej wiadomości

Start Event odpowiada na przychodzącą wiadomość (Message Event).

➤ Dodanie elementu do diagramu

  1. Z lewego menu wybierz Start Event → Message Start Event

  2. Nazwa: brak (opcjonalnie Nowa wiadomość)

  3. Ustaw właściwości:

Start event uruchamia flow, gdy w systemie pojawi się nowa wiadomość.

Krok 2: Script Task „Zapisanie nowej wiadomości”

Task zapisuje treść nowej wiadomości w zmiennej communication.flowee.messages i czyści tymczasowe dane widokowe.

➤ Dodanie elementu do diagramu

  1. Create task → Script Task

  2. Nazwa: Zapisanie nowej wiadomości

  3. Podłącz przepływem od Start Event.

➤ Konfiguracja taska

➤ Script

import groovy.json.JsonSlurper import groovy.json.JsonOutput import java.time.ZonedDateTime import java.time.format.DateTimeFormatter def slurper = new JsonSlurper() def jsonOuput = new JsonOutput() def processInstanceId = execution.getProcessInstanceId() def communicationTaskFlowee = dataDelegate.getValueByPath(processInstanceId, 'formData.private.communication') def cleanUpCommunicationMessageView(taskData, jsonOuput) { taskData.remove('messagesView') def valuesMap = [ 'formData.private.communication': jsonOuput.toJson(taskData), ] dataDelegate.overrideValuesByPath(processInstanceId, valuesMap) } if (communicationTaskFlowee == '-') { return; } def parsedCommunicationTaskFlowee = slurper.parseText(communicationTaskFlowee) if (!parsedCommunicationTaskFlowee.newMessage) { cleanUpCommunicationMessageView(parsedCommunicationTaskFlowee, jsonOuput) return; } def communication = dataDelegate.getValueByPath(processInstanceId, 'communication.flowee.messages') if (communication == '-') { cleanUpCommunicationMessageView(parsedCommunicationTaskFlowee, jsonOuput) return; } def messages = slurper.parseText(communication) messages << [ content: parsedCommunicationTaskFlowee.newMessageObject.content, system: "flowee", sender: parsedCommunicationTaskFlowee.newMessageObject.sender, creationTime: ZonedDateTime.now().format(DateTimeFormatter.ISO_INSTANT) ]; parsedCommunicationTaskFlowee.remove('newMessage') cleanUpCommunicationMessageView(parsedCommunicationTaskFlowee, jsonOuput) def valuesMap = [ 'communication.flowee.messages': jsonOuput.toJson(messages) ] dataDelegate.setValuesByPath(processInstanceId, valuesMap)

Efekt działania

  • każda nowa wiadomość z Flowee trafia do zmiennej procesowej communication.flowee.messages,

  • tymczasowe pola widokowe (messagesView, newMessage) są czyszczone,

  • dane są gotowe do dalszej obsługi (wysyłka do Portalu, powiadomienia, logi).

Aby wysłanie wiadomości nastąpiło prawidłowo to w manual tasku np. „Komunikacja” musi być:

  1. dodany formularz zawierający poniższą definicję:

Formularz do komunikacji

  1. prawidłowo skonfigurowana akcja

„Wyślij wiadomość”

{ "actionName": "save", "model": { "order": 3, "type": "button", "transition": null, "contexts": ["TASK"], "columnName": null, "classes": ["secondary", "right"], "eventName": "saveTaskAndSendMessageV2" }, "dictionaryPath": "DEFAULT.ACTIONS.sendMessage", "metadata": { "onComplete": "reload", "onClick": "submit", "validate": "structure", "messageName": "submitCommunication", "displayOnForms": ["ID formularza"], "formsScopeRestrictor": ["ID formularza"], "message": "CUSTOM.WARNINGS.messageSentSuccessfully" } }
09 lutego 2026