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-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-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. 支持文件

2023-07-09

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

2022-10-28

成,并提供橙单的在线表单服务。 在线表单,橙单现有工作流模块,可快速接入新版在线表单。 报表打印,打印功能在原有 PDF 输出的基础上,新增支持 Excel 导出。 报表打印,打印功能同时支持 PDF 和 Excel 的批量打印。

2023-10-18

新日志:http://furion.baiqian.ltd/docs/upgrade/ 新特性 [新增] 定时任务看板列表支持作业分组名排序 4.8.8.43 ⏱️2023.09.14 #I7YQ9V [新增] 验证特性 [DataValidation] 支持 [Display] 和 [DisplayName] 特性设

2024-04-05

Kit维度呈现,提供给开发者更清晰的逻辑和场景化视角;新增4000多个API,应用开发能力更加丰富;ArkUI组件开放性和动效能力得到进一步增强;Web能力持续补齐,便于开发者利用Web能力快速构建应用;分布式能力进一步增强了组

2023-10-11

n/文本/视频预览等,另外还有更加强大的相册和多项功能新增或优化。 开源地址和软件官网 Github: https://github.com/Kuingsmile/PicList Gitee: https://gitee.com/kuingsmile/PicList 软件官网:https://piclist.cn 下载地址 MacOS PicList-2.6.3-a

2023-01-18

文子路径时无法打开展示页面的BUG; 修复:修复在图表监听器中调用自身图表JS对象的refreshData()函数不起作用的BUG; 修复:修复系统管理查询页面分页栏页码有时显示不准确的BUG; 改进:弃用dg-dashboard-listener中图表事件相

2023-11-06

已发布,开发套件同步升级到API 10。相比3.2 Release版本,新增4000多个ArkTS API,应用开发能力更加丰富;HDF新增200多个HDI接口,硬件适配更加便捷;持续优化图形框架和方舟编译器(ArkCompiler),用户交互体验得到进一步提升;ArkU

2023-05-04

系统属性IGNITE_ALLOW_ATOMIC_OPS_IN_TX配置为true。 Ignite: 新增增量快照功能; 新增缓存对象转换功能(可用于加密、压缩或者数据过滤); 快照支持开启磁盘页面压缩的缓存; 快照支持只复制主分区数据的功能; 快照恢

2023-06-07

llapse 支持通过 items 属性来配置面板内容。#42545 新增静态方法 getDesignToken 用于获取完整的主题 token。#42723 ConfigProvider 支持配置 Space 组件的 classNames 和 styles 属性。#42748 Space 组件支持 classNam

2023-02-15

、查通话、查话簿、查电量、找手机、改话簿等。(V3.0 新增)   更新日志 新增:短信指令(根据短信指令开关对应功能) #I5YX3F 新增:监听网络状态变化提醒(APP通知转发,包名:77777777) #259 新增:远程