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

这篇具有很好参考价值的文章主要介绍了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接口,然后在设计器中配置好监听器文章来源地址https://www.toymoban.com/news/detail-851773.html

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("完成监听器结束;{}", "任务完成");
    }
}

到了这里,关于warm-flow工作流,新增监听器和参数传递的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云原生离线工作流编排利器 -- 分布式工作流 Argo 集群

    作者:庄宇 在现代的软件开发和数据处理领域,批处理作业(Batch)扮演着重要的角色。它们通常用于数据处理,仿真计算,科学计算等领域,往往需要大规模的计算资源。随着云计算的兴起,阿里云批量计算和 AWS Batch 等云服务提供了管理和运行这些批处理作业的平台。 随

    2024年01月24日
    浏览(80)
  • Camunda 7工作流引擎 API 以及与Springboot集成实现工作流配置全纪录

    项目中需要用到工作流引擎来设计部分业务流程,框架选型最终选择了 Camunda7,关于 Camunda以及 Activity 等其他工作流 引擎的介绍及对比不再介绍,这里只介绍与现有Springboot项目的集成以及具体使用及配置 流程(PROCESS): 通过工具建模最终生成的BPMN文件,里面有整个流程的定

    2024年02月10日
    浏览(56)
  • 工作流引擎Flowable

    官方手册 一、依赖 二、demo 三、日志文件 在resources中添加日志文件log4j.properties Flowable流程图 Eclipse Designer, 一款Eclipse插件, 用于图形化建模, 测试与部署BPMN2.0流程 FlowableUI Flowable BPMN visualizer, 一款idea插件 从官网下载flowable-6.7.2.zip解压后, 可以看到如下两个文件 将这两个文件

    2024年02月09日
    浏览(52)
  • Activity工作流引擎

    目录 一、了解工作流 1、什么是工作流 2、工作流引擎 3、常见工作流引擎 4、Activiti7概述 4.1、Activiti介绍 4.2、建模语言BPMN 4.3、Activiti使用流程 二、Activiti7 1、Activiti使用 1.1、数据库支持 1.2、Activiti环境 1.3、Activiti常用Service服务接口 1.4、流程设计工具 2、Activiti流程操作 2.1、

    2024年02月13日
    浏览(45)
  • Git工作流

    main:生产环境,也就是你们在网上可以下载到的版本,是经过了很多轮测试得到的稳定版本。 release: 开发内部发版,也就是测试环境。 dev:所有的feature都要从dev上checkout。 feature:每个需求新创建的分支。 下面介绍一下一个新需求过来的git操作流程: 1.从dev分支上checkou

    2024年02月10日
    浏览(42)
  • Git工作流(随笔)

    目录 前言 一、工作流概述 1、概念 2、分类 二、集中式工作流 1、概述 2、介绍 3、操作过程 三、功能分支工作流 1、概述 2、介绍 3、操作过程 1)创建远程分支 2)删除远程分支 四、GitFlow工作流 1、概述 2、介绍   3、操作过程 五、Forking工作流 1、概述 2、介绍 3、操作过程

    2024年02月09日
    浏览(48)
  • Git 工作流设计

    前言 常用的工作流有四种 集中式工作流 功能分支流 git flow 工作流 forking 工作流 集中式工作流 集中式工作流,多个功能(feat),bug修复(fix) 在一个分支上开发,极容易出现代码从冲突 功能分支流 新的功能或者bug fork出一个新的分支,在该分支上开发 功能在分支开发完后再合

    2024年02月05日
    浏览(63)
  • 云计算工作流调度

    阅读笔记 首先,我们提出了一个更实用的混合云服务流程成本驱动调度模型,该模型在不降低VM部署弹性的情况下更精确地定义资源约束,并考虑了基于间隔的综合收费,包括计费周期和持续使用折扣。 其次,提出了一种改进的基于FWA(烟花算法)的方法来解决这一问题。在

    2024年02月02日
    浏览(69)
  • Docker工作流

    开发应用 编写Dockerfile 构建Docker镜像 运行Docker容器 测试应用 发布镜像到Hub 迭代更新镜像 首先你需要创建一个应用,这个应用可以是后端应用或者前端应用,任何语言都可以。 比如:我使用IDEA 创建一个Java后端应用,基于Maven构建,工程结构如下: 基于自己的工程来编写

    2024年04月29日
    浏览(34)
  • GitFlow工作流

    基于 Git 这一版本控制系统,通过定义不同的分支,探索合适的工作流程来完成开发、测试、修改等方面的需求。 例如:在开发阶段,创建 feature 分支,完成需求后,将此分支合并到 develop 分支上;在发布阶段,创建 release 分支,完成阶段开发任务后,将分支合并到 develop 和

    2024年02月22日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包