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: ^3.7
- nowo-tech/form-kit-bundle: ^2.0
- nowo-tech/ui-kit-bundle: ^2.2
- symfony/config: ^7.4 || ^8.0
- symfony/dependency-injection: ^7.4 || ^8.0
- symfony/form: ^7.4 || ^8.0
- symfony/http-kernel: ^7.4 || ^8.0
- symfony/routing: ^7.4 || ^8.0
- symfony/security-csrf: ^7.4 || ^8.0
- symfony/translation: ^7.4 || ^8.0
- symfony/twig-bundle: ^7.4 || ^8.0
- symfony/validator: ^7.4 || ^8.0
- symfony/workflow: ^7.4 || ^8.0
- symfony/yaml: ^7.4 || ^8.0
- twig/extra-bundle: ^3.12
- twig/string-extra: ^3.12
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- igor-php/igor-php: ^0.10.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: ^11.0
- rector/rector: ^2.0
- symfony/browser-kit: ^7.4 || ^8.0
- symfony/framework-bundle: ^7.4 || ^8.0
- symfony/security-core: ^7.4 || ^8.0
- vincentlanglet/twig-cs-fixer: ^4.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)
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-19 09:17:31 UTC
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.4+ (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.
Definitions list — match rules, priority and row actions |
Definition detail — flow diagram of a branching state machine |
Transitions editor — dialog with searchable from / to places |
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 - Admin pages on the UiKit 2.1 page contract (REQ-UI-003): list, show, form, settings and dashboard scaffolds themed once by the host (
nowo_ui_kit.layouts/nowo_ui_kit.theme), flow diagram and collection editors on native<dialog>s, no CDN assets — see Templates - Configurable
web_ui.path_prefix,web_ui.layout_template,web_ui.templates.<page>andweb_ui.list_page_size - UI translations for
en,es,fr,it,de,nl,pt(enable extra locales inweb_ui.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 (including kernel not reset between requests; see Demo with FrankenPHP and Worker audit)
Quick start
composer require nowo-tech/workflow-bundle
# config/packages/nowo_workflow.yaml nowo_workflow: web_ui: path_prefix: '/workflow' # layout_template: null → nowo_ui_kit.layouts.admin (your layout / bridge, set once in UiKit) security: access_roles: [ROLE_ADMIN]
php bin/console nowo:workflow:sync-schema
php bin/console nowo:workflow:seed-demo # optional sample definitions
Demo
make -C demo up-symfony8
Open http://localhost:8022 — try the CRUD at /workflow and playgrounds for orders/documents.
Playwright e2e and the README screenshots (REQ-DEMO-013): make -C demo/symfony8 test-e2e and
make -C demo/symfony8 demo-screenshots (after make -C demo/symfony8 reset-demo).
Smoke check (boot + HTTP 200):
make demo-smoke
Documentation
- Installation
- Configuration
- Templates (UiKit page contract)
- PSR evaluation (REQ-CS-007)
- 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



