Search in sources :

Example 56 with Filter

use of org.camunda.bpm.engine.filter.Filter in project camunda-bpm-platform by camunda.

the class FilterTaskQueryTest method testExtendingVariableQuery.

public void testExtendingVariableQuery() {
    TaskQuery taskQuery = taskService.createTaskQuery().processVariableValueEquals("hello", "world");
    saveQuery(taskQuery);
    // variables won't overridden variables with same name in different scopes
    TaskQuery extendingQuery = taskService.createTaskQuery().taskVariableValueEquals("hello", "world").caseInstanceVariableValueEquals("hello", "world");
    Filter extendedFilter = filter.extend(extendingQuery);
    TaskQueryImpl extendedQuery = extendedFilter.getQuery();
    List<TaskQueryVariableValue> variables = extendedQuery.getVariables();
    assertEquals(3, variables.size());
    // assert variables (ordering: extending variables are inserted first)
    assertEquals("hello", variables.get(0).getName());
    assertEquals("world", variables.get(0).getValue());
    assertEquals(QueryOperator.EQUALS, variables.get(0).getOperator());
    assertFalse(variables.get(0).isProcessInstanceVariable());
    assertTrue(variables.get(0).isLocal());
    assertEquals("hello", variables.get(1).getName());
    assertEquals("world", variables.get(1).getValue());
    assertEquals(QueryOperator.EQUALS, variables.get(1).getOperator());
    assertFalse(variables.get(1).isProcessInstanceVariable());
    assertFalse(variables.get(1).isLocal());
    assertEquals("hello", variables.get(2).getName());
    assertEquals("world", variables.get(2).getValue());
    assertEquals(QueryOperator.EQUALS, variables.get(2).getOperator());
    assertTrue(variables.get(2).isProcessInstanceVariable());
    assertFalse(variables.get(2).isLocal());
    // variables will override variables with same name in same scope
    extendingQuery = taskService.createTaskQuery().processVariableValueLessThan("hello", 42).taskVariableValueLessThan("hello", 42).caseInstanceVariableValueLessThan("hello", 42);
    extendedFilter = filter.extend(extendingQuery);
    extendedQuery = extendedFilter.getQuery();
    variables = extendedQuery.getVariables();
    assertEquals(3, variables.size());
    // assert variables (ordering: extending variables are inserted first)
    assertEquals("hello", variables.get(0).getName());
    assertEquals(42, variables.get(0).getValue());
    assertEquals(QueryOperator.LESS_THAN, variables.get(0).getOperator());
    assertTrue(variables.get(0).isProcessInstanceVariable());
    assertFalse(variables.get(0).isLocal());
    assertEquals("hello", variables.get(1).getName());
    assertEquals(42, variables.get(1).getValue());
    assertEquals(QueryOperator.LESS_THAN, variables.get(1).getOperator());
    assertFalse(variables.get(1).isProcessInstanceVariable());
    assertTrue(variables.get(1).isLocal());
    assertEquals("hello", variables.get(2).getName());
    assertEquals(42, variables.get(2).getValue());
    assertEquals(QueryOperator.LESS_THAN, variables.get(2).getOperator());
    assertFalse(variables.get(2).isProcessInstanceVariable());
    assertFalse(variables.get(2).isLocal());
}
Also used : TaskQueryVariableValue(org.camunda.bpm.engine.impl.TaskQueryVariableValue) Filter(org.camunda.bpm.engine.filter.Filter) TaskQueryImpl(org.camunda.bpm.engine.impl.TaskQueryImpl) TaskQuery(org.camunda.bpm.engine.task.TaskQuery)

Example 57 with Filter

use of org.camunda.bpm.engine.filter.Filter in project camunda-bpm-platform by camunda.

the class FilterTaskQueryTest method testExtendTaskQueryWithCandidateUserExpressionAndIncludeAssignedTasks.

public void testExtendTaskQueryWithCandidateUserExpressionAndIncludeAssignedTasks() {
    // create an empty query and save it as a filter
    TaskQuery emptyQuery = taskService.createTaskQuery();
    Filter emptyFilter = filterService.newTaskFilter("empty");
    emptyFilter.setQuery(emptyQuery);
    // create a query with candidate user expression and include assigned tasks
    // and save it as filter
    TaskQuery query = taskService.createTaskQuery();
    query.taskCandidateUserExpression("${'test'}").includeAssignedTasks();
    Filter filter = filterService.newTaskFilter("filter");
    filter.setQuery(query);
    // extend empty query by query with candidate user expression and include assigned tasks
    Filter extendedFilter = emptyFilter.extend(query);
    TaskQueryImpl extendedQuery = extendedFilter.getQuery();
    assertEquals("${'test'}", extendedQuery.getExpressions().get("taskCandidateUser"));
    assertTrue(extendedQuery.isIncludeAssignedTasks());
    // extend query with candidate user expression and include assigned tasks with empty query
    extendedFilter = filter.extend(emptyQuery);
    extendedQuery = extendedFilter.getQuery();
    assertEquals("${'test'}", extendedQuery.getExpressions().get("taskCandidateUser"));
    assertTrue(extendedQuery.isIncludeAssignedTasks());
}
Also used : Filter(org.camunda.bpm.engine.filter.Filter) TaskQueryImpl(org.camunda.bpm.engine.impl.TaskQueryImpl) TaskQuery(org.camunda.bpm.engine.task.TaskQuery)

Example 58 with Filter

use of org.camunda.bpm.engine.filter.Filter in project camunda-bpm-platform by camunda.

the class TaskQueryTest method testQuerySortingByNameShouldBeCaseInsensitive.

