Product overview
Everything you need to run approval workflows in Laravel.
DBFlow is a model-first workflow engine for Laravel and Filament. It gives your app a dedicated runtime for approvals, tasks, reject strategies, and audit logs — attached directly to your Eloquent models. No BPM platform. No BPMN XML. Just clean PHP and JSON-compatible definitions.
Packages: dbflowlabs/core,
dbflowlabs/filament (Standard UI),
dbflowlabs/filament-pro (visual builder preview).
Core and Filament Standard are MIT-licensed during alpha; Pro is commercial preview software.
DBFlow Core
The DAG runtime: DBFlow::start(), approve/reject/cancel,
active_key concurrency, and dbflow_workflow_* tables.
Definitions are JSON-compatible PHP arrays — not a fluent DSL.
DBFlow Filament (Standard UI)
Operates workflows in Filament: My Tasks, workflow instances, definition editing (linear editor),
timelines, and host resource-action patterns. Registers through DBFlowFilamentPanel::register().
DBFlow Pro
Designs workflows visually — LogicFlow canvas, graph compilation into the same JSON definitions Core executes. Not a mature no-code platform; canvas editing and publication are still evolving during alpha.
Scope
Focused workflow infrastructure. Not a platform.
DBFlow is purpose-built for approval workflows on Laravel Eloquent models. It is not a general automation engine, a Zapier replacement, or a BPMN runtime.
Engineering quality
Designed for workflow safety.
Versioned definitions
Published versions in dbflow_workflow_versions. Running instances keep the version they started with.
Atomic task actions
DBFlow::approve() and DBFlow::reject() update runtime state inside database transactions.
Append-only audit logs
WorkflowLogger writes dbflow_workflow_logs rows (WorkflowLogEvent types).
active_key concurrency
Prevents duplicate active workflows per workflowable slot.
Reject strategies
RejectStrategy controls whether rejection restarts, steps back, or ends the instance.
WorkflowHooks
Host callbacks (onStarted, onApproved, onRejected, onCancelled) — not Laravel Event classes.