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.
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 |