# 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脚本高亮编辑器,实现现场远程改动,满足工程人员现场改动 - [ ] 实现节点图,直观查看流程