Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lzw5399/tumbleweed
Lightweight workflow engine microservice implement BPMN 2.0
https://github.com/lzw5399/tumbleweed
bpm bpmn bpmn2 go-workflow workflow workflow-engine
Last synced: about 2 months ago
JSON representation
Lightweight workflow engine microservice implement BPMN 2.0
- Host: GitHub
- URL: https://github.com/lzw5399/tumbleweed
- Owner: lzw5399
- License: mit
- Created: 2021-01-17T08:57:34.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2021-04-23T02:55:09.000Z (over 3 years ago)
- Last Synced: 2024-06-12T08:10:21.421Z (7 months ago)
- Topics: bpm, bpmn, bpmn2, go-workflow, workflow, workflow-engine
- Language: Go
- Homepage:
- Size: 11.3 MB
- Stars: 36
- Watchers: 1
- Forks: 12
- Open Issues: 1
-
Metadata Files:
- Readme: README-ZH.md
- License: LICENSE
Awesome Lists containing this project
README
# tumbleweed(风滚草)工作流引擎
[English](README.md) | 简体中文
## 简介
基于bpmn 2.0的工作流引擎, 将用户、表单等拆分出去,专注于流程流转本身
配合工作流设计器使用
> https://github.com/lzw5399/tumbleweed-designer## 项目定位
由于实际业务中要在主系统中集成一款可定制化的工作流组件,要求是专注于流程的设计和流转。于是就搞了一个工作流的独立微服务,提供RESTful服务(后续考虑改成grpc-gateway形式). 将【用户/角色】【表单】等依赖分离出去,支持多租户
针对【用户/角色】的处理
- 接入工作流引擎的系统指定一个租户
- 然后将本身系统中需要用到工作流的用户/角色 的id和name同步到工作流引擎的数据库中
- 工作流引擎本身只关心用户/角色的唯一标识进行审批等的判定针对【表单】的处理
- 工作流引擎本身不保存任何表单的结构和数据
- 如果流转中有一些网关的条件需要用到表单的数据,将表单中的判断字段赋值给variable,然后条件表达式中使用该变量来判断## 支持的bpmn元素
- 事件(Event)
- 开始事件(StartEvent)
- 结束事件(EndEvent)
- 活动(Activity)
- 用户任务(UserTask)
- 脚本任务(ScriptTask)
- 网关(Gateway)
- 排他网关(ExclusiveGateway)
- 并行网关(ParallelGateway)
- 包容网关(InclusiveGateway)
- 顺序流(SequenceFlow)## 技术架构
golang + echo + gorm + postgres
### 外部组件依赖
除了数据库(postgres)之外没有其他的依赖
- mysql需要替换gorm的驱动,以及对一些sql做小幅改造### 数据访问
gorm + postgres
使用指定数据库的wf schema。可以单独使用一个数据库,也可以集成到已有业务的数据库中
支持自动迁移(可配置开启或关闭)
## 支持的功能
- 上述bpmn元素应该支持的所有基础功能
- 会签
- 转交审批
- 审批限时 自然日/工作日
- 超时后果 (自动通过/拒绝 或者无操作)
- WebHook
- 多租户
- 展示用的流程链路## 质量保证
- 集成测试
## 致谢
特别感谢[JetBrains](https://www.jetbrains.com?from=tumbleweed)提供的开源许可证授权