概述回家
bpmn-server 是一个基于bpmn的工作流引擎,可以很容易地集成到你的Node.js应用程序中。它支持内置的状态持久性、变量管理和跨集群的并发性——非常适合长时间运行的流程、持久服务和计划任务。
体系结构概述
的核心组件 bpmn-server 以及它们如何相互作用:

- Modeler:使用BPMN .io设计BPMN模型的前端UI。
- bpmn-server核心:执行BPMN工作流、管理状态以及与外部服务的接口。
- 数据存储:保存工作流状态、变量和历史记录(默认为MongoDB)。
- 应用程序层你的Node.js应用程序与服务器集成,处理用户身份验证,并调用工作流。
快速入门
使用演示项目
# 1. Clone the demo app
$ git clone https://github.com/bpmnServer/bpmn-web.git
$ cd bpmn-web
# 2. Install dependencies
$ npm install
# 3. Run setup to create default install files
$ npm run setup
# 4. Edit `.env` file.
# 5. Run setup to create database and models
$ npm run setup
# 6. Start the server
$ npm run start
打开浏览器至 http://localhost:3000 启动演示。
编程使用示例
const { BPMNServer, DefaultAppDelegate } = require('bpmn-server');
const { configuration } = require('./configuration');
const server = new BPMNServer(configuration, new DefaultAppDelegate());
const processName = 'invoice';
const inputData = { amount: 1200 };
(async () => {
const result = await server.engine.start(processName, inputData);
console.log('Process started with instance id:', result.instance.id);
})();
有关更高级的示例,请参阅 API文档.
建模
bpmn-server 提供基于的建模工具 bpmn.io 使用自定义属性面板,消除了手动编辑BPMN文件的需要。

你也可以从其他工具导入BPMN模型。
每个模型都在BPMN XML文件中定义,并由各种元素组成。一个 element 可以是 node (如事件、任务或网关)或 flow.
模型由以下人员管理 bpmn-server ,可以查询 模型API.
支持所有BPMN 2.0元素。 参见建模支持
执行
bpmn-server 主要是BPMN模型的执行引擎。
每次启动一个模型时 instance 被创建。对于每一个 element 这被执行了 item 是生成的。
执行遵循BPMN模型逻辑,并支持脚本和应用程序上下文访问等扩展。
在执行期间,模型侦听器和应用程序侦听器都将被调用。
控件访问执行引擎 引擎API.
数据存储
执行数据,包括实例及其元素,被持久化到数据存储(默认情况下是MongoDB)。
您可以通过 Data API.
用户管理与安全
bpmn-server 将身份验证委托给前端应用程序,前端应用程序必须通过API传递用户信息。
- 模型设计者可以定义
assignee,candidateUsers,candidateUserGroups使用静态字符串或JavaScript表达式。 - 前端必须提供
userService实现。 bpmn-server基于当前用户强制执行安全规则。
这个 bpmn-web 演示应用程序演示了使用Passport和MongoDB的完整用户管理。
演示Web应用程序
探索“bpmn-web”演示应用程序。
功能包括:
- 持久建模工具(基于
bpmn.io) - 支持所有属性面板
bpmn-server特性 - 使用已定义字段的输入表单执行

- 任务和工作流列表
- 实例详细信息视图

- 模型规格查看器

现场演示
现场演示可在以下网址下载: https://bpmn.omniworkflow.com
安装
这个包需要Node.js和MongoDB。
如果未安装MongoDB,则可以 创建一个免费的云帐户 或者 在本地安装.
1. 克隆存储库
git clone https://github.com/bpmnServer/bpmn-web.git
2. 安装依赖关系
npm install
3. 设置应用程序
npm run setup
编辑 .env 配置MongoDB:
MONGO_DB_URL=mongodb://0.0.0.0:27017/bpmn
再次运行setup创建DB对象:
npm run setup
4. 启动服务器
npm run start
控制台输出:
bpmn-server WebApp.ts version 1.4.0
MongoDB URL mongodb://0.0.0.0:27017/bpmn
db connection open
App is running at http://localhost:3000 in development mode
Press CTRL-C to stop
码头工人安装
用Docker安装‘ bpmn-server ’和依赖项。
1. 创建一个项目文件夹
2. 添加一个 docker-compose.yml 文件:
version: "3.7"
name: bpmn-server
services:
bpmn-web:
image: ralphhanna/bpmn-web
command: sh -c "
npm run setup &&
npm run start"
ports:
- 3000:3000
volumes:
- 'app:/app'
depends_on:
- mongo
mongo:
image: mongo
ports:
- 27017:27017
volumes:
- mongodb:/data/db
volumes:
mongodb:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: './mongodb_volume'
app:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: './bpmn_server_volume'
3. 启动容器
docker compose up -d
命令行接口
通过CLI使用‘ bpmn-server ’进行常见操作。
npm run cli
server started..
Commands:
q quit
s start process
lo list outstanding items
li list items
l list instances for a process
di display instance information
i invoke task
sgl signal task
msg message task
d delete instances
lm list models
lme list model elements
ck check locked instances
re recover hung processes
lu list users
spw set user password
? show this help menu
更新到最新版本
npm update bpmn-server
应用程序集成
bpmn-server 被设计为嵌入到应用程序中。 参见定制指南
文档
许可证
在麻省理工学院许可下许可。
致谢
bpmn-server 构建在 bpmn-io / bpmn-moddle 由 bpmn.io,并受到……的启发 bpmn-engine.