protected List<VariableInstance> queryVariablesInstancesByVariableScopeIds(Collection<String> variableNames, Collection<String> variableScopeIds) { IdentityService identityService = processEngine.getIdentityService(); Authentication currentAuthentication = identityService.getCurrentAuthentication(); try { identityService.clearAuthentication(); return getProcessEngine().getRuntimeService() .createVariableInstanceQuery() .disableBinaryFetching() .disableCustomObjectDeserialization() .variableNameIn(variableNames.toArray(new String[variableNames.size()])) .variableScopeIdIn(variableScopeIds.toArray(new String[variableScopeIds.size()])) .list(); } finally { identityService.setAuthentication(currentAuthentication); } }
protected List<VariableInstance> queryVariablesInstancesByVariableScopeIds(Collection<String> variableNames, Collection<String> variableScopeIds) { IdentityService identityService = processEngine.getIdentityService(); Authentication currentAuthentication = identityService.getCurrentAuthentication(); try { identityService.clearAuthentication(); return getProcessEngine().getRuntimeService() .createVariableInstanceQuery() .disableBinaryFetching() .disableCustomObjectDeserialization() .variableNameIn(variableNames.toArray(new String[variableNames.size()])) .variableScopeIdIn(variableScopeIds.toArray(new String[variableScopeIds.size()])) .list(); } finally { identityService.setAuthentication(currentAuthentication); } }
@Test public void testHalTaskQueryWithEmptyVariablesProperties() { // mock properties with variable name list in wrong format Map<String, Object> properties = new HashMap<String, Object>(); properties.put("variables", Collections.emptyList()); Filter filter = mockFilter().properties(properties).build(); when(filterServiceMock.getFilter(eq(EXAMPLE_FILTER_ID))).thenReturn(filter); given() .pathParam("id", EXAMPLE_FILTER_ID) .header(ACCEPT_HAL_HEADER) .expect() .statusCode(Status.OK.getStatusCode()) .body("_embedded", equalTo(null)) .when() .get(EXECUTE_SINGLE_RESULT_FILTER_URL); verify(filterServiceMock, times(1)).getFilter(eq(EXAMPLE_FILTER_ID)); verify(variableInstanceQueryMock, never()).variableScopeIdIn((String) anyVararg()); verify(variableInstanceQueryMock, never()).variableNameIn((String) anyVararg()); verify(variableInstanceQueryMock, never()).list(); }
@Test public void testHalTaskQueryWithWrongFormatVariablesProperties() { // mock properties with variable name list in wrong format Map<String, Object> properties = new HashMap<String, Object>(); properties.put("variables", "foo"); Filter filter = mockFilter().properties(properties).build(); when(filterServiceMock.getFilter(eq(EXAMPLE_FILTER_ID))).thenReturn(filter); given() .pathParam("id", EXAMPLE_FILTER_ID) .header(ACCEPT_HAL_HEADER) .expect() .statusCode(Status.INTERNAL_SERVER_ERROR.getStatusCode()) .when() .get(EXECUTE_SINGLE_RESULT_FILTER_URL); verify(filterServiceMock, times(1)).getFilter(eq(EXAMPLE_FILTER_ID)); verify(variableInstanceQueryMock, never()).variableScopeIdIn((String) anyVararg()); verify(variableInstanceQueryMock, never()).variableNameIn((String) anyVararg()); verify(variableInstanceQueryMock, never()).list(); }
when(variableInstanceQueryMock.variableScopeIdIn((String) anyVararg())) .thenReturn(variableInstanceQueryMock); when(variableInstanceQueryMock.variableNameIn((String) anyVararg())) .thenReturn(variableInstanceQueryMock); when(variableInstanceQueryMock.disableBinaryFetching()).thenReturn(variableInstanceQueryMock);
verify(variableInstanceQueryMock, times(1)).variableScopeIdIn((String) anyVararg()); verify(variableInstanceQueryMock).variableScopeIdIn(TASK_A_ID, EXECUTION_A_ID, PROCESS_INSTANCE_A_ID); verify(variableInstanceQueryMock, times(1)).variableNameIn((String) anyVararg()); verify(variableInstanceQueryMock).variableNameIn("foo", "bar"); verify(variableInstanceQueryMock, times(1)).list(); verify(identityServiceMock, times(1)).clearAuthentication();
verify(variableInstanceQueryMock, times(1)).variableScopeIdIn((String) anyVararg()); verify(variableInstanceQueryMock).variableScopeIdIn(TASK_A_ID, EXECUTION_A_ID, PROCESS_INSTANCE_A_ID, CASE_EXECUTION_A_ID, CASE_INSTANCE_A_ID); verify(variableInstanceQueryMock, times(1)).variableNameIn((String) anyVararg()); verify(variableInstanceQueryMock).variableNameIn("foo", "bar"); verify(variableInstanceQueryMock, times(1)).list(); verify(variableInstanceQueryMock, times(1)).disableBinaryFetching();
@Test @Deployment(resources={"org/camunda/bpm/engine/test/api/runtime/oneTaskProcess.bpmn20.xml"}) public void testQueryByVariableNames() { // given String variableValue = "a"; Map<String, Object> variables = new HashMap<String, Object>(); variables.put("process", variableValue); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess", variables); Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); taskService.setVariableLocal(task.getId(), "task", variableValue); runtimeService.setVariableLocal(task.getExecutionId(), "execution", variableValue); // when VariableInstanceQuery query = runtimeService.createVariableInstanceQuery().variableNameIn("task", "process", "execution"); // then List<VariableInstance> result = query.list(); assertFalse(result.isEmpty()); assertEquals(3, result.size()); assertEquals(3, query.count()); for (VariableInstance variableInstance : result) { assertEquals(variableValue, variableInstance.getValue()); assertEquals("string", variableInstance.getTypeName()); } assertEquals(1, runtimeService.createVariableInstanceQuery().variableName("task").variableNameIn("task", "execution").count()); assertEquals(0, runtimeService.createVariableInstanceQuery().variableName("task").variableNameIn("process", "execution").count()); }
verify(variableInstanceQueryMock, times(1)).variableScopeIdIn((String) anyVararg()); verify(variableInstanceQueryMock).variableScopeIdIn(TASK_A_ID, EXECUTION_A_ID, PROCESS_INSTANCE_A_ID, TASK_B_ID, EXECUTION_B_ID, TASK_C_ID, CASE_EXECUTION_A_ID, CASE_INSTANCE_A_ID); verify(variableInstanceQueryMock, times(1)).variableNameIn((String) anyVararg()); verify(variableInstanceQueryMock).variableNameIn("foo", "bar"); verify(variableInstanceQueryMock, times(1)).list(); verify(identityServiceMock, times(1)).clearAuthentication();
protected List<VariableInstance> queryVariablesInstancesByVariableScopeIds(Collection<String> variableNames, Collection<String> variableScopeIds) { IdentityService identityService = processEngine.getIdentityService(); Authentication currentAuthentication = identityService.getCurrentAuthentication(); try { identityService.clearAuthentication(); return getProcessEngine().getRuntimeService() .createVariableInstanceQuery() .disableBinaryFetching() .disableCustomObjectDeserialization() .variableNameIn(variableNames.toArray(new String[variableNames.size()])) .variableScopeIdIn(variableScopeIds.toArray(new String[variableScopeIds.size()])) .list(); } finally { identityService.setAuthentication(currentAuthentication); } }
@Test @Deployment(resources={"org/camunda/bpm/engine/test/api/runtime/oneTaskProcess.bpmn20.xml"}) public void testQueryByVariableNames() { // given String variableValue = "a"; Map<String, Object> variables = new HashMap<String, Object>(); variables.put("process", variableValue); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess", variables); Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); taskService.setVariableLocal(task.getId(), "task", variableValue); runtimeService.setVariableLocal(task.getExecutionId(), "execution", variableValue); // when VariableInstanceQuery query = runtimeService.createVariableInstanceQuery().variableNameIn("task", "process", "execution"); // then List<VariableInstance> result = query.list(); assertFalse(result.isEmpty()); assertEquals(3, result.size()); assertEquals(3, query.count()); for (VariableInstance variableInstance : result) { assertEquals(variableValue, variableInstance.getValue()); assertEquals("string", variableInstance.getTypeName()); } assertEquals(1, runtimeService.createVariableInstanceQuery().variableName("task").variableNameIn("task", "execution").count()); assertEquals(0, runtimeService.createVariableInstanceQuery().variableName("task").variableNameIn("process", "execution").count()); }