介绍

官网:https://www.activiti.org/

一 、工作流介绍

1.工作流(workflow)
就是通过计算机对业务流程自动化执行管理,它主要解决的是“使在多个参与这之间按照某种预定义规则自动化进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使目标的实现。”

2.BPM
BPM(Business Process Management),即业务流程管理,是一种规范化的构造端到端的业务流程,以持续的提高组织业务效率,常见商业管理如EMBA、MBA等均将BPM包含在内。

3.使用步骤
部署Activiti

Activiti是一个工作流引擎(其实就是一堆jar包API),业务系统访问(操作)activiti的接口,就可以方便的操作流程相关数据,这样就可以把工作流环境与业务系统的环境集成在一起。

流程定义

使用activiti流程建模工具(activiti-designer)定义业务流程(.bpmn文件)。

.bpmn文件就是业务流程定义文件,通过xml定义业务流程。

流程定义部署

activiti部署业务流程定义(.bpmn文件)。使用activiti提供的api把流程定义内容存储起来,在activiti执行过程中可以查询定义的内容,activiti执行把流程定义内容存储在数据库中。

启动一个流程实例

启动一个流程实例表示开始一次业务流程的运行。流程实例之间互不影响。

二、SpringBoot集成Activiti

1.项目环境
项目依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.72</version>
        </dependency>


        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter</artifactId>
            <version>7.1.0.M6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3.4</version>
        </dependency>

yaml项目配置

mybatis:
    mapper-locations: classpath:mappers/*xml
    type-aliases-package: com.activiti.mybatis.entity
    configuration:
        map-underscore-to-camel-case: true
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
server:
    port: 8082

spring:
    application:
        name: activiti
    datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        name: activitiDataSource
        password: 'root'
        url: jdbc:mysql://localhost:3306/activiti?serverTimezone=UTC
        username: 'root'

创建数据库:activiti2.在idea中可以安装Activiti BPMN visualizer

springboot 整合spark springboot 整合工作流_java


3.java配置

activiti-spring-boot默认集成了spring security用于权限管理如需禁用security启动类中屏蔽ActivitiSpringIdentityAutoConfiguration,再增加一个配置类即可 Application中禁用权限相关集成。

import org.activiti.core.common.spring.identity.config.ActivitiSpringIdentityAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication(exclude = {ActivitiSpringIdentityAutoConfiguration.class})
public class ActivitiApplication {

   public static void main(String[] args) {
       SpringApplication.run(ActivitiApplication.class, args);
  }

}

增加配置类ActivitiSpringIdentityAutoConfiguration,其中有三个方法在源码中并未查询到引用暂时不处理。

import org.activiti.api.runtime.shared.identity.UserGroupManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.ArrayList;
import java.util.List;

@Configuration
public class ActivitiSpringIdentityAutoConfiguration {

   @Bean
   public UserGroupManager userGroupManager() {
       return new UserGroupManager() {
           @Override
           public List<String> getUserGroups(String s) {
               return new ArrayList<>();
          }
           @Override
           public List<String> getUserRoles(String s) {
               return null;
          }
           @Override
           public List<String> getGroups() {
               return null;
          }
           @Override
           public List<String> getUsers() {
               return null;
          }
      };
  }

}

启动服务,mysql数据库中activiti库中自动添加activiti相关表。

springboot 整合spark springboot 整合工作流_springboot 整合spark_02


三. 画一个简单的流程图

1.新建bpmn文件

springboot 整合spark springboot 整合工作流_mybatis_03


2.确定之后会自动生成一个xml文件

springboot 整合spark springboot 整合工作流_java_04


3.在文件的任意位置点击右键:view bpmn(Activiti)Diagram

springboot 整合spark springboot 整合工作流_java_05

4.打开可视化编辑器,右键start events –>start event画一个开始事件

springboot 整合spark springboot 整合工作流_java_06

  1. 测试
@SpringBootTest
class ActivitiApplicationTests {

    @Test
    public void deployProcess() {
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        RepositoryService repositoryService = processEngine.getRepositoryService();
        Deployment deploy = repositoryService.createDeployment().addClasspathResource("bpmn/demo1.bpmn20.xml").deploy();
        System.out.println(deploy.getId());
    }
}
  1. 运行结果


    数据库已经自动更新,至此开发环境搭建完成。