Skip to content

About

面向企业系统与 AI 智能体的轻量工作流调度平台,支持串并行编排、异步状态上报、失败重试和持久化执行。内置工厂 ERP 多智能体演示,基于 Go、React 和 PostgreSQL,可通过 Docker 独立部署。Lightweight workflow orchestration for business systems and AI agents. Go, React and PostgreSQL, with parallel DAGs, retries and durable async reporting.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

FlowForge

把复杂流程,变成可复用、可追踪、可重跑的确定性执行。

FlowForge 面向企业系统与 AI 应用:用可视化画布编排 HTTP 服务、智能体和后台任务,组合串行、并行与异步等待;用 PostgreSQL 保存队列、租约、步骤输出和定义快照。业务逻辑留在服务里,执行语义交给引擎。

快速体验 · 本地开发 · 工厂 ERP 示例 · 异步接入 · API · 英文版

Go React PostgreSQL License

工厂 ERP · 订单到排产:八个步骤、并行智能体和异步等待

一条真实的八步骤链路:库存、质检、产能并行分析,采购与产能异步上报,汇合排产并回写 ERP 工单。画布上直接标注依赖关系、同步/异步模式与运行状态。

为什么是 FlowForge

  • 执行语义可验证:定义保存即生成版本快照;运行中的实例按快照执行,可原样重跑。
  • 异步有始有终:2xx 只代表接收,每次尝试有独立回调令牌、租约和超时;完成上报才推进依赖。
  • 失败是设计的一部分:指数退避、失败传播、时间窗口和并发上限由引擎统一处理,不散落在业务代码里。
  • 业务边界清晰:输入输出都是 JSON;引擎不判断订单、案件或客户字段,领域事务留在服务内部。

控制台

同一套控制台在工厂 ERP 场景中的真实截图:深色画布、分组检查器、实时状态与执行历史。

控制台总览:工作流、执行指标与状态分布

执行历史:批量触发、混合状态与步骤进度

异步等待:产能评估与采购建议等待外部上报

结果与时间线:排产结果、ERP 工单、步骤输出和完整事件流

工厂 ERP:订单到排产

八个步骤同时覆盖同步、异步、串行、并行、失败重试和结果汇合。演示服务返回确定性数据,不需要模型密钥或真实 ERP 账号。

flowchart LR
  order[接收 ERP 订单 · 同步] --> inventory[库存分析 · 同步]
  order --> quality[质检规则 · 同步]
  order --> capacity[产能评估 · 异步]
  inventory --> procurement[采购建议 · 异步]
  inventory --> plan[汇合生成排产单 · 同步]
  quality --> plan
  capacity --> plan
  procurement --> plan
  plan --> erp[回写 ERP 工单 · 同步]
  erp --> notify[通知生产主管 · 异步]
Loading

异步任务返回 202 后,工作流保留等待状态;开发者在业务内部执行完成后调用统一上报方法,依赖它的步骤才会继续。

默认示例让库存服务第一次返回 503,随后自动重试成功。将输入中的 scenario.notification_failure 改成 true,可以观察非关键通知失败而主流程仍成功;将 scenario.quality_reject 改成 true,可以观察关键步骤失败后停止流程。

快速体验

Docker 演示

需要 Docker Desktop / Docker Compose。Node 22+ 用于跨平台配置脚本;Windows 也可以直接运行 PowerShell 脚本。

# 生成本地随机凭据,不覆盖已有配置
node scripts/init-env.mjs

# 启动平台、PostgreSQL 和本地演示智能体
docker compose -f compose.yaml -f compose.demo.yaml --profile app up --build -d --wait

Windows 一条命令:

.\scripts\demo.ps1

打开 **http://localhost:8088**,使用本地 .env 中的 FLOWFORGE_API_TOKEN 登录。选择 工厂 ERP · 订单到排产,点击“运行”。输入框已填好订单数据,约十几秒后可查看排产、采购建议和 ERP 工单结果。

标准部署

node scripts/init-env.mjs
docker compose --profile app up --build -d --wait

标准部署不启动演示智能体。修改环境变量和出站访问策略后,可接入实际业务服务。停止演示用:

docker compose -f compose.yaml -f compose.demo.yaml --profile app down

此命令保留 PostgreSQL 数据卷。配置详情见 部署指南。

本地开发(HMR)

改前端时不要走“构建后由 Go 托管”的预览模式,直接使用 Vite 开发服务器:

.\scripts\dev.ps1 -Hmr

这条命令会:

  1. 启动 PostgreSQL(Docker);
  2. 在新窗口启动 Go API,监听 8088,输出后端日志;
  3. 在当前窗口启动 Vite,监听 5178,支持热更新;
  4. 自动把 /api 和 /healthz 代理到 8088。

打开 **http://127.0.0.1:5178**,使用 .env 中的 FLOWFORGE_API_TOKEN 登录。修改 web/src 中的任意文件会立即热更新。

也可以分成两个终端,分别看日志:

