finds.dev← search

// the find

phpmentors-jp/workflower

★ 706 · PHP · BSD-2-Clause · updated Aug 2023

A BPMN 2.0 workflow engine for PHP

Workflower is a BPMN 2.0 workflow engine for PHP that lets you define business processes as XML files and execute them in code. It covers the core BPMN primitives — tasks, gateways, events, subprocesses — and handles persistence via serialization. Aimed at PHP developers who need to model multi-step approval or processing flows without reaching for a full BPM platform.

Solid coverage of the BPMN 2.0 element set: exclusive, inclusive, and parallel gateways are all there, which is where most lightweight engines cut corners. Persistence is done through a clean serialization interface rather than being bolted to a specific ORM or database, so you can store process instances however you like. The BPMN XML importer validates against the actual XSD schemas from the OMG spec, which means your process definitions are standards-compliant, not just library-specific JSON. Test suite covers real BPMN files for each gateway type, so the core flow logic has genuine coverage.

Development stopped in August 2023 and the last real activity was 2019 — the copyright block says 2015–2019. Travis CI (long dead for open source), no GitHub Actions, no indication anyone is maintaining this. The serialization story is PHP's native serialize/unserialize wrapped in base64, which will bite you if you ever need to inspect stored instances, migrate data, or run on different PHP versions. No timer events, message events, boundary events, or error handling flows — meaningful BPMN processes almost always need at least one of these. There is no built-in persistence layer or query API for finding active process instances, so you're on your own for any 'show me all open approvals' query.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →