Skip to content

用户指南 06 · 部署

四版后端 + 统一前端的部署说明。demo 默认内存仓储(无数据库),生产接入自己的仓储即可。

1. 端口规划

服务端口说明
jeeflow-python8100FastAPI demo
jeeflow-java8080Spring Boot 4 demo
jeeflow-go8081GoFrame demo
jeeflow-node8082Express demo
jeeflow-ui5173(dev)/ 静态(prod)统一前端

2. 后端部署(按语言分区)

各语言的安装、启动、生产部署、测试、常见问题见语言指南

语言演示站语言指南
☕ Java:8080Java 快速开始
🔷 Go:8081Go 快速开始
🐍 Python:8100Python 快速开始
🟢 Node.js:8082Node 快速开始

生产部署要点:demo 默认内存仓储,生产替换为各自的 ProcessRepository 实现(见 §5)。

3. 前端部署

3.1 开发

bash
cd jeeflow-ui
npm install
npx vite                      # http://localhost:5173

3.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 张表:

仓储方法对应表
findDefineByIdwf_process_define
findInstanceById / saveInstance / updateInstancewf_process_instance
findTaskById / saveTask / updateTaskwf_process_task
findDoingTasks / findDoneTasks / findHistoryTaskswf_process_task
findTaskActors / addTaskActor / removeTaskActorwf_process_task_actor
createCcInstance / updateCcStatuswf_process_cc_instance

各语言的生产仓储实现示例见语言指南

语言指引
☕ JavaSPI 实现指南(生态提供开箱即用的 JDBC 仓储 jeeflow-repository-jdbc,注入 DataSource 即可)
🔷 GoSPI 扩展指南
🐍 PythonSPI 实现指南
🟢 Node.jsSPI 实现指南

以 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

jeeflow · 轻量级多语言工作流引擎