一、 pom.xml文件增加
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>5.22.0</version>
</dependency>
二、 在springboot配置文件,在spring下面增加
activiti:
#如果表不存在,则Activiti会自动创建
database-schema-update: true
#自动部署验证设置:true-开启(默认)、false-关闭
check-process-definitions: true
process-definition-location-prefix: classpath:/processes/
# process-definition-location-suffixes:
# - **.bpmn
# - **.bpmn20.xml
#保存历史数据级别设置为full最高级别,便于历史数据的追溯
history-level: full
三、 使用7大接口
/**
* 在流程运行时对流程实例进行管理与控制。
*/
@Autowired
private RuntimeService runtimeService;
/**
* 对流程任务进行管理,例如任务提醒、任务完成和创建任务等
*/
@Autowired
private TaskService taskService;
/**
* 提供对流程角色数据进行管理的API,这些角色数据包括用户组、用户及它们之间的关系
*/
@Autowired
private IdentityService identityService;
/**
* 提供一系列管理流程部署和流程定义的API。
*/
@Autowired
private RepositoryService repositoryService;
/**
*
*/
@Autowired
private ProcessEngine processEngine;
/**
* 对流程的历史数据进行操作,包括查询、删除这些历史数据
*/
@Autowired
private HistoryService historyService;
/**
* 提供对流程引擎进行管理和维护的服务
*/
@Autowired
private ManagementService managementService;
/**
* 表单服务
*/
@Autowired
private FormService formService;
public void test() {
//项目中每创建一个新用户,对应的要创建一个Activiti用户
//两者的userId和userName一致
User admin = identityService.newUser("admin");//
admin.setLastName("管理员");
identityService.saveUser(admin);
//项目中每创建一个角色,对应的要创建一个Activiti用户组
Group adminGroup = identityService.newGroup("admin");
adminGroup.setName("系统角色");
identityService.saveGroup(adminGroup);
//用户与用户组关系绑定
identityService.createMembership("admin", "admin");
// 启动流程
ProcessInstance pi = runtimeService.startProcessInstanceByKey("myProcess");
System.out.println("process id" + pi.getId());
System.out.println("process name" + pi.getName());
// 获取任务
List<Task> list = taskService.createTaskQuery().list();
System.out.println("任务个数" + list.size());
if (list != null && list.size() > 0) {
for (Task t : list) {
System.out.print(t.getId() + ",");
System.out.print(t.getName() + ",");
System.out.print(t.getAssignee() + ",");
System.out.println(t.getProcessInstanceId());
taskService.complete(t.getId());
}
}
list = taskService.createTaskQuery().list();
System.out.println("任务个数" + list.size());
}
异常处理
- springboot启动类注解排除 activiti 的SecurityAutoConfiguration自动配置
@SpringBootApplication(exclude = org.activiti.spring.boot.SecurityAutoConfiguration.class)
关于图片中文乱码处理
import org.activiti.spring.SpringProcessEngineConfiguration;
import org.activiti.spring.boot.ProcessEngineConfigurationConfigurer;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;
import java.io.IOException;
/**
* @author xizhuangchui
* @Description
* @date 2018-08-31 10:03
*/
@Component
public class ProcessEngineConfiguration implements ProcessEngineConfigurationConfigurer {
@Override
public void configure(SpringProcessEngineConfiguration processEngineConfiguration) {
processEngineConfiguration.setActivityFontName("宋体");
processEngineConfiguration.setLabelFontName("宋体");
processEngineConfiguration.setAnnotationFontName("宋体");
processEngineConfiguration.setDbIdentityUsed(false);
}
}