activiti taskservice addComment Provided id is null

添加注释的时候. 展示发现报错

 

Provided id is null

 

查看源码发现 底层 设置用户用上了

 String userId = Authentication.getAuthenticatedUserId();

 因为之前没有设置, 就报错userId为空了

 

故 解决思路, 在添加附件,添加注释/设置assignee owner 参与者 ,或者移除参与者 操作之前调用如下

Authentication.setAuthenticatedUserId("kermit");

 或者调用 (建议)

identityService.setAuthenticatedUserId("kermit");

 

 

已标记关键词 清除标记
执行退回到上一节点操作时,完成操作执行报错空指针,task的值都取到了啊,执行到taskService.complete 时就报错 ``` try { Map<String, Object> variables; // 取得当前任务.当前任务节点 HistoricTaskInstance currTask = historyService .createHistoricTaskInstanceQuery().taskId(taskId) .singleResult(); // 取得流程实例,流程实例 ProcessInstance instance = runtimeService .createProcessInstanceQuery() .processInstanceId(currTask.getProcessInstanceId()) .singleResult(); if (instance == null) { log.info("流程结束"); log.error("出错啦!流程已经结束"); // return "ERROR"; } variables = instance.getProcessVariables(); // 取得流程定义 ProcessDefinitionEntity definition = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService) .getDeployedProcessDefinition(currTask .getProcessDefinitionId()); if (definition == null) { log.info("流程定义未找到"); log.error("出错啦!流程定义未找到"); // return "ERROR"; } // 取得上一步活动 ActivityImpl currActivity = ((ProcessDefinitionImpl) definition) .findActivity(currTask.getTaskDefinitionKey()); //也就是节点间的连线 List<PvmTransition> nextTransitionList = currActivity .getIncomingTransitions(); // 清除当前活动的出口 List<PvmTransition> oriPvmTransitionList = new ArrayList<PvmTransition>(); //新建一个节点连线关系集合 List<PvmTransition> pvmTransitionList = currActivity .getOutgoingTransitions(); // for (PvmTransition pvmTransition : pvmTransitionList) { oriPvmTransitionList.add(pvmTransition); } pvmTransitionList.clear(); // 建立新出口 List<TransitionImpl> newTransitions = new ArrayList<TransitionImpl>(); for (PvmTransition nextTransition : nextTransitionList) { PvmActivity nextActivity = nextTransition.getSource(); ActivityImpl nextActivityImpl = ((ProcessDefinitionImpl) definition) .findActivity(nextActivity.getId()); TransitionImpl newTransition = currActivity .createOutgoingTransition(); newTransition.setDestination(nextActivityImpl); newTransitions.add(newTransition); } // 完成任务 List<Task> tasks = taskService.createTaskQuery() .processInstanceId(instance.getId()) .taskDefinitionKey(currTask.getTaskDefinitionKey()).list(); for (Task task : tasks) { taskService.complete(task.getId(), variables); // UserInfo user = SessionUtil.getUser(); // Authentication.setAuthenticatedUserId(user.getUserId()+"");//批注人的名称 一定要写,不然查看的时候不知道人物信息 // taskService.addComment(taskId, null, comment);//comment为批注内容 historyService.deleteHistoricTaskInstance(task.getId()); } // 恢复方向 for (TransitionImpl transitionImpl : newTransitions) { currActivity.getOutgoingTransitions().remove(transitionImpl); } for (PvmTransition pvmTransition : oriPvmTransitionList) { pvmTransitionList.add(pvmTransition); } log.info("OK"); log.info("流程结束"); // return "SUCCESS"; } catch (Exception e) { log.error("失败"); log.error(e.getMessage()); // return "ERROR"; } ``` 下面是控制台代码 ``` 2016-09-13 11:51:06|http-bio-8080-exec-10|DEBUG|org.activiti.engine.impl.interceptor.CommandContext.close(CommandContext.java:171)|Error while closing command context java.lang.NullPointerException at org.activiti.engine.impl.bpmn.behavior.BpmnActivityBehavior.performOutgoingBehavior(BpmnActivityBehavior.java:126) at org.activiti.engine.impl.bpmn.behavior.BpmnActivityBehavior.performDefaultOutgoingBehavior(BpmnActivityBehavior.java:66) at org.activiti.engine.impl.bpmn.behavior.FlowNodeActivityBehavior.leave(FlowNodeActivityBehavior.java:44) at org.activiti.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior.leave(AbstractBpmnActivityBehavior.java:47) at org.activiti.engine.impl.bpmn.behavior.UserTaskActivityBehavior.signal(UserTaskActivityBehavior.java:225) at org.activiti.engine.impl.persistence.entity.ExecutionEntity.signal(ExecutionEntity.java:409) at org.activiti.engine.impl.persistence.entity.TaskEntity.complete(TaskEntity.java:203) at org.activiti.engine.impl.cmd.CompleteTaskCmd.execute(CompleteTaskCmd.java:52) at org.activiti.engine.impl.cmd.CompleteTaskCmd.execute(CompleteTaskCmd.java:24) at org.activiti.engine.impl.cmd.NeedsActiveTaskCmd.execute(NeedsActiveTaskCmd.java:59) at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:24) at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:57) at org.activiti.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:47) at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133) at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:45) at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:37) at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40) at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35) at org.activiti.engine.impl.TaskServiceImpl.complete(TaskServiceImpl.java:179) at com.skysoft.irevisit.visit.service.dengji.DengJiService.boHui(DengJiService.java:649) at com.skysoft.irevisit.visit.web.dengji.DengJiController.execute(DengJiController.java:355) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:214) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:748) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:931) ```
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页