@mldong/jeeflow
v1.8.18
Published
jeeflow workflow engine — Node.js / TypeScript implementation
Maintainers
Readme
jeeflow · Node.js / TypeScript
jeeflow 引擎规范的 TypeScript 实现。仅依赖 node:* 标准库,零外部依赖(引擎核心)。
v1.1.0:新增管理扩展(流程设计/历史/委托 +
ProcessExtRepository)与统一门面JeeflowFacade.flow(action, args);assignee 变量解析与flow.auto/flow.admin系统代执行对齐 boot2/boot3。
npm install @mldong/jeeflow # 等发布到 npm 后快速开始
import { EngineImpl, MemoryRepository } from '@mldong/jeeflow'
const repo = new MemoryRepository()
const engine = new EngineImpl(repo)
const def = {
id: '1', name: 'leave', displayName: '请假审批',
content: JSON.stringify({ nodes: [...], edges: [...] })
}
repo.addDefine(def)
const inst = await engine.startProcessInstanceById(def.id, '张三')
const tasks = await repo.findDoingTasks(inst.id)
await engine.executeProcessTask(tasks[0].id, 'leader')⚠️ id 全程 string(issue 38 E9):引擎内部与 API 契约的 id(流程定义/实例/任务/设计)一律为字符串。 Java 雪花 id(>2^53)超出 JS 安全整数,
Number()转换必丢精度;字符串可无损承载,保证四语言同库共享流程。
JDBC(MySQL/PostgreSQL)
import mysql from 'mysql2/promise'
import { JdbcRepository, TsIDGenerator, MysqlAdapter } from '@mldong/jeeflow/jdbc'
// ⚠️ 必须配置 bigNumberStrings(issue 38 E9):BIGINT 列以 string 返回,
// 否则 mysql2 默认转 number,Java 雪花 id(>2^53)在驱动层就已丢精度
const pool = mysql.createPool({
host: 'localhost', user: 'root', password: '***', database: 'wf',
supportBigNumbers: true,
bigNumberStrings: true,
})
const repo = new JdbcRepository(new MysqlAdapter(pool), new TsIDGenerator())- MySQL 连接池必须带
supportBigNumbers: true, bigNumberStrings: true;PostgreSQL 的 int8 默认即字符串,无此要求 - 引擎侧已做驱动兜底:
rowId()把驱动返回的 number/string 统一归一化为 string,未开bigNumberStrings时小 id(Node 自建)仍可用 MysqlAdapter走query()不走execute():mysql2 预处理绑LIMIT ?会失败,分页整段 99999999(issues/66)
运行演示
git clone https://github.com/mldong/jeeflow-node
cd jeeflow-node
npm install
npm run demo # http://localhost:8082目录
| 路径 | 说明 |
|------|------|
| src/engine.ts | 引擎核心 |
| src/model.ts | 域类型 |
| src/spi.ts | SPI 接口 |
| src/memory.ts | 内存仓储 |
| src/jdbc/ | JDBC 多库实现(shared 核心 + mysql/postgres 适配器) |
| demo/main.ts | Express 演示 |
| __tests__/ | 9 项合规测试 |
节点支持
对齐 SPEC.md v1.0——与 Java/Go 版一致。
License
Apache-2.0
