大家好,我是码农先森。
最近不少 PHPer 都在往 Go 转型,我也不例外。转 Go 之后,最怕的就是光看语法不练手。今天我想跟大家分享一个我最近深入研究的开源项目 ferry。
说实话,当初看中它,就是因为它不仅用了大家最常用的 Gin 框架,还把复杂的“工作流”给玩明白了。如果你正愁没有好的实战项目来进阶 Go 语言,或者公司正好缺一套流程管理系统,那 ferry 绝对值得你拉下来跑一跑。
为什么我们需要工单系统?
在公司里,不管是申请服务器资源、请假审批,还是上线发布,其实本质上都是“工单”。如果全靠微信喊或者发邮件,很容易就漏了,而且根本没法回溯。

我研究了市面上不少工单系统,ferry 给我的第一印象是“懂行”。它不是那种写死逻辑的简单表单,而是有几个非常戳人的亮点:
真正的“零代码”配置:它的流程引擎和表单模板都是可以高度自定义的。比如你需要一个“加班申请”,直接在后台拖拽配置字段就行,不需要你为了加一个输入框去改代码、重新部署。
网关逻辑很扎实:它支持排他网关和并行网关。简单说,就是能实现“如果是经理审批,走 A 路径;如果是总监审批,走 B 路径”这种复杂逻辑。
任务钩子(Hooks)太香了:作为开发,我最喜欢这个。工单审批通过后,它能自动触发脚本。比如“申请 Git 权限”工单审批完,后台直接调脚本把权限开了,这才是真正的自动化。
RBAC 权限管理:基于 Casbin 实现,权限控制细到了按钮级别,对于企业内部系统来说,这安全感给得很足。
快速上手 ferry 怎么玩?
ferry 是前后端分离的,后端 Go (Gin),前端 Vue + Element UI。整体安装流程挺顺畅的,这里我大概说下步骤:
1. 环境准备
你需要准备好:
Go 环境(建议 1.16+)MySQL(存数据)Redis(缓存和 Session)
2. 安装步骤
我个人比较推荐初学者先尝试源码安装,这样方便看逻辑:
后端:
# 克隆代码git clone https://github.com/lanyulei/ferry.gitcd ferry# 编译并运行go mod tidygo run main.go server -c config/settings.yml
前端:
cd ferry_webnpm installnpm run dev
当然,如果你想快速预览,官方也提供了 Docker Compose 的部署方式,基本上一个命令就能跑起来,非常省心。
3. 功能初体验
进到系统后,你可以先去“工单系统”玩玩。

第一步:定义表单。把你要收集的信息(文本框、下拉框、附件等)定好。
第二步:画流程图。连连看一样把节点连起来,设置好谁来审批。
第三步:发布使用。普通用户就能在“提交工单”里看到你刚配置好的流程了。
总结与碎碎念
从 PHP 转到 Go,我们会发现 Go 在处理并发和工程化上的魅力。而 ferry 恰恰是一个非常优秀的“教科书”级别项目,它不仅展示了 Gin 框架的高效,还把复杂的工作流逻辑拆解得很清晰。
如果你正在找一个 Go 项目练手,我强烈建议你把 ferry 的源码克隆下来读一读,看看它的中间件是怎么写的,权限是怎么校验的,自动化钩子是怎么实现的。
真心推荐大家去试试 ferry。 它可能不仅是你学习 Go 语言路上的“敲门砖”,更有可能直接变成你公司里那个提效降本的“得力助手”。
感谢大家阅读,个人观点仅供参考,欢迎在评论区发表不同观点。
欢迎关注、分享、点赞、收藏、在看,我是微信公众号「码农先森」作者。