项目简介
本项目是基于GoFrame2框架开发的微型流程引擎,主要用于学习和应用GoFrame框架以及完成课程作业。项目使用MySQL存储流程定义,支持简单流程定义、流转和条件选择等特殊节点,还支持API调用和在线文档生成,适用于审批等流程处理,未来有进一步完善和增加功能的计划。
项目的主要特性和功能
- 基于GoFrame2框架,易于扩展和维护。
- 无需BPML,仅用MySQL存储流程定义,降低业务流程建模语言学习成本。
- 结构简单,抛弃大部分GoFrame工程目录结构,便于理解。
- 支持OpenAPIV3,可自动生成可直接操作的API文档。
- 采用类微服务架构,可直接调用API接入。
- 支持会签、条件选择等特殊流程节点。
- 采用测试驱动开发,覆盖大部分流程操作函数。
安装使用步骤
1. 下载项目并安装依赖
bash
cd gf-workflow
go mod tidy
2. 初始化数据结构
将 sql/workflow.sql
文件导入到MySQL数据库中。
3. 运行项目
bash
go run main.go
配置数据库连接:
bash
nano config.yaml
修改数据库名和密码:
yaml
database:
default:
link: "mysql:yourname:yourpassword@tcp(127.0.0.1:3306)/workflow?charset=utf8mb4&parseTime=True&loc=Local"
4. 演示示例
- mock用户和权限:
bash go test ./internal/logic/user/
- mock流程定义:
bash go test ./internal/logic/processManage/
- 流程演示: 打开 http://localhost:8000/try 或 http://localhost:8000/view/task 进行流程流转测试。
5. 限制条件
bash
golang version >= 1.15
mysql version >=5.8 (使用了json类型,5.7不支持)
6. 架构
项目分为四个模块:用户管理、流程管理、流程引擎、演示界面。
7. 代理设置
使用代理访问git资源,例如:
bash
git config --global http.proxy http://127.0.0.1:7890
git config --global --unset http.proxy
8. 文档
核心路由:
bash
:8000 | POST | /complete | 完成当前task,推送到下一步 |
:8000 | POST | /dispatch | 转派当前任务给另一角色 |
:8000 | GET | /list | 获取指定用户应该处理的task列表 |
:8000 | GET | /manage/list | 获取所有的可用流程 |
:8000 | POST | /reject | 驳回,驳回后task结束流程 |
:8000 | POST | /start | 发起一个流程,需要指定流程的模板,也可以追加相关数据进行判断 |
:8000 | ALL | /swagger/* | 原生的api文档 | HOOK_BEFORE_SERVE
:8000 | GET | /try | 可以在线调用的api文档 |
:8000 | POST | /update | 修改task的相关数据的值 |
:8000 | ALL | /view/task | 演示专用界面 |
task的状态有3种:
- run:正在流转
- finish:已完成
- fail:被驳回、已经中止,不能再处理
未来计划增加: - rejected:被驳回到某个节点,可以再继续处理
注意:本项目源码中未包含实际的前端界面代码,所有的演示和文档展示都是基于伪代码或图片描述。实际使用时,需要用户自行开发或集成前端界面。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】