HTTP API routes and admin web UI handlers for workflow management.
API Endpoints (canonical): GET /api/v1/workflow/instances/:id — current state + metadata GET /api/v1/workflow/instances/:id/audit — full audit log POST /api/v1/workflow/instances — start a new workflow instance POST /api/v1/workflow/instances/:id/transition — execute a transition
Compatibility: /api/workflow/* redirects to /api/v1/workflow/* via versioning middleware.
Admin Web UI (mounted under /web/admin): GET /workflows — list all workflow instances GET /workflows/:id — instance detail with state viz + audit trail
All routes require authentication (actor extracted from ring request). Caller is responsible for mounting under an authenticated router.
HTTP API routes and admin web UI handlers for workflow management. API Endpoints (canonical): GET /api/v1/workflow/instances/:id — current state + metadata GET /api/v1/workflow/instances/:id/audit — full audit log POST /api/v1/workflow/instances — start a new workflow instance POST /api/v1/workflow/instances/:id/transition — execute a transition Compatibility: /api/workflow/* redirects to /api/v1/workflow/* via versioning middleware. Admin Web UI (mounted under /web/admin): GET /workflows — list all workflow instances GET /workflows/:id — instance detail with state viz + audit trail All routes require authentication (actor extracted from ring request). Caller is responsible for mounting under an authenticated router.
Integrant lifecycle management for the workflow module.
Config keys:
:boundary/workflow-db-schema {:ctx (ig/ref :boundary/db-context)}
:boundary/workflow Minimal config (no side-effects): {:db-ctx (ig/ref :boundary/db-context) :db-schema (ig/ref :boundary/workflow-db-schema)}
Full config (with jobs side-effects): {:db-ctx (ig/ref :boundary/db-context) :db-schema (ig/ref :boundary/workflow-db-schema) :job-queue (ig/ref :boundary/job-queue) :guard-registry {}}
:boundary/workflow-routes {:workflow-service (ig/ref :boundary/workflow) :user-service (ig/ref :boundary/user-service)}
Returns {:api [...] :web [...] :static []} for composition by the HTTP handler.
Integrant lifecycle management for the workflow module.
Config keys:
:boundary/workflow-db-schema
{:ctx (ig/ref :boundary/db-context)}
:boundary/workflow
Minimal config (no side-effects):
{:db-ctx (ig/ref :boundary/db-context)
:db-schema (ig/ref :boundary/workflow-db-schema)}
Full config (with jobs side-effects):
{:db-ctx (ig/ref :boundary/db-context)
:db-schema (ig/ref :boundary/workflow-db-schema)
:job-queue (ig/ref :boundary/job-queue)
:guard-registry {}}
:boundary/workflow-routes
{:workflow-service (ig/ref :boundary/workflow)
:user-service (ig/ref :boundary/user-service)}
Returns {:api [...] :web [...] :static []} for composition
by the HTTP handler.No vars found in this namespace.
Database persistence for workflow instances and audit trail.
Implements IWorkflowStore using next.jdbc + HoneySQL. Applies snake_case <-> kebab-case conversion at the DB boundary only.
Database persistence for workflow instances and audit trail. Implements IWorkflowStore using next.jdbc + HoneySQL. Applies snake_case <-> kebab-case conversion at the DB boundary only.
Load-time registry of workflow definitions.
The registry is mutable process state, so it lives in the shell — the core
(boundary.workflow.core.machine) stays pure (state-machine introspection
only). Definitions are registered at namespace load via the defworkflow
macro and read at runtime by the workflow service/wiring.
No business logic here — just the definition registry, the defworkflow
convenience macro, and the IWorkflowRegistry adapter.
Load-time registry of workflow definitions. The registry is mutable process state, so it lives in the shell — the core (boundary.workflow.core.machine) stays pure (state-machine introspection only). Definitions are registered at namespace load via the `defworkflow` macro and read at runtime by the workflow service/wiring. No business logic here — just the definition registry, the `defworkflow` convenience macro, and the IWorkflowRegistry adapter.
Workflow engine service.
Orchestrates the full transition lifecycle:
Implements IWorkflowEngine.
Workflow engine service. Orchestrates the full transition lifecycle: 1. Load workflow definition from registry 2. Load workflow instance from store 3. Validate transition (existence, permissions, guards) 4. Persist new state + audit entry 5. Enqueue side-effect jobs (if job-queue provided) Implements IWorkflowEngine.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |