引入依赖pom文件配置就先跳过了

启动时可能会遇到的问题:
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();

/**运行时服务- 运行时服务主要用来开启流程实例,一个流程实例对应多个任务,也就是多个流程节点,
好比如请假审批是一个流程实例,部门主管,部门经理,总经理都是节点,
我们开启服务是通过流程定义key或者流程定义id来开启的 **/
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<Task> taskList = taskService.createTaskQuery()
                .processDefinitionKey("leave")
                .taskAssignee("akko")
                .list();
//        根据当前人未签收的任务
        List<Task> taskList1 = taskService.createTaskQuery()
                .processDefinitionKey("leave")
                .taskCandidateUser("akko")
                .list();
        List<Task> myTaskList = new ArrayList<>();
        myTaskList.addAll(taskList);
        myTaskList.addAll(taskList1);
        assertEquals(1,myTaskList.size());

    }
    //    获取我的待办
    @Test
    public void completeTaskTest(){
//        根据当前人的ID查询
        List<Task> taskList = taskService.createTaskQuery()
                .processDefinitionKey("leave")
                .taskAssignee("akko")
                .list();
//        根据当前人未签收的任务
        List<Task> taskList1 = taskService.createTaskQuery()
                .processDefinitionKey("leave")
                .taskCandidateUser("akko")
                .list();
        List<Task> 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<String,Object> variables = new HashMap<>();
        variables.put("deptLeaderApproved",true);
//        完成任务
        taskService.complete(task.getId(),variables);
    }
//    查询已办
    @Test
    public void taskDoneTest(){
        List<HistoricTaskInstance> 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());
        }

    }
}
Logo

快速构建 Web 应用程序

更多推荐