首页 > 其他分享 >Activiti7工作流引擎

Activiti7工作流引擎

时间:2022-11-08 14:24:14浏览次数:70  
标签:activiti 流程 blog 工作 任务 引擎 https Activiti7 节点

目录

参考资料

介绍

简单来说就是针对搭建工作流业务,传统做法是建各种表,然后写mapper、service、controller实现业务

现在别人搞了一个引擎,配置好后这个引擎自己建表、维护表,提供各种API让程序员可以在service快速实现业务

一般做企业的软件,各种审批流程软件,即BPM软件,就是写工作流

详细说明

首先要搞懂BPMN,这是用来描述流程的文件,可以理解为java的类文件,工作流引擎基于此构建流程

BPMN

下面说说众多工作流引擎中,开源引擎Activity的环境部署,基于IDEA+mysql说明

Activiti7环境搭建 IDEA Mysql

搭建好开发环境后,就简单的实现一个基础的,各个环节写死的demo,也就是没有用流程变量的那种

基于普通maven工程,没有使用spring boot

基础操作流程

之前的基础操作,每个环节的负责人都是写死的,而且流程没有分支,无法实现逻辑判断后将流程推到不同节点

可以使用流程变量作为占位符,这样每个流程实例中,各个节点的负责人就可以是可变的,根据具体需求传入参数即可,也可以根据流程变量的值,让工作流引擎自动进行逻辑判断,将流程推到不同节点

流程变量

之前的基础操作,流程推送到下一个节点时,会给指定负责人发送提示

但有时候需要一种类似接任务的工作流,节点A将流程实例推到节点B后,不指定特定人选,一定权限范围内的人均可以看到这个任务,当其中一个人接受任务后,其他人就不需要再去关注这个流程实例

可以使用候选者组功能实现这个需求

候选者组

如果需要工作流实现“且”逻辑,就需要使用网关

网关

如果希望工作流某个节点可以开启新的工作流,并等待新工作流完成后再继续执行后续操作,可以使用子流程

子流程

如果某个任务,负责人A做不了主或者暂时处理不了,可以将流程委派给其他人B,此时任务名义上还是A的,实际执行是B,当B完成任务后,流程会回到A,等待A确认并推进到后续节点

委派和驳回

之前的任务负责人Assignee都是一个,而任务可以有多个人有权限审批,只要其中有一部分人完成审批任务就算整个任务完成。同一个任务需要多个负责人来完成被称之为“会签”。 会签就是一种投票,满足投票人数就过。

节点会签

如果希望工作流自动给相关人员发送流程审批的通知提醒,并且不在配置流程时手动添加,不侵入到流程操作的过程,影响流程执行,那可以使用监听器,对工作流进全流程监听

监听器

最后说说spring boot项目中,上面的一切操作有哪些省略的地方

结合spring boot

别人写好的activiti工具类

Activiti7使用步骤

  1. 部署activiti

    activiti包含一系列jar包,因此需要把业务系统和activiti的环境集成在一起进行部署

  2. 定义流程

    使用activiti的建模工具定义业务流程.bpmn文件

    就是画出业务流程

  3. 部署流程定义

    使用activiti提供的API把流程定义文件.bpmn存储到数据库中

  4. 启动流程实例(processinstance)

    基于.bpmn文件定义好的流程,开启一个流程实例

    可以看成基于java的一个类创建了一个对象

  5. 用户查询待办任务(task)

    现在系统的业务流程都交给了activiti管理,通过activiti就可以查询当前流程执行到哪个步骤了。当前用户需要办理哪些任务也就同样可以由activiti帮我们管理,开发人员不需要自己编写sql语句进行查询

    就是使用taskService提供的函数,查询当前操作系统的用户有哪些任务

  6. 用户办理任务

    就是把当前流程节点对应的任务完成后,调用taskService提供的函数,将流程传给下一个流程节点的负责人

  7. 流程结束

    当任务办理完成,没有下一个任务节点后,这个流程实例就执行完成了,就像多线程下,某个线程的任务完成了,就会关闭线程

标签:activiti,流程,blog,工作,任务,引擎,https,Activiti7,节点
From: https://www.cnblogs.com/BRSblackshoot/p/16869552.html

相关文章

  • React核心工作原理
    ##1.1、虚拟DOM常见问题:reactvirtualdom是什么?说一下diff算法?拿到一个问题,一般回答都是是什么?为什么?怎么办?那就按照这个思路来吧!what用JavaScript对象表示DOM......
  • 怎么选工作流表单设计器?
    随着业务量的扩大,很多企业都想选择一款优良的工作流表单设计器来提升工作效率和质量。在大数据时代,操作简单、维护便利的工作流表单设计器确实能为企业的发展带来更大的帮......
  • OpenZFS 开发工作重点:改进压缩、提升性能以及共享 L2arc 等
    近日在旧金山举行了一年一度的OpenZFS开发者峰会。会议主题包括介绍OpenZFS现状、亚马逊AWS如何大规模使用OpenZFS,以及开源开发者目前正在解决的一些优化和改进......
  • Angel工作室ASP.NET(AngelExam)开源驾校考试系统正式发布
    Angel工作室ASP.NET(AngelExam)开源驾校考试系统正式发布 一、Angel工作室ASP.NET(AngelExam)开源驾校考试系统简介   Angel工作室ASP.NET(AngelExam)驾校考试系......
  • 房产信息管理系统-准备工作
    1.新建一个项目然后配置好Tomcat等。2.创建三张空表房产基本信息表 房产经纪人基本信息表 顾客基本信息表 3.javaBean封装类packagecom.Bean;publicclas......
  • 记录工作中可能需要用到的零散知识点
    1、命令行快速删除文件,例如删除node_modulesrimrafnode_modules//如需使用该命令,还需要安装rimraf  npminstall-g rimraf 2、命令行清除npm缓存npmcacheclea......
  • ClickHouse 表引擎简介(一)
    1、表引擎介绍ClickHouse表引擎是ClickHouse的一大特色。可以说, 表引擎决定了如何存储表的数据。包括:数据的存储方式和位置,写到哪里以及从哪里读取数据。支持哪些查询......
  • AI 模型编译器 MegCC 开源,解决推理引擎体积问题
    目前社区已经有多个移动端深度学习推理框架,如:NCNN、MNN...这些推理引擎都给社区的用户带来了在移动端上部署深度学习非常多的便利,但是他们也都有一个共性问题:随着不断地迭......
  • 交换机工作原理及命令
    1交换机的四大功能1.学习功能---数据帧经过交换机,交换机会自动学习数据帧的源mac地址2.转发功能-------数据帧经过交换机,会在mac表中查找数据帧的目的mac,查找成功,会从......
  • Kubernetes控制器工作流程
    Kubernetes控制器会监视资源的创建/更新/删除事件,并触发Reconcile函数作为响应。Kubernetes水平触发API的实现方式为:监视系统的实际状态,并与对象的Spec中定义的期望状态进......