@Test
public void testGetProcessInstancesFilteredWithVariablesQueryDataService() throws Exception {
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("stringData", "waiting for signal");
parameters.put("personData", createPersonInstance(USER_JOHN));
List<Long> processInstanceIds = createProcessInstances(parameters);
final QueryDefinition query = getProcessInstanceWithVariablesQueryDefinition();
try {
queryClient.registerQuery(query);
QueryFilterSpec filterSpec = new QueryFilterSpecBuilder().greaterThan("processinstanceid", processInstanceIds.get(3)).get();
List<ProcessInstance> instances = queryClient.query(query.getName(), QueryServicesClient.QUERY_MAP_PI_WITH_VARS, filterSpec, 0, 10, ProcessInstance.class);
assertNotNull(instances);
assertEquals(1, instances.size());
for (ProcessInstance instance : instances) {
final Map<String, Object> variables = instance.getVariables();
assertNotNull(variables);
assertEquals(4, variables.size());
assertEquals(TestConfig.getUsername(), variables.get("initiator"));
assertEquals("waiting for signal", variables.get("stringData"));
assertEquals("Person{name='john'}", variables.get("personData"));
assertEquals("true", variables.get("nullAccepted"));
}
} finally {
abortProcessInstances(processInstanceIds);
queryClient.unregisterQuery(query.getName());
}
}