Appearance
用户指南 06 · 部署
四版后端 + 统一前端的部署说明。demo 默认内存仓储(无数据库),生产接入自己的仓储即可。
1. 端口规划
| 服务 | 端口 | 说明 |
|---|---|---|
| jeeflow-python | 8100 | FastAPI demo |
| jeeflow-java | 8080 | Spring Boot 4 demo |
| jeeflow-go | 8081 | GoFrame demo |
| jeeflow-node | 8082 | Express demo |
| jeeflow-ui | 5173(dev)/ 静态(prod) | 统一前端 |
2. 后端部署(按语言分区)
各语言的安装、启动、生产部署、测试、常见问题见语言指南:
| 语言 | 演示站 | 语言指南 |
|---|---|---|
| ☕ Java | :8080 | Java 快速开始 |
| 🔷 Go | :8081 | Go 快速开始 |
| 🐍 Python | :8100 | Python 快速开始 |
| 🟢 Node.js | :8082 | Node 快速开始 |
生产部署要点:demo 默认内存仓储,生产替换为各自的 ProcessRepository 实现(见 §5)。
3. 前端部署
3.1 开发
bash
cd jeeflow-ui
npm install
npx vite # http://localhost:51733.2 生产构建
bash
npm run build # 产物在 dist/
# 用任意静态服务器托管(nginx 示例)nginx
server {
listen 80;
root /var/www/jeeflow-ui/dist;
location / { try_files $uri $uri/ /index.html; }
}3.3 后端地址配置
前端右上角下拉切换后端(存 localStorage),默认直连 http://localhost:8100。
生产同源部署(前端和后端同一域名)推荐:反向代理 /wf、/api 到后端,前端用相对路径(清掉 localStorage 里的后端地址即可走同源):
nginx
location /wf/ { proxy_pass http://127.0.0.1:8100; }
location /api/ { proxy_pass http://127.0.0.1:8100; }4. CORS
四版 demo 均允许跨域(Access-Control-Allow-Origin: *)——前端 5173 直连后端不报跨域错误。
生产建议:不要用 *,改为只允许前端域名。以 Python(FastAPI)为例:
python
# Python 示例(其他语言的 CORS 配置见各语言的 [FastAPI/Express/Spring Boot/GoFrame 集成](../../languages/python/) 篇)
app.add_middleware(CORSMiddleware, allow_origins=["https://your-domain.com"], allow_methods=["*"], allow_headers=["*"])5. 生产接入(替换内存仓储)
demo 的内存仓储仅供演示/测试。生产实现 ProcessRepository SPI,映射到 SPEC §2 的 5 张表:
| 仓储方法 | 对应表 |
|---|---|
| findDefineById | wf_process_define |
| findInstanceById / saveInstance / updateInstance | wf_process_instance |
| findTaskById / saveTask / updateTask | wf_process_task |
| findDoingTasks / findDoneTasks / findHistoryTasks | wf_process_task |
| findTaskActors / addTaskActor / removeTaskActor | wf_process_task_actor |
| createCcInstance / updateCcStatus | wf_process_cc_instance |
各语言的生产仓储实现示例见语言指南:
| 语言 | 指引 |
|---|---|
| ☕ Java | SPI 实现指南(生态提供开箱即用的 JDBC 仓储 jeeflow-repository-jdbc,注入 DataSource 即可) |
| 🔷 Go | SPI 扩展指南 |
| 🐍 Python | SPI 实现指南 |
| 🟢 Node.js | SPI 实现指南 |
以 Java 为例(JDBC 默认实现):
java
IProcessRepository repo = new JdbcProcessInstanceRepository(dataSource);
JeeflowEngine engine = new JeeflowEngineImpl().configure(
Configuration.builder().repository(repo).build()
);6. 故障排查
| 症状 | 检查 |
|---|---|
| 前端"加载失败,后端是否启动?" | 后端端口是否可访问;右上角后端地址是否正确 |
| 跨域报错 | 后端 CORS 配置;是否改过端口 |
| 改了流程定义不生效 | 后端需重启(流程定义启动时加载) |
| 决策分支走错 | 检查变量名是否与 expr 一致(如 amount vs finalAmount) |
| 驳回后没人收到待办 | 确认流程有 apply 节点且 assignee=applicant |
用户指南完。设计原理见 docs/concepts/,规范见 SPEC.md。