# 终端 1:PostgreSQL + Go API
.\scripts\dev-api.ps1

# 终端 2:Vite 控制台
.\scripts\dev-web.ps1

.\scripts\dev.ps1(不加 -Hmr)会先执行 npm ci 和 npm run build,再由 Go 直接托管 web/dist,适合接近生产的本地验收;日常改前端请使用上面的 HMR 模式。

其他系统可参考 部署指南的“原生开发”。原生联调 ERP 示例时,额外启动 go run ./examples/erp/worker,设置 FLOWFORGE_DEMO_AGENT_URL=http://127.0.0.1:8090 并放行回环地址;新数据库会按该地址生成示例,已有数据库可在流程设置中把请求地址改为本地智能体。详细步骤见 工厂 ERP 示例。

核心能力

能力 配置与行为
依赖编排 depends_on 构建 DAG,相互无依赖的步骤可并行;拒绝循环依赖
执行模式 每个步骤包含 execution_mode;HTTP 可选 sync 或 async
同步 HTTP 等待 2xx 响应,将结果保存为 output.status_code 与 output.body
异步 HTTP 2xx 只表示接收,业务内部通过 SDK / HTTP 上报成功或失败
数据映射 transform 保留 JSON 类型,引用输入和前置步骤的输出
持久化延时 delay 不占 Worker,到期由引擎自动完成
重试 总尝试次数、指数退避和退避上限,等待信息保存在数据库
失败策略 停止流程、允许继续或阻断依赖分支;可独立配置是否影响最终结果
汇合与条件 all_success、all_done、any_success;支持 eq、ne、exists
触发方式 手动、API、鉴权 Webhook、带时区 Cron、单次计划执行与历史重跑
时间窗口 指定时区和星期,支持跨午夜;限制新步骤启动
并发控制 进程 Worker 数、实例内并行数、跨进程共享的活动实例上限
可追踪执行 定义版本快照、步骤输出、事件时间线、取消与原快照重跑
故障恢复 数据库事务、SKIP LOCKED、租约续期、过期接管与写回隔离

队列使用 PostgreSQL。Redis 有可选部署入口,当前不参与调度。执行语义为至少一次,外部服务应根据幂等键去重;详见 架构与执行语义。

同步与异步如何配置

{
  "id": "order-pipeline", "name": "订单处理", "enabled": true,
  "steps": [
    {
      "id": "inventory", "type": "http", "execution_mode": "sync",
      "config": { "url": "https://services.example.com/inventory", "body": "{{input}}" }
    },
    {
      "id": "planning", "type": "http", "execution_mode": "async",
      "depends_on": ["inventory"], "timeout_seconds": 300,
      "config": { "url": "https://services.example.com/planning", "body": "{{steps.inventory.output.body}}" }
    }
  ]
}

异步服务接收请求时提取上下文,将上报器交给内部业务函数:

task, err := worker.FromRequest(r, worker.WithAllowedOrigin(platformOrigin))
if err != nil { return err }
// 将任务交给自己的后台队列,再返回 202。
// 在业务函数完成事务、保存结果后调用:
err = task.Reporter.Succeed(ctx, result)
// 业务失败时:task.Reporter.Fail(ctx, businessError)

统一 HTTP 接口为 POST /api/v1/callbacks/{token},支持 succeeded、failed,每次尝试有独立限时令牌。完整 SDK 用法、后台队列接入和幂等规则见 异步开发指南。

项目结构

路径 职责
cmd/flowforge 进程入口、配置加载、迁移与演示数据
internal/engine DAG 调度、HTTP/转换/延时处理器、租约与重试
internal/store PostgreSQL 队列、定义快照、事件与迁移
internal/httpapi REST API、鉴权、静态控制台与 OpenAPI
pkg/worker 异步任务上报 SDK
web React 19 + TailwindCSS 4 + 定制组件层
examples/erp 八步骤 ERP 演示与确定性智能体
scripts 初始化、开发、演示、验证与发布工具

文档

技术栈与范围

Go 1.25、React 19、TypeScript、TailwindCSS 4、Vite、PostgreSQL 17 和 Docker Compose。

当前面向单个可信工作空间独立部署。暂不包含租户隔离、用户/RBAC、SSO、计费、任意脚本、循环和动态子流程;同批同步请求完成后才推进下一批。HTTP 请求/结果使用 JSON,单次请求体和响应上限 1 MiB,大文件应传存储地址。

欢迎通过 Issue 和 Pull Request 参与,参见 贡献指南 与 安全说明。项目采用 MIT License。

About

面向企业系统与 AI 智能体的轻量工作流调度平台,支持串并行编排、异步状态上报、失败重试和持久化执行。内置工厂 ERP 多智能体演示,基于 Go、React 和 PostgreSQL,可通过 Docker 独立部署。Lightweight workflow orchestration for business systems and AI agents. Go, React and PostgreSQL, with parallel DAGs, retries and durable async reporting.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages