dskripchenko / laravel-process-engine
Laravel bridge for dskripchenko/process-engine: database store, queue workers, scheduler, artisan commands, a Processes facade, Eloquent model binding and state projection.
Package info
github.com/dskripchenko/laravel-process-engine
pkg:composer/dskripchenko/laravel-process-engine
Requires
- php: ^8.2
- dskripchenko/process-engine: ^1.2
- laravel/framework: ^11.0 || ^12.0 || ^13.0
Requires (Dev)
- laravel/pint: ^1.0
- orchestra/testbench: ^9.0 || ^10.0 || ^11.0
- pestphp/pest: ^3.0 || ^4.0
- pestphp/pest-plugin-laravel: ^3.0 || ^4.0
- phpstan/phpstan: ^2.0
Suggests
- dskripchenko/laravel-delayed-process: Run delayed processes from a process and wait for their completion
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-27 18:44:46 UTC
README
Laravel bridge for dskripchenko/process-engine: long-running processes as statecharts with durable execution, explicit retry semantics for side effects, timers, external events, versions and operator actions — on your database and your queue.
- A database store for PostgreSQL, MySQL / MariaDB and SQLite (migrations included).
- Queue jobs as the doorbell, the tick and the archive registered in the scheduler.
- Effect handlers resolved from the container — inject your services.
Processesfacade,HasProcessesfor models:startProcess(),process(),whereProcessIn('state')scopes, and projection of the current state into a column of the model.- Artisan:
tick,work,status,doctor,migrate,archive,validate,graph,make:process,make:process-effect. - Engine signals as Laravel events;
flag()guards from config; laravel-delayed-process completions forwarded as events.
Install
composer require dskripchenko/laravel-process-engine php artisan migrate
Run a queue worker and the scheduler (schedule:run every minute) as usual.
Use
use Dskripchenko\LaravelProcessEngine\Concerns\HasProcesses; final class Claim extends Model { use HasProcesses; }
use Dskripchenko\LaravelProcessEngine\Facades\Processes; $process = $claim->startProcess(ClaimSettlement::class, new ClaimContext(policyId: $policy->id)); Processes::send($process->id(), new FormSubmitted($request->validated()), key: $request->header('Idempotency-Key'), by: Actor::user($request->user()->id)); Processes::publish(new PartyDecision($payload['approved']), correlate: $payload['application_id'], key: $payload['message_id']); $claim->process(ClaimSettlement::class)->expects(); Claim::whereProcessIn('awaitingDocuments')->paginate();
Documentation
| English | Deutsch | Русский | 中文 | |
|---|---|---|---|---|
| Installation and configuration | en | de | ru | zh |
| Using it in an application | en | de | ru | zh |
| Data pipelines: queues per effect, exclusive starts, switches | en | de | ru | zh |
Processes themselves — the builder, effects, events, versions, operations — are documented in dskripchenko/process-engine.
Requirements
PHP 8.2 – 8.5, Laravel 11, 12 or 13.
License
MIT. See LICENSE.