SpringBoot + Activiti入门教程

POM文件

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter-basic</artifactId>
            <version>5.22.0</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-rest</artifactId>
            <version>5.22.0</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-diagram-rest</artifactId>
            <version>5.22.0</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring</artifactId>
            <version>5.22.0</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-json-converter</artifactId>
            <version>5.22.0</version>
        </dependency>

activiti.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                    http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/contex
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 这里可以使用 链接池 dbcp-->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/javacore?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;allowMultiQueries=true"/>
        <property name="username" value="root" />
        <property name="password" value="asdf-1234" />
        <property name="maxActive" value="3" />
        <property name="maxIdle" value="1" />
    </bean>

    <bean id="processEngineConfiguration"
          class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <property name="dataSource" ref="dataSource" />
        <property name="databaseSchemaUpdate" value="true"/>
    </bean>

</beans>

简单的画个流程,加点form变量

测试类,变量设置、获取,流程发布、审批,就入门了

package com.java.core.web;

import org.activiti.engine.*;
import org.activiti.engine.form.FormProperty;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test;

import java.util.HashMap;
import java.util.List;
import java.util.Map;


// 教程地址 --创建的数据库
// https://blog.csdn.net/qq_44033725/article/details/131531916
// 安装的bpmn插件
// https://blog.csdn.net/qq407995680/article/details/132554368

public class TestApplication {

    //读取配置文件
    ProcessEngineConfiguration processEngineConfiguration =
            ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.xml", "processEngineConfiguration");

    /**
     * 创建数据库表
     */
    @Test
    public void testCreat() {
        ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
        System.out.println("processEngine = " + processEngine);
    }

    /**
     * 部署流程图
     */
    @Test
    public void testDeployment() {

        // 1.创建processEngine
        ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
        // 2.获取RepositoryService
        RepositoryService repositoryService = processEngine.getRepositoryService();
        // 3.使用service进行流程部署 ,定义流程名,把 bpmn 和 png 部署到数据库
        Deployment deployment = repositoryService.createDeployment()
                .name("测试流程")
                .addClasspathResource("bpmn/demo.bpmn20.xml")
                .addClasspathResource("bpmn/demo.png")
                .deploy();
        System.out.println("流程部署id = " + deployment.getId());
        System.out.println("流程部署name = " + deployment.getName());
    }

    /**
     * 启动流程实例
     */
    @Test
    public void testStartProcess() {

        // 1. 创建ProcessEngine
        ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
        // 2. 获取RuntimeService
        RuntimeService runtimeService = processEngine.getRuntimeService();

        Map<String, Object> variables = new HashMap<>();
        variables.put("sourceId", "测试李四的值");

        // 3. 根据流程定义的id启动流程
        ProcessInstance myEvection = runtimeService.startProcessInstanceByKey("demo-process",variables);
        System.out.println("流程定义id = " + myEvection.getProcessDefinitionId());
        System.out.println("流程实例id = " + myEvection.getId());
        System.out.println("当前活动id = " + myEvection.getActivityId());
    }

    /**
     * 查询个人任务
     **/
    @Test
    public void testFindPersonalTaskList() {
        // 1.获取流程引擎
        ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
        // 2.获取taskService
        TaskService taskService = processEngine.getTaskService();
        // 3.根据流程key 和 任务负责人 查询任务
        List<Task> list = taskService.createTaskQuery()
                .processDefinitionKey("demo-process")
                .taskAssignee("李四")
                .list();
        for (Task task : list) {
            System.out.println("流程图的名称 = " + task.getName());
            System.out.println("流程图的id = " + task.getTaskDefinitionKey());

            System.out.println("流程实例id = " + task.getProcessInstanceId());
            System.out.println("当前任务id = " + task.getId());
            System.out.println("当前任务负责人id = " + task.getAssignee());

        }
    }

    /**
     * 完成个人任务
     */
    @Test
    public void completTesk() {
        // 1.获取流程引擎
        ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
        // 2.获取taskService
        TaskService taskService = processEngine.getTaskService();

        // 表单属性值
        FormService formService = processEngine.getFormService();

//        Task task = taskService.createTaskQuery() //完成李四任务
//                .processDefinitionKey("demo-process")
//                //.taskAssignee("李四")
//                .taskId("17505")
//                .singleResult();

        Task task = taskService.createTaskQuery() //完成张三任务
                .processDefinitionKey("demo-process")
                .taskAssignee("张三")
                .singleResult();

        List<FormProperty> taskFormData = formService.getTaskFormData(task.getId()).getFormProperties();
        for (FormProperty formProperty : taskFormData) {
            System.out.println("表单id = " + formProperty.getId());
            System.out.println("表单name = " + formProperty.getName());
            System.out.println("表单value = " + formProperty.getValue());
            System.out.println("表单value = " + formProperty.getType());
        }


        System.out.println("流程图的名称 = " + task.getName());
        System.out.println("流程图的id = " + task.getTaskDefinitionKey());

        System.out.println("流程实例id = " + task.getProcessInstanceId());
        System.out.println("当前任务id = " + task.getId());
        System.out.println("当前任务负责人id = " + task.getAssignee());

        Map<String, Object> variables = new HashMap<>();
        variables.put("sourceId", "给张三了");

        //taskService.complete(task.getId(),variables);
    }

}

相关推荐

  1. libevent入门教程

    2024-03-22 06:36:07       41 阅读
  2. LaTeX入门教程

    2024-03-22 06:36:07       31 阅读
  3. notebook入门使用教程

    2024-03-22 06:36:07       35 阅读
  4. Python pytest入门教程

    2024-03-22 06:36:07       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-22 06:36:07       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-22 06:36:07       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-22 06:36:07       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-22 06:36:07       20 阅读

热门阅读

  1. 【Docker】常用命令 docker network ls

    2024-03-22 06:36:07       19 阅读
  2. 我的创作纪念日

    2024-03-22 06:36:07       21 阅读
  3. hive的小文件如何处理

    2024-03-22 06:36:07       20 阅读
  4. ArcGis 地图文档

    2024-03-22 06:36:07       18 阅读
  5. 如何判断对象可以被回收

    2024-03-22 06:36:07       21 阅读
  6. 替换老版本包和模块-版本回滚-依赖冲突

    2024-03-22 06:36:07       22 阅读
  7. spring boot 解决前端处理Long溢出问题(转字符串)

    2024-03-22 06:36:07       19 阅读
  8. CHAT~

    2024-03-22 06:36:07       18 阅读
  9. 前后端分离开发

    2024-03-22 06:36:07       19 阅读
  10. 实验7-1-11 装箱问题(PTA)

    2024-03-22 06:36:07       19 阅读