介绍
官网: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'
创建数据库:activiti
2.在idea中可以安装Activiti BPMN visualizer
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相关表。
三. 画一个简单的流程图
1.新建bpmn文件
2.确定之后会自动生成一个xml文件
3.在文件的任意位置点击右键:view bpmn(Activiti)Diagram
4.打开可视化编辑器,右键start events –>start event画一个开始事件
- 测试
@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());
}
}
- 运行结果
数据库已经自动更新,至此开发环境搭建完成。