Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Workflow Laravel Package

symfony/workflow

Symfony Workflow component helps model and run workflows or finite state machines. Define places and transitions, guard rules, events, and marking stores to track state changes and integrate processes cleanly into your application.

View on GitHub
Deep Wiki
Context7

Provides tools for managing a workflow or finite state machine

Frequently asked questions about Workflow
How do I integrate Symfony Workflow with Laravel for order processing (e.g., draft → submitted → approved)?
Define your workflow in YAML (e.g., `config/workflows/order_workflow.yaml`) with `places` (states) and `transitions` (e.g., `submit: { from: draft, to: submitted }`). Register the workflow via Laravel’s service container in a provider, then apply it to your order model using `Workflow::apply()`. Use guards to enforce business rules, like `@order_approval_guard` for the `approve` transition.
What’s the minimum Laravel/PHP version required for Symfony Workflow v8.x?
Symfony Workflow v8.x requires **PHP 8.2+** and is compatible with Laravel 10/11. For v7.x, use PHP 8.1+. Check your Laravel version’s LTS support to avoid conflicts. The component has no Laravel-specific dependencies beyond PHP.
Can I use Symfony Workflow with Eloquent models for multi-step approvals?
Yes, but you’ll need a custom adapter (e.g., `WorkflowAwareTrait`) to bridge Eloquent models with the workflow. Store workflow state in a database column (e.g., `status`) and use `MethodMarkingStore` for performance. Example: `Workflow::apply($workflow, $order, 'submitted')`.
How do I handle tenant-specific workflow rules in a multi-tenant Laravel app?
Define dynamic workflow configurations per tenant using YAML/XML files (e.g., `tenant1_workflow.yaml`, `tenant2_workflow.yaml`). Load the correct config at runtime via a service provider or middleware. This avoids code duplication while keeping rules isolated.
What’s the performance impact of Symfony Workflow in high-traffic Laravel apps?
Workflow operations add **~5–10ms per request** in most cases. For high-throughput apps, use `MethodMarkingStore` (in-memory) instead of a database-backed store. Benchmark with your specific workflow complexity—most approval processes handle this easily.
How do I debug or visualize workflows in Laravel (e.g., for complex approval chains)?
Use the `workflow:dump` CLI command (via Symfony CLI) to generate a Mermaid.js diagram or Graphviz output. For Laravel, create an Artisan command wrapping this. Note: If using custom HTML labels, test post-upgrade (v8.0.9 fixed escaping issues in `GraphvizDumper`).
Are there alternatives to Symfony Workflow for Laravel workflows (e.g., Spatie, custom state machines)?
Alternatives include **Spatie’s Laravel Activitylog** (for simpler audit trails) or **custom state machines** (e.g., using PHP enums). However, Symfony Workflow stands out for **declarative YAML/XML configs**, **event-driven guards**, and **Symfony’s battle-tested infrastructure**—ideal for complex, conditional workflows like order processing or multi-step approvals.
How do I test Symfony Workflow in Laravel (e.g., mocking transitions or guards)?
Mock the `WorkflowInterface` in PHPUnit tests to verify transitions. Use `Workflow::apply()` with test doubles for guards (e.g., `Guard::VETO`/`Guard::ALLOW`). Test edge cases like invalid transitions or concurrent requests. Example: `$this->assertTrue($workflow->can($entity, 'approve'))`.
Can I use Symfony Workflow for real-time event-driven workflows (e.g., WebSocket updates)?
Yes, integrate workflow events (e.g., `WorkflowEnteredStateEvent`) with Laravel’s event system. Dispatch events to queues or broadcast them via Pusher/Laravel Echo. Example: `event(new OrderApproved($order))` in a workflow listener. Works seamlessly with Laravel’s event-driven architecture.
What’s the migration path if I’m upgrading from an older workflow system (e.g., custom state machine) to Symfony Workflow?
Start by modeling your existing states/transitions in YAML/XML. Use the `workflow:dump` CLI to visualize your new workflow. Replace procedural logic (e.g., `if ($order->status === 'draft')`) with `Workflow::apply($workflow, $entity, 'submitted')`. Test thoroughly—most teams complete this in **1–2 dev days** if familiar with Laravel/Symfony.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium
sandermuller/package-boost-laravel
sandermuller/boost-skills
redaxo/core
yusufgenc/filament-api-forge
l3aro/rating-star-for-filament
leek/filament-subtenant-scope
anil/file-picker
broqit/fields-ai