Spring Boot入门样例-800-activiti整合activiti工作流业务流程管理

Spring Boot入门样例-800-activiti整合activiti工作流业务流程管理

日常员工申请请假,有些公司需要经理和老板审批,有些公司需要经理/总监/HR/总经理审批,Activiti将这样业务流程变成可设计,从而无需开发千变万化的流程。本demo演示整合activiti实现工作流业务流程管理。

前言

本Spring Boot入门样例准备工作参考:

idea中需要安装actibpm插件,bpmn才能正确显示 插件参考Spring Boot入门样例-003-idea 安装配置和插件

pox.xml

必要的依赖如下,具体参见该项目的pox.xml

        <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>6.0.0</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

配置文件

resources/application.yml配置内容


spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    type: com.zaxxer.hikari.HikariDataSource
    url: jdbc:mysql://localhost:3306/springbootdemo?useUnicode=true&characterEncoding=utf-8&useSSL=false&useAffectedRows=true
    username: root
    password: root
    hikari:
      minimum-idle: 5
      maximum-pool-size: 15
      auto-commit: true
      idle-timeout: 30000
      pool-name: DatebookHikariCP
      max-lifetime: 1800000
      connection-timeout: 30000
      connection-test-query: SELECT 1

  activiti:
    check-process-definitions: true # activti是否自动部署
    db-identity-used: true #是否使用activti自带的用户体系
    database-schema-update: true #是否每次都更新数据库

代码解析

ActivitiService.java 如下

public interface ActivitiService {
    /**
     * 启动流程
     *
     * @param processDefinitionKey 流程定义id
     * @param paramsMap            参数
     * @return
     */
    ProcessInstance startProcess(String processDefinitionKey, Map<String, Object>
            paramsMap) throws Exception;

    /**
     * 完成任务
     *
     * @param taskId    任务id
     * @param paramsMap 任务携带变量
     */
    void complete(String taskId, Map<String, Object> paramsMap);

    /**
     * 完成任务
     *
     * @param taskId
     */
    public void complete(String taskId);

    /**
     * 通过流程id 查询任务
     *
     * @param processInstanceId
     * @return
     */
    Task queryTaskByProcessId(String processInstanceId);

    /**
     * 通过任务id,查询任务信息
     *
     * @param taskId
     * @return
     */
    Task queryTaskById(String taskId);

    /**
     * 设置任务认领组
     *
     * @param taskId
     * @param groupId
     */
    void addCandidateGroup(String taskId, String groupId);


    /**
     * 认领任务
     *
     * @param taskId 任务id
     * @param userId 认领人id
     */
    void claim(String taskId, String userId);

    /**
     * 设置认证用户,用于定义流程启动人
     *
     * @param userId
     */
    void setAuthUser(String userId);

    /**
     * 查看定义的流程图
     *
     * @param processDefinitionId
     * @return
     */
    byte[] definitionImage(String processDefinitionId) throws IOException;

    /**
     * 查看流程进度图
     *
     * @param pProcessInstanceId
     * @return
     * @throws Exception
     */
    byte[] getProcessImage(String pProcessInstanceId) throws Exception;


    /**
     * 通过任务和变量名称获取变量
     *
     * @param taskId
     * @param varName
     * @return
     */
    public Object queryVariables(String taskId, String varName);


    /**
     * 通过流程id 查询流程
     *
     * @param processId
     * @return
     */
    HistoricProcessInstanceEntity queryProcessInstance(String processId);


//    **************** 流程管理 interface **************

    /**
     * 删除流程
     *
     * @param processInstanceId
     * @param deleteReason
     * @return
     * @throws Exception
     */
    void deleteProcessInstance(String processInstanceId, String deleteReason) throws Exception;

    /**
     * 流程部署
     * 此方法为手动部署,传入/resource/processes目录下的流程问卷名称即可
     *
     * @param fileName 文件名
     * @param category 流程分类
     */
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值