public void testQuerySortingByNameShouldBeCaseInsensitive() {
    // create task with capitalized name
    Task task = taskService.newTask("caseSensitiveTestTask");
    task.setName("CaseSensitiveTestTask");
    taskService.saveTask(task);
    // create task filter
    Filter filter = filterService.newTaskFilter("taskNameOrdering");
    filterService.saveFilter(filter);
    List<String> sortedNames = getTaskNamesFromTasks(taskService.createTaskQuery().list());
    Collections.sort(sortedNames, String.CASE_INSENSITIVE_ORDER);
    // ascending ordering
    TaskQuery taskQuery = taskService.createTaskQuery().orderByTaskNameCaseInsensitive().asc();
    List<String> ascNames = getTaskNamesFromTasks(taskQuery.list());
    assertEquals(sortedNames, ascNames);
    // test filter merging
    ascNames = getTaskNamesFromTasks(filterService.list(filter.getId(), taskQuery));
    assertEquals(sortedNames, ascNames);
    // descending ordering
    // reverse sorted names to test descending ordering
    Collections.reverse(sortedNames);
    taskQuery = taskService.createTaskQuery().orderByTaskNameCaseInsensitive().desc();
    List<String> descNames = getTaskNamesFromTasks(taskQuery.list());
    assertEquals(sortedNames, descNames);
    // test filter merging
    descNames = getTaskNamesFromTasks(filterService.list(filter.getId(), taskQuery));
    assertEquals(sortedNames, descNames);
    // delete test task
    taskService.deleteTask(task.getId(), true);
    // delete filter
    filterService.deleteFilter(filter.getId());
}
Also used : Task(org.camunda.bpm.engine.task.Task) Filter(org.camunda.bpm.engine.filter.Filter) TaskQuery(org.camunda.bpm.engine.task.TaskQuery) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString)

Example 59 with Filter

use of org.camunda.bpm.engine.filter.Filter in project camunda-bpm-platform by camunda.

the class TaskQueryDisabledAdhocExpressionsTest method testExtendStoredFilterByScalar.

public void testExtendStoredFilterByScalar() {
    // given a stored filter
    TaskQuery taskQuery = taskService.createTaskQuery().dueAfterExpression("${now()}");
    Filter filter = filterService.newTaskFilter("filter");
    filter.setQuery(taskQuery);
    filterService.saveFilter(filter);
    // it is possible to execute the stored query with an expression
    assertEquals(new Long(0), filterService.count(filter.getId()));
    assertEquals(0, filterService.list(filter.getId()).size());
    // and it is possible to extend the filter query when not using an expression
    assertEquals(new Long(0), filterService.count(filter.getId(), taskService.createTaskQuery().dueAfter(new Date())));
    assertEquals(0, filterService.list(filter.getId(), taskService.createTaskQuery().dueAfter(new Date())).size());
    // cleanup
    filterService.deleteFilter(filter.getId());
}
Also used : Filter(org.camunda.bpm.engine.filter.Filter) TaskQuery(org.camunda.bpm.engine.task.TaskQuery) Date(java.util.Date)

Example 60 with Filter

use of org.camunda.bpm.engine.filter.Filter in project camunda-bpm-platform by camunda.

the class TaskQueryDisabledAdhocExpressionsTest method testExtendStoredFilterByExpression.

public void testExtendStoredFilterByExpression() {
    // given a stored filter
    TaskQuery taskQuery = taskService.createTaskQuery().dueAfterExpression("${now()}");
    Filter filter = filterService.newTaskFilter("filter");
    filter.setQuery(taskQuery);
    filterService.saveFilter(filter);
    // it is possible to execute the stored query with an expression
    assertEquals(new Long(0), filterService.count(filter.getId()));
    assertEquals(0, filterService.list(filter.getId()).size());
    // but it is not possible to executed the filter with an extended query that uses expressions
    extendFilterAndValidateFailingQuery(filter, taskService.createTaskQuery().dueAfterExpression(STATE_MANIPULATING_EXPRESSION));
    // cleanup
    filterService.deleteFilter(filter.getId());
}
Also used : Filter(org.camunda.bpm.engine.filter.Filter) TaskQuery(org.camunda.bpm.engine.task.TaskQuery)

Aggregations

Filter (org.camunda.bpm.engine.filter.Filter)69 TaskQueryImpl (org.camunda.bpm.engine.impl.TaskQueryImpl)26 TaskQuery (org.camunda.bpm.engine.task.TaskQuery)26 MockProvider.mockFilter (org.camunda.bpm.engine.rest.helper.MockProvider.mockFilter)15 FilterEntity (org.camunda.bpm.engine.impl.persistence.entity.FilterEntity)14 Test (org.junit.Test)14 HashMap (java.util.HashMap)10 Matchers.isEmptyOrNullString (org.hamcrest.Matchers.isEmptyOrNullString)9 Matchers.anyString (org.mockito.Matchers.anyString)9 Map (java.util.Map)7 Response (com.jayway.restassured.response.Response)6 ArrayList (java.util.ArrayList)5 AuthorizationException (org.camunda.bpm.engine.AuthorizationException)4 ProcessEngineException (org.camunda.bpm.engine.ProcessEngineException)4 Date (java.util.Date)3 FilterService (org.camunda.bpm.engine.FilterService)3 NotValidException (org.camunda.bpm.engine.exception.NotValidException)3 FilterQuery (org.camunda.bpm.engine.filter.FilterQuery)3 User (org.camunda.bpm.engine.identity.User)3 Task (org.camunda.bpm.engine.task.Task)3