Skip to content

Tutorial 9: Release#

The requirement: the workflow reaches real users on a server, and every later change is checked the same way before it does.

The checks on every change#

The model, its tests and your services are files: keep them in Git. Before each release, and in CI on each change:

npm ci
npm run verify        # every model checked, as the Problems tab does
npm test              # every model's tests, in memory

Either fails, nothing is released. For a CI service such as GitHub Actions, these are its steps after actions/setup-node.

The server#

The sample application is a skeleton: its sign-in and its pages (My work, task forms) are bpmn-web's. Released as it is, they serve a team that works inside it. For other users, your own application replaces them, and the server below becomes bpmn-web on a private network, for your application's API calls and your administrators, with the model editor on a design server of its own: From the skeleton to your application.

On a new Ubuntu server (22.04 or 24.04), one line installs Node.js, MongoDB, your application as a service, and nginx in front of it, and prints the administrator's password:

curl -fsSL https://raw.githubusercontent.com/bpmnServer/bpmn-server/main/deploy/install.sh | sudo bash -s -- --domain leave.example.com --email you@example.com

With --domain, it is served over HTTPS as soon as the domain points at the server. Then put your application on it (your processes/, connectors/, delegates/ and settings/, from Git), in /opt/owf/my-app, and owf restart. Docker, and other ways: Installation.

Production settings#

In the server's .env:

Setting For production
NODE_ENV=production The server refuses to start without the secrets below
SESSION_SECRET, API_KEY Long random values (the installer makes them)
REQUIRE_AUTHENTICATION, ENFORCE_SECURITY true
DISABLE_DESIGN=true No model editor and no test runs on the production server: models arrive from Git, tested

Every setting: Settings.

Running it#

  • owf status, owf logs, owf monitor: the services, the log, and the server's load.
  • Dashboard → Administration: users, locked instances, and Backup of everything.
  • owf update: a new bpmn-server version, after its tests passed on yours.

What you have#

A leave request in which every path is designed, assigned, checked, documented and tested; an application whose checks run on every change; and a server that runs it for real users.

Previous: Tutorial 8. More, beyond the leave request: Execute from Node.js, Integrate an existing application, Connect external services.

Comments