• 1.使用SpringBoot整合Activiti6(工作流)


    1.idea安装actibpm流程设计器

    打开idea插件搜索actibpm,安装成功后重启idea
    在这里插入图片描述

    2.创建maven项目,导入相关依赖,添加配置文件

    在这里插入图片描述

    pom.xml依赖

    
    
        4.0.0
    
        com.dongmen
        testActSpringBoot
        1.0-SNAPSHOT
    
        
            org.springframework.boot
            spring-boot-starter-parent
            2.1.0.RELEASE
        
        
            UTF-8
            UTF-8
            1.8
            6.0.0
            5.1.29
        
        
            
                org.springframework.boot
                spring-boot-starter-web
            
            
                org.springframework.boot
                spring-boot-starter-jdbc
            
            
                org.springframework.boot
                spring-boot-starter-test
            
            
                org.activiti
                activiti-spring-boot-starter-rest-api
                ${activiti.version}
            
            
                mysql
                mysql-connector-java
                ${mysql.version}
            
            
                org.projectlombok
                lombok
            
        
        
            
                
                    org.springframework.boot
                    spring-boot-maven-plugin
                
            
        
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    配置文件

    #启动端口
    server.port=81
    spring.datasource.url=jdbc:mysql://localhost:3306/acttest?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
    spring.datasource.username=root
    spring.datasource.password=123456
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    #1.false,默认值,acticiti启动时对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常
    #2.true,acticiti会对数据中所有的表进行更新操作,如果表不存在,则自动创建
    #3.create_drop,在acticiti启动时创建表,关闭时删除表(必须手动关闭引擎才能删除表)
    #4.drop_create,在acticiti启动时删除原来的表,然后创建新表(不需要手动关闭引擎)
    spring.activiti.database-schema-update=true
    #检测历史表是否存在,acticit7默认没有开启历史记录信息
    spring.activiti.db-history-used=true
    #历史记录等级
    #1.none:不保存任何历史记录,因此在流程执行过程中,这是最高效的
    #2.acticiti:级别高于none,保存流程实例与流程行为,其他数据不保存
    #3.audit:除activiti级别会保存的数据外,还会保存全部的流程任务及其属性,audit为默认值
    #4.full:保存历史数据的最高级别,除了保存audit级别的数据外,还会保存其他流程相关的细节数据,包括一些流程参数等
    spring.activiti.history-level=full
    #默认true,效验流程文件,默认效验resources下的processes文件夹里的流程,为true自动部署流程,为false则不部署
    #spring.activiti.check-process-definitions=false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    3.新增启动类,剔除掉activiti默认集成springsecurity

    package com.dongmen;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    /**
     * @author TANGSHUAI
     * @version 1.0
     * @date 2021-12-13 11:13
     * 项目启动会自动部署processes文件夹的bpmn文件
     * 剔除springsecurity
     */
    @SpringBootApplication(exclude = {
            org.activiti.spring.boot.SecurityAutoConfiguration.class,
            org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class})
    public class App {
        public static void main(String[] args) {
            SpringApplication.run(App.class, args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    4.新建文件夹processes(名称不能更改),新增Bpmn文件,画流程图

    在这里插入图片描述
    这里我们用到了三种标签,
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    连接下一个标签的线条,需要鼠标移动到标签中间来获取线条
    在这里插入图片描述

    画好流程图后点击空白处,左边会出现流程参数,这里我们只需要设置流程的id与name即可
    在这里插入图片描述
    设置审批用户信息,这里我第一个节点设置的时zhangsan,第二个节点设置的是lisi,设置成功后保存
    在这里插入图片描述

    左侧菜单介绍

    在这里插入图片描述

    5.创建Controller

    package com.dongmen.controller;
    
    
    import org.activiti.engine.HistoryService;
    import org.activiti.engine.RuntimeService;
    import org.activiti.engine.TaskService;
    import org.activiti.engine.history.HistoricTaskInstance;
    import org.activiti.engine.runtime.ProcessInstance;
    import org.activiti.engine.task.Task;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.List;
    
    /**
     * @author TANGSHUAI
     * @version 1.0
     * @date 2021-12-13 13:21
     */
    @RestController
    public class TestController {
    
        @Autowired
        private RuntimeService runtimeService;
    
        @Autowired
        private TaskService taskService;
    
        @Autowired
        private HistoryService historyService;
    
        //启动流程
        @RequestMapping("/startAct")
        public void startAct() {
            ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess_1");
            System.out.println(processInstance.getId());
        }
    
        //查询代办任务
        @RequestMapping("taskAgents")
        public void taskAgents(){
            String user="zhangsan";
            List list = taskService.createTaskQuery().taskAssignee(user).list();
            for (Task task : list) {
                System.out.println("任务id:"+task.getId());
                System.out.println("当前审批用户:"+task.getAssignee());
                System.out.println("任务名称:"+task.getName());
            }
        }
    
        //审批流程
        @RequestMapping("/approvalProcess")
        public void approvalProcess() {
            String key = "myProcess_1";
            String user="zhangsan";
            //流程实例id,有多个流程时传递,单个不需要传,act_ru_task表id
            String id="2505";
            //根据流程key,与用户名称查询审批
            Task task = taskService.createTaskQuery()
                    .processDefinitionKey(key)
                    .taskAssignee(user)
                    .taskId(id)
                    .singleResult();
            if(task!=null){
                //审批流程
                taskService.complete(task.getId());
                System.out.println("审批成功!");
            }
    
        }
    
        //查询已办任务
        @RequestMapping("/hasToDoTasks")
        public void hasToDoTasks(){
            String user="zhangsan";
            List list = historyService.createHistoricTaskInstanceQuery().taskAssignee(user).list();
            for (HistoricTaskInstance historicTaskInstance : list) {
                System.out.println("开始时间"+historicTaskInstance.getStartTime()+",结束时间:"+historicTaskInstance.getEndTime());
                System.out.println("流程名称"+historicTaskInstance.getName());
            }
    
    
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86

    6.启动项目,Activiti会自动创建28张表,自动部署processes目录Bpnm文件

    表结构介绍
    在这里插入图片描述

    7.测试Controller

    localhost:81/startAct–启动流程,查看数据表act_ru_task

    在这里插入图片描述

    localhost:81/taskAgents–查询待办任务,访问后查看后台打印

    在这里插入图片描述

    localhost:81/approvalProcess–审批流程,点击审批流程后变成第二个节点审批

    在这里插入图片描述

    localhost:81/hasToDoTasks–查询已办任务,
    在这里插入图片描述

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    mysql数据库简介
    4.2 C++ Boost 内存池管理库
    有趣的java面试题-集合篇 (二) Map
    c语言中数组的四种创建方式和应用场景
    【python 获取时间】
    Android 查看手机的当时电量
    MySQL数据库干货_29——SQL注入
    [LeetCode] 453. 最小操作次数使数组元素相等(Java)
    csv 过滤及汇总计算
    MSP432学习笔记7:定时器A中断
  • 原文地址:https://blog.csdn.net/jiong9412/article/details/126095405