# snakerflow-spring-boot-starter
**Repository Path**: ymyang/snakerflow-spring-boot-starter
## Basic Information
- **Project Name**: snakerflow-spring-boot-starter
- **Description**: 基于开源SnakerFlow工作流引擎,将其和springboot进行整合成为一个能够快速工程应用的轻量级工作流引擎组件,适用于常见的业务审批流程。本着轻量、简单、灵巧理念设计,定位于简单集成,多环境支持。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 6
- **Forks**: 5
- **Created**: 2021-12-24
- **Last Updated**: 2024-10-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# snakerflow-spring-boot-starter
> 本项目是基于开源SnakerFlow工作流引擎,将其和springboot进行整合成为一个能够快速工程应用的轻量级工作流引擎组件,本着轻量、简单、灵巧理念设计,定位于简单集成,多环境支持。
> 使用定位:适用于常见的业务审批流程和状态机流转,状态机流转相对复杂、审批涉及多角色、流程模板需要灵活定义。
> 本项目也是本着为大家提供一个可以一起讨论和改进SnakerFlow的平台,不会应用于任何商业项目和商业盈利, 交流群QQ:979147234
## 核心支持
- snakerflow和springboot无缝整合
- 支持starter方式一键引入
- 支持一键初始化依赖SQL表
- ORM支持mybatis和mybatis-plus
- 兼容redis cacheManager冲突
- 目前支持H2、Mysql示例
## start
0. 快速体验
- git clone git@github.com:snakerflow-starter/snakerflow-spring-boot-starter.git
- 运行 snakerflow-spring-boot-starter-example 中的Main
- 访问 http://localhost:8080/getProcessList 初始化流程,返回process
- 访问 http://localhost:8080/start 初始化流程实例,返回order
1. 快速使用,首先引入starter依赖
```xml
com.github.snakerflow-starter
snakerflow-spring-boot-starter
1.0.3
```
2. 初始化依赖数据库表
- [schema-mysql.sql](https://github.com/snakerflow-starter/snakerflow-spring-boot-starter/blob/master/snakerflow-spring-boot-starter-example/src/main/resources/db/schema-mysql.sql)
- [schema-H2.sql](https://github.com/snakerflow-starter/snakerflow-spring-boot-starter/blob/master/snakerflow-spring-boot-starter-example/src/main/resources/db/schema-h2.sql)
## 版本更新
- 2019.12.05 新增controller用于调试
- 2020.1.4 完成starter封装
- 2020.3.8 完成starter包的完全抽取,并增加测试工程,一目了然
- 2020.3.16 发布第一版starter 1.0.0到maven中央仓库
- 2020.3.16 发布1.0.1 兼容Redis cacheManager 冲突
- 2020.05.31 去掉无用依赖,快速使用体验
## 使用示例
- 可以使用参考项目实例中的 SnakerEngineFacets
- 初始化流程 SnakerEngineFacets.initFlows(已经预设了个请假流程)
- 发起一个测试流程
```java
public Order startInstanceById(String processId, String operator, Map args) {
return engine.startInstanceById(processId, operator, args);
}
```
- 流程推进
```java
public List execute(String taskId, String operator, Map args) {
return engine.executeTask(taskId, operator, args);
}
```
## SnakerFlow流程引擎
> Snaker是一个基于Java的轻量级工作流引擎,适用于企业应用中常见的业务流程。本着轻量、简单、灵巧理念设计,定位于简单集成,多环境支持。
> 轻量:
snaker-core.jar大小208K,代码行数约7000行,强大的扩展支持,不依赖于具体的ORM框架
> 简单: 表设计简单,七张核心表
## 支持图形化流程设计


## 支持编写流程.snaker文件
```xml
```
- snaker的流程设计可以使用snaker-web或者使用eclipse插件设计,插件在群聊里面。
## 数据库ER模型

## 核心流程
- 发起一个流程

- 流转动作

## 更多了解
* [常用工作流对比](https://github.com/snakerflow-starter/snakerflow-spring-boot-starter/wiki/%E5%AE%A1%E6%89%B9%E6%B5%81%E8%B0%83%E7%A0%94)
* [SnakerFlow流程引擎](https://github.com/snakerflow-starter/snakerflow-spring-boot-starter/wiki/SnakerFlow%E6%B5%81%E7%A8%8B%E5%BC%95%E6%93%8E)
* [springboot整合实现](https://github.com/snakerflow-starter/snakerflow-spring-boot-starter/wiki/SnakerFlow%E5%92%8Cspringboot%E6%95%B4%E5%90%88)
## Snaker Document
https://yunmel.gitbooks.io/snakerflow/
## 联系方式
QQ群:979147234
邮箱:zhaoguoqing360@126.com
## 点个赞
