# nflow **Repository Path**: kingecg/nflow ## Basic Information - **Project Name**: nflow - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-31 - **Last Updated**: 2026-03-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # nFlow - 办公审批工作流系统 一个基于 Node.js + Express + Angular 13 的办公审批工作流系统。 ## 功能特性 - **表单设计器**: 可视化拖拽式表单设计,支持多种字段类型 - **流程设计器**: 可视化流程设计,支持开始/结束/审批/条件节点 - **审批节点**: 支持会签(ALL)和或签(ANY)审批类型 - **条件节点**: 基于表单数据的条件判断 - **数据适配器**: 支持 HTTP/Database/Script 三种数据源类型 - **流程实例管理**: 查看、追踪、审批流程实例 ## 技术栈 ### 后端 - Node.js 22+ - Express.js - SQLite (适配器模式,支持 PostgreSQL/MySQL 移植) - TypeScript ### 前端 - Angular 13 - Angular Material - 组件库形式发布 ## 项目结构 ``` nflow/ ├── nflow-backend/ # 后端服务 │ ├── src/ │ │ ├── core/ # 核心模块 │ │ │ ├── engine/ # 工作流引擎 │ │ │ ├── repository/# 数据访问层 │ │ │ └── database/ # 数据库适配器 │ │ ├── services/ # 业务服务层 │ │ ├── routes/ # 路由 │ │ ├── adapters/ # 数据适配器 │ │ └── types/ # 类型定义 │ └── config/ # 配置文件 │ ├── nflow-ui/ # 前端组件库 │ └── src/lib/ │ ├── form-designer/ # 表单设计器组件 │ ├── process-designer/# 流程设计器组件 │ ├── instance-manager/# 流程实例管理器 │ └── shared/ # 共享服务和模型 │ └── doc/ └── 需求.md # 需求文档 ``` ## 快速开始 ### 后端启动 ```bash cd nflow-backend npm install npm run dev ``` 服务运行在 http://localhost:3000 ### 前端组件库构建 ```bash cd nflow-ui npm install npm run build ``` ## API 接口 ### 表单管理 | 方法 | 路径 | 描述 | |------|------|------| | POST | /api/v1/forms | 创建表单定义 | | GET | /api/v1/forms | 获取表单列表 | | GET | /api/v1/forms/:id | 获取表单详情 | | PUT | /api/v1/forms/:id | 更新表单 | | DELETE | /api/v1/forms/:id | 删除表单 | ### 流程管理 | 方法 | 路径 | 描述 | |------|------|------| | POST | /api/v1/processes | 创建流程定义 | | GET | /api/v1/processes | 获取流程列表 | | GET | /api/v1/processes/:id | 获取流程详情 | | PUT | /api/v1/processes/:id | 更新流程 | | DELETE | /api/v1/processes/:id | 删除流程 | ### 流程实例 | 方法 | 路径 | 描述 | |------|------|------| | POST | /api/v1/instances | 创建流程实例 | | GET | /api/v1/instances | 获取实例列表 | | GET | /api/v1/instances/:id | 获取实例详情 | | POST | /api/v1/instances/:id/terminate | 终止实例 | | GET | /api/v1/instances/:id/logs | 获取实例日志 | | POST | /api/v1/instances/:id/tasks/:taskId/approve | 审批通过 | | POST | /api/v1/instances/:id/tasks/:taskId/reject | 审批拒绝 | ### 用户组 | 方法 | 路径 | 描述 | |------|------|------| | POST | /api/v1/groups | 创建用户组 | | GET | /api/v1/groups | 获取组列表 | | POST | /api/v1/groups/:id/members | 添加组成员 | | DELETE | /api/v1/groups/:id/members/:userId | 移除组成员 | ### 数据源 | 方法 | 路径 | 描述 | |------|------|------| | POST | /api/v1/datasources | 创建数据源 | | GET | /api/v1/datasources | 获取数据源列表 | | POST | /api/v1/datasources/:id/test | 测试连接 | | GET | /api/v1/datasources/:id/data | 获取数据 | ## 流程节点类型 ### 开始节点 (start) 流程入口,每个流程必须且仅有一个开始节点。 ### 结束节点 (end) 流程结束节点,每个流程必须且仅有一个结束节点。 ### 审批节点 (approval) - `approvers`: 审批人列表,支持用户和用户组 - `approvalType`: 审批类型 - `ANY`: 或签,任意一个审批人通过即可 - `ALL`: 会签,所有审批人必须全部通过 ### 条件节点 (condition) 根据表单数据执行条件判断: - `field`: 字段名(支持嵌套,如 `user.department`) - `operator`: 操作符 - `eq`: 等于 - `ne`: 不等于 - `gt`: 大于 - `gte`: 大于等于 - `lt`: 小于 - `lte`: 小于等于 - `in`: 包含 - `contains`: 字符串包含 - `value`: 比较值 ## 审批类型说明 ### 或签 (ANY) 多个审批人中,任意一人审批通过即可。 ### 会签 (ALL) 多个审批人必须全部审批通过才算通过。 ### 审批人组 当审批人类型为 `group` 时,表示该组内任意一人审批通过即可。 ## 数据库配置 默认使用 SQLite,配置文件位于 `config/default.yaml`: ```yaml database: type: "sqlite" path: "./data/nflow.db" ``` 如需切换到 PostgreSQL: ```yaml database: type: "postgres" host: "localhost" port: 5432 database: "nflow" username: "nflow" password: "${DB_PASSWORD}" ``` ## 环境变量 ```bash NODE_ENV=development PORT=3000 DB_TYPE=sqlite DB_PATH=./data/nflow.db LOG_LEVEL=debug CORS_ORIGIN=* ``` ## License MIT