This repository contains a prototype for a generic workflow platform built around a standalone Camunda 7 engine, a Spring Boot API host, a React frontend, a NestJS worker service, and workflow-pack assets.
apps/workflow-api: Spring Boot API host with tenant-aware workflow facade endpointsapps/workflow-ui: React UI for adaptive worklists, task details, admin, and process launchapps/workflow-workers: NestJS reference external-task worker servicepackages/workflow-contracts: shared TypeScript contracts that mirror the backend API shapeworkflows: deployable workflow packs containing BPMN, DMN, Groovy, and JSON form metadatadocs/architecture: architecture and API design notesinfra: local runtime assets
The current prototype focuses on:
- custom product APIs instead of raw engine REST exposure
- workflow-owned vs source-system-owned data boundaries
- logical multi-tenancy
- standalone Camunda 7 as the workflow system of record
- no workflow-specific business logic in the API host
- JSON-driven user task forms loaded from workflow-pack metadata
- NestJS external task workers for workflow-specific execution
- header-based authentication stub with role-based authorization
- metadata-driven UI rendering
- a reference loan application workflow with user and system tasks
- a sample claim approval workflow pack with external tasks, DMN guidance, and resubmission loop
- Install workspace dependencies:
npm install- Start the standalone workflow runtime:
.\scripts\start-workflow-runtime.ps1This brings up PostgreSQL, a standalone Camunda 7 container on http://localhost:8081, and the NestJS external-task worker container. Cockpit is available from that engine container rather than from the API host.
- Deploy the workflow packs:
.\scripts\deploy-workflow-pack.ps1 -WorkflowKey loan-application
.\scripts\deploy-workflow-pack.ps1 -WorkflowKey claim-approval- Run the backend API host:
cd apps/workflow-api
.\mvnw.cmd test
.\mvnw.cmd spring-boot:runUseful backend environment variables:
$env:WORKFLOW_ENGINE_BASE_URL="http://localhost:8081/engine-rest"
$env:WORKFLOW_FORMS_PATH="..\..\workflows"- Run the frontend:
cd apps/workflow-ui
npm run dev
npm run build:ui- Optional worker-only local build:
cd apps/workflow-workers
npm run buildThe Maven wrapper is configured so apps/workflow-api\mvnw.cmd can use the repo-local .tools/jdk8 fallback when a full system JDK is not installed.