MAC
BPMN, CMMN and DMN engines in one Flowable deployment.
MAC is a workflow platform for the Canada Revenue Agency, built on one Flowable 6.6 deployment. Coordinators run ordered processes, case workers pick up work as the case allows, and decision tables settle the branches, tasks are assigned to real people through the agency’s existing SSO.
- BPMN + CMMN + DMN in one Spring Boot deployment
- Kerberos identity bridged into the engine’s identity context
- Documents in PostgreSQL via the ContentStorage SPI
Key terms
BPMN: Business Process Model and Notation: ordered process definitions
CMMN: Case Management Model and Notation: case work with no fixed order
DMN: Decision Model and Notation: decision tables evaluated as rules
Flowable: The open-source engine providing all three runtimes, embedded here at 6.6
IDM: Flowable’s identity module: user and group queries, backed by the directory
SPNEGO: The HTTP negotiation that carries a Kerberos ticket on each request
Architecture
One WAR on JBoss/WildFly carries the Angular assets, the Spring Boot server and all three embedded engines. As lead developer, I built the seam around Flowable: filters that give it an identity, resource subclasses that expose runtime state to the front end, and a storage implementation that keeps documents in the database.
CRA staff
Domain-joined workstations, no separate login
HTTPS / SPNEGO
One WAR on JBoss/WildFly
mac-web
Angular 16 on Angular Material and the CRA RCCR component libraries
Task inboxTask detailStart formsBPMN viewerCMMN viewer
JSON over /mac/api
mac-server
Spring Boot WAR, Java 8, JPA/Hibernate: the code MAC owns is the seam around Flowable
SpnegoHttpFilterAuthenticatedUserFilterCustomDiagramResourceDatabaseContentStorageRestApiInterceptor
Embedded engine APIs
Flowable 6.6
BPMN engine
Ordered processes
CMMN engine
Case work
DMN engine
Decision tables
One JDBC connection pool
PostgreSQL
One schema holding engine runtime state, full history and ContentItem document bytes
Outside the boundary
Kerberos KDC
SPNEGO
Ticket validation on every request
Active Directory
LDAP
Backs the Flowable IDM user query
SMTP relay
SMTP
Task and escalation notifications
Three engines in one deployment gives one transaction boundary and one identity context, so a case can start a process and read a decision result without a distributed commit. The cost is that BPMN, CMMN and DMN share a Flowable version and a schema migration, and upgrade together or not at all.
Decisions
T1
BPMN, CMMN and DMN engines share one Spring Boot context, one transaction boundary and one identity.
Line of thinking
The work is genuinely three shapes: ordered processes, case work where the order is the worker’s, and rules the business changes without a release. Three services would have meant three deployments and a distributed commit every time a case started a process. Embedding all three engines in one context gives a single transaction and a single inbox over all of them. The cost is coupling their upgrade cycles: one Flowable version and one schema migration for all three, so none of them moves alone.1 / 6
Orchestrates long-running work across BPMN processes, CMMN case work and DMN decision tables in one Flowable 6.6 deployment. The agency’s existing SSO identity names who holds each task, and the engine records every transition. Spring Boot on JBoss/WildFly, Angular front end, PostgreSQL.