/* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.activiti.rest.service.api.runtime.task; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.activiti.engine.impl.persistence.entity.TaskEntity; import org.activiti.engine.task.Task; import org.activiti.rest.common.api.DataResponse; import org.activiti.rest.common.api.RequestUtil; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** * @author Tijs Rademakers */ @RestController public class TaskCollectionResource extends TaskBaseResource { @RequestMapping(value="/runtime/tasks", method = RequestMethod.GET, produces="application/json") public DataResponse getTasks(@RequestParam Map<String, String> requestParams, HttpServletRequest httpRequest) { // Create a Task query request TaskQueryRequest request = new TaskQueryRequest(); // Populate filter-parameters if (requestParams.containsKey("name")) { request.setName(requestParams.get("name")); } if (requestParams.containsKey("nameLike")) { request.setNameLike(requestParams.get("nameLike")); } if (requestParams.containsKey("description")) { request.setDescription(requestParams.get("description")); } if (requestParams.containsKey("descriptionLike")) { request.setDescriptionLike(requestParams.get("descriptionLike")); } if (requestParams.containsKey("priority")) { request.setPriority(Integer.valueOf(requestParams.get("priority"))); } if (requestParams.containsKey("minimumPriority")) { request.setMinimumPriority(Integer.valueOf(requestParams.get("minimumPriority"))); } if (requestParams.containsKey("maximumPriority")) { request.setMaximumPriority(Integer.valueOf(requestParams.get("maximumPriority"))); } if (requestParams.containsKey("assignee")) { request.setAssignee(requestParams.get("assignee")); } if (requestParams.containsKey("assigneeLike")) { request.setAssigneeLike(requestParams.get("assigneeLike")); } if (requestParams.containsKey("owner")) { request.setOwner(requestParams.get("owner")); } if (requestParams.containsKey("ownerLike")) { request.setOwnerLike(requestParams.get("ownerLike")); } if (requestParams.containsKey("unassigned")) { request.setUnassigned(Boolean.valueOf(requestParams.get("unassigned"))); } if (requestParams.containsKey("delegationState")) { request.setDelegationState(requestParams.get("delegationState")); } if (requestParams.containsKey("candidateUser")) { request.setCandidateUser(requestParams.get("candidateUser")); } if (requestParams.containsKey("involvedUser")) { request.setInvolvedUser(requestParams.get("involvedUser")); } if (requestParams.containsKey("candidateGroup")) { request.setCandidateGroup(requestParams.get("candidateGroup")); } if (requestParams.containsKey("candidateGroups")) { String[] candidateGroups = requestParams.get("candidateGroups").split(","); List<String> groups = new ArrayList<String>(candidateGroups.length); for (String candidateGroup : candidateGroups) { groups.add(candidateGroup); } request.setCandidateGroupIn(groups); } if (requestParams.containsKey("processDefinitionId")) { request.setProcessDefinitionId(requestParams.get("processDefinitionId")); } if (requestParams.containsKey("processDefinitionKey")) { request.setProcessDefinitionKey(requestParams.get("processDefinitionKey")); } if (requestParams.containsKey("processDefinitionKeyLike")) { request.setProcessDefinitionKeyLike(requestParams.get("processDefinitionKeyLike")); } if (requestParams.containsKey("processDefinitionName")) { request.setProcessDefinitionName(requestParams.get("processDefinitionName")); } if (requestParams.containsKey("processDefinitionNameLike")) { request.setProcessDefinitionNameLike(requestParams.get("processDefinitionNameLike")); } if (requestParams.containsKey("processInstanceId")) { request.setProcessInstanceId(requestParams.get("processInstanceId")); } if (requestParams.containsKey("processInstanceIdIn")) { String[] processInstanceIds = requestParams.get("processInstanceIdIn").split(","); List<String> ids = Arrays.asList(processInstanceIds); request.setProcessInstanceIdIn(ids); } if (requestParams.containsKey("processInstanceBusinessKey")) { request.setProcessInstanceBusinessKey(requestParams.get("processInstanceBusinessKey")); } if (requestParams.containsKey("processInstanceBusinessKeyLike")) { request.setProcessInstanceBusinessKeyLike(requestParams.get("processInstanceBusinessKeyLike")); } if (requestParams.containsKey("executionId")) { request.setExecutionId(requestParams.get("executionId")); } if (requestParams.containsKey("createdOn")) { request.setCreatedOn(RequestUtil.getDate(requestParams, "createdOn")); } if (requestParams.containsKey("createdBefore")) { request.setCreatedBefore(RequestUtil.getDate(requestParams, "createdBefore")); } if (requestParams.containsKey("createdAfter")) { request.setCreatedAfter(RequestUtil.getDate(requestParams, "createdAfter")); } if (requestParams.containsKey("excludeSubTasks")) { request.setExcludeSubTasks(Boolean.valueOf(requestParams.get("excludeSubTasks"))); } if (requestParams.containsKey("taskDefinitionKey")) { request.setTaskDefinitionKey(requestParams.get("taskDefinitionKey")); } if (requestParams.containsKey("taskDefinitionKeyLike")) { request.setTaskDefinitionKeyLike(requestParams.get("taskDefinitionKeyLike")); } if (requestParams.containsKey("dueDate")) { request.setDueDate(RequestUtil.getDate(requestParams, "dueDate")); } if (requestParams.containsKey("dueBefore")) { request.setDueBefore(RequestUtil.getDate(requestParams, "dueBefore")); } if (requestParams.containsKey("dueAfter")) { request.setDueAfter(RequestUtil.getDate(requestParams, "dueAfter")); } if (requestParams.containsKey("active")) { request.setActive(Boolean.valueOf(requestParams.get("active"))); } if (requestParams.containsKey("includeTaskLocalVariables")) { request.setIncludeTaskLocalVariables(Boolean.valueOf(requestParams.get("includeTaskLocalVariables"))); } if (requestParams.containsKey("includeProcessVariables")) { request.setIncludeProcessVariables(Boolean.valueOf(requestParams.get("includeProcessVariables"))); } if (requestParams.containsKey("tenantId")) { request.setTenantId(requestParams.get("tenantId")); } if (requestParams.containsKey("tenantIdLike")) { request.setTenantIdLike(requestParams.get("tenantIdLike")); } if (requestParams.containsKey("withoutTenantId") && Boolean.valueOf(requestParams.get("withoutTenantId"))) { request.setWithoutTenantId(Boolean.TRUE); } if (requestParams.containsKey("candidateOrAssigned")) { request.setCandidateOrAssigned(requestParams.get("candidateOrAssigned")); } if (requestParams.containsKey("category")) { request.setCategory(requestParams.get("category")); } return getTasksFromQueryRequest(request, requestParams); } @RequestMapping(value="/runtime/tasks", method = RequestMethod.POST, produces="application/json") public TaskResponse createTask(@RequestBody TaskRequest taskRequest, HttpServletRequest request, HttpServletResponse response) { Task task = taskService.newTask(); // Populate the task properties based on the request populateTaskFromRequest(task, taskRequest); if (taskRequest.isTenantIdSet()) { ((TaskEntity) task).setTenantId(taskRequest.getTenantId()); } taskService.saveTask(task); response.setStatus(HttpStatus.CREATED.value()); return restResponseFactory.createTaskResponse(task); } }