/* 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.engine.test.api.task;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.activiti.engine.ActivitiException;
import org.activiti.engine.ActivitiIllegalArgumentException;
import org.activiti.engine.impl.history.HistoryLevel;
import org.activiti.engine.impl.persistence.entity.TaskEntity;
import org.activiti.engine.impl.persistence.entity.VariableInstanceEntity;
import org.activiti.engine.impl.test.PluggableActivitiTestCase;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.DelegationState;
import org.activiti.engine.task.IdentityLinkType;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskQuery;
import org.activiti.engine.test.Deployment;
import com.fasterxml.jackson.databind.node.ObjectNode;
/**
* @author Joram Barrez
* @author Frederik Heremans
* @author Falko Menge
*/
public class TaskQueryTest extends PluggableActivitiTestCase {
private List<String> taskIds;
public void setUp() throws Exception {
identityService.saveUser(identityService.newUser("kermit"));
identityService.saveUser(identityService.newUser("gonzo"));
identityService.saveUser(identityService.newUser("fozzie"));
identityService.saveGroup(identityService.newGroup("management"));
identityService.saveGroup(identityService.newGroup("accountancy"));
identityService.createMembership("kermit", "management");
identityService.createMembership("kermit", "accountancy");
identityService.createMembership("fozzie", "management");
taskIds = generateTestTasks();
}
public void tearDown() throws Exception {
identityService.deleteGroup("accountancy");
identityService.deleteGroup("management");
identityService.deleteUser("fozzie");
identityService.deleteUser("gonzo");
identityService.deleteUser("kermit");
taskService.deleteTasks(taskIds, true);
}
public void testBasicTaskPropertiesNotNull() {
Task task = taskService.createTaskQuery().taskId(taskIds.get(0)).singleResult();
assertNotNull(task.getDescription());
assertNotNull(task.getId());
assertNotNull(task.getName());
assertNotNull(task.getCreateTime());
}
public void testQueryNoCriteria() {
TaskQuery query = taskService.createTaskQuery();
assertEquals(12, query.count());
assertEquals(12, query.list().size());
try {
query.singleResult();
fail("expected exception");
} catch (ActivitiException e) {
// OK
}
}
public void testQueryByTaskId() {
TaskQuery query = taskService.createTaskQuery().taskId(taskIds.get(0));
assertNotNull(query.singleResult());
assertEquals(1, query.list().size());
assertEquals(1, query.count());
}
public void testQueryByTaskIdOr() {
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId(taskIds.get(0))
.taskName("INVALID NAME")
.endOr();
assertNotNull(query.singleResult());
assertEquals(1, query.list().size());
assertEquals(1, query.count());
}
public void testQueryByInvalidTaskId() {
TaskQuery query = taskService.createTaskQuery().taskId("invalid");
assertNull(query.singleResult());
assertEquals(0, query.list().size());
assertEquals(0, query.count());
try {
taskService.createTaskQuery().taskId(null);
fail("expected exception");
} catch (ActivitiIllegalArgumentException e) {
// OK
}
}
public void testQueryByInvalidTaskIdOr() {
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskName("invalid");
assertNull(query.singleResult());
assertEquals(0, query.list().size());
assertEquals(0, query.count());
try {
taskService.createTaskQuery().taskId(null);
fail("expected exception");
} catch (ActivitiIllegalArgumentException e) {
// OK
}
}
public void testQueryByName() {
TaskQuery query = taskService.createTaskQuery().taskName("testTask");
assertEquals(6, query.list().size());
assertEquals(6, query.count());
try {
query.singleResult();
fail("expected exception");
} catch (ActivitiException e) {
// OK
}
}
public void testQueryByNameOr() {
TaskQuery query = taskService.createTaskQuery()
.or()
.taskName("testTask")
.taskId("invalid");
assertEquals(6, query.list().size());
assertEquals(6, query.count());
try {
query.singleResult();
fail("expected exception");
} catch (ActivitiException e) {
// OK
}
}
public void testQueryByInvalidName() {
TaskQuery query = taskService.createTaskQuery().taskName("invalid");
assertNull(query.singleResult());
assertEquals(0, query.list().size());
assertEquals(0, query.count());
try {
taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskName(null).singleResult();
fail("expected exception");
} catch (ActivitiIllegalArgumentException e) {
// OK
}
}
public void testQueryByInvalidNameOr() {
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskName("invalid");
assertNull(query.singleResult());
assertEquals(0, query.list().size());
assertEquals(0, query.count());
try {
taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskName(null).singleResult();
fail("expected exception");
} catch (ActivitiIllegalArgumentException e) {
// OK
}
}
public void testQueryByNameIn() {
final List<String> taskNameList = new ArrayList<String>(2);
taskNameList.add("testTask");
taskNameList.add("gonzoTask");
TaskQuery query = taskService.createTaskQuery().taskNameIn(taskNameList);
assertEquals(7, query.list().size());
assertEquals(7, query.count());
try {
query.singleResult();
fail("expected exception");
} catch (ActivitiException e) {
// OK
}
}
public void testQueryByNameInIgnoreCase() {
final List<String> taskNameList = new ArrayList<String>(2);
taskNameList.add("testtask");
taskNameList.add("gonzotask");
TaskQuery query = taskService.createTaskQuery().taskNameInIgnoreCase(taskNameList);
assertEquals(7, query.list().size());
assertEquals(7, query.count());
try {
query.singleResult();
fail("expected exception");
} catch (ActivitiException e) {
// OK
}
}
public void testQueryByNameInOr() {
final List<String> taskNameList = new ArrayList<String>(2);
taskNameList.add("testTask");
taskNameList.add("gonzoTask");
TaskQuery query = taskService.createTaskQuery()
.or()
.taskNameIn(taskNameList)
.taskId("invalid");
assertEquals(7, query.list().size());
assertEquals(7, query.count());
try {
query.singleResult();
fail("expected exception");
} catch (ActivitiException e) {
// OK
}
}
public void testQueryByNameInIgnoreCaseOr() {
final List<String> taskNameList = new ArrayList<String>(2);
taskNameList.add("testtask");
taskNameList.add("gonzotask");
TaskQuery query = taskService.createTaskQuery()
.or()
.taskNameInIgnoreCase(taskNameList)
.taskId("invalid");
assertEquals(7, query.list().size());
assertEquals(7, query.count());
try {
query.singleResult();
fail("expected exception");
} catch (ActivitiException e) {
// OK
}
}
public void testQueryByInvalidNameIn() {
final List<String> taskNameList = new ArrayList<String>(1);
taskNameList.add("invalid");
TaskQuery query = taskService.createTaskQuery().taskNameIn(taskNameList);
assertEquals(0, query.list().size());
assertEquals(0, query.count());
try {
taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskNameIn(null).singleResult();
fail("expected exception");
} catch (ActivitiIllegalArgumentException e) {
// OK
}
}
public void testQueryByInvalidNameInIgnoreCase() {
final List<String> taskNameList = new ArrayList<String>(1);
taskNameList.add("invalid");
TaskQuery query = taskService.createTaskQuery().taskNameInIgnoreCase(taskNameList);
assertEquals(0, query.list().size());
assertEquals(0, query.count());
try {
taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskNameIn(null).singleResult();
fail("expected exception");
} catch (ActivitiIllegalArgumentException e) {
// OK
}
}
public void testQueryByInvalidNameInOr() {
final List<String> taskNameList = new ArrayList<String>(2);
taskNameList.add("invalid");
TaskQuery query = taskService.createTaskQuery()
.or()
.taskNameIn(taskNameList)
.taskId("invalid");
assertEquals(0, query.list().size());
assertEquals(0, query.count());
try {
taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskNameIn(null).singleResult();
fail("expected exception");
} catch (ActivitiException e) {
// OK
}
}
public void testQueryByInvalidNameInIgnoreCaseOr() {
final List<String> taskNameList = new ArrayList<String>(2);
taskNameList.add("invalid");
TaskQuery query = taskService.createTaskQuery()
.or()
.taskNameInIgnoreCase(taskNameList)
.taskId("invalid");
assertEquals(0, query.list().size());
assertEquals(0, query.count());
try {
taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskNameIn(null).singleResult();
fail("expected exception");
} catch (ActivitiException e) {
// OK
}
}
public void testQueryByNameLike() {
TaskQuery query = taskService.createTaskQuery().taskNameLike("gonzo%");
assertNotNull(query.singleResult());
assertEquals(1, query.list().size());
assertEquals(1, query.count());
}
public void testQueryByNameLikeOr() {
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskNameLike("gonzo%");
assertNotNull(query.singleResult());
assertEquals(1, query.list().size());
assertEquals(1, query.count());
}
public void testQueryByInvalidNameLike() {
TaskQuery query = taskService.createTaskQuery().taskNameLike("1");
assertNull(query.singleResult());
assertEquals(0, query.list().size());
assertEquals(0, query.count());
try {
taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskNameLike(null).singleResult();
fail();
} catch (ActivitiIllegalArgumentException e) { }
}
public void testQueryByInvalidNameLikeOr() {
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskNameLike("1");
assertNull(query.singleResult());
assertEquals(0, query.list().size());
assertEquals(0, query.count());
try {
taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskNameLike(null).singleResult();
fail();
} catch (ActivitiIllegalArgumentException e) { }
}
public void testQueryByDescription() {
TaskQuery query = taskService.createTaskQuery().taskDescription("testTask description");
assertEquals(6, query.list().size());
assertEquals(6, query.count());
try {
query.singleResult();
fail();
} catch (ActivitiException e) {}
}
public void testQueryByDescriptionOr() {
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDescription("testTask description");
assertEquals(6, query.list().size());
assertEquals(6, query.count());
try {
query.singleResult();
fail();
} catch (ActivitiException e) {}
}
public void testQueryByInvalidDescription() {
TaskQuery query = taskService.createTaskQuery().taskDescription("invalid");
assertNull(query.singleResult());
assertEquals(0, query.list().size());
assertEquals(0, query.count());
try {
taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDescription(null).list();
fail();
} catch (ActivitiIllegalArgumentException e) {
}
}
public void testQueryByInvalidDescriptionOr() {
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDescription("invalid");
assertNull(query.singleResult());
assertEquals(0, query.list().size());
assertEquals(0, query.count());
try {
taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDescription(null).list();
fail();
} catch (ActivitiIllegalArgumentException e) {
}
}
public void testQueryByDescriptionLike() {
TaskQuery query = taskService.createTaskQuery().taskDescriptionLike("%gonzo%");
assertNotNull(query.singleResult());
assertEquals(1, query.list().size());
assertEquals(1, query.count());
}
public void testQueryByDescriptionLikeOr() {
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDescriptionLike("%gonzo%");
assertNotNull(query.singleResult());
assertEquals(1, query.list().size());
assertEquals(1, query.count());
}
public void testQueryByInvalidDescriptionLike() {
TaskQuery query = taskService.createTaskQuery().taskDescriptionLike("invalid");
assertNull(query.singleResult());
assertEquals(0, query.list().size());
assertEquals(0, query.count());
try {
taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDescriptionLike(null).list();
fail();
} catch (ActivitiIllegalArgumentException e) {
}
}
public void testQueryByInvalidDescriptionLikeOr() {
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDescriptionLike("invalid");
assertNull(query.singleResult());
assertEquals(0, query.list().size());
assertEquals(0, query.count());
try {
taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDescriptionLike(null).list();
fail();
} catch (ActivitiIllegalArgumentException e) {
}
}
public void testQueryByPriority() {
TaskQuery query = taskService.createTaskQuery().taskPriority(10);
assertEquals(2, query.list().size());
assertEquals(2, query.count());
try {
query.singleResult();
fail();
} catch (ActivitiException e) {}
query = taskService.createTaskQuery().taskPriority(100);
assertNull(query.singleResult());
assertEquals(0, query.list().size());
assertEquals(0, query.count());
query = taskService.createTaskQuery().taskMinPriority(50);
assertEquals(3, query.list().size());
query = taskService.createTaskQuery().taskMinPriority(10);
assertEquals(5, query.list().size());
query = taskService.createTaskQuery().taskMaxPriority(10);
assertEquals(9, query.list().size());
query = taskService.createTaskQuery().taskMaxPriority(3);
assertEquals(6, query.list().size());
}
public void testQueryByPriorityOr() {
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskPriority(10);
assertEquals(2, query.list().size());
assertEquals(2, query.count());
try {
query.singleResult();
fail();
} catch (ActivitiException e) {}
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskPriority(100);
assertNull(query.singleResult());
assertEquals(0, query.list().size());
assertEquals(0, query.count());
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskMinPriority(50);
assertEquals(3, query.list().size());
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskMinPriority(10);
assertEquals(5, query.list().size());
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskMaxPriority(10);
assertEquals(9, query.list().size());
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskMaxPriority(3);
assertEquals(6, query.list().size());
}
public void testQueryByInvalidPriority() {
try {
taskService.createTaskQuery().taskPriority(null);
fail("expected exception");
} catch (ActivitiIllegalArgumentException e) {
// OK
}
}
public void testQueryByInvalidPriorityOr() {
try {
taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskPriority(null);
fail("expected exception");
} catch (ActivitiIllegalArgumentException e) {
// OK
}
}
public void testQueryByAssignee() {
TaskQuery query = taskService.createTaskQuery().taskAssignee("gonzo");
assertEquals(1, query.count());
assertEquals(1, query.list().size());
assertNotNull(query.singleResult());
query = taskService.createTaskQuery().taskAssignee("kermit");
assertEquals(0, query.count());
assertEquals(0, query.list().size());
assertNull(query.singleResult());
}
public void testQueryByAssigneeOr() {
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskAssignee("gonzo");
assertEquals(1, query.count());
assertEquals(1, query.list().size());
assertNotNull(query.singleResult());
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskAssignee("kermit");
assertEquals(0, query.count());
assertEquals(0, query.list().size());
assertNull(query.singleResult());
}
public void testQueryByInvolvedUser() {
try {
Task adhocTask = taskService.newTask();
adhocTask.setAssignee("kermit");
adhocTask.setOwner("fozzie");
taskService.saveTask(adhocTask);
taskService.addUserIdentityLink(adhocTask.getId(), "gonzo", "customType");
assertEquals(3, taskService.getIdentityLinksForTask(adhocTask.getId()).size());
assertEquals(1, taskService.createTaskQuery()
.taskId(adhocTask.getId()).taskInvolvedUser("gonzo").count());
assertEquals(1, taskService.createTaskQuery().taskId(adhocTask.getId()).taskInvolvedUser("kermit").count());
assertEquals(1, taskService.createTaskQuery().taskId(adhocTask.getId()).taskInvolvedUser("fozzie").count());
} finally {
List<Task> allTasks = taskService.createTaskQuery().list();
for(Task task : allTasks) {
if(task.getExecutionId() == null) {
taskService.deleteTask(task.getId());
if(processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) {
historyService.deleteHistoricTaskInstance(task.getId());
}
}
}
}
}
public void testQueryByInvolvedGroup() {
try {
Task adhocTask = taskService.newTask();
adhocTask.setAssignee("kermit");
adhocTask.setOwner("fozzie");
taskService.saveTask(adhocTask);
taskService.addGroupIdentityLink(adhocTask.getId(), "group1", IdentityLinkType.PARTICIPANT);
List<String> groups = new ArrayList<String>();
groups.add("group1");
assertEquals(3, taskService.getIdentityLinksForTask(adhocTask.getId()).size());
assertEquals(1, taskService.createTaskQuery()
.taskId(adhocTask.getId()).taskInvolvedGroupsIn(groups).count());
} finally {
List<Task> allTasks = taskService.createTaskQuery().list();
for(Task task : allTasks) {
if(task.getExecutionId() == null) {
taskService.deleteTask(task.getId());
if(processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) {
historyService.deleteHistoricTaskInstance(task.getId());
}
}
}
}
}
public void testQueryByInvolvedUserOr() {
try {
Task adhocTask = taskService.newTask();
adhocTask.setAssignee("kermit");
adhocTask.setOwner("fozzie");
taskService.saveTask(adhocTask);
taskService.addUserIdentityLink(adhocTask.getId(), "gonzo", "customType");
assertEquals(3, taskService.getIdentityLinksForTask(adhocTask.getId()).size());
assertEquals(1, taskService.createTaskQuery().taskId(adhocTask.getId())
.or()
.taskId("invalid")
.taskInvolvedUser("gonzo").count());
assertEquals(1, taskService.createTaskQuery().taskId(adhocTask.getId())
.or()
.taskId("invalid")
.taskInvolvedUser("kermit").count());
assertEquals(1, taskService.createTaskQuery().taskId(adhocTask.getId())
.or()
.taskId("invalid")
.taskInvolvedUser("fozzie").count());
} finally {
List<Task> allTasks = taskService.createTaskQuery().list();
for(Task task : allTasks) {
if(task.getExecutionId() == null) {
taskService.deleteTask(task.getId());
if(processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) {
historyService.deleteHistoricTaskInstance(task.getId());
}
}
}
}
}
public void testQueryByNullAssignee() {
try {
taskService.createTaskQuery().taskAssignee(null).list();
fail("expected exception");
} catch (ActivitiIllegalArgumentException e) {
// OK
}
}
public void testQueryByNullAssigneeOr() {
try {
taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskAssignee(null).list();
fail("expected exception");
} catch (ActivitiIllegalArgumentException e) {
// OK
}
}
public void testQueryByUnassigned() {
TaskQuery query = taskService.createTaskQuery().taskUnassigned();
assertEquals(11, query.count());
assertEquals(11, query.list().size());
}
public void testQueryByUnassignedOr() {
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskUnassigned();
assertEquals(11, query.count());
assertEquals(11, query.list().size());
}
public void testQueryByCandidateUser() {
TaskQuery query = taskService.createTaskQuery().taskCandidateUser("kermit");
assertEquals(11, query.count());
assertEquals(11, query.list().size());
try {
query.singleResult();
fail("expected exception");
} catch (ActivitiException e) {
// OK
}
query = taskService.createTaskQuery().taskCandidateUser("fozzie");
assertEquals(3, query.count());
assertEquals(3, query.list().size());
try {
query.singleResult();
fail("expected exception");
} catch (ActivitiException e) {
// OK
}
}
public void testQueryByCandidateUserOr() {
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCandidateUser("kermit");
assertEquals(11, query.count());
assertEquals(11, query.list().size());
try {
query.singleResult();
fail("expected exception");
} catch (ActivitiException e) {
// OK
}
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCandidateUser("fozzie");
assertEquals(3, query.count());
assertEquals(3, query.list().size());
try {
query.singleResult();
fail("expected exception");
} catch (ActivitiException e) {
// OK
}
}
public void testQueryByNullCandidateUser() {
try {
taskService.createTaskQuery().taskCandidateUser(null).list();
fail();
} catch(ActivitiIllegalArgumentException e) {}
}
public void testQueryByNullCandidateUserOr() {
try {
taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCandidateUser(null).list();
fail();
} catch(ActivitiIllegalArgumentException e) {}
}
public void testQueryByCandidateGroup() {
TaskQuery query = taskService.createTaskQuery().taskCandidateGroup("management");
assertEquals(3, query.count());
assertEquals(3, query.list().size());
try {
query.singleResult();
fail("expected exception");
} catch (ActivitiException e) {
// OK
}
query = taskService.createTaskQuery().taskCandidateGroup("sales");
assertEquals(0, query.count());
assertEquals(0, query.list().size());
}
public void testQueryByCandidateGroupOr() {
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCandidateGroup("management");
assertEquals(3, query.count());
assertEquals(3, query.list().size());
try {
query.singleResult();
fail("expected exception");
} catch (ActivitiException e) {
// OK
}
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCandidateGroup("sales");
assertEquals(0, query.count());
assertEquals(0, query.list().size());
}
public void testQueryByCandidateOrAssigned() {
TaskQuery query = taskService.createTaskQuery().taskCandidateOrAssigned("kermit");
assertEquals(11, query.count());
List<Task> tasks = query.list();
assertEquals(11, tasks.size());
// if dbIdentityUsed set false in process engine configuration of using custom session factory of GroupIdentityManager
ArrayList<String> candidateGroups = new ArrayList<String>();
candidateGroups.add("management");
candidateGroups.add("accountancy");
candidateGroups.add("noexist");
query = taskService.createTaskQuery().taskCandidateGroupIn(candidateGroups).taskCandidateOrAssigned("kermit");
assertEquals(11, query.count());
tasks = query.list();
assertEquals(11, tasks.size());
query = taskService.createTaskQuery().taskCandidateOrAssigned("fozzie");
assertEquals(3, query.count());
assertEquals(3, query.list().size());
// create a new task that no identity link and assignee to kermit
Task task = taskService.newTask();
task.setName("assigneeToKermit");
task.setDescription("testTask description");
task.setPriority(3);
task.setAssignee("kermit");
taskService.saveTask(task);
query = taskService.createTaskQuery().taskCandidateOrAssigned("kermit");
assertEquals(12, query.count());
tasks = query.list();
assertEquals(12, tasks.size());
Task assigneeToKermit = taskService.createTaskQuery().taskName("assigneeToKermit").singleResult();
taskService.deleteTask(assigneeToKermit.getId());
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) {
historyService.deleteHistoricTaskInstance(assigneeToKermit.getId());
}
}
public void testQueryByCandidateOrAssignedOr() {
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCandidateOrAssigned("kermit");
assertEquals(11, query.count());
List<Task> tasks = query.list();
assertEquals(11, tasks.size());
// if dbIdentityUsed set false in process engine configuration of using custom session factory of GroupIdentityManager
ArrayList<String> candidateGroups = new ArrayList<String>();
candidateGroups.add("management");
candidateGroups.add("accountancy");
candidateGroups.add("noexist");
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCandidateGroupIn(candidateGroups)
.taskCandidateOrAssigned("kermit");
assertEquals(11, query.count());
tasks = query.list();
assertEquals(11, tasks.size());
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCandidateOrAssigned("fozzie");
assertEquals(3, query.count());
assertEquals(3, query.list().size());
// create a new task that no identity link and assignee to kermit
Task task = taskService.newTask();
task.setName("assigneeToKermit");
task.setDescription("testTask description");
task.setPriority(3);
task.setAssignee("kermit");
taskService.saveTask(task);
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCandidateOrAssigned("kermit");
assertEquals(12, query.count());
tasks = query.list();
assertEquals(12, tasks.size());
Task assigneeToKermit = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskName("assigneeToKermit").singleResult();
taskService.deleteTask(assigneeToKermit.getId());
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) {
historyService.deleteHistoricTaskInstance(assigneeToKermit.getId());
}
}
public void testQueryByNullCandidateGroup() {
try {
taskService.createTaskQuery().taskCandidateGroup(null).list();
fail("expected exception");
} catch (ActivitiIllegalArgumentException e) {
// OK
}
}
public void testQueryByNullCandidateGroupOr() {
try {
taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCandidateGroup(null).list();
fail("expected exception");
} catch (ActivitiIllegalArgumentException e) {
// OK
}
}
public void testQueryByCandidateGroupIn() {
List<String> groups = Arrays.asList("management", "accountancy");
TaskQuery query = taskService.createTaskQuery().taskCandidateGroupIn(groups);
assertEquals(5, query.count());
assertEquals(5, query.list().size());
try {
query.singleResult();
fail("expected exception");
} catch (ActivitiException e) {
// OK
}
query = taskService.createTaskQuery().taskCandidateUser("kermit").taskCandidateGroupIn(groups);
assertEquals(11, query.count());
assertEquals(11, query.list().size());
query = taskService.createTaskQuery().taskCandidateUser("kermit").taskCandidateGroup("unexisting");
assertEquals(6, query.count());
assertEquals(6, query.list().size());
query = taskService.createTaskQuery().taskCandidateUser("unexisting").taskCandidateGroup("unexisting");
assertEquals(0, query.count());
assertEquals(0, query.list().size());
// Unexisting groups or groups that don't have candidate tasks shouldn't influence other results
groups = Arrays.asList("management", "accountancy", "sales", "unexising");
query = taskService.createTaskQuery().taskCandidateGroupIn(groups);
assertEquals(5, query.count());
assertEquals(5, query.list().size());
}
public void testQueryByCandidateGroupInOr() {
List<String> groups = Arrays.asList("management", "accountancy");
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCandidateGroupIn(groups);
assertEquals(5, query.count());
assertEquals(5, query.list().size());
try {
query.singleResult();
fail("expected exception");
} catch (ActivitiException e) {
// OK
}
query = taskService.createTaskQuery().or().taskCandidateUser("kermit").taskCandidateGroupIn(groups).endOr();
assertEquals(11, query.count());
assertEquals(11, query.list().size());
query = taskService.createTaskQuery().or().taskCandidateUser("kermit").taskCandidateGroup("unexisting").endOr();
assertEquals(6, query.count());
assertEquals(6, query.list().size());
query = taskService.createTaskQuery().or().taskCandidateUser("unexisting").taskCandidateGroup("unexisting").endOr();
assertEquals(0, query.count());
assertEquals(0, query.list().size());
query = taskService.createTaskQuery().or().taskCandidateUser("kermit").taskCandidateGroupIn(groups).endOr()
.or().taskCandidateUser("gonzo").taskCandidateGroupIn(groups);
assertEquals(5, query.count());
assertEquals(5, query.list().size());
// Unexisting groups or groups that don't have candidate tasks shouldn't influence other results
groups = Arrays.asList("management", "accountancy", "sales", "unexising");
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCandidateGroupIn(groups);
assertEquals(5, query.count());
assertEquals(5, query.list().size());
}
public void testQueryByNullCandidateGroupIn() {
try {
taskService.createTaskQuery().taskCandidateGroupIn(null).list();
fail("expected exception");
} catch (ActivitiIllegalArgumentException e) {
// OK
}
try {
taskService.createTaskQuery().taskCandidateGroupIn(new ArrayList<String>()).list();
fail("expected exception");
} catch (ActivitiIllegalArgumentException e) {
// OK
}
}
public void testQueryByNullCandidateGroupInOr() {
try {
taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCandidateGroupIn(null).list();
fail("expected exception");
} catch (ActivitiIllegalArgumentException e) {
// OK
}
try {
taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCandidateGroupIn(new ArrayList<String>()).list();
fail("expected exception");
} catch (ActivitiIllegalArgumentException e) {
// OK
}
}
public void testQueryByDelegationState() {
TaskQuery query = taskService.createTaskQuery().taskDelegationState(null);
assertEquals(12, query.count());
assertEquals(12, query.list().size());
query = taskService.createTaskQuery().taskDelegationState(DelegationState.PENDING);
assertEquals(0, query.count());
assertEquals(0, query.list().size());
query = taskService.createTaskQuery().taskDelegationState(DelegationState.RESOLVED);
assertEquals(0, query.count());
assertEquals(0, query.list().size());
String taskId= taskService.createTaskQuery().taskAssignee("gonzo").singleResult().getId();
taskService.delegateTask(taskId, "kermit");
query = taskService.createTaskQuery().taskDelegationState(null);
assertEquals(11, query.count());
assertEquals(11, query.list().size());
query = taskService.createTaskQuery().taskDelegationState(DelegationState.PENDING);
assertEquals(1, query.count());
assertEquals(1, query.list().size());
query = taskService.createTaskQuery().taskDelegationState(DelegationState.RESOLVED);
assertEquals(0, query.count());
assertEquals(0, query.list().size());
taskService.resolveTask(taskId);
query = taskService.createTaskQuery().taskDelegationState(null);
assertEquals(11, query.count());
assertEquals(11, query.list().size());
query = taskService.createTaskQuery().taskDelegationState(DelegationState.PENDING);
assertEquals(0, query.count());
assertEquals(0, query.list().size());
query = taskService.createTaskQuery().taskDelegationState(DelegationState.RESOLVED);
assertEquals(1, query.count());
assertEquals(1, query.list().size());
}
public void testQueryByDelegationStateOr() {
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDelegationState(null);
assertEquals(12, query.count());
assertEquals(12, query.list().size());
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDelegationState(DelegationState.PENDING);
assertEquals(0, query.count());
assertEquals(0, query.list().size());
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDelegationState(DelegationState.RESOLVED);
assertEquals(0, query.count());
assertEquals(0, query.list().size());
String taskId= taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskAssignee("gonzo").singleResult().getId();
taskService.delegateTask(taskId, "kermit");
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDelegationState(null);
assertEquals(11, query.count());
assertEquals(11, query.list().size());
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDelegationState(DelegationState.PENDING);
assertEquals(1, query.count());
assertEquals(1, query.list().size());
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDelegationState(DelegationState.RESOLVED);
assertEquals(0, query.count());
assertEquals(0, query.list().size());
taskService.resolveTask(taskId);
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDelegationState(null);
assertEquals(11, query.count());
assertEquals(11, query.list().size());
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDelegationState(DelegationState.PENDING);
assertEquals(0, query.count());
assertEquals(0, query.list().size());
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDelegationState(DelegationState.RESOLVED);
assertEquals(1, query.count());
assertEquals(1, query.list().size());
}
public void testQueryCreatedOn() throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss.SSS");
// Exact matching of createTime, should result in 6 tasks
Date createTime = sdf.parse("01/01/2001 01:01:01.000");
TaskQuery query = taskService.createTaskQuery().taskCreatedOn(createTime);
assertEquals(6, query.count());
assertEquals(6, query.list().size());
}
public void testQueryCreatedOnOr() throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss.SSS");
// Exact matching of createTime, should result in 6 tasks
Date createTime = sdf.parse("01/01/2001 01:01:01.000");
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCreatedOn(createTime);
assertEquals(6, query.count());
assertEquals(6, query.list().size());
}
public void testQueryCreatedBefore() throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss.SSS");
// Should result in 7 tasks
Date before = sdf.parse("03/02/2002 02:02:02.000");
TaskQuery query = taskService.createTaskQuery().taskCreatedBefore(before);
assertEquals(7, query.count());
assertEquals(7, query.list().size());
before = sdf.parse("01/01/2001 01:01:01.000");
query = taskService.createTaskQuery().taskCreatedBefore(before);
assertEquals(0, query.count());
assertEquals(0, query.list().size());
}
public void testQueryCreatedBeforeOr() throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss.SSS");
// Should result in 7 tasks
Date before = sdf.parse("03/02/2002 02:02:02.000");
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCreatedBefore(before);
assertEquals(7, query.count());
assertEquals(7, query.list().size());
before = sdf.parse("01/01/2001 01:01:01.000");
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCreatedBefore(before);
assertEquals(0, query.count());
assertEquals(0, query.list().size());
}
public void testQueryCreatedAfter() throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss.SSS");
// Should result in 3 tasks
Date after = sdf.parse("03/03/2003 03:03:03.000");
TaskQuery query = taskService.createTaskQuery().taskCreatedAfter(after);
assertEquals(3, query.count());
assertEquals(3, query.list().size());
after = sdf.parse("05/05/2005 05:05:05.000");
query = taskService.createTaskQuery().taskCreatedAfter(after);
assertEquals(0, query.count());
assertEquals(0, query.list().size());
}
public void testQueryCreatedAfterOr() throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss.SSS");
// Should result in 3 tasks
Date after = sdf.parse("03/03/2003 03:03:03.000");
TaskQuery query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCreatedAfter(after);
assertEquals(3, query.count());
assertEquals(3, query.list().size());
after = sdf.parse("05/05/2005 05:05:05.000");
query = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskCreatedAfter(after);
assertEquals(0, query.count());
assertEquals(0, query.list().size());
}
@Deployment(resources="org/activiti/engine/test/api/task/taskDefinitionProcess.bpmn20.xml")
public void testTaskDefinitionKey() throws Exception {
// Start process instance, 2 tasks will be available
runtimeService.startProcessInstanceByKey("taskDefinitionKeyProcess");
// 1 task should exist with key "taskKey1"
List<Task> tasks = taskService.createTaskQuery().taskDefinitionKey("taskKey1").list();
assertNotNull(tasks);
assertEquals(1, tasks.size());
assertEquals("taskKey1", tasks.get(0).getTaskDefinitionKey());
// No task should be found with unexisting key
Long count = taskService.createTaskQuery().taskDefinitionKey("unexistingKey").count();
assertEquals(0L, count.longValue());
}
@Deployment(resources="org/activiti/engine/test/api/task/taskDefinitionProcess.bpmn20.xml")
public void testTaskDefinitionKeyOr() throws Exception {
// Start process instance, 2 tasks will be available
runtimeService.startProcessInstanceByKey("taskDefinitionKeyProcess");
// 1 task should exist with key "taskKey1"
List<Task> tasks = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDefinitionKey("taskKey1").list();
assertNotNull(tasks);
assertEquals(1, tasks.size());
assertEquals("taskKey1", tasks.get(0).getTaskDefinitionKey());
// No task should be found with unexisting key
Long count = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDefinitionKey("unexistingKey").count();
assertEquals(0L, count.longValue());
}
@Deployment(resources="org/activiti/engine/test/api/task/taskDefinitionProcess.bpmn20.xml")
public void testTaskDefinitionKeyLike() throws Exception {
// Start process instance, 2 tasks will be available
runtimeService.startProcessInstanceByKey("taskDefinitionKeyProcess");
// Ends with matching, TaskKey1 and TaskKey123 match
List<Task> tasks = taskService.createTaskQuery().taskDefinitionKeyLike("taskKey1%").orderByTaskName().asc().list();
assertNotNull(tasks);
assertEquals(2, tasks.size());
assertEquals("taskKey1", tasks.get(0).getTaskDefinitionKey());
assertEquals("taskKey123", tasks.get(1).getTaskDefinitionKey());
// Starts with matching, TaskKey123 matches
tasks = taskService.createTaskQuery().taskDefinitionKeyLike("%123").orderByTaskName().asc().list();
assertNotNull(tasks);
assertEquals(1, tasks.size());
assertEquals("taskKey123", tasks.get(0).getTaskDefinitionKey());
// Contains matching, TaskKey123 matches
tasks = taskService.createTaskQuery().taskDefinitionKeyLike("%Key12%").orderByTaskName().asc().list();
assertNotNull(tasks);
assertEquals(1, tasks.size());
assertEquals("taskKey123", tasks.get(0).getTaskDefinitionKey());
// No task should be found with unexisting key
Long count = taskService.createTaskQuery().taskDefinitionKeyLike("%unexistingKey%").count();
assertEquals(0L, count.longValue());
}
@Deployment(resources="org/activiti/engine/test/api/task/taskDefinitionProcess.bpmn20.xml")
public void testTaskDefinitionKeyLikeOr() throws Exception {
// Start process instance, 2 tasks will be available
runtimeService.startProcessInstanceByKey("taskDefinitionKeyProcess");
// Ends with matching, TaskKey1 and TaskKey123 match
List<Task> tasks = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDefinitionKeyLike("taskKey1%")
.orderByTaskName().asc().list();
assertNotNull(tasks);
assertEquals(2, tasks.size());
assertEquals("taskKey1", tasks.get(0).getTaskDefinitionKey());
assertEquals("taskKey123", tasks.get(1).getTaskDefinitionKey());
// Starts with matching, TaskKey123 matches
tasks = taskService.createTaskQuery()
.or()
.taskDefinitionKeyLike("%123")
.taskId("invalid")
.orderByTaskName().asc().list();
assertNotNull(tasks);
assertEquals(1, tasks.size());
assertEquals("taskKey123", tasks.get(0).getTaskDefinitionKey());
// Contains matching, TaskKey123 matches
tasks = taskService.createTaskQuery()
.or()
.taskDefinitionKeyLike("%Key12%")
.taskId("invalid")
.orderByTaskName().asc().list();
assertNotNull(tasks);
assertEquals(1, tasks.size());
assertEquals("taskKey123", tasks.get(0).getTaskDefinitionKey());
// No task should be found with unexisting key
Long count = taskService.createTaskQuery()
.or()
.taskId("invalid")
.taskDefinitionKeyLike("%unexistingKey%").count();
assertEquals(0L, count.longValue());
}
@Deployment
public void testTaskVariableValueEquals() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
// No task should be found for an unexisting var
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals("unexistingVar", "value").count());
// Create a map with a variable for all default types
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("longVar", 928374L);
variables.put("shortVar", (short) 123);
variables.put("integerVar", 1234);
variables.put("stringVar", "stringValue");
variables.put("booleanVar", true);
Date date = Calendar.getInstance().getTime();
variables.put("dateVar", date);
variables.put("nullVar", null);
taskService.setVariablesLocal(task.getId(), variables);
// Test query matches
assertEquals(1, taskService.createTaskQuery().taskVariableValueEquals("longVar", 928374L).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueEquals("shortVar", (short) 123).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueEquals("integerVar", 1234).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueEquals("stringVar", "stringValue").count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueEquals("booleanVar", true).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueEquals("dateVar", date).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueEquals("nullVar", null).count());
// Test query for other values on existing variables
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals("longVar", 999L).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals("shortVar", (short) 999).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals("integerVar", 999).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals("stringVar", "999").count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals("booleanVar", false).count());
Calendar otherDate = Calendar.getInstance();
otherDate.add(Calendar.YEAR, 1);
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals("dateVar", otherDate.getTime()).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals("nullVar", "999").count());
// Test query for not equals
assertEquals(1, taskService.createTaskQuery().taskVariableValueNotEquals("longVar", 999L).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueNotEquals("shortVar", (short) 999).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueNotEquals("integerVar", 999).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueNotEquals("stringVar", "999").count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueNotEquals("booleanVar", false).count());
// Test value-only variable equals
assertEquals(1, taskService.createTaskQuery().taskVariableValueEquals(928374L).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueEquals((short) 123).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueEquals(1234).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueEquals("stringValue").count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueEquals(true).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueEquals(date).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueEquals(null).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals(999999L).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals((short) 999).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals(9999).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals("unexistingstringvalue").count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals(false).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals(otherDate.getTime()).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueLike("stringVar", "string%").count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueLike("stringVar", "String%").count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueLike("stringVar", "%Value").count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueGreaterThan("integerVar", 1000).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueGreaterThan("integerVar", 1234).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueGreaterThan("integerVar", 1240).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueGreaterThanOrEqual("integerVar", 1000).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueGreaterThanOrEqual("integerVar", 1234).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueGreaterThanOrEqual("integerVar", 1240).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueLessThan("integerVar", 1240).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueLessThan("integerVar", 1234).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueLessThan("integerVar", 1000).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueLessThanOrEqual("integerVar", 1240).count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueLessThanOrEqual("integerVar", 1234).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueLessThanOrEqual("integerVar", 1000).count());
}
@Deployment(resources= {"org/activiti/engine/test/api/task/TaskQueryTest.testTaskVariableValueEquals.bpmn20.xml"})
public void testTaskVariableValueEqualsOr() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
// No task should be found for an unexisting var
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("unexistingVar", "value").count());
// Create a map with a variable for all default types
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("longVar", 928374L);
variables.put("shortVar", (short) 123);
variables.put("integerVar", 1234);
variables.put("stringVar", "stringValue");
variables.put("booleanVar", true);
Date date = Calendar.getInstance().getTime();
variables.put("dateVar", date);
variables.put("nullVar", null);
taskService.setVariablesLocal(task.getId(), variables);
// Test query matches
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("longVar", 928374L).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("shortVar", (short) 123).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("integerVar", 1234).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("stringVar", "stringValue").count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("booleanVar", true).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("dateVar", date).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("nullVar", null).count());
// Test query for other values on existing variables
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("longVar", 999L).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("shortVar", (short) 999).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("integerVar", 999).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("stringVar", "999").count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("booleanVar", false).count());
Calendar otherDate = Calendar.getInstance();
otherDate.add(Calendar.YEAR, 1);
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("dateVar", otherDate.getTime()).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("nullVar", "999").count());
// Test query for not equals
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueNotEquals("longVar", 999L).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueNotEquals("shortVar", (short) 999).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueNotEquals("integerVar", 999).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueNotEquals("stringVar", "999").count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueNotEquals("booleanVar", false).count());
// Test value-only variable equals
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals(928374L).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals((short) 123).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals(1234).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("stringValue").count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals(true).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals(date).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals(null).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals(999999L).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals((short) 999).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals(9999).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("unexistingstringvalue").count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals(false).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals(otherDate.getTime()).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueLike("stringVar", "string%").count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueLike("stringVar", "String%").count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueLike("stringVar", "%Value").count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueGreaterThan("integerVar", 1000).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueGreaterThan("integerVar", 1234).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueGreaterThan("integerVar", 1240).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueGreaterThanOrEqual("integerVar", 1000).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueGreaterThanOrEqual("integerVar", 1234).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueGreaterThanOrEqual("integerVar", 1240).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueLessThan("integerVar", 1240).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueLessThan("integerVar", 1234).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueLessThan("integerVar", 1000).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueLessThanOrEqual("integerVar", 1240).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueLessThanOrEqual("integerVar", 1234).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueLessThanOrEqual("integerVar", 1000).count());
}
@Deployment
public void testProcessVariableValueEquals() throws Exception {
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("longVar", 928374L);
variables.put("shortVar", (short) 123);
variables.put("integerVar", 1234);
variables.put("stringVar", "stringValue");
variables.put("booleanVar", true);
Date date = Calendar.getInstance().getTime();
variables.put("dateVar", date);
variables.put("nullVar", null);
// Start process-instance with all types of variables
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess", variables);
// Test query matches
assertEquals(1, taskService.createTaskQuery().processVariableValueEquals("longVar", 928374L).count());
assertEquals(1, taskService.createTaskQuery().processVariableValueEquals("shortVar", (short) 123).count());
assertEquals(1, taskService.createTaskQuery().processVariableValueEquals("integerVar", 1234).count());
assertEquals(1, taskService.createTaskQuery().processVariableValueEquals("stringVar", "stringValue").count());
assertEquals(1, taskService.createTaskQuery().processVariableValueEquals("booleanVar", true).count());
assertEquals(1, taskService.createTaskQuery().processVariableValueEquals("dateVar", date).count());
assertEquals(1, taskService.createTaskQuery().processVariableValueEquals("nullVar", null).count());
// Test query for other values on existing variables
assertEquals(0, taskService.createTaskQuery().processVariableValueEquals("longVar", 999L).count());
assertEquals(0, taskService.createTaskQuery().processVariableValueEquals("shortVar", (short) 999).count());
assertEquals(0, taskService.createTaskQuery().processVariableValueEquals("integerVar", 999).count());
assertEquals(0, taskService.createTaskQuery().processVariableValueEquals("stringVar", "999").count());
assertEquals(0, taskService.createTaskQuery().processVariableValueEquals("booleanVar", false).count());
Calendar otherDate = Calendar.getInstance();
otherDate.add(Calendar.YEAR, 1);
assertEquals(0, taskService.createTaskQuery().processVariableValueEquals("dateVar", otherDate.getTime()).count());
assertEquals(0, taskService.createTaskQuery().processVariableValueEquals("nullVar", "999").count());
// Test querying for task variables don't match the process-variables
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals("longVar", 928374L).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals("shortVar", (short) 123).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals("integerVar", 1234).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals("stringVar", "stringValue").count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals("booleanVar", true).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals("dateVar", date).count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals("nullVar", null).count());
// Test querying for task variables not equals
assertEquals(1, taskService.createTaskQuery().processVariableValueNotEquals("longVar", 999L).count());
assertEquals(1, taskService.createTaskQuery().processVariableValueNotEquals("shortVar", (short) 999).count());
assertEquals(1, taskService.createTaskQuery().processVariableValueNotEquals("integerVar", 999).count());
assertEquals(1, taskService.createTaskQuery().processVariableValueNotEquals("stringVar", "999").count());
assertEquals(1, taskService.createTaskQuery().processVariableValueNotEquals("booleanVar", false).count());
// and query for the existing variable with NOT shoudl result in nothing found:
assertEquals(0, taskService.createTaskQuery().processVariableValueNotEquals("longVar", 928374L).count());
// Test value-only variable equals
assertEquals(1, taskService.createTaskQuery().processVariableValueEquals(928374L).count());
assertEquals(1, taskService.createTaskQuery().processVariableValueEquals((short) 123).count());
assertEquals(1, taskService.createTaskQuery().processVariableValueEquals(1234).count());
assertEquals(1, taskService.createTaskQuery().processVariableValueEquals("stringValue").count());
assertEquals(1, taskService.createTaskQuery().processVariableValueEquals(true).count());
assertEquals(1, taskService.createTaskQuery().processVariableValueEquals(date).count());
assertEquals(1, taskService.createTaskQuery().processVariableValueEquals(null).count());
assertEquals(0, taskService.createTaskQuery().processVariableValueEquals(999999L).count());
assertEquals(0, taskService.createTaskQuery().processVariableValueEquals((short) 999).count());
assertEquals(0, taskService.createTaskQuery().processVariableValueEquals(9999).count());
assertEquals(0, taskService.createTaskQuery().processVariableValueEquals("unexistingstringvalue").count());
assertEquals(0, taskService.createTaskQuery().processVariableValueEquals(false).count());
assertEquals(0, taskService.createTaskQuery().processVariableValueEquals(otherDate.getTime()).count());
// Test combination of task-variable and process-variable
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
taskService.setVariableLocal(task.getId(), "taskVar", "theValue");
taskService.setVariableLocal(task.getId(), "longVar", 928374L);
assertEquals(1, taskService.createTaskQuery()
.processVariableValueEquals("longVar", 928374L)
.taskVariableValueEquals("taskVar", "theValue")
.count());
assertEquals(1, taskService.createTaskQuery()
.processVariableValueEquals("longVar", 928374L)
.taskVariableValueEquals("longVar", 928374L)
.count());
assertEquals(1, taskService.createTaskQuery()
.processVariableValueEquals(928374L)
.taskVariableValueEquals("theValue")
.count());
assertEquals(1, taskService.createTaskQuery()
.processVariableValueEquals(928374L)
.taskVariableValueEquals(928374L)
.count());
}
@Deployment(resources= {"org/activiti/engine/test/api/task/TaskQueryTest.testProcessVariableValueEquals.bpmn20.xml"})
public void testProcessVariableValueEqualsOn() throws Exception {
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("longVar", 928374L);
variables.put("shortVar", (short) 123);
variables.put("integerVar", 1234);
variables.put("stringVar", "stringValue");
variables.put("booleanVar", true);
Date date = Calendar.getInstance().getTime();
variables.put("dateVar", date);
variables.put("nullVar", null);
// Start process-instance with all types of variables
runtimeService.startProcessInstanceByKey("oneTaskProcess", variables);
// Test query matches
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals("longVar", 928374L).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals("shortVar", (short) 123).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals("integerVar", 1234).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals("stringVar", "stringValue").count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals("booleanVar", true).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals("dateVar", date).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals("nullVar", null).count());
// Test query for other values on existing variables
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals("longVar", 999L).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals("shortVar", (short) 999).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals("integerVar", 999).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals("stringVar", "999").count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals("booleanVar", false).count());
Calendar otherDate = Calendar.getInstance();
otherDate.add(Calendar.YEAR, 1);
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals("dateVar", otherDate.getTime()).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals("nullVar", "999").count());
// Test querying for task variables don't match the process-variables
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("longVar", 928374L).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("shortVar", (short) 123).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("integerVar", 1234).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("stringVar", "stringValue").count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("booleanVar", true).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("dateVar", date).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").taskVariableValueEquals("nullVar", null).count());
// Test querying for task variables not equals
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueNotEquals("longVar", 999L).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueNotEquals("shortVar", (short) 999).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueNotEquals("integerVar", 999).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueNotEquals("stringVar", "999").count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueNotEquals("booleanVar", false).count());
// and query for the existing variable with NOT shoudl result in nothing found:
assertEquals(0, taskService.createTaskQuery().processVariableValueNotEquals("longVar", 928374L).count());
// Test value-only variable equals
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals(928374L).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals((short) 123).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals(1234).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals("stringValue").count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals(true).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals(date).count());
assertEquals(1, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals(null).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals(999999L).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals((short) 999).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals(9999).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals("unexistingstringvalue").count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals(false).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").processVariableValueEquals(otherDate.getTime()).count());
}
@Deployment(resources="org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml")
public void testVariableValueEqualsIgnoreCase() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
assertNotNull(task);
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("mixed", "AzerTY");
variables.put("upper", "AZERTY");
variables.put("lower", "azerty");
taskService.setVariablesLocal(task.getId(), variables);
assertEquals(1, taskService.createTaskQuery().taskVariableValueEqualsIgnoreCase("mixed", "azerTY").count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueEqualsIgnoreCase("mixed", "azerty").count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEqualsIgnoreCase("mixed", "uiop").count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueEqualsIgnoreCase("upper", "azerTY").count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueEqualsIgnoreCase("upper", "azerty").count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEqualsIgnoreCase("upper", "uiop").count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueEqualsIgnoreCase("lower", "azerTY").count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueEqualsIgnoreCase("lower", "azerty").count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueEqualsIgnoreCase("lower", "uiop").count());
// Test not-equals
assertEquals(0, taskService.createTaskQuery().taskVariableValueNotEqualsIgnoreCase("mixed", "azerTY").count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueNotEqualsIgnoreCase("mixed", "azerty").count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueNotEqualsIgnoreCase("mixed", "uiop").count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueNotEqualsIgnoreCase("upper", "azerTY").count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueNotEqualsIgnoreCase("upper", "azerty").count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueNotEqualsIgnoreCase("upper", "uiop").count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueNotEqualsIgnoreCase("lower", "azerTY").count());
assertEquals(0, taskService.createTaskQuery().taskVariableValueNotEqualsIgnoreCase("lower", "azerty").count());
assertEquals(1, taskService.createTaskQuery().taskVariableValueNotEqualsIgnoreCase("lower", "uiop").count());
}
@Deployment(resources="org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml")
public void testProcessVariableValueEqualsIgnoreCase() throws Exception {
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("mixed", "AzerTY");
variables.put("upper", "AZERTY");
variables.put("lower", "azerty");
runtimeService.startProcessInstanceByKey("oneTaskProcess", variables);
assertEquals(1, taskService.createTaskQuery().processVariableValueEqualsIgnoreCase("mixed", "azerTY").count());
assertEquals(1, taskService.createTaskQuery().processVariableValueEqualsIgnoreCase("mixed", "azerty").count());
assertEquals(0, taskService.createTaskQuery().processVariableValueEqualsIgnoreCase("mixed", "uiop").count());
assertEquals(1, taskService.createTaskQuery().processVariableValueEqualsIgnoreCase("upper", "azerTY").count());
assertEquals(1, taskService.createTaskQuery().processVariableValueEqualsIgnoreCase("upper", "azerty").count());
assertEquals(0, taskService.createTaskQuery().processVariableValueEqualsIgnoreCase("upper", "uiop").count());
assertEquals(1, taskService.createTaskQuery().processVariableValueEqualsIgnoreCase("lower", "azerTY").count());
assertEquals(1, taskService.createTaskQuery().processVariableValueEqualsIgnoreCase("lower", "azerty").count());
assertEquals(0, taskService.createTaskQuery().processVariableValueEqualsIgnoreCase("lower", "uiop").count());
}
@Deployment(resources="org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml")
public void testProcessVariableValueLike() throws Exception {
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("mixed", "AzerTY");
runtimeService.startProcessInstanceByKey("oneTaskProcess", variables);
assertEquals(1, taskService.createTaskQuery().processVariableValueLike("mixed", "Azer%").count());
assertEquals(1, taskService.createTaskQuery().processVariableValueLike("mixed", "A%").count());
assertEquals(0, taskService.createTaskQuery().processVariableValueLike("mixed", "a%").count());
}
@Deployment(resources="org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml")
public void testProcessVariableValueLikeIgnoreCase() throws Exception {
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("mixed", "AzerTY");
runtimeService.startProcessInstanceByKey("oneTaskProcess", variables);
assertEquals(1, taskService.createTaskQuery().processVariableValueLikeIgnoreCase("mixed", "azer%").count());
assertEquals(1, taskService.createTaskQuery().processVariableValueLikeIgnoreCase("mixed", "a%").count());
assertEquals(0, taskService.createTaskQuery().processVariableValueLikeIgnoreCase("mixed", "Azz%").count());
}
@Deployment(resources="org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml")
public void testProcessVariableValueGreaterThan() throws Exception {
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("number", 10);
runtimeService.startProcessInstanceByKey("oneTaskProcess", variables);
assertEquals(1, taskService.createTaskQuery().processVariableValueGreaterThan("number", 5).count());
assertEquals(0, taskService.createTaskQuery().processVariableValueGreaterThan("number", 10).count());
}
@Deployment(resources="org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml")
public void testProcessVariableValueGreaterThanOrEquals() throws Exception {
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("number", 10);
runtimeService.startProcessInstanceByKey("oneTaskProcess", variables);
assertEquals(1, taskService.createTaskQuery().processVariableValueGreaterThanOrEqual("number", 5).count());
assertEquals(1, taskService.createTaskQuery().processVariableValueGreaterThanOrEqual("number", 10).count());
assertEquals(0, taskService.createTaskQuery().processVariableValueGreaterThanOrEqual("number", 11).count());
}
@Deployment(resources="org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml")
public void testProcessVariableValueLessThan() throws Exception {
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("number", 10);
runtimeService.startProcessInstanceByKey("oneTaskProcess", variables);
assertEquals(1, taskService.createTaskQuery().processVariableValueLessThan("number", 12).count());
assertEquals(0, taskService.createTaskQuery().processVariableValueLessThan("number", 10).count());
}
@Deployment(resources="org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml")
public void testProcessVariableValueLessThanOrEquals() throws Exception {
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("number", 10);
runtimeService.startProcessInstanceByKey("oneTaskProcess", variables);
assertEquals(1, taskService.createTaskQuery().processVariableValueLessThanOrEqual("number", 12).count());
assertEquals(1, taskService.createTaskQuery().processVariableValueLessThanOrEqual("number", 10).count());
assertEquals(0, taskService.createTaskQuery().processVariableValueLessThanOrEqual("number", 8).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessDefinitionId() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
List<Task> tasks = taskService.createTaskQuery().processDefinitionId(processInstance.getProcessDefinitionId()).list();
assertEquals(1, tasks.size());
assertEquals(processInstance.getId(), tasks.get(0).getProcessInstanceId());
assertEquals(0, taskService.createTaskQuery().processDefinitionId("unexisting").count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessDefinitionIdOr() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
List<Task> tasks = taskService.createTaskQuery()
.or()
.taskId("invalid")
.processDefinitionId(processInstance.getProcessDefinitionId()).list();
assertEquals(1, tasks.size());
assertEquals(processInstance.getId(), tasks.get(0).getProcessInstanceId());
tasks = taskService.createTaskQuery()
.or()
.taskId("invalid")
.processDefinitionId(processInstance.getProcessDefinitionId())
.endOr()
.or()
.processDefinitionKey("oneTaskProcess")
.processDefinitionId("invalid")
.endOr()
.list();
assertEquals(1, tasks.size());
assertEquals(processInstance.getId(), tasks.get(0).getProcessInstanceId());
assertEquals(0, taskService.createTaskQuery()
.or()
.taskId("invalid")
.processDefinitionId("unexisting").count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessDefinitionKey() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
List<Task> tasks = taskService.createTaskQuery().processDefinitionKey("oneTaskProcess").list();
assertEquals(1, tasks.size());
assertEquals(processInstance.getId(), tasks.get(0).getProcessInstanceId());
assertEquals(0, taskService.createTaskQuery().processDefinitionKey("unexisting").count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessDefinitionKeyOr() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
List<Task> tasks = taskService.createTaskQuery()
.or()
.taskId("invalid")
.processDefinitionKey("oneTaskProcess").list();
assertEquals(1, tasks.size());
assertEquals(processInstance.getId(), tasks.get(0).getProcessInstanceId());
assertEquals(0, taskService.createTaskQuery()
.or()
.taskId("invalid")
.processDefinitionKey("unexisting").count());
assertEquals(1, taskService.createTaskQuery()
.or()
.taskId(taskIds.get(0))
.processDefinitionKey("unexisting").endOr().count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessDefinitionKeyIn() throws Exception {
runtimeService.startProcessInstanceByKey("oneTaskProcess");
List<String> includeIds = new ArrayList<String>();
assertEquals(13, taskService.createTaskQuery().processDefinitionKeyIn(includeIds).count());
includeIds.add("unexisting");
assertEquals(0, taskService.createTaskQuery().processDefinitionKeyIn(includeIds).count());
includeIds.add("oneTaskProcess");
assertEquals(1, taskService.createTaskQuery().processDefinitionKeyIn(includeIds).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessDefinitionKeyInOr() throws Exception {
runtimeService.startProcessInstanceByKey("oneTaskProcess");
List<String> includeIds = new ArrayList<String>();
assertEquals(0, taskService.createTaskQuery()
.or().taskId("invalid")
.processDefinitionKeyIn(includeIds)
.count());
includeIds.add("unexisting");
assertEquals(0, taskService.createTaskQuery()
.or().taskId("invalid")
.processDefinitionKeyIn(includeIds)
.count());
includeIds.add("oneTaskProcess");
assertEquals(1, taskService.createTaskQuery()
.or().taskId("invalid")
.processDefinitionKeyIn(includeIds)
.count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessDefinitionName() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
List<Task> tasks = taskService.createTaskQuery().processDefinitionName("The One Task Process").list();
assertEquals(1, tasks.size());
assertEquals(processInstance.getId(), tasks.get(0).getProcessInstanceId());
assertEquals(0, taskService.createTaskQuery().processDefinitionName("unexisting").count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessDefinitionNameOr() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
List<Task> tasks = taskService.createTaskQuery()
.or()
.taskId("invalid")
.processDefinitionName("The One Task Process").list();
assertEquals(1, tasks.size());
assertEquals(processInstance.getId(), tasks.get(0).getProcessInstanceId());
assertEquals(0, taskService.createTaskQuery()
.or()
.taskId("invalid")
.processDefinitionName("unexisting").count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessCategoryIn() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
final Task task = taskService.createTaskQuery().processCategoryIn(Collections.singletonList("Examples")).singleResult();
assertNotNull(task);
assertEquals("theTask", task.getTaskDefinitionKey());
assertEquals(processInstance.getId(), task.getProcessInstanceId());
assertEquals(0, taskService.createTaskQuery().processCategoryIn(Collections.singletonList("unexisting")).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessCategoryInOr() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
Task task = taskService.createTaskQuery()
.or()
.taskId("invalid")
.processCategoryIn(Collections.singletonList("Examples")).singleResult();
assertNotNull(task);
assertEquals("theTask", task.getTaskDefinitionKey());
assertEquals(processInstance.getId(), task.getProcessInstanceId());
task = taskService.createTaskQuery()
.or()
.taskId("invalid")
.processCategoryIn(Collections.singletonList("Examples"))
.endOr()
.or()
.taskId(task.getId())
.processCategoryIn(Collections.singletonList("Examples2"))
.endOr()
.singleResult();
assertNotNull(task);
assertEquals("theTask", task.getTaskDefinitionKey());
assertEquals(processInstance.getId(), task.getProcessInstanceId());
assertEquals(0, taskService.createTaskQuery()
.or()
.taskId("invalid")
.processCategoryIn(Collections.singletonList("unexisting")).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessCategoryNotIn() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
final Task task = taskService.createTaskQuery().processCategoryNotIn(Collections.singletonList("unexisting")).singleResult();
assertNotNull(task);
assertEquals("theTask", task.getTaskDefinitionKey());
assertEquals(processInstance.getId(), task.getProcessInstanceId());
assertEquals(0, taskService.createTaskQuery().processCategoryNotIn(Collections.singletonList("Examples")).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessCategoryNotInOr() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
final Task task = taskService.createTaskQuery()
.or()
.taskId("invalid")
.processCategoryNotIn(Collections.singletonList("unexisting")).singleResult();
assertNotNull(task);
assertEquals("theTask", task.getTaskDefinitionKey());
assertEquals(processInstance.getId(), task.getProcessInstanceId());
assertEquals(0, taskService.createTaskQuery()
.or()
.taskId("invalid")
.processCategoryNotIn(Collections.singletonList("Examples")).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessInstanceIdIn() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
final Task task = taskService.createTaskQuery().processInstanceIdIn(Arrays.asList(processInstance.getId())).singleResult();
assertNotNull(task);
assertEquals("theTask", task.getTaskDefinitionKey());
assertEquals(processInstance.getId(), task.getProcessInstanceId());
assertEquals(0, taskService.createTaskQuery().processInstanceIdIn(Arrays.asList("unexisting")).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessInstanceIdInOr() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
final Task task = taskService.createTaskQuery()
.or()
.taskId("invalid")
.processInstanceIdIn(Arrays.asList(processInstance.getId())).singleResult();
assertNotNull(task);
assertEquals("theTask", task.getTaskDefinitionKey());
assertEquals(processInstance.getId(), task.getProcessInstanceId());
assertEquals(0, taskService.createTaskQuery()
.or()
.taskId("invalid")
.processInstanceIdIn(Arrays.asList("unexisting")).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessInstanceIdInMultiple() throws Exception {
ProcessInstance processInstance1 = runtimeService.startProcessInstanceByKey("oneTaskProcess");
ProcessInstance processInstance2 = runtimeService.startProcessInstanceByKey("oneTaskProcess");
assertEquals(2, taskService.createTaskQuery().processInstanceIdIn(Arrays.asList(processInstance1.getId(), processInstance2.getId())).count());
assertEquals(2, taskService.createTaskQuery().processInstanceIdIn(Arrays.asList(processInstance1.getId(), processInstance2.getId(), "unexisting")).count());
assertEquals(0, taskService.createTaskQuery().processInstanceIdIn(Arrays.asList("unexisting1", "unexisting2")).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessInstanceIdInOrMultiple() throws Exception {
ProcessInstance processInstance1 = runtimeService.startProcessInstanceByKey("oneTaskProcess");
ProcessInstance processInstance2 = runtimeService.startProcessInstanceByKey("oneTaskProcess");
assertEquals(2, taskService.createTaskQuery().or().taskId("invalid").processInstanceIdIn(Arrays.asList(processInstance1.getId(), processInstance2.getId())).count());
assertEquals(2, taskService.createTaskQuery().or().taskId("invalid").processInstanceIdIn(Arrays.asList(processInstance1.getId(), processInstance2.getId(), "unexisting")).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").processInstanceIdIn(Arrays.asList("unexisting1", "unexisting2")).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessInstanceBusinessKey() throws Exception {
runtimeService.startProcessInstanceByKey("oneTaskProcess", "BUSINESS-KEY-1");
assertEquals(1, taskService.createTaskQuery().processDefinitionName("The One Task Process").processInstanceBusinessKey("BUSINESS-KEY-1").list().size());
assertEquals(1, taskService.createTaskQuery().processInstanceBusinessKey("BUSINESS-KEY-1").list().size());
assertEquals(0, taskService.createTaskQuery().processInstanceBusinessKey("NON-EXISTING").count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessInstanceBusinessKeyOr() throws Exception {
runtimeService.startProcessInstanceByKey("oneTaskProcess", "BUSINESS-KEY-1");
assertEquals(1, taskService.createTaskQuery().processDefinitionName("The One Task Process")
.or()
.taskId("invalid")
.processInstanceBusinessKey("BUSINESS-KEY-1").list().size());
assertEquals(1, taskService.createTaskQuery()
.or()
.taskId("invalid")
.processInstanceBusinessKey("BUSINESS-KEY-1").list().size());
assertEquals(0, taskService.createTaskQuery()
.or()
.taskId("invalid")
.processInstanceBusinessKey("NON-EXISTING").count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testTaskDueDate() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
// Set due-date on task
Date dueDate = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss").parse("01/02/2003 01:12:13");
task.setDueDate(dueDate);
taskService.saveTask(task);
assertEquals(1, taskService.createTaskQuery().processInstanceId(processInstance.getId()).taskDueDate(dueDate).count());
Calendar otherDate = Calendar.getInstance();
otherDate.add(Calendar.YEAR, 1);
assertEquals(0, taskService.createTaskQuery().processInstanceId(processInstance.getId()).taskDueDate(otherDate.getTime()).count());
Calendar priorDate = Calendar.getInstance();
priorDate.setTime(dueDate);
priorDate.roll(Calendar.YEAR, -1);
assertEquals(1, taskService.createTaskQuery().processInstanceId(processInstance.getId()).taskDueAfter(priorDate.getTime())
.count());
assertEquals(1, taskService.createTaskQuery().processInstanceId(processInstance.getId())
.taskDueBefore(otherDate.getTime()).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testTaskDueDateOr() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
// Set due-date on task
Date dueDate = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss").parse("01/02/2003 01:12:13");
task.setDueDate(dueDate);
taskService.saveTask(task);
assertEquals(1, taskService.createTaskQuery().processInstanceId(processInstance.getId())
.or()
.taskId("invalid")
.taskDueDate(dueDate).count());
Calendar otherDate = Calendar.getInstance();
otherDate.add(Calendar.YEAR, 1);
assertEquals(0, taskService.createTaskQuery().processInstanceId(processInstance.getId())
.or()
.taskId("invalid")
.taskDueDate(otherDate.getTime()).count());
Calendar priorDate = Calendar.getInstance();
priorDate.setTime(dueDate);
priorDate.roll(Calendar.YEAR, -1);
assertEquals(1, taskService.createTaskQuery().processInstanceId(processInstance.getId())
.or()
.taskId("invalid")
.taskDueAfter(priorDate.getTime())
.count());
assertEquals(1, taskService.createTaskQuery().processInstanceId(processInstance.getId())
.taskDueBefore(otherDate.getTime()).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testTaskDueBefore() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
// Set due-date on task
Calendar dueDateCal = Calendar.getInstance();
task.setDueDate(dueDateCal.getTime());
taskService.saveTask(task);
Calendar oneHourAgo = Calendar.getInstance();
oneHourAgo.setTime(dueDateCal.getTime());
oneHourAgo.add(Calendar.HOUR, -1);
Calendar oneHourLater = Calendar.getInstance();
oneHourLater.setTime(dueDateCal.getTime());
oneHourLater.add(Calendar.HOUR, 1);
assertEquals(1, taskService.createTaskQuery().processInstanceId(processInstance.getId()).taskDueBefore(oneHourLater.getTime()).count());
assertEquals(0, taskService.createTaskQuery().processInstanceId(processInstance.getId()).taskDueBefore(oneHourAgo.getTime()).count());
// Update due-date to null, shouldn't show up anymore in query that matched before
task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
task.setDueDate(null);
taskService.saveTask(task);
assertEquals(0, taskService.createTaskQuery().processInstanceId(processInstance.getId()).taskDueBefore(oneHourLater.getTime()).count());
assertEquals(0, taskService.createTaskQuery().processInstanceId(processInstance.getId()).taskDueBefore(oneHourAgo.getTime()).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testTaskDueBeforeOr() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
// Set due-date on task
Calendar dueDateCal = Calendar.getInstance();
task.setDueDate(dueDateCal.getTime());
taskService.saveTask(task);
Calendar oneHourAgo = Calendar.getInstance();
oneHourAgo.setTime(dueDateCal.getTime());
oneHourAgo.add(Calendar.HOUR, -1);
Calendar oneHourLater = Calendar.getInstance();
oneHourLater.setTime(dueDateCal.getTime());
oneHourLater.add(Calendar.HOUR, 1);
assertEquals(1, taskService.createTaskQuery().processInstanceId(processInstance.getId())
.or()
.taskId("invalid")
.taskDueBefore(oneHourLater.getTime()).count());
assertEquals(0, taskService.createTaskQuery().processInstanceId(processInstance.getId())
.or()
.taskId("invalid")
.taskDueBefore(oneHourAgo.getTime()).count());
// Update due-date to null, shouldn't show up anymore in query that matched before
task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
task.setDueDate(null);
taskService.saveTask(task);
assertEquals(0, taskService.createTaskQuery().processInstanceId(processInstance.getId())
.or()
.taskId("invalid")
.taskDueBefore(oneHourLater.getTime()).count());
assertEquals(0, taskService.createTaskQuery().processInstanceId(processInstance.getId())
.or()
.taskId("invalid")
.taskDueBefore(oneHourAgo.getTime()).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testTaskDueAfter() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
// Set due-date on task
Calendar dueDateCal = Calendar.getInstance();
task.setDueDate(dueDateCal.getTime());
taskService.saveTask(task);
Calendar oneHourAgo = Calendar.getInstance();
oneHourAgo.setTime(dueDateCal.getTime());
oneHourAgo.add(Calendar.HOUR, -1);
Calendar oneHourLater = Calendar.getInstance();
oneHourLater.setTime(dueDateCal.getTime());
oneHourLater.add(Calendar.HOUR, 1);
assertEquals(1, taskService.createTaskQuery().processInstanceId(processInstance.getId()).taskDueAfter(oneHourAgo.getTime()).count());
assertEquals(0, taskService.createTaskQuery().processInstanceId(processInstance.getId()).taskDueAfter(oneHourLater.getTime()).count());
// Update due-date to null, shouldn't show up anymore in query that matched before
task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
task.setDueDate(null);
taskService.saveTask(task);
assertEquals(0, taskService.createTaskQuery().processInstanceId(processInstance.getId()).taskDueAfter(oneHourLater.getTime()).count());
assertEquals(0, taskService.createTaskQuery().processInstanceId(processInstance.getId()).taskDueAfter(oneHourAgo.getTime()).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testTaskDueAfterOn() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
// Set due-date on task
Calendar dueDateCal = Calendar.getInstance();
task.setDueDate(dueDateCal.getTime());
taskService.saveTask(task);
Calendar oneHourAgo = Calendar.getInstance();
oneHourAgo.setTime(dueDateCal.getTime());
oneHourAgo.add(Calendar.HOUR, -1);
Calendar oneHourLater = Calendar.getInstance();
oneHourLater.setTime(dueDateCal.getTime());
oneHourLater.add(Calendar.HOUR, 1);
assertEquals(1, taskService.createTaskQuery().processInstanceId(processInstance.getId())
.or()
.taskId("invalid")
.taskDueAfter(oneHourAgo.getTime()).count());
assertEquals(0, taskService.createTaskQuery().processInstanceId(processInstance.getId())
.or()
.taskId("invalid")
.taskDueAfter(oneHourLater.getTime()).count());
// Update due-date to null, shouldn't show up anymore in query that matched before
task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
task.setDueDate(null);
taskService.saveTask(task);
assertEquals(0, taskService.createTaskQuery().processInstanceId(processInstance.getId())
.or()
.taskId("invalid")
.taskDueAfter(oneHourLater.getTime()).count());
assertEquals(0, taskService.createTaskQuery().processInstanceId(processInstance.getId())
.or()
.taskId("invalid")
.taskDueAfter(oneHourAgo.getTime()).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testTaskWithoutDueDate() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).withoutTaskDueDate().singleResult();
// Set due-date on task
Date dueDate = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss").parse("01/02/2003 01:12:13");
task.setDueDate(dueDate);
taskService.saveTask(task);
assertEquals(0, taskService.createTaskQuery().processInstanceId(processInstance.getId()).withoutTaskDueDate().count());
task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
// Clear due-date on task
task.setDueDate(null);
taskService.saveTask(task);
assertEquals(1, taskService.createTaskQuery().processInstanceId(processInstance.getId()).withoutTaskDueDate().count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testTaskWithoutDueDateOr() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId())
.or()
.taskId("invalid")
.withoutTaskDueDate().singleResult();
// Set due-date on task
Date dueDate = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss").parse("01/02/2003 01:12:13");
task.setDueDate(dueDate);
taskService.saveTask(task);
assertEquals(0, taskService.createTaskQuery().processInstanceId(processInstance.getId())
.or()
.taskId("invalid")
.withoutTaskDueDate().count());
task = taskService.createTaskQuery().processInstanceId(processInstance.getId())
.singleResult();
// Clear due-date on task
task.setDueDate(null);
taskService.saveTask(task);
assertEquals(1, taskService.createTaskQuery().processInstanceId(processInstance.getId())
.or()
.taskId("invalid")
.withoutTaskDueDate().count());
}
public void testQueryPaging() {
TaskQuery query = taskService.createTaskQuery().taskCandidateUser("kermit");
assertEquals(11, query.listPage(0, Integer.MAX_VALUE).size());
// Verifying the un-paged results
assertEquals(11, query.count());
assertEquals(11, query.list().size());
// Verifying paged results
assertEquals(2, query.listPage(0, 2).size());
assertEquals(2, query.listPage(2, 2).size());
assertEquals(3, query.listPage(4, 3).size());
assertEquals(1, query.listPage(10, 3).size());
assertEquals(1, query.listPage(10, 1).size());
// Verifying odd usages
assertEquals(0, query.listPage(-1, -1).size());
assertEquals(0, query.listPage(11, 2).size()); // 10 is the last index with a result
assertEquals(11, query.listPage(0, 15).size()); // there are only 11 tasks
}
public void testQuerySorting() {
assertEquals(12, taskService.createTaskQuery().orderByTaskId().asc().list().size());
assertEquals(12, taskService.createTaskQuery().orderByTaskName().asc().list().size());
assertEquals(12, taskService.createTaskQuery().orderByTaskPriority().asc().list().size());
assertEquals(12, taskService.createTaskQuery().orderByTaskAssignee().asc().list().size());
assertEquals(12, taskService.createTaskQuery().orderByTaskDescription().asc().list().size());
assertEquals(12, taskService.createTaskQuery().orderByProcessInstanceId().asc().list().size());
assertEquals(12, taskService.createTaskQuery().orderByExecutionId().asc().list().size());
assertEquals(12, taskService.createTaskQuery().orderByTaskCreateTime().asc().list().size());
assertEquals(12, taskService.createTaskQuery().orderByTaskDueDate().asc().list().size());
assertEquals(12, taskService.createTaskQuery().orderByTaskId().desc().list().size());
assertEquals(12, taskService.createTaskQuery().orderByTaskName().desc().list().size());
assertEquals(12, taskService.createTaskQuery().orderByTaskPriority().desc().list().size());
assertEquals(12, taskService.createTaskQuery().orderByTaskAssignee().desc().list().size());
assertEquals(12, taskService.createTaskQuery().orderByTaskDescription().desc().list().size());
assertEquals(12, taskService.createTaskQuery().orderByProcessInstanceId().desc().list().size());
assertEquals(12, taskService.createTaskQuery().orderByExecutionId().desc().list().size());
assertEquals(12, taskService.createTaskQuery().orderByTaskCreateTime().desc().list().size());
assertEquals(12, taskService.createTaskQuery().orderByTaskDueDate().desc().list().size());
assertEquals(6, taskService.createTaskQuery().orderByTaskId().taskName("testTask").asc().list().size());
assertEquals(6, taskService.createTaskQuery().orderByTaskId().taskName("testTask").desc().list().size());
}
public void testNativeQueryPaging() {
assertEquals("ACT_RU_TASK", managementService.getTableName(Task.class));
assertEquals("ACT_RU_TASK", managementService.getTableName(TaskEntity.class));
assertEquals(5, taskService.createNativeTaskQuery().sql("SELECT * FROM " + managementService.getTableName(Task.class)).listPage(0, 5).size());
assertEquals(2, taskService.createNativeTaskQuery().sql("SELECT * FROM " + managementService.getTableName(Task.class)).listPage(10, 12).size());
}
public void testNativeQuery() {
assertEquals("ACT_RU_TASK", managementService.getTableName(Task.class));
assertEquals("ACT_RU_TASK", managementService.getTableName(TaskEntity.class));
assertEquals(12, taskService.createNativeTaskQuery().sql("SELECT * FROM " + managementService.getTableName(Task.class)).list().size());
assertEquals(12, taskService.createNativeTaskQuery().sql("SELECT count(*) FROM " + managementService.getTableName(Task.class)).count());
assertEquals(144, taskService.createNativeTaskQuery().sql("SELECT count(*) FROM ACT_RU_TASK T1, ACT_RU_TASK T2").count());
// join task and variable instances
assertEquals(1, taskService.createNativeTaskQuery().sql("SELECT count(*) FROM " + managementService.getTableName(Task.class) + " T1, " + managementService.getTableName(VariableInstanceEntity.class)+" V1 WHERE V1.TASK_ID_ = T1.ID_").count());
List<Task> tasks = taskService.createNativeTaskQuery().sql("SELECT * FROM " + managementService.getTableName(Task.class) + " T1, " + managementService.getTableName(VariableInstanceEntity.class)+" V1 WHERE V1.TASK_ID_ = T1.ID_").list();
assertEquals(1, tasks.size());
assertEquals("gonzoTask", tasks.get(0).getName());
// select with distinct
assertEquals(12, taskService.createNativeTaskQuery().sql("SELECT DISTINCT T1.* FROM ACT_RU_TASK T1").list().size());
assertEquals(1, taskService.createNativeTaskQuery().sql("SELECT count(*) FROM " + managementService.getTableName(Task.class) + " T WHERE T.NAME_ = 'gonzoTask'").count());
assertEquals(1, taskService.createNativeTaskQuery().sql("SELECT * FROM " + managementService.getTableName(Task.class) + " T WHERE T.NAME_ = 'gonzoTask'").list().size());
// use parameters
assertEquals(1, taskService.createNativeTaskQuery().sql("SELECT count(*) FROM " + managementService.getTableName(Task.class) + " T WHERE T.NAME_ = #{taskName}").parameter("taskName", "gonzoTask").count());
}
/**
* Test confirming fix for ACT-1731
*/
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testIncludeBinaryVariables() throws Exception {
// Start process with a binary variable
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess",
Collections.singletonMap("binaryVariable", (Object)"It is I, le binary".getBytes()));
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
assertNotNull(task);
taskService.setVariableLocal(task.getId(), "binaryTaskVariable", (Object)"It is I, le binary".getBytes());
// Query task, including processVariables
task = taskService.createTaskQuery().taskId(task.getId()).includeProcessVariables().singleResult();
assertNotNull(task);
assertNotNull(task.getProcessVariables());
byte[] bytes = (byte[]) task.getProcessVariables().get("binaryVariable");
assertEquals("It is I, le binary", new String(bytes));
// Query task, including taskVariables
task = taskService.createTaskQuery().taskId(task.getId()).includeTaskLocalVariables().singleResult();
assertNotNull(task);
assertNotNull(task.getTaskLocalVariables());
bytes = (byte[]) task.getTaskLocalVariables().get("binaryTaskVariable");
assertEquals("It is I, le binary", new String(bytes));
}
/**
* Test confirming fix for ACT-1731
*/
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testIncludeBinaryVariablesOr() throws Exception {
// Start process with a binary variable
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess",
Collections.singletonMap("binaryVariable", (Object)"It is I, le binary".getBytes()));
Task task = taskService.createTaskQuery()
.or()
.taskName("invalid")
.processInstanceId(processInstance.getId()).singleResult();
assertNotNull(task);
taskService.setVariableLocal(task.getId(), "binaryTaskVariable", (Object)"It is I, le binary".getBytes());
// Query task, including processVariables
task = taskService.createTaskQuery()
.or()
.taskName("invalid")
.taskId(task.getId()).includeProcessVariables().singleResult();
assertNotNull(task);
assertNotNull(task.getProcessVariables());
byte[] bytes = (byte[]) task.getProcessVariables().get("binaryVariable");
assertEquals("It is I, le binary", new String(bytes));
// Query task, including taskVariables
task = taskService.createTaskQuery()
.or()
.taskName("invalid")
.taskId(task.getId()).includeTaskLocalVariables().singleResult();
assertNotNull(task);
assertNotNull(task.getTaskLocalVariables());
bytes = (byte[]) task.getTaskLocalVariables().get("binaryTaskVariable");
assertEquals("It is I, le binary", new String(bytes));
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testQueryByDeploymentId() throws Exception {
org.activiti.engine.repository.Deployment deployment = repositoryService.createDeploymentQuery().singleResult();
runtimeService.startProcessInstanceByKey("oneTaskProcess");
assertNotNull(taskService.createTaskQuery().deploymentId(deployment.getId()).singleResult());
assertEquals(1, taskService.createTaskQuery().deploymentId(deployment.getId()).count());
assertNull(taskService.createTaskQuery().deploymentId("invalid").singleResult());
assertEquals(0, taskService.createTaskQuery().deploymentId("invalid").count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testQueryByDeploymentIdOr() throws Exception {
org.activiti.engine.repository.Deployment deployment = repositoryService.createDeploymentQuery().singleResult();
runtimeService.startProcessInstanceByKey("oneTaskProcess");
assertNotNull(taskService.createTaskQuery()
.or()
.taskId("invalid")
.deploymentId(deployment.getId()).singleResult());
assertEquals(1, taskService.createTaskQuery()
.or()
.taskId("invalid")
.deploymentId(deployment.getId()).count());
assertNull(taskService.createTaskQuery().deploymentId("invalid").singleResult());
assertEquals(0, taskService.createTaskQuery()
.or()
.taskId("invalid")
.deploymentId("invalid").count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testQueryByDeploymentIdIn() throws Exception {
org.activiti.engine.repository.Deployment deployment = repositoryService.createDeploymentQuery().singleResult();
runtimeService.startProcessInstanceByKey("oneTaskProcess");
List<String> deploymentIds = new ArrayList<String>();
deploymentIds.add(deployment.getId());
assertNotNull(taskService.createTaskQuery().deploymentIdIn(deploymentIds).singleResult());
assertEquals(1, taskService.createTaskQuery().deploymentIdIn(deploymentIds).count());
deploymentIds.add("invalid");
assertNotNull(taskService.createTaskQuery().deploymentIdIn(deploymentIds).singleResult());
assertEquals(1, taskService.createTaskQuery().deploymentIdIn(deploymentIds).count());
deploymentIds = new ArrayList<String>();
deploymentIds.add("invalid");
assertNull(taskService.createTaskQuery().deploymentIdIn(deploymentIds).singleResult());
assertEquals(0, taskService.createTaskQuery().deploymentIdIn(deploymentIds).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testQueryByDeploymentIdInOr() throws Exception {
org.activiti.engine.repository.Deployment deployment = repositoryService.createDeploymentQuery().singleResult();
runtimeService.startProcessInstanceByKey("oneTaskProcess");
List<String> deploymentIds = new ArrayList<String>();
deploymentIds.add(deployment.getId());
assertNotNull(taskService.createTaskQuery()
.or()
.taskId("invalid")
.deploymentIdIn(deploymentIds).singleResult());
assertEquals(1, taskService.createTaskQuery()
.or()
.taskId("invalid")
.deploymentIdIn(deploymentIds).count());
deploymentIds.add("invalid");
assertNotNull(taskService.createTaskQuery()
.or()
.taskId("invalid")
.deploymentIdIn(deploymentIds).singleResult());
assertEquals(1, taskService.createTaskQuery()
.or()
.taskId("invalid")
.deploymentIdIn(deploymentIds).count());
deploymentIds = new ArrayList<String>();
deploymentIds.add("invalid");
assertNull(taskService.createTaskQuery().deploymentIdIn(deploymentIds).singleResult());
assertEquals(0, taskService.createTaskQuery()
.or()
.taskId("invalid")
.deploymentIdIn(deploymentIds).count());
}
public void testQueryByTaskNameLikeIgnoreCase() {
// Runtime
assertEquals(12, taskService.createTaskQuery().taskNameLikeIgnoreCase("%task%").count());
assertEquals(12, taskService.createTaskQuery().taskNameLikeIgnoreCase("%Task%").count());
assertEquals(12, taskService.createTaskQuery().taskNameLikeIgnoreCase("%TASK%").count());
assertEquals(12, taskService.createTaskQuery().taskNameLikeIgnoreCase("%TasK%").count());
assertEquals(1, taskService.createTaskQuery().taskNameLikeIgnoreCase("gonzo%").count());
assertEquals(1, taskService.createTaskQuery().taskNameLikeIgnoreCase("%Gonzo%").count());
assertEquals(0, taskService.createTaskQuery().taskNameLikeIgnoreCase("Task%").count());
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) {
// History
assertEquals(12, historyService.createHistoricTaskInstanceQuery().taskNameLikeIgnoreCase("%task%").count());
assertEquals(12, historyService.createHistoricTaskInstanceQuery().taskNameLikeIgnoreCase("%Task%").count());
assertEquals(12, historyService.createHistoricTaskInstanceQuery().taskNameLikeIgnoreCase("%TASK%").count());
assertEquals(12, historyService.createHistoricTaskInstanceQuery().taskNameLikeIgnoreCase("%TasK%").count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskNameLikeIgnoreCase("gonzo%").count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskNameLikeIgnoreCase("%Gonzo%").count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskNameLikeIgnoreCase("Task%").count());
}
}
public void testQueryByTaskNameOrDescriptionLikeIgnoreCase() {
// Runtime
assertEquals(12, taskService.createTaskQuery()
.or()
.taskNameLikeIgnoreCase("%task%")
.taskDescriptionLikeIgnoreCase("%task%")
.endOr()
.count());
assertEquals(9, taskService.createTaskQuery()
.or()
.taskNameLikeIgnoreCase("ACCOUN%")
.taskDescriptionLikeIgnoreCase("%ESCR%")
.endOr()
.count());
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) {
// History
assertEquals(12, historyService.createHistoricTaskInstanceQuery()
.or()
.taskNameLikeIgnoreCase("%task%")
.taskDescriptionLikeIgnoreCase("%task%")
.endOr()
.count());
assertEquals(9, historyService.createHistoricTaskInstanceQuery()
.or()
.taskNameLikeIgnoreCase("ACCOUN%")
.taskDescriptionLikeIgnoreCase("%ESCR%")
.endOr()
.count());
}
}
public void testQueryByTaskDescriptionLikeIgnoreCase() {
// Runtime
assertEquals(6, taskService.createTaskQuery().taskDescriptionLikeIgnoreCase("%task%").count());
assertEquals(6, taskService.createTaskQuery().taskDescriptionLikeIgnoreCase("%Task%").count());
assertEquals(6, taskService.createTaskQuery().taskDescriptionLikeIgnoreCase("%TASK%").count());
assertEquals(6, taskService.createTaskQuery().taskDescriptionLikeIgnoreCase("%TaSk%").count());
assertEquals(0, taskService.createTaskQuery().taskDescriptionLikeIgnoreCase("task%").count());
assertEquals(1, taskService.createTaskQuery().taskDescriptionLikeIgnoreCase("gonzo%").count());
assertEquals(1, taskService.createTaskQuery().taskDescriptionLikeIgnoreCase("Gonzo%").count());
assertEquals(0, taskService.createTaskQuery().taskDescriptionLikeIgnoreCase("%manage%").count());
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) {
// History
assertEquals(6, historyService.createHistoricTaskInstanceQuery().taskDescriptionLikeIgnoreCase("%task%").count());
assertEquals(6, historyService.createHistoricTaskInstanceQuery().taskDescriptionLikeIgnoreCase("%Task%").count());
assertEquals(6, historyService.createHistoricTaskInstanceQuery().taskDescriptionLikeIgnoreCase("%TASK%").count());
assertEquals(6, historyService.createHistoricTaskInstanceQuery().taskDescriptionLikeIgnoreCase("%TaSk%").count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskDescriptionLikeIgnoreCase("task%").count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskDescriptionLikeIgnoreCase("gonzo%").count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskDescriptionLikeIgnoreCase("Gonzo%").count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskDescriptionLikeIgnoreCase("%manage%").count());
}
}
public void testQueryByAssigneeLikeIgnoreCase() {
// Runtime
assertEquals(1, taskService.createTaskQuery().taskAssigneeLikeIgnoreCase("%gonzo%").count());
assertEquals(1, taskService.createTaskQuery().taskAssigneeLikeIgnoreCase("%GONZO%").count());
assertEquals(1, taskService.createTaskQuery().taskAssigneeLikeIgnoreCase("%Gon%").count());
assertEquals(1, taskService.createTaskQuery().taskAssigneeLikeIgnoreCase("gon%").count());
assertEquals(1, taskService.createTaskQuery().taskAssigneeLikeIgnoreCase("%nzo%").count());
assertEquals(0, taskService.createTaskQuery().taskAssigneeLikeIgnoreCase("%doesnotexist%").count());
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) {
// History
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskAssigneeLikeIgnoreCase("%gonzo%").count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskAssigneeLikeIgnoreCase("%GONZO%").count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskAssigneeLikeIgnoreCase("%Gon%").count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskAssigneeLikeIgnoreCase("gon%").count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskAssigneeLikeIgnoreCase("%nzo%").count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskAssigneeLikeIgnoreCase("%doesnotexist%").count());
}
}
public void testQueryByOwnerLikeIgnoreCase() {
// Runtime
assertEquals(6, taskService.createTaskQuery().taskOwnerLikeIgnoreCase("%gonzo%").count());
assertEquals(6, taskService.createTaskQuery().taskOwnerLikeIgnoreCase("%GONZO%").count());
assertEquals(6, taskService.createTaskQuery().taskOwnerLikeIgnoreCase("%Gon%").count());
assertEquals(6, taskService.createTaskQuery().taskOwnerLikeIgnoreCase("gon%").count());
assertEquals(6, taskService.createTaskQuery().taskOwnerLikeIgnoreCase("%nzo%").count());
assertEquals(0, taskService.createTaskQuery().taskOwnerLikeIgnoreCase("%doesnotexist%").count());
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) {
// History
assertEquals(6, historyService.createHistoricTaskInstanceQuery().taskOwnerLikeIgnoreCase("%gonzo%").count());
assertEquals(6, historyService.createHistoricTaskInstanceQuery().taskOwnerLikeIgnoreCase("%GONZO%").count());
assertEquals(6, historyService.createHistoricTaskInstanceQuery().taskOwnerLikeIgnoreCase("%Gon%").count());
assertEquals(6, historyService.createHistoricTaskInstanceQuery().taskOwnerLikeIgnoreCase("gon%").count());
assertEquals(6, historyService.createHistoricTaskInstanceQuery().taskOwnerLikeIgnoreCase("%nzo%").count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskOwnerLikeIgnoreCase("%doesnotexist%").count());
}
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testQueryByBusinessKeyLikeIgnoreCase() {
runtimeService.startProcessInstanceByKey("oneTaskProcess", "BUSINESS-KEY-1");
runtimeService.startProcessInstanceByKey("oneTaskProcess", "Business-Key-2");
runtimeService.startProcessInstanceByKey("oneTaskProcess", "KeY-3");
// Runtime
assertEquals(3, taskService.createTaskQuery().processInstanceBusinessKeyLikeIgnoreCase("%key%").count());
assertEquals(3, taskService.createTaskQuery().processInstanceBusinessKeyLikeIgnoreCase("%KEY%").count());
assertEquals(3, taskService.createTaskQuery().processInstanceBusinessKeyLikeIgnoreCase("%EY%").count());
assertEquals(2, taskService.createTaskQuery().processInstanceBusinessKeyLikeIgnoreCase("%business%").count());
assertEquals(2, taskService.createTaskQuery().processInstanceBusinessKeyLikeIgnoreCase("business%").count());
assertEquals(0, taskService.createTaskQuery().processInstanceBusinessKeyLikeIgnoreCase("%doesnotexist%").count());
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) {
// History
assertEquals(3, historyService.createHistoricTaskInstanceQuery().processInstanceBusinessKeyLikeIgnoreCase("%key%").count());
assertEquals(3, historyService.createHistoricTaskInstanceQuery().processInstanceBusinessKeyLikeIgnoreCase("%KEY%").count());
assertEquals(3, historyService.createHistoricTaskInstanceQuery().processInstanceBusinessKeyLikeIgnoreCase("%EY%").count());
assertEquals(2, historyService.createHistoricTaskInstanceQuery().processInstanceBusinessKeyLikeIgnoreCase("%business%").count());
assertEquals(2, historyService.createHistoricTaskInstanceQuery().processInstanceBusinessKeyLikeIgnoreCase("business%").count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().processInstanceBusinessKeyLikeIgnoreCase("%doesnotexist%").count());
}
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testQueryByProcessDefinitionKeyLikeIgnoreCase() {
// Runtime
runtimeService.startProcessInstanceByKey("oneTaskProcess");
runtimeService.startProcessInstanceByKey("oneTaskProcess");
runtimeService.startProcessInstanceByKey("oneTaskProcess");
runtimeService.startProcessInstanceByKey("oneTaskProcess");
assertEquals(4, taskService.createTaskQuery().processDefinitionKeyLikeIgnoreCase("%one%").count());
assertEquals(4, taskService.createTaskQuery().processDefinitionKeyLikeIgnoreCase("%ONE%").count());
assertEquals(4, taskService.createTaskQuery().processDefinitionKeyLikeIgnoreCase("ON%").count());
assertEquals(0, taskService.createTaskQuery().processDefinitionKeyLikeIgnoreCase("%fake%").count());
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) {
// History
assertEquals(4, historyService.createHistoricTaskInstanceQuery().processDefinitionKeyLikeIgnoreCase("%one%").count());
assertEquals(4, historyService.createHistoricTaskInstanceQuery().processDefinitionKeyLikeIgnoreCase("%ONE%").count());
assertEquals(4, historyService.createHistoricTaskInstanceQuery().processDefinitionKeyLikeIgnoreCase("ON%").count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().processDefinitionKeyLikeIgnoreCase("%fake%").count());
}
}
public void testCombinationOfOrAndLikeIgnoreCase() {
// Runtime
assertEquals(12, taskService.createTaskQuery()
.or()
.taskNameLikeIgnoreCase("%task%")
.taskDescriptionLikeIgnoreCase("%desc%")
.taskAssigneeLikeIgnoreCase("Gonz%")
.taskOwnerLike("G%")
.endOr()
.count());
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) {
// History
assertEquals(12, historyService.createHistoricTaskInstanceQuery()
.or()
.taskNameLikeIgnoreCase("%task%")
.taskDescriptionLikeIgnoreCase("%desc%")
.taskAssigneeLikeIgnoreCase("Gonz%")
.taskOwnerLike("G%")
.endOr()
.count());
}
}
// Test for https://activiti.atlassian.net/browse/ACT-2103
public void testTaskLocalAndProcessInstanceVariableEqualsInOr() {
deployOneTaskTestProcess();
for (int i=0; i<10; i++) {
runtimeService.startProcessInstanceByKey("oneTaskProcess");
}
List<Task> allTasks = taskService.createTaskQuery().processDefinitionKey("oneTaskProcess").list();
assertEquals(10, allTasks.size());
// Give two tasks a task local variable
taskService.setVariableLocal(allTasks.get(0).getId(), "localVar", "someValue");
taskService.setVariableLocal(allTasks.get(1).getId(), "localVar", "someValue");
// Give three tasks a proc inst var
runtimeService.setVariable(allTasks.get(2).getProcessInstanceId(), "var", "theValue");
runtimeService.setVariable(allTasks.get(3).getProcessInstanceId(), "var", "theValue");
runtimeService.setVariable(allTasks.get(4).getProcessInstanceId(), "var", "theValue");
assertEquals(2, taskService.createTaskQuery().taskVariableValueEquals("localVar", "someValue").list().size());
assertEquals(3, taskService.createTaskQuery().processVariableValueEquals("var", "theValue").list().size());
assertEquals(5, taskService.createTaskQuery().or()
.taskVariableValueEquals("localVar", "someValue")
.processVariableValueEquals("var", "theValue")
.endOr().list().size());
assertEquals(5, taskService.createTaskQuery()
.or()
.taskVariableValueEquals("localVar", "someValue")
.processVariableValueEquals("var", "theValue")
.endOr()
.or()
.processDefinitionKey("oneTaskProcess")
.processDefinitionId("notexisting")
.endOr()
.list()
.size());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testLocalizeTasks() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
List<Task> tasks = taskService.createTaskQuery().processDefinitionId(processInstance.getProcessDefinitionId()).list();
assertEquals(1, tasks.size());
assertEquals("my task", tasks.get(0).getName());
assertEquals("My Task Description", tasks.get(0).getDescription());
tasks = taskService.createTaskQuery().processDefinitionId(processInstance.getProcessDefinitionId()).locale("es").list();
assertEquals(1, tasks.size());
assertEquals("Mi Tarea", tasks.get(0).getName());
assertEquals("Mi Tarea Descripción", tasks.get(0).getDescription());
ObjectNode infoNode = dynamicBpmnService.getProcessDefinitionInfo(processInstance.getProcessDefinitionId());
dynamicBpmnService.changeLocalizationName("en-GB", "theTask", "My 'en-GB' localized name", infoNode);
dynamicBpmnService.changeLocalizationDescription("en-GB", "theTask", "My 'en-GB' localized description", infoNode);
dynamicBpmnService.saveProcessDefinitionInfo(processInstance.getProcessDefinitionId(), infoNode);
dynamicBpmnService.changeLocalizationName("en", "theTask", "My 'en' localized name", infoNode);
dynamicBpmnService.changeLocalizationDescription("en", "theTask", "My 'en' localized description", infoNode);
dynamicBpmnService.saveProcessDefinitionInfo(processInstance.getProcessDefinitionId(), infoNode);
tasks = taskService.createTaskQuery().processDefinitionId(processInstance.getProcessDefinitionId()).list();
assertEquals(1, tasks.size());
assertEquals("my task", tasks.get(0).getName());
assertEquals("My Task Description", tasks.get(0).getDescription());
tasks = taskService.createTaskQuery().processDefinitionId(processInstance.getProcessDefinitionId()).locale("es").list();
assertEquals(1, tasks.size());
assertEquals("Mi Tarea", tasks.get(0).getName());
assertEquals("Mi Tarea Descripción", tasks.get(0).getDescription());
tasks = taskService.createTaskQuery().processDefinitionId(processInstance.getProcessDefinitionId()).locale("en-GB").list();
assertEquals(1, tasks.size());
assertEquals("My 'en-GB' localized name", tasks.get(0).getName());
assertEquals("My 'en-GB' localized description", tasks.get(0).getDescription());
tasks = taskService.createTaskQuery().processDefinitionId(processInstance.getProcessDefinitionId()).listPage(0, 10);
assertEquals(1, tasks.size());
assertEquals("my task", tasks.get(0).getName());
assertEquals("My Task Description", tasks.get(0).getDescription());
tasks = taskService.createTaskQuery().processDefinitionId(processInstance.getProcessDefinitionId()).locale("es").listPage(0, 10);
assertEquals(1, tasks.size());
assertEquals("Mi Tarea", tasks.get(0).getName());
assertEquals("Mi Tarea Descripción", tasks.get(0).getDescription());
tasks = taskService.createTaskQuery().processDefinitionId(processInstance.getProcessDefinitionId()).locale("en-GB").listPage(0, 10);
assertEquals(1, tasks.size());
assertEquals("My 'en-GB' localized name", tasks.get(0).getName());
assertEquals("My 'en-GB' localized description", tasks.get(0).getDescription());
Task task = taskService.createTaskQuery().processDefinitionId(processInstance.getProcessDefinitionId()).singleResult();
assertEquals("my task", task.getName());
assertEquals("My Task Description", task.getDescription());
task = taskService.createTaskQuery().processDefinitionId(processInstance.getProcessDefinitionId()).locale("es").singleResult();
assertEquals("Mi Tarea", task.getName());
assertEquals("Mi Tarea Descripción", task.getDescription());
task = taskService.createTaskQuery().processDefinitionId(processInstance.getProcessDefinitionId()).locale("en-GB").singleResult();
assertEquals("My 'en-GB' localized name", task.getName());
assertEquals("My 'en-GB' localized description", task.getDescription());
task = taskService.createTaskQuery().processDefinitionId(processInstance.getProcessDefinitionId()).singleResult();
assertEquals("my task", task.getName());
assertEquals("My Task Description", task.getDescription());
task = taskService.createTaskQuery().processDefinitionId(processInstance.getProcessDefinitionId()).locale("en").singleResult();
assertEquals("My 'en' localized name", task.getName());
assertEquals("My 'en' localized description", task.getDescription());
task = taskService.createTaskQuery().processDefinitionId(processInstance.getProcessDefinitionId()).locale("en-AU").withLocalizationFallback().singleResult();
assertEquals("My 'en' localized name", task.getName());
assertEquals("My 'en' localized description", task.getDescription());
}
/**
* Generates some test tasks. - 6 tasks where kermit is a candidate - 1 tasks
* where gonzo is assignee - 2 tasks assigned to management group - 2 tasks
* assigned to accountancy group - 1 task assigned to both the management and
* accountancy group
*/
private List<String> generateTestTasks() throws Exception {
List<String> ids = new ArrayList<String>();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss.SSS");
// 6 tasks for kermit
processEngineConfiguration.getClock().setCurrentTime(sdf.parse("01/01/2001 01:01:01.000"));
for (int i = 0; i < 6; i++) {
Task task = taskService.newTask();
task.setName("testTask");
task.setDescription("testTask description");
task.setOwner("gonzo");
task.setPriority(3);
taskService.saveTask(task);
ids.add(task.getId());
taskService.addCandidateUser(task.getId(), "kermit");
}
processEngineConfiguration.getClock().setCurrentTime(sdf.parse("02/02/2002 02:02:02.000"));
// 1 task for gonzo
Task task = taskService.newTask();
task.setName("gonzoTask");
task.setDescription("gonzo description");
task.setPriority(4);
taskService.saveTask(task);
taskService.setAssignee(task.getId(), "gonzo");
taskService.setVariable(task.getId(), "testVar", "someVariable");
ids.add(task.getId());
processEngineConfiguration.getClock().setCurrentTime(sdf.parse("03/03/2003 03:03:03.000"));
// 2 tasks for management group
for (int i = 0; i < 2; i++) {
task = taskService.newTask();
task.setName("managementTask");
task.setPriority(10);
taskService.saveTask(task);
taskService.addCandidateGroup(task.getId(), "management");
ids.add(task.getId());
}
processEngineConfiguration.getClock().setCurrentTime(sdf.parse("04/04/2004 04:04:04.000"));
// 2 tasks for accountancy group
for (int i = 0; i < 2; i++) {
task = taskService.newTask();
task.setName("accountancyTask");
task.setDescription("accountancy description");
taskService.saveTask(task);
taskService.addCandidateGroup(task.getId(), "accountancy");
ids.add(task.getId());
}
processEngineConfiguration.getClock().setCurrentTime(sdf.parse("05/05/2005 05:05:05.000"));
// 1 task assigned to management and accountancy group
task = taskService.newTask();
task.setName("managementAndAccountancyTask");
taskService.saveTask(task);
taskService.addCandidateGroup(task.getId(), "management");
taskService.addCandidateGroup(task.getId(), "accountancy");
ids.add(task.getId());
return ids;
}
}