nowo-tech/workflow-bundle

Symfony bundle to define and run Symfony Workflow state machines from database definitions with built-in CRUD.

Maintainers

Package info

github.com/nowo-tech/WorkflowBundle

Homepage

Documentation

Type:symfony-bundle

pkg:composer/nowo-tech/workflow-bundle

Transparency log

Statistics

Installs: 5

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 5

v1.5.2 2026-07-29 17:49 UTC

This package is auto-updated.

Last update: 2026-08-03 07:27:15 UTC


README

CI Packagist Version Packagist Downloads License PHP Symfony GitHub stars Coverage

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+.

FrankenPHP Friendly Worker Mode

This bundle is FrankenPHP worker mode friendly.

Features

  • Persist workflow definitions (places, transitions, subject class, marking property) in Doctrine
  • Configurable Doctrine table_prefix for table and constraint names
  • Built-in admin UI at /workflow (configurable path), protected by default via security.access_roles / WorkflowUiAccessCheckerInterface
  • Configurable ui.layout_template, ui.css_framework (bootstrap5, tailwind, foundation, custom, …), ui.icon_set, and ui.list_page_size
  • UI translations for en, es, fr, it, de, nl, pt (enable extra locales in ui.locales)
  • Runtime resolution via DatabaseWorkflowRegistry (Symfony Workflow component)
  • WorkflowApplicator helper 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

Additional documentation

Tests and coverage

Area Coverage
PHP 100%
make test
make test-coverage