November 2, 2026

Elsa Workflows: start echte workflows vanuit je Justflows-site

Elsa Workflows is een nieuwe first-party plugin die Justflows verbindt met Elsa Workflows 3. Ontwerp in Elsa Studio binnen de admin, en start workflows vanuit reacties, formulieren, je eigen plugins of met de hand, terwijl de inloggegevens op de server blijven.

Elsa Workflows: start echte workflows vanuit je Justflows-site
Een website is vaak de plek waar een proces begint. Iemand vult een formulier in, laat een reactie achter of maakt een boeking, en daarna moet iemand dat opmerken en de volgende vijf stappen met de hand doen. Of je bouwt een webhook naar een automatiseringsdienst met een eigen login, een eigen kopie van je data en een eigen idee over wie wat mag wijzigen.
Elsa Workflows is een nieuwe first-party plugin die een Justflows-site verbindt met Elsa Workflows 3, de opensource workflow-engine voor .NET. Je ontwerpt workflows in Elsa Studio, zonder de admin van Justflows te verlaten, en je site start ze: vanuit een reactie, vanuit een formulier, vanuit een andere plugin of met de hand.

Elsa Studio in de admin

Elsa krijgt een eigen sectie in de zijbalk van de admin, herkenbaar aan het Elsa-logo. Er is een Overzicht met de status van de verbinding, een lijst Workflows, een lijst Uitvoeringen en Studio: de Elsa-designer, ingebouwd in de admin en geopend voor de tenant van deze site.
Ben je al ingelogd in Justflows, dan vraagt Studio je niet opnieuw in te loggen. Het gebruikt je Justflows-sessie, en de Elsa-API-sleutel blijft op de server. Volledige breedte rekt de designer uit over het hele contentgebied, handig zodra een workflow meer dan een handvol activiteiten heeft.

Start een workflow van overal

  • Met de hand. Een operator kiest een gepubliceerde workflow, voegt optioneel JSON-invoer en een correlation id toe, bevestigt en start hem.
  • Vanuit een reactie. Zolang Elsa actief is, heeft de contenteditor een sectie Workflow voor elke pagina of elk bericht, concepten inbegrepen. Een reactie die als in afwachting of goedgekeurd wordt opgeslagen, start de workflow die je daar hebt gekozen. Spam en prullenbak doen dat niet. Elsa wordt aangeroepen nadat de reactie is opgeslagen, dus een trage Elsa-server laat een bezoeker nooit wachten.
  • Vanuit een formulier. Forms kan per formulier één gepubliceerde workflow starten, of het Elsa-event justflows.forms.submitted publiceren waar elke workflow naar kan luisteren. De veldwaarden komen binnen als workflowinvoer, en het formulier blijft werken als Elsa niet is verbonden.
  • Vanuit je eigen plugin. De plugin-SDK kan een event triggeren, een workflow in de wachtrij zetten, of er een uitvoeren en wachten op het instance-id. Daarover hieronder meer.
Uitvoeringen laat zien wat er daarna gebeurde: bezig, klaar of mislukt, met de correlation id, tijden en incidenten van elke run. Je hoeft Elsa niet te openen om te zien waarom iets is gestopt.

Eén server, een tenant voor elke site

Je verbindt de hoofdsite één keer met een Elsa 3-server, met een API-sleutel, een bearer-token of OAuth-clientgegevens. De verbindingspagina test de server voordat er iets wordt opgeslagen.
Op een multisite-installatie is die verbinding de gedeelde pool. Elke site krijgt daarop een eigen Elsa-tenant, en een site ziet alleen de eigen workflows en uitvoeringen. Een workspace die meer nodig heeft, kan een eigen Elsa-server krijgen, in te stellen op de workspacepagina van het Platform. Subsites zien nooit het serveradres of de inloggegevens.
Platforms bepalen wie Elsa krijgt en hoeveel. Elke website heeft een maandelijkse limiet op het aantal gestarte workflows, en Elsa kan per website worden uitgezet. Gedeelde pool en eigen server zijn workspacefuncties, dus een abonnement in de shop kan ze aanzetten.

Inloggegevens blijven op de server

Een workflow-engine kan meestal veel, en daarom zijn de sleutels het beschermen waard. De browser krijgt ze dus nooit. Medewerkers zien of er inloggegevens zijn opgeslagen, nooit de waarde, en als je opslaat met een leeg veld voor inloggegevens, blijft de opgeslagen waarde staan.
  • Elke aanroep naar Elsa wordt gecontroleerd voordat hij je server verlaat. Adressen moeten HTTPS zijn, en loopback-, privé-, link-local- en cloudmetadatahosts worden geweigerd.
  • Fouten worden omgezet in vaste categorieën, en inloggegevens in incidentmeldingen worden weggelaten, zodat geen geheim in een log belandt.
  • Workflowinvoer, variabelen en uitvoer worden naar Elsa gestuurd of gelezen om te tonen. Ze worden niet in Justflows opgeslagen.
  • Een auditlog legt wijzigingen aan de verbinding vast en wie welke workflow heeft gestart, zonder de invoer.
  • Alleen beheerders wijzigen de verbinding. Twee kant-en-klare rollen dekken de rest: Elsa-operators kunnen workflows bekijken en starten, Elsa-kijkers kunnen alleen kijken. Elke route controleert zijn eigen rechten, dus een menu-item verbergen is niet de enige drempel.
De plugin controleert ook elke vijf minuten per site de verbinding, telt twee keer per uur de definities en de lopende en mislukte uitvoeringen, en voegt een Elsa-controle toe aan Diagnostiek. Stopt Elsa met antwoorden, dan merk je dat in Justflows.

Voor pluginontwikkelaars

Elke plugin kan een workflow starten voor de huidige site, zonder ooit de Elsa-inloggegevens in handen te hebben. Zodra Elsa is geladen, roept een plugin de SDK zo aan:
const elsa = globalThis[Symbol.for("justflows.elsa-workflows.sdk")];

await elsa?.triggerElsaEvent({
  eventName: "acme.booking.confirmed",
  correlationId: bookingId,
  input: { bookingId },
});
// → { ok: true, instanceIds: [ … ], correlationId }
In Studio pikt een workflow die begint met een Event-activiteit met dezelfde naam het op. dispatchElsaWorkflow zet één gepubliceerde definitie in de wachtrij, en executeElsaWorkflow voert er een uit en wacht op het instance-id. Elke geslaagde aanroep geeft een hook en een webhook-event af. Is Elsa niet actief, of heeft de site geen verbinding, dan geeft de aanroep ok: false terug in plaats van een fout te gooien. De SDK-referentie en de routereferentie hebben de details.
Net als onze andere first-party plugins gebruikt Elsa Workflows alleen de openbare plugin-SDK. De core van Justflows bevat geen Elsa-code.

Wat het nog niet doet

Elsa Workflows is in bèta, dus verwacht wijzigingen vóór 1.0. Een paar beperkingen zijn goed om vooraf te weten:
  • Justflows host Elsa nog niet voor je. Je draait de Elsa-server zelf.
  • Alleen gepubliceerde workflows kunnen worden gestart.
  • Inloggen in Studio met je Justflows-sessie vereist authenticatie met een API-sleutel.
  • Shop-events starten nog geen workflows. Gebruik de SDK vanuit je eigen plugin, of een webhook naar een HTTP-endpoint van Elsa.
  • Er zijn nog geen AI-agenttools voor Elsa.

Probeer het

Elsa Workflows is gratis, valt onder de GPL en staat als binnenkort beschikbaar in de marketplace. Het vereist Justflows 0.4.1 of later. De documentatie behandelt het verbinden van een server, Studio, workflows voor reacties en formulieren, toegang voor medewerkers en limieten. Wil je het proberen zonder Elsa-server in productie, dan legt de verbindingshandleiding uit hoe je het naar een lokale server laat wijzen.
Je kunt de voortgang volgen in issue #146. Vragen of problemen kun je kwijt op support.justflows.com.
Bekijk Elsa Workflows in de marketplace