Registry / devops / bpmn-middleware

bpmn-middleware

JSON →
library0.19.0jsnpmunverified

Express middleware for running BPMN 2.0 workflows using bpmn-engine. Version 0.19.0 is the current stable release; the package is under construction with breaking changes expected until v1. It integrates seamlessly with Express, supports call activities, caching with lru-cache, and custom extensions. Key differentiators include TypeScript types, debug logging via debug module, and a MemoryAdapter for state persistence. Requires peer dependencies smqp, bpmn-elements, and bpmn-engine at specific versions.

npm install bpmn-middleware
INSTALL
IMPORT
SIG · BPMN-MIDDLEWARE
B
bpmn-middleware
devopsjavascriptv0.19.0
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

bpmnEngineMiddleware
import { bpmnEngineMiddleware } from 'bpmn-middleware'
const { bpmnEngineMiddleware } = require('bpmn-middleware')
Package is ESM-only; CommonJS require will fail. Use dynamic import if needed.
HttpError
import { HttpError } from 'bpmn-middleware'
Named export for HTTP error handling in middleware.
MemoryAdapter
import { MemoryAdapter } from 'bpmn-middleware'
import MemoryAdapter from 'bpmn-middleware'
MemoryAdapter is a named export, not default.

Sets up Express with bpmn-middleware, MemoryAdapter, broker, and engine cache. Handles errors with HttpError.

import { createRequire } from 'node:module'; import { fileURLToPath } from 'node:url'; import express from 'express'; import { Broker } from 'smqp'; import { LRUCache } from 'lru-cache'; import { bpmnEngineMiddleware, HttpError, MemoryAdapter } from 'bpmn-middleware'; import * as bpmnElements from 'bpmn-elements'; const isMainModule = process.argv[1] === fileURLToPath(import.meta.url); const nodeRequire = createRequire(import.meta.url); const camunda = nodeRequire('camunda-bpmn-moddle/resources/camunda.json'); const app = express(); const adapter = new MemoryAdapter(); const broker = (app.locals.broker = new Broker(app)); const engineCache = (app.locals.engineCache = new LRUCache({ max: 1000 })); broker.assertExchange('event', 'topic', { durable: false, autoDelete: false }); const middleware = bpmnEngineMiddleware({ adapter, broker, engineCache, Scripts: null, engineOptions: { moddleOptions: { camunda }, elements: bpmnElements, }, }); app.use('/rest', middleware); app.use((err, req, res, next) => { if (err instanceof HttpError) return res.status(err.statusCode).send({ message: err.message }); res.status(502).send({ message: err.message }); }); if (isMainModule) { app.listen(3000); } export { app };
Debug
Known issues
gotchaPackage is under construction; breaking changes will occur until v1.
fix
Pin exact version or be prepared to update code on each release.
affects: <1.0.0
gotchaPackage is ESM-only. CommonJS require() will throw an error.
fix
Use import syntax or dynamic import().
affects: *
gotchaPeer dependencies must be manually installed; they are not automatically installed by npm.
fix
Install all peer deps: @0dep/piso, bpmn-elements, bpmn-engine, debug, express, smqp.
affects: *
gotchaMemoryAdapter is for development only; not suitable for production.
fix
Implement a custom adapter with a persistent store.
affects: *
Errors
Common errors & fixes
Error [ERR_REQUIRE_ESM]: require() of ES Module not supported.
Using require() on the package which is ESM-only.
fix
Change to import syntax or use dynamic import().
Cannot find module '@0dep/piso'
Peer dependency not installed.
fix
Run npm install @0dep/piso bpmn-elements bpmn-engine debug express smqp
TypeError: bpmnEngineMiddleware is not a function
Attempting to use default import instead of named import.
fix
Use import { bpmnEngineMiddleware } from 'bpmn-middleware'
Upgrade
Version history
0.19.0latest on npm
Audit
Dependencies
@0dep/pisorequiredISO date/time utilities
bpmn-elementsrequiredBPMN element implementations
bpmn-enginerequiredCore BPMN engine
debugrequiredDebug logging
expressrequiredWeb framework
smqprequiredSimple message queue protocol
Agent activity
4 hits · last 30 days
node
4
Resources
bpmn-middleware — npm install bpmn-middleware · libregistry