warm-flow 工作流,新增监听器和参数传递


v1.1.0更新内容

  • 可以跳转指定节点

  • 增加全局变量

  • 增加监听器

  • 重构代码,解偶orm,方便扩展不同orm和数据,新增代码示例

  • 修复并行网关流程流程图显示错误问题

 

介绍

此项目是极其简单的工作流,没有太多设计,代码量少,并且只有6张表,个把小时就可以看完整个设计。使用起来方便

  1. 支持简单的流程流转,比如跳转、回退、审批
  2. 支持角色、部门和用户等权限配置
  3. 官方提供简单流程封装demo项目,很实用
  4. 支持多租户
  5. 支持代办任务和已办任务,通过权限标识过滤数据
  6. 支持互斥网关,并行网关(会签、或签)
  7. 可退回任意节点
  8. 支持条件表达式,可扩展
  9. 同时支持spring和solon
  10. 兼容java8和java17,理论11也可以
  11. 支持不同orm框架和数据库扩展
  12. 支持增加监听器,参数传递
git地址: https://gitee.com/warm_4/warm-flow.git

demo项目

springboot:RuoYi-Vue-Warm-Flow |演示地址 solon:warm-sun |演示地址

快速开始

在开始之前,我们假定您已经:

  • 熟悉 Java 环境配置及其开发
  • 熟悉 关系型 数据库,比如 MySQL
  • 熟悉 Spring Boot或者Solon 及相关框架
  • 熟悉 Java 构建工具,比如 Maven

表结构

https://gitee.com/warm_4/warm-flow/wikis/表结构?sort_id=9330548

maven依赖

springboot项目


io.github.minliuhua
warm-flow-mybatis-sb-starter
最新版本

solon项目


io.github.minliuhua
warm-flow-mybatis-solon-plugin
最新版本

支持数据库类型

  • [x] mysql
  • [ ] oracle
  • [ ] sqlserver
  • [ ] ......

支持orm框架类型

  • [x] mybatis及其增强组件
  • [ ] jpa
  • [ ] easy-query
  • [ ] wood
  • [ ] sqltoy
  • [ ] beetlsql
  • [ ] ......
有想扩展其他orm框架和数据库的可加qq群联系群主

代码示例

https://gitee.com/min290/hh-vue/blob/master/ruoyi-admin/src/test/java/com/ruoyi/system/service/impl/FlowTest.java

部署流程

public void deployFlow() throws Exception {
String path = "/Users/minliuhua/Desktop/mdata/file/IdeaProjects/min/hh-vue/hh-admin/src/main/resources/leaveFlow-serial.xml";
System.out.println("已部署流程的id:" + defService.importXml(new FileInputStream(path)).getId());
}

发布流程

public void publish() throws Exception {
defService.publish(1212437969554771968L);
}

开启流程

public void startFlow() {
System.out.println("已开启的流程实例id:" + insService.start("1", getUser()).getId());
}

流程流转

public void skipFlow() throws Exception {
// 通过实例id流转
Instance instance = insService.skipByInsId(1219286332141080576L, getUser().skipType(SkipType.PASS.getKey())
.permissionFlag(Arrays.asList("role:1", "role:2")));
System.out.println("流转后流程实例:" + instance.toString());

//// 通过任务id流转
//Instance instance = insService.skip(1219286332145274880L, getUser().skipType(SkipType.PASS.getKey())
//.permissionFlag(Arrays.asList("role:1", "role:2")));
//System.out.println("流转后流程实例:" + instance.toString());
}

 public void skipAnyNode() throws Exception {
// 跳转到指定节点
Instance instance = insService.skip(1219286332145274880L, getUser().skipType(SkipType.PASS.getKey())
.permissionFlag(Arrays.asList("role:1", "role:2")).nodeCode("4"));
System.out.println("流转后流程实例:" + instance.toString());
}

监听器

实现Listener接口,然后在设计器中配置好监听器

public class FinishListener implements Listener {

@Resource
private TestLeaveMapper testLeaveMapper;

private static final Logger log = LoggerFactory.getLogger(StartListener.class);

@Override
public void notify(ListenerVariable variable) {
log.info("完成监听器:{}", variable);
Instance instance = variable.getInstance();
Map<String, Object> testLeaveMap = variable.getVariable();
TestLeave testLeave = (TestLeave) testLeaveMap.get("testLeave");
/** 如果{@link com.ruoyi.system.service.impl.TestLeaveServiceImpl}中更新了,这里就不用更新了*/
//testLeave.setNodeCode(instance.getNodeCode());
//testLeave.setNodeName(instance.getNodeName());
//testLeave.setFlowStatus(instance.getFlowStatus());
//testLeave.setUpdateTime(DateUtils.getNowDate());
//testLeaveMapper.updateTestLeave(testLeave);
log.info("完成监听器结束;{}", "任务完成");
}
}

