public void setVariableLocal(String caseExecutionId, String variableName, Object value) { withCaseExecution(caseExecutionId).setVariableLocal(variableName, value).execute(); }
public void setVariableLocal(String caseExecutionId, String variableName, Object value) { withCaseExecution(caseExecutionId).setVariableLocal(variableName, value).execute(); }
protected void setVariableEntity(String variableKey, TypedValue variableValue) { CaseService caseService = engine.getCaseService(); caseService.withCaseExecution(resourceId) .setVariableLocal(variableKey, variableValue) .execute(); }
protected void setVariableEntity(String variableKey, TypedValue variableValue) { CaseService caseService = engine.getCaseService(); caseService.withCaseExecution(resourceId) .setVariableLocal(variableKey, variableValue) .execute(); }
protected void initializeCommandWithVariables(CaseExecutionCommandBuilder commandBuilder, Map<String, TriggerVariableValueDto> variables, String transition) { for(String variableName : variables.keySet()) { try { TriggerVariableValueDto variableValue = variables.get(variableName); TypedValue typedValue = variableValue.toTypedValue(engine, objectMapper); if (variableValue.isLocal()) { commandBuilder.setVariableLocal(variableName, typedValue); } else { commandBuilder.setVariable(variableName, typedValue); } } catch (RestException e) { String errorMessage = String.format("Cannot %s case execution %s due to invalid variable %s: %s", transition, caseExecutionId, variableName, e.getMessage()); throw new RestException(e.getStatus(), e, errorMessage); } } }
protected void initializeCommandWithVariables(CaseExecutionCommandBuilder commandBuilder, Map<String, TriggerVariableValueDto> variables, String transition) { for(String variableName : variables.keySet()) { try { TriggerVariableValueDto variableValue = variables.get(variableName); TypedValue typedValue = variableValue.toTypedValue(engine, objectMapper); if (variableValue.isLocal()) { commandBuilder.setVariableLocal(variableName, typedValue); } else { commandBuilder.setVariable(variableName, typedValue); } } catch (RestException e) { String errorMessage = String.format("Cannot %s case execution %s due to invalid variable %s: %s", transition, caseExecutionId, variableName, e.getMessage()); throw new RestException(e.getStatus(), e, errorMessage); } } }
protected void initializeCommandWithVariables(CaseExecutionCommandBuilder commandBuilder, Map<String, TriggerVariableValueDto> variables, String transition) { for(String variableName : variables.keySet()) { try { TriggerVariableValueDto variableValue = variables.get(variableName); if (variableValue.isLocal()) { commandBuilder.setVariableLocal(variableName, variableValue.toTypedValue(engine, objectMapper)); } else { commandBuilder.setVariable(variableName, variableValue.toTypedValue(engine, objectMapper)); } } catch (RestException e) { String errorMessage = String.format("Cannot %s case instance %s due to invalid variable %s: %s", transition, caseInstanceId, variableName, e.getMessage()); throw new RestException(e.getStatus(), e, errorMessage); } } }
protected void initializeCommandWithVariables(CaseExecutionCommandBuilder commandBuilder, Map<String, TriggerVariableValueDto> variables, String transition) { for(String variableName : variables.keySet()) { try { TriggerVariableValueDto variableValue = variables.get(variableName); if (variableValue.isLocal()) { commandBuilder.setVariableLocal(variableName, variableValue.toTypedValue(engine, objectMapper)); } else { commandBuilder.setVariable(variableName, variableValue.toTypedValue(engine, objectMapper)); } } catch (RestException e) { String errorMessage = String.format("Cannot %s case instance %s due to invalid variable %s: %s", transition, caseInstanceId, variableName, e.getMessage()); throw new RestException(e.getStatus(), e, errorMessage); } } }
@Test public void testPutSingleLocalBinaryVariable() throws Exception { byte[] bytes = "someContent".getBytes(); String variableKey = "aVariableKey"; given() .pathParam("id", MockProvider.EXAMPLE_CASE_EXECUTION_ID).pathParam("varId", variableKey) .multiPart("data", null, bytes) .expect() .statusCode(Status.NO_CONTENT.getStatusCode()) .when() .post(SINGLE_CASE_EXECUTION_LOCAL_BINARY_VARIABLE_URL); verify(caseServiceMock).withCaseExecution(MockProvider.EXAMPLE_CASE_EXECUTION_ID); verify(caseExecutionCommandBuilderMock).setVariableLocal(eq(variableKey), argThat(EqualsPrimitiveValue.bytesValue(bytes))); verify(caseExecutionCommandBuilderMock).execute(); }
@Test public void testPutSingleLocalBinaryVariableWithValueType() throws Exception { byte[] bytes = "someContent".getBytes(); String variableKey = "aVariableKey"; given() .pathParam("id", MockProvider.EXAMPLE_CASE_EXECUTION_ID).pathParam("varId", variableKey) .multiPart("data", null, bytes) .multiPart("valueType", "Bytes", "text/plain") .expect() .statusCode(Status.NO_CONTENT.getStatusCode()) .when() .post(SINGLE_CASE_EXECUTION_LOCAL_BINARY_VARIABLE_URL); verify(caseServiceMock).withCaseExecution(MockProvider.EXAMPLE_CASE_EXECUTION_ID); verify(caseExecutionCommandBuilderMock).setVariableLocal(eq(variableKey), argThat(EqualsPrimitiveValue.bytesValue(bytes))); verify(caseExecutionCommandBuilderMock).execute(); }
@Test public void testPutSingleBinaryVariableWithValueType() { byte[] bytes = "someContent".getBytes(); String variableKey = "aVariableKey"; given() .pathParam("id", MockProvider.EXAMPLE_CASE_EXECUTION_ID).pathParam("varId", variableKey) .multiPart("data", null, bytes) .multiPart("valueType", "Bytes", "text/plain") .expect() .statusCode(Status.NO_CONTENT.getStatusCode()) .when() .post(SINGLE_CASE_EXECUTION_LOCAL_BINARY_VARIABLE_URL); verify(caseServiceMock).withCaseExecution(MockProvider.EXAMPLE_CASE_EXECUTION_ID); verify(caseExecutionCommandBuilderMock).setVariableLocal(eq(variableKey), argThat(EqualsPrimitiveValue.bytesValue(bytes))); verify(caseExecutionCommandBuilderMock).execute(); }
@Test public void testPutSingleLocalBinaryVariableWithNoValue() throws Exception { byte[] bytes = new byte[0]; String variableKey = "aVariableKey"; given() .pathParam("id", MockProvider.EXAMPLE_CASE_EXECUTION_ID) .pathParam("varId", variableKey) .multiPart("data", null, bytes) .expect() .statusCode(Status.NO_CONTENT.getStatusCode()) .when() .post(SINGLE_CASE_EXECUTION_LOCAL_BINARY_VARIABLE_URL); verify(caseServiceMock).withCaseExecution(MockProvider.EXAMPLE_CASE_EXECUTION_ID); verify(caseExecutionCommandBuilderMock).setVariableLocal(eq(variableKey), argThat(EqualsPrimitiveValue.bytesValue(bytes))); verify(caseExecutionCommandBuilderMock).execute(); }
@Test public void testPutSingleLocalVariableWithNoValue() { String variableKey = "aVariableKey"; given() .pathParam("id", MockProvider.EXAMPLE_CASE_EXECUTION_ID) .pathParam("varId", variableKey) .contentType(ContentType.JSON) .body(EMPTY_JSON_OBJECT) .then() .expect() .statusCode(Status.NO_CONTENT.getStatusCode()) .when() .put(SINGLE_CASE_EXECUTION_LOCAL_VARIABLE_URL); verify(caseServiceMock).withCaseExecution(MockProvider.EXAMPLE_CASE_EXECUTION_ID); verify(caseExecutionCommandBuilderMock).setVariableLocal(eq(variableKey), argThat(EqualsNullValue.matcher())); verify(caseExecutionCommandBuilderMock).execute(); }
@Deployment public void testChildListenersNotInvoked() { CaseInstance caseInstance = caseService .withCaseDefinitionByKey("case") .create(); // when i set a variable on the parent scope caseService.withCaseExecution(caseInstance.getId()).setVariableLocal("aTaskVariable", "aTaskValue").execute(); // then the listener is not invoked assertEquals(0, LogVariableListener.getInvocations().size()); LogVariableListener.reset(); }
@Deployment public void testVariableListenerByDelegateExpressionWithFieldExpressions() { beans.put("listener", new LogInjectedValuesListener()); caseService .withCaseDefinitionByKey("case") .create(); CaseExecution taskExecution = caseService.createCaseExecutionQuery().activityId("PI_HumanTask_1").singleResult(); assertNotNull(taskExecution); // when i set a variable caseService.withCaseExecution(taskExecution.getId()).setVariableLocal("testVariable", "value1").execute(); // then the field expressions are resolved assertEquals(1, LogInjectedValuesListener.getResolvedStringValueExpressions().size()); assertEquals("injectedValue", LogInjectedValuesListener.getResolvedStringValueExpressions().get(0)); assertEquals(1, LogInjectedValuesListener.getResolvedJuelExpressions().size()); assertEquals("cam", LogInjectedValuesListener.getResolvedJuelExpressions().get(0)); LogInjectedValuesListener.reset(); }
@Deployment public void testVariableListenerByClassWithFieldExpressions() { caseService .withCaseDefinitionByKey("case") .create(); CaseExecution taskExecution = caseService.createCaseExecutionQuery().activityId("PI_HumanTask_1").singleResult(); assertNotNull(taskExecution); // when i set a variable caseService.withCaseExecution(taskExecution.getId()).setVariableLocal("testVariable", "value1").execute(); // then the field expressions are resolved assertEquals(1, LogInjectedValuesListener.getResolvedStringValueExpressions().size()); assertEquals("injectedValue", LogInjectedValuesListener.getResolvedStringValueExpressions().get(0)); assertEquals(1, LogInjectedValuesListener.getResolvedJuelExpressions().size()); assertEquals("cam", LogInjectedValuesListener.getResolvedJuelExpressions().get(0)); LogInjectedValuesListener.reset(); }
@Deployment public void testVariableListenerByExpression() { SimpleBean simpleBean = new SimpleBean(); beans.put("bean", simpleBean); caseService .withCaseDefinitionByKey("case") .create(); CaseExecution taskExecution = caseService.createCaseExecutionQuery().activityId("PI_HumanTask_1").singleResult(); assertNotNull(taskExecution); // when i create a variable on the human task caseService.withCaseExecution(taskExecution.getId()).setVariableLocal("aTaskVariable", "aTaskValue").execute(); // then the listener is invoked assertTrue(simpleBean.wasInvoked()); }
@Deployment public void testDelegateInstanceIsProcessEngineAware() { CaseInstance caseInstance = caseService .withCaseDefinitionByKey("case") .create(); assertFalse(ProcessEngineAwareListener.hasFoundValidRuntimeService()); // when i set a variable that causes the listener to be notified caseService.withCaseExecution(caseInstance.getId()).setVariableLocal("aTaskVariable", "aTaskValue").execute(); // then the listener is invoked and has found process engine services assertTrue(ProcessEngineAwareListener.hasFoundValidRuntimeService()); ProcessEngineAwareListener.reset(); }
@Deployment public void testInvalidListenerClassName() { caseService .withCaseDefinitionByKey("case") .create(); CaseExecution taskExecution = caseService.createCaseExecutionQuery().activityId("PI_HumanTask_1").singleResult(); assertNotNull(taskExecution); try { caseService .withCaseExecution(taskExecution.getId()) .setVariableLocal("aTaskVariable", "aTaskValue") .execute(); fail("expected exception during variable listener invocation"); } catch (ProcessEngineException e) { // happy path } }
@Deployment public void testVariableListenerByScript() { caseService .withCaseDefinitionByKey("case") .create(); CaseExecution taskExecution = caseService.createCaseExecutionQuery().activityId("PI_HumanTask_1").singleResult(); assertNotNull(taskExecution); // when i create a variable on the human task caseService.withCaseExecution(taskExecution.getId()).setVariableLocal("aTaskVariable", "aTaskValue").execute(); // then the listener is invoked assertTrue(SimpleBean.wasStaticallyInvoked()); SimpleBean.reset(); }