启动时可能会遇到的问题:
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.ruoyi.RuoYiApplication]; nested exception is java.io.FileNotFoundException: class path resource [org/springframework/security/config/annotation/authentication/configurers/GlobalAuthenticationConfigurerAdapter.class] cannot be opened because it does not exist at org.springframework.context.annotation.ConfigurationClassParser.processimports(ConfigurationClassParser.java:610) at org.springframework.context.annotation.ConfigurationClassParser.access$800(ConfigurationClassParser.java:111) at org.springframework.context.annotation.ConfigurationClassParser$DeferredimportSelectorGroupingHandler.lambda$processGroupimports$1(ConfigurationClassParser.java:812) at java.util.ArrayList.forEach(ArrayList.java:1259)具体错误:
class path resource [org/springframework/security/config/annotation/authentication/configurers/GlobalAuthenticationConfigurerAdapter.class] cannot be opened because it does not exist解决方案:springboot项目引入工作流activiti启动报错
activiti内置服务:
processEngine.getRepositoryService(); processEngine.getRuntimeService(); processEngine.getTaskService(); processEngine.getIdentityService(); processEngine.getManagementService(); processEngine.getHistoryService();参考自: activiti工作流6大service服务的简单介绍
一个连接数据库测试activiti里面的方法的demo:
public class ProcessTest {
private ProcessEngine processEngine;
private RuntimeService runtimeService;
private IdentityService identityService;
private TaskService taskService;
private HistoryService historyService;
@Before
public void testProcessEngineTest(){
ProcessEngineConfiguration processEngineConfiguration =
ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
processEngineConfiguration.setJdbcDriver("com.mysql.cj.jdbc.Driver");
processEngineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3308/ry-vue?useUnicode=true&characterEncoding=utf8&nullCatalogMeansCurrent=true&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8");
processEngineConfiguration.setJdbcUsername("root");
processEngineConfiguration.setJdbcPassword("root");
processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
processEngine = processEngineConfiguration.buildProcessEngine();
assertNotNull(processEngine);
runtimeService = processEngine.getRuntimeService();
identityService = processEngine.getIdentityService();
taskService = processEngine.getTaskService();
historyService = processEngine.getHistoryService();
}
// 发起流程申请
@Test
public void processTest(){
String applyUserId = "akko";
// 用来设置启动流程人员的ID,引擎会自动把用户ID保存到activiti:initiator中
identityService.setAuthenticatedUserId(applyUserId);
runtimeService.startProcessInstanceByKey("leave");
}
// 获取我的待办
@Test
public void queryTodoTaskTest(){
// 根据当前人的ID查询
List taskList = taskService.createTaskQuery()
.processDefinitionKey("leave")
.taskAssignee("akko")
.list();
// 根据当前人未签收的任务
List taskList1 = taskService.createTaskQuery()
.processDefinitionKey("leave")
.taskCandidateUser("akko")
.list();
List myTaskList = new ArrayList<>();
myTaskList.addAll(taskList);
myTaskList.addAll(taskList1);
assertEquals(1,myTaskList.size());
}
// 获取我的待办
@Test
public void completeTaskTest(){
// 根据当前人的ID查询
List taskList = taskService.createTaskQuery()
.processDefinitionKey("leave")
.taskAssignee("akko")
.list();
// 根据当前人未签收的任务
List taskList1 = taskService.createTaskQuery()
.processDefinitionKey("leave")
.taskCandidateUser("akko")
.list();
List myTaskList = new ArrayList<>();
myTaskList.addAll(taskList);
myTaskList.addAll(taskList1);
assertEquals(1,myTaskList.size());
Task task = myTaskList.get(0);
// 获取流程实例对象
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processDefinitionKey("leave")
.singleResult();
identityService.setAuthenticatedUserId("akko");
taskService.addComment(task.getId(),processInstance.getId(),"[同意]准许");
Map variables = new HashMap<>();
variables.put("deptLeaderApproved",true);
// 完成任务
taskService.complete(task.getId(),variables);
}
// 查询已办
@Test
public void taskDoneTest(){
List historicTaskInstanceList =
historyService.createHistoricTaskInstanceQuery()
.processDefinitionKey("leave")
.finished()
.list();
System.out.println("已办任务:"+historicTaskInstanceList.size());
for (HistoricTaskInstance historicTaskInstance:historicTaskInstanceList){
System.out.println("已办任务:TaskName ->" +historicTaskInstance.getName()
+ ",Assignee ->" + historicTaskInstance.getAssignee());
}
}
}



