package com.imooc.activiti.coreapi;
import com.google.common.collect.Maps;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.repository.DeploymentQuery;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.runtime.ProcessInstanceBuilder;
import org.activiti.engine.task.Attachment;
import org.activiti.engine.task.IdentityLink;
import org.activiti.engine.task.Task;
import org.activiti.engine.test.ActivitiRule;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.junit.Rule;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Map;
/**
* test
**/
public class TaskServiceTest {
private static final Logger LOGGER = LoggerFactory.getLogger(RepositoryServiceTest.class);
@Rule
public ActivitiRule activitiRule = new ActivitiRule();
@Test
@org.activiti.engine.test.Deployment(resources = {"my-process-task.bpmn20.xml"})//部署流程定义文件
public void testTaskService(){
//定义一个空变量
Map<String,Object> variable=Maps.newHashMap();
variable.put("message","my test message");
activitiRule.getRuntimeService()
.startProcessInstanceByKey("my-process",variable);
//创建任务对象
TaskService taskService = activitiRule.getTaskService();
Task task = taskService.createTaskQuery().singleResult();
LOGGER.info("task={}", ToStringBuilder.reflectionToString(task, ToStringStyle.JSON_STYLE));
LOGGER.info("task.description={}", task.getDescription());
//对task设置变量
taskService.setVariable(task.getId(),"key1","value1");
taskService.setVariable(task.getId(),"localkey1","localKey1");
Map<String,Object> taskServiceVariables = taskService.getVariables(task.getId());
Map<String,Object> taskServiceVariablesLocal = taskService.getVariablesLocal(task.getId());
Map<String,Object> processVariables = activitiRule.getRuntimeService().getVariables(task.getExecutionId());
LOGGER.info("taskServiceVariables={}",taskServiceVariables);
LOGGER.info("taskServiceVariableLocal={}",taskServiceVariableLocal);
LOGGER.info("processVariables={}",processVariables);
Map<String,Object> completeVar = Maps.newHashMap();
completeVar.put("cKey1","cValue1");
taskService.complete(task.getId(),completeVar);
//singleResult()表示唯一
Task task1 = taskService.createNativeTaskQuery().taskId(task.getId()).singleResult();
LOGGER.info("task1={}",task1);
}
@Test
@org.activiti.engine.test.Deployment(resources = {"my-process-task.bpmn20.xml"})//部署流程定义文件
public void testTaskServiceUser(){
//定义一个空变量
Map<String,Object> variable=Maps.newHashMap();
variable.put("message","my test message");
activitiRule.getRuntimeService()
.startProcessInstanceByKey("my-process",variable);
//创建任务对象
TaskService taskService = activitiRule.getTaskService();
Task task = taskService.createTaskQuery().singleResult();
LOGGER.info("task={}", ToStringBuilder.reflectionToString(task, ToStringStyle.JSON_STYLE));
LOGGER.info("task.description={}", task.getDescription());
taskService.setOwner(task.getId(),"user1");//指定人
taskService.setAssignee(task.getId(),"ljl");//代办人
List<Task> taskList=taskService
.createTaskQuery()
.taskCandidateUser("ljl")
.taskUnassigned().listPage(0,100);
for(Task task1 : taskList ){
taskService.claim(task1.getId(),"ljl");
}
List<IdentityLink> identityLinkListForTask = taskService.getIdentityLinksForTask(task.getId());
for(IdentityLink identityLink:identityLinkListForTask){
LOGGER.info("identityLink={}",identityLink);
}
List<Task> ljls = taskService.createTaskQuery().taskAssignee("ljl").listPage(0,100);
for(Task ljl:ljls){
Map<String,Object> vars=Maps.newHashMap();
vars.put("ckey1","cvalue1");
taskService.complete(ljl.getId(),vars);
}
ljls = taskService.createTaskQuery().taskAssignee("ljl").listPage(0,100);
LOGGER.info("是否存在{}", CollectionUtils.isEmpty(ljls));
}
/**
* 任务评论
*/
@Test
@org.activiti.engine.test.Deployment(resources = {"my-process-task.bpmn20.xml"})//部署流程定义文件
public void testTaskComment(){
//定义一个空变量
Map<String,Object> variable=Maps.newHashMap();
variable.put("message","my test message");
activitiRule.getRuntimeService()
.startProcessInstanceByKey("my-process",variable);
//创建任务对象
TaskService taskService = activitiRule.getTaskService();
Task task = taskService.createTaskQuery().singleResult();
taskService.setOwner(task.getId(),"user1");
taskService.setAssignee(task.getId(),"ljls");
taskService.addComment(task.getId(),task.getProcessInstanceId());
taskService.addComment(task.getId(),task.getProcessInstanceId());
List<Comment> taskComments = taskService.getTaskAttachments(task.getId());
for(Comment taskComment : testTaskComments){
LOGGER.info("taskComment={}",ToStringBuilder.reflectionToString(taskComment,ToStringStyle.JSON_STYLE));
}
List<Event> taskEvents = taskService.getTaskEvents(task.getId());
for(Event taskEvent:taskEvents){
LOGGER.info("taskEvent={}",ToStringBuilder.reflectionToString(taskEvent,ToStringStyle.JSON_STYLE));
}
}
}