springboot整合activiti6学习笔记
引入依赖pom文件配置就先跳过了启动时可能会遇到的问题:org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.ruoyi.RuoYiApplication]; nested exception i
·
引入依赖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());
}
}
}
更多推荐
所有评论(0)