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. 流程结束

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

posted @ 2022-11-08 14:11  夏·舍  阅读(222)  评论(0编辑  收藏  举报