Xelflow

Help & Documentatie

Alles wat je moet weten om krachtige workflows te bouwen met Xelflow.

Xelflow is een krachtige engine voor bedrijfslogica die werkt op basis van JSON-definities. Door flows, tables en events te combineren, kun je complexe applicaties bouwen zonder een enkele regel traditionele code te schrijven voor je backend.

Flows

Flows definiëren de logica van je applicatie. Ze bestaan uit een reeks stappen die na elkaar worden uitgevoerd.

Key Elements

Parameter Beschrijving
Name req Naam van de flow (bijv. SaveMessageFlow).
Version req Versie van de flow (bijv. 1.0).
Status req Status van de flow (Active of Inactive).
StartStepId opt ID van de eerste stap die moet worden uitgevoerd.
ErrorStepId opt ID van de stap die wordt aangeroepen als er een fout optreedt.
Steps req Een object met alle stap-definities.

Variabelen & Interpolatie

Elke flow een een flow context. Hier in staan bijvoorbeeld het event en de user, maar ook resultaten van stappen.

Je kunt dynamische data gebruiken om de gegevens in de context te benaderen met de ${variableName} syntax:

  • ${event.data.fieldName} - Data verstuurd vanuit de client.
  • ${error} - Foutmelding van een eerdere stap.
  • ${user.Email} - Email van de gebruiker.

Naast variabelen kan je ook Functies gebruiken met de ${FUNCTIEA(FUNCTIEB(variableName,'waarde'))} syntax, bijvoorbeeld ${NOT(EMPTY(event.data.email))}. Meer functies volgen als er behoefte aan is, hieronder de huidige lijst.

Functie Beschrijving
EMPTY Geeft true terug als de waarde leeg of null is, ander false
NOT Geeft true terug als de waarde leeg of null is.
AND Geeft true terug als de alle waarden true zijn, anders false.
OR Geeft false terug als de alle waarden false zijn, anders true.
SUM Geeft de som van alle waarden.
MIN Geeft de minimum van alle waarden.
MAX Geeft de maximum van alle waarden.
AVG Geeft de gemiddelde van alle waarden.
NOW Geeft de huidige datumtijd in UTC of opgegeven TijdZone.
TODAY Geeft de huidige datum in UTC of opgegeven TijdZone.
DATEPART Geeft van de opgegeven datum de opgegeven onderdeel year month day hour minute second
EQUALS Geeft true terug als de waarden gelijk zijn, anders false
GREATER Geeft true terug als de eerste waarde groter is dan de tweede waarde, anders false
LESS Geeft true terug als de eerste waarde kleiner is dan de tweede waarde, anders false
GREATER_OR_EQUAL Geeft true terug als de eerste waarde groter is dan of gelijk is aan de tweede waarde, anders false
LESS_OR_EQUAL Geeft true terug als de eerste waarde kleiner is dan of gelijk is aan de tweede waarde, anders false
FILTER Filtert een lijst op basis van een filter expression. Syntax: FILTER(list, 'item', expression)
CONCAT Voegt lijsten samen. Syntax: CONCAT(list1, list2, ...)
COUNT Geeft het aantal elementen in een lijst. Syntax: COUNT(list)

Step Types

Elke stap in een flow heeft een type dat bepaalt welke actie er wordt uitgevoerd en welke parameters vereist zijn.

General

Algemene parameters voor elke stap.

Parameter Beschrijving
Idreq Unieke identificatie van de stap.
Typereq Voor beschikbare Step Types zie hieronder
Parametersreq Parameters zijn afhankelijk van het Step Type. Zie hieronder.
Aliasopt Naam van de resultaten in de context van de flow. Als niet gevuld dan is de alias gelijk aan de id.
NextStepIdreq Id van de volgende stap die moet worden uitgevoerd. Als niet gevuld dan is de flow klaar.
AuthenticationIdopt Id van de authenticatie die moet worden gebruikt.

QueryDatabase

Voert een SQL-query uit op de database.

Parameter Beschrijving
QueryTypereq Type query: Insert, Select, Update, Delete.
QueryTextTypereq Type query: Text, Dynamic.
Query (Text)req De SQL-query die moet worden uitgevoerd. Gebruik @ParameterName voor parameters.
Query (Dynamic)req Een lijst met SQL-query delen. Elk deel heeft een Sql, Part en Conditions property. Wanneer de Conditions niet voldoen dan wordt de Sql niet meegenomen in de query. Gebruik @ParameterName voor parameters.
Parametersreqvar Object dat waarden mapt naar SQL-parameters. Hier kan je Variabelen en Functies gebruiken. ${event.data.limit}

SendEmail

Verstuurt een e-mail via de geconfigureerde SMTP-server. De AuthenticationId is verplicht.

Parameter Beschrijving
Toreqvar Ontvanger van de e-mail.
Fromreqvar Afzender van de e-mail.
Subjectreqvar Onderwerp van de e-mail.
Bodyreqvar Inhoud (ondersteunt HTML en variabelen).
IsHtmlopt Zet op true om de body als HTML te versturen.

SendMessageToUser

Stuurt data of statusinformatie terug naar de client-applicatie met Server Sent Events (SSE).

Parameter Beschrijving
Eventreqvar Naam van het event dat op de client wordt getriggerd (bijv. MessageSaved).
Datareqvar Object met de payload die naar de client wordt gestuurd.

SendNotification

Stuurt een notificatie naar de client-applicatie met het VAPID protocol. De AuthenticationId is verplicht.

Parameter Beschrijving
Endpointreqvar Endpoint van de client.
P256dhreqvar P256dh van de client.
Authreqvar Auth van de client.
Messagereqvar Object met de payload die naar de client wordt gestuurd.

SendEvent

Stuurt een event naar de server, dit event kan dan een andere flow triggeren.

Parameter Beschrijving
Namereqvar Naam van het event dat op de server wordt getriggerd.
Versionreqvar Versie van het event dat op de server wordt getriggerd.
Listoptvar Voor het versturen van meerdere events kan een lijst worden opgegeven. ${subscriptions} De lijst zal ook worden gebruikt voor het ophalen van de juiste variabelen. ${subscriptions.*.Endpoint}
ContinuationEventreqvar Event dat terug wordt gestuurd vanuit de opgestarte flow. Data wordt aan context toegevoegd.
CorrelationIdoptvar Combinatie van GUID en index waaraan te zien is welke flow en lijst id dit event bij hoort.
MaxConcurrencyreq(Default 1) Aantal events dat tegelijk wordt verstuurd. 1 tot 5
ContinueOnFailureopt (Default false) Bij false stopt de flow als een event faalt. Bij true gaat de flow door met de volgende event.
Datareqvar Object met de payload die met het event wordt meegestuurd.

HttpsAction

Stuurt een HTTP request naar een externe API.

Parameter Beschrijving
Endpointreq URL van de API.
Methodreq HTTP method (GET, POST, PUT, DELETE).
Headersopt Headers voor de HTTP request.
Bodyopt Body voor de HTTP request.
ContentTypeopt Content type van de HTTP request.
Streamopt Response is een stream. true of false
StreamEventopt Event en Versie dat wordt gestuurd per chunk van de stream. StreamChunk@1.0

ValidateContext

Valideert de context op basis van een aantal regels. Als de validatie faalt, wordt de flow gestopt en wordt de error step uitgevoerd.

Parameter Beschrijving
Key Value pairreq De Key is de naam van de validatie regel. De Value is de waarde die gecontroleerd moet worden.

AddDataToContext

Voegt data toe aan de context. Dit kan worden gebruikt om data door te geven aan andere steps.

Parameter Beschrijving
Keyreq De Key is de naam van de variabele die wordt toegevoegd aan de context.
Valuereq De Value is de waarde die wordt toegevoegd aan de context.

Decision

Neemt een beslissing op basis van een conditie. Als de conditie waar is, wordt de TrueStepId uitgevoerd. Als de conditie niet waar is, wordt de FalseStepId uitgevoerd.

Parameter Beschrijving
Conditionreq De conditie die wordt gecontroleerd. Dit is een expressie die wordt geëvalueerd.
TrueStepIdreq De stap die wordt uitgevoerd als de conditie waar is.
FalseStepIdreq De stap die wordt uitgevoerd als de conditie niet waar is.

Events

Events triggeren flows, dit gebeurt op basis van Naam en Versie van het event. Ze bevatten vaak validatieregels om ervoor te zorgen dat de input correct is.

Parameter Beschrijving
Idreq Altijd null, wordt gevuld bij opslag in database
Namereq Naam van het event.
Versionreq Versie van het event.
Statusreq Status van het event. Active of Inactive
Cronopt Een cron expressie die bepaald wanneer dit event wordt aangemaakt door de scheduler, eventueel gecombineerd met een aantal keer totdat dit event Inactivewordt. 0 13 * * *;1Eén keer om 13:00 uur.
Rolesopt Lijst met rollen van gebruikers dat dit event kan uitvoeren
Validationopt Lijst met validaties

Validatie Regels

Allereerst wordt gecontroleerd of een event Active is en dat de gebruiker een juiste rol heeft.

Gebruik de Validation array om checks uit te voeren voordat de flow start.

"Validation": [ { "Check": "${NOT(EMPTY(event.data.email))}", "Message": "E-mail is verplicht" } ]

Authentications

Authenticaties beheren de toegang tot externe systemen of de database. In de folder Authentications wordt een lijst bijgehouden met beschikbare authentications.

Parameter Beschrijving
Idreq Gebruikt in flow stappen via de AuthenticationId property.
Typereq Moet overeenkomen met het stap type waarvoor het wordt gebruikt.

Let op: Sla NOOIT API-keys of geheimen op in de JSON bestanden. Gebruik de Xelflow Admin Panel voor veilige configuratie.

Tables

Tables json definiëren het database schema. Dit schema is alleen voor belang als naslagwerk voor jezelf of voor de IA.

Tabel Eigenschappen

Eigenschap Beschrijving
Name Naam van de tabel
Version Versie van de tabel
Status Status van de tabel Active of Inactive
Description Omschrijving van de tabel
Columns Lijst met kolommen in de tabel

Kolom Eigenschappen

Eigenschap Beschrijving
Name Naam van de kolom
Type SQL Data Type (bijv. int, nvarchar(255), datetime2, bit).
IsPrimaryKey Zet op true voor de unieke id van de tabel.
IsNullable Bepaalt of het veld leeg mag blijven.
ForeignKey Legt relatie tussen tabellen door de ForeignKey eigenschap te configureren met Table en Column
DefaultValue Standaardwaarde (bijv. SYSUTCDATETIME() of 0).

Migrations

De migrations json definiëren het sql script om tot de juiste tabellen to komen in de database. Met het commando npm run sync-tables worden de migratie scripts uitgevoerd en naar de processed folder gezet.

Eigenschap Beschrijving
Name Naam van het migratie script
Scripts Lijst van SQL commando's