nowo-tech / workflow-bundle
Symfony bundle to define and run Symfony Workflow state machines from database definitions with built-in CRUD.
Package info
github.com/nowo-tech/WorkflowBundle
Type:symfony-bundle
pkg:composer/nowo-tech/workflow-bundle
Requires
- php: >=8.2 <8.6
- doctrine/doctrine-bundle: ^2.13 || ^3.2.4
- doctrine/orm: ^2.13 || ^3.0
- symfony/config: ^7.0 || ^8.0
- symfony/dependency-injection: ^7.0 || ^8.0
- symfony/form: ^7.0 || ^8.0
- symfony/http-kernel: ^7.0 || ^8.0
- symfony/routing: ^7.0 || ^8.0
- symfony/security-csrf: ^7.0 || ^8.0
- symfony/translation: ^7.0 || ^8.0
- symfony/twig-bundle: ^7.0 || ^8.0
- symfony/validator: ^7.0 || ^8.0
- symfony/workflow: ^7.0 || ^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- nowo-tech/phpstan-frankenphp: ^1.0
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- phpstan/phpstan-symfony: ^2.0
- phpunit/phpunit: ^10.0 || ^11.0
- rector/rector: ^2.0
- symfony/browser-kit: ^7.0 || ^8.0
- symfony/framework-bundle: ^7.0 || ^8.0
- symfony/security-core: ^7.0 || ^8.0
- symfony/yaml: ^7.0 || ^8.0
Suggests
- symfony/flex: For automatic recipe installation
- symfony/security-bundle: Required for the private Workflow CRUD UI (or set security.allow_unauthenticated for local demos only)
README
⭐ Found this useful? Give it a star on GitHub! It helps us maintain and improve the project.
Define Symfony Workflow state machines and workflows in the database, manage them with a built-in CRUD UI, and execute transitions at runtime through DatabaseWorkflowRegistry and WorkflowApplicator.
📋 Compatible with Symfony 7.x (PHP 8.2+) and 8.x (PHP 8.4+) — tested on Symfony 7.4, 8.0, and 8.1+.
This bundle is FrankenPHP worker mode friendly.
Features
- Persist workflow definitions (places, transitions, subject class, marking property) in Doctrine
- Configurable Doctrine
table_prefixfor table and constraint names - Built-in admin UI at
/workflow(configurable path), protected by default viasecurity.access_roles/WorkflowUiAccessCheckerInterface - Configurable
ui.layout_template,ui.css_framework(bootstrap5,tailwind,foundation,custom, …),ui.icon_set, andui.list_page_size - UI translations for
en,es,fr,it,de,nl,pt(enable extra locales inui.locales) - Runtime resolution via
DatabaseWorkflowRegistry(Symfony Workflow component) WorkflowApplicatorhelper to apply transitions and flush subjects- Demo with order approval (state machine) and document review (parallel workflow)
- FrankenPHP worker mode: Supported (tested in the Symfony 8 demo; see Demo with FrankenPHP)
Quick start
composer require nowo-tech/workflow-bundle
# config/packages/nowo_workflow.yaml nowo_workflow: enabled: true ui: path: '/workflow' layout_template: 'base.html.twig' # project layout css_framework: bootstrap5 security: access_roles: [ROLE_ADMIN]
php bin/console nowo:workflow:sync-schema
Demo
make -C demo up-symfony8
Open http://localhost:8022 — try the CRUD at /workflow and playgrounds for orders/documents.
Smoke check (boot + HTTP 200):
make demo-smoke
Documentation
- Installation
- Configuration
- Usage
- Contributing
- Code of Conduct
- Changelog
- Upgrading
- Release
- Security
- Engram
- Spec-driven development
- GitHub Spec Kit
Additional documentation
Tests and coverage
| Area | Coverage |
|---|---|
| PHP | 100% |
make test
make test-coverage
