Flowable is a lightweight, embeddable Business Process Management (BPM) platform written in Java. It provides a suite of engines for BPMN 2.0 process execution, CMMN case management, DMN decision tables, form management, identity management, and event registry. The architecture is modular: core engines, service modules (job, batch, variable, task, identitylink, entitylink), REST APIs, Spring Boot auto-configuration, and integration modules (Camel, CDI, JMX, LDAP, HTTP, secure JavaScript). Key entry points include ProcessEngine, CmmnEngine, DmnEngine, IdmEngine, and EventRegistry. Data flows involve deploying XML definitions, starting process/case instances, executing tasks, handling events, and persisting state to relational databases (MySQL, PostgreSQL, Oracle, DB2, MSSQL, H2, HSQL). The codebase is production-grade with extensive testing, schema migration scripts, and support for GraalVM native images. It is actively maintained with a large community (9.5k stars). However, it carries legacy compatibility modules (flowable5-engine) and some technical debt from the Activiti migration, resulting in moderate technical drift.
SpiffWorkflow is a Python library for executing BPMN 2.0 and DMN 1.x workflows. It provides a complete workflow engine with parsing, execution, serialization, and migration capabilities. The library supports standard BPMN constructs (gateways, events, subprocesses, multi-instance loops, call activities) and DMN decision tables with UNIQUE and COLLECT hit policies. It includes a pluggable Python script engine for evaluating expressions and scripts within tasks, and a comprehensive serialization framework with version migration for workflow persistence. The architecture is modular, with separate packages for core workflow specs, BPMN specifics, DMN integration, Camunda-compatible extensions, and Spiff-specific customizations. This is not a standalone application but a library intended for embedding in larger systems; it is used as the backend for the SpiffWorkflow frontend tools.