littlebot
Published on 2025-04-12 / 0 Visits
0

【源码】基于GoFrame2框架的流程引擎

项目简介

本项目是基于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. 演示示例

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】