相關推薦

2024-09-27

warm-flow 1.2.8版本更新,新增办理人变量表达式和条件表达式支持spel 【升级注意事项】 本次升级,内置json库snack3方式,改为spi方式加载,业务项目中存在哪种json就会使用哪种的实现, 支持顺序按顺序加载一种:snack3、jacks

2024-03-28

:778470567,微信:warm-houhou git地址:https://gitee.com/warm_4/warm-flow.git 已完成计划 v1.1.2 流程定义新增复制按钮 补齐sql脚本,完善文档 跳转条件获取方式变更为流程变量 感谢@Holly 监听器变量新增返回结点信息 感谢@Hol

2024-04-18

欢迎使用使用warm-flow监听器 更新记录 v1.1.5 支持自定义填充 新增配置文件,部分功能可配置 引入日志门面 v1.1.42 修复并行网关后面没有中间节点 修复开始任务记录代办,为保存流程状态 新增链式查询排序

2024-06-29

warm-flow1.2.0重大更新 本次版本改动比较大,带来了大家期待已久的会签、票签、转办、oracle和pg数据库适配等,并且做了相应的代码重构。也由于改动比较大,如果发现问题,可以及时提交issue,如果能帮助解bug和pr,非常感谢

2024-08-20

 warm-flow1.2.4版本更新 主要内容,具体详情和升级注意事项,请查看官网更新记录 [feat] 激活和挂起 [feat] 不同节点也支持配置审批表单路径 [feat] 支持接收外部流程状态,支持流程状态扩展 [feat] 新增spel条件表达式

2024-08-29

warm-flow 1.2.6版本更新 本次改动 流程状态:可接收外部传递,可以支持字符串 新增api:增加获取下个节点信息 id生成:支持其他位数的id,可以前端精度问题的序列化处理 v1.2.6 2024-08-28 【升级注意事项】 执行升级

2024-10-25

y> <groupId>io.github.minliuhua</groupId> <artifactId>warm-flow-plugin-ui-sb-web</artifactId> <version>1.3.0</version> </dependency> 2. 后端放行部分路径 1、这两个路径需要放行,否则无法访问,/warm-flow-ui/**, /warm-flow/

2024-05-09

@TOC 欢迎使用使用warm-flow 更新记录 v1.1.80 orm支持mybatis-plus扩展 多租户字段隔离提供全局配置,自动获取 增加软删除可以配置化 新增三个测试模块 更新注意事项: 1、需要执行组件中的warm-flow_1.1.8.sql脚本,RuoYi-V

2024-05-09

@TOC 欢迎使用使用warm-flow 更新记录 v1.1.80 orm支持mybatis-plus扩展 多租户字段隔离提供全局配置,自动获取 增加软删除可以配置化 新增三个测试模块 更新注意事项: 1、需要执行组件中的warm-flow_1.1.8.sql脚本,RuoYi-V

2024-10-29

🔥🔥🔥纯血国产低代码自研工作流引擎,自主可控,类似钉钉和飞书的低代码工作流引擎,更强大的表单设计器,模型设计器。🚩为中国特色审批匠心打造❗简单易懂的核心设计,优美易用的可视化管理界面,纯正中国心

2024-03-01

不同orm框架和数据库扩展 git地址:https://gitee.com/warm_4/warm-flow.git demo项目: springboot:hh-vue |演示地址 solon:warm-sun |演示地址 快速开始 在开始之前,我们假定您已经: 熟悉 Java 环境配置及其开发 熟悉 关系型 数据库

2023-06-08

DataShareExtension数据发生变化都会通知DataShare客户端。 3. 新增统一数据管理框架(Unified Data Management Framework, UDMF),支持数据标准化模型、设备内数据拖拽、UDMF数据存储适配、权限管理、生命周期管理。 文件管理 1. 支持文件

2024-08-01

的界面设计理念,致力于打造一款用户友好、快速上手的工作流程工具。相较于传统的基于 BPMN.js 的工作流引擎,我们提供的解决方案显著简化了操作逻辑,使得用户能够在极短的时间内构建定制化的业务流程,即便是不具备深

2023-07-09

据监听处理逻辑并优化日志输出等 优化调整速度统计监听器为独立接口及相关代码 优化代理类型解析逻辑以避免无法获取注解的情况 【Configuration】 完善配置文件分析器写入内容到文件或输出流 优化配置文件类