# TinyActiviti
**Repository Path**: dwdyoung/TinyActiviti
## Basic Information
- **Project Name**: TinyActiviti
- **Description**: 轻量级工作流
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-06-02
- **Last Updated**: 2023-07-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 动态脚本, Java, 工作流, 轻量级, 规则引擎
## README
# 轻量级的流程控制引擎
## 需求描述
市面上已经有非常成熟的工作流引擎,例如flowable、activiti,但都是面向大型项目,而且非常重量级,不仅入门困难,用起来性能消耗也很大,往往是多个数据表查询操作才能完成一个小小的流程。抛开这些工作流引擎,去进行业务逻辑开发又会显得力不从心,代码耦合度大,维护难度大,逐开发一款轻量级的,面向开发人员的工作流引擎,可以用轻量代码控制流程的语言。
## TinyActiviti使用方式
参考 example 项目
### 引入依赖
~~~ xml
com.gonsin
tiny-activiti_logic
1.0-SNAPSHOT
~~~
### 启用TinyActiviti
~~~ java
@EnableTinyActiviti
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}
~~~
### 配置定时任务 SchedulerFactory
~~~ java
@Configuration
public class TaConfig {
@Bean
public SchedulerFactory schedulerFactory(){
return new StdSchedulerFactory();
}
}
~~~
### 编写自己的流程脚本
sample1.ta.xml
~~~ xml
发布会议 = RUN(创建会议, 设置铭牌, 设置设备);
通过 = RUN(发送通知, 发布会议);
不通过 = RUN(发送通知);
RUN(保存预约信息, 写入审核人员,
WAIT(等待审核结果, 5)
.THEN(
SWITCH(判断审核结果)
.CASE(true, 通过)
.CASE(false, 不通过)
)
.TIMEOUT(
通过
)
)
~~~
### 编写自己的流程节点
~~~ java
@Slf4j
@NodeComponent(nodeId = "保存预约信息")
public class SaveCommitInfo implements RunNode {
@Override
public void processRun(ChainContext context) {
log.info("保存预约信息");
}
}
~~~
### 运行流程
~~~ java
TA.ready("预约会议").go();
~~~
## 配置文件 application.yml
~~~ yml
# TA相关配置
com:
gonsin:
ta:
# 默认的ta.xml存放的目录,系统会先向ta文件夹里查询,再向classpath:/ta里查询
defaultTaPath: ta
# ta.xml 默认的编码方式
charset: utf8
cli:
# cli网页的账号
user: admin
# cli网页的密码
password: 11111111
# cli网页可以登录的白名单的地址
whiteList:
- localhost
- 127.0.0.1
# cli网页可以登录的黑名单地址
blackList:
- 192.168.2.1
~~~
## 详细教程
- 更多流程例子请参考 doc/流程例子
- WAIT方法和触发信号详情请查看 example 项目
## 未来计划
- [x] 实现基于groovy的节点动态实现
- [x] 实现html脚本高亮编辑器,实现现场远程改动,满足工程人员现场改动
- [ ] 实现节点图,直观查看流程