@Test public void testMultipleProcessVariableParametersAsPost() { String variableName = "varName"; String variableValue = "varValue"; String anotherVariableName = "anotherVarName"; Integer anotherVariableValue = 30; Map<String, Object> variableJson = new HashMap<String, Object>(); variableJson.put("name", variableName); variableJson.put("operator", "eq"); variableJson.put("value", variableValue); Map<String, Object> anotherVariableJson = new HashMap<String, Object>(); anotherVariableJson.put("name", anotherVariableName); anotherVariableJson.put("operator", "neq"); anotherVariableJson.put("value", anotherVariableValue); List<Map<String, Object>> variables = new ArrayList<Map<String, Object>>(); variables.add(variableJson); variables.add(anotherVariableJson); Map<String, Object> json = new HashMap<String, Object>(); json.put("processVariables", variables); given().contentType(POST_JSON_CONTENT_TYPE).body(json) .then().expect().statusCode(Status.OK.getStatusCode()) .when().post(EXECUTION_QUERY_URL); verify(mockedQuery).processVariableValueEquals(variableName, variableValue); verify(mockedQuery).processVariableValueNotEquals(eq(anotherVariableName), argThat(EqualsPrimitiveValue.numberValue(anotherVariableValue))); }
query.processVariableValueEquals(variableName, variableValue); } else if (op.equals(VariableQueryParameterDto.NOT_EQUALS_OPERATOR_NAME)) { query.processVariableValueNotEquals(variableName, variableValue);
query.processVariableValueEquals(variableName, variableValue); } else if (op.equals(VariableQueryParameterDto.NOT_EQUALS_OPERATOR_NAME)) { query.processVariableValueNotEquals(variableName, variableValue);
@Test public void testMultipleProcessVariableParameters() { String variableName1 = "varName"; String variableValue1 = "varValue"; String variableParameter1 = variableName1 + "_eq_" + variableValue1; String variableName2 = "anotherVarName"; String variableValue2 = "anotherVarValue"; String variableParameter2 = variableName2 + "_neq_" + variableValue2; String queryValue = variableParameter1 + "," + variableParameter2; given().queryParam("processVariables", queryValue) .then().expect().statusCode(Status.OK.getStatusCode()) .when().get(EXECUTION_QUERY_URL); verify(mockedQuery).processVariableValueEquals(variableName1, variableValue1); verify(mockedQuery).processVariableValueNotEquals(variableName2, variableValue2); }
.createExecutionQuery() .processInstanceId(secondProcessInstance) .processVariableValueEquals("aKey", "aValue") .messageEventSubscriptionName("newInvoiceMessage") .count(); .processInstanceId(firstProcessInstance) .activityId("task") .processVariableValueEquals("aKey", "aValue") .processVariableValueEquals("aNewKey", "aNewVariable") .count(); assertEquals(1, correlatedExecutions);
@Deployment(resources = "org/camunda/bpm/engine/test/api/runtime/MessageCorrelationTest.testCatchingMessageEventCorrelation.bpmn20.xml") @Test public void testOneMatchinProcessInstanceUsingFluentCorrelateAll() { Map<String, Object> variables = new HashMap<String, Object>(); variables.put("aKey", "aValue"); runtimeService.startProcessInstanceByKey("process", variables); variables = new HashMap<String, Object>(); variables.put("aKey", "anotherValue"); runtimeService.startProcessInstanceByKey("process", variables); String messageName = "newInvoiceMessage"; // use the fluent builder: correlate to first started process instance runtimeService.createMessageCorrelation(messageName) .processInstanceVariableEquals("aKey", "aValue") .setVariable("aNewKey", "aNewVariable") .correlateAll(); // there exists an uncorrelated executions (the second process instance) long uncorrelatedExecutions = runtimeService .createExecutionQuery() .processVariableValueEquals("aKey", "anotherValue") .messageEventSubscriptionName("newInvoiceMessage") .count(); assertEquals(1, uncorrelatedExecutions); // the execution that has been correlated should have advanced long correlatedExecutions = runtimeService.createExecutionQuery() .activityId("task") .processVariableValueEquals("aKey", "aValue") .processVariableValueEquals("aNewKey", "aNewVariable") .count(); assertEquals(1, correlatedExecutions); }
.processVariableValueEquals("aKey", "anotherValue").messageEventSubscriptionName("newInvoiceMessage") .count(); assertEquals(1, uncorrelatedExecutions); .activityId("task").processVariableValueEquals("aKey", "aValue").processVariableValueEquals("aNewKey", "aNewVariable") .count(); assertEquals(1, correlatedExecutions); .processVariableValueEquals("aKey", "anotherValue").messageEventSubscriptionName("newInvoiceMessage") .count(); assertEquals(1, uncorrelatedExecutions); .activityId("task").processVariableValueEquals("aKey", "aValue").processVariableValueEquals("aNewKey", "aNewVariable") .count(); assertEquals(1, correlatedExecutions);
@Deployment(resources = "org/camunda/bpm/engine/test/api/runtime/MessageCorrelationTest.testCatchingMessageEventCorrelation.bpmn20.xml") @Test public void testTwoMatchingProcessInstancesUsingFluentCorrelateAll() { Map<String, Object> variables = new HashMap<String, Object>(); variables.put("aKey", "aValue"); runtimeService.startProcessInstanceByKey("process", variables); variables = new HashMap<String, Object>(); variables.put("aKey", "aValue"); runtimeService.startProcessInstanceByKey("process", variables); String messageName = "newInvoiceMessage"; Map<String, Object> correlationKeys = new HashMap<String, Object>(); correlationKeys.put("aKey", "aValue"); // fluent builder multiple should not fail runtimeService.createMessageCorrelation(messageName) .processInstanceVariableEquals("aKey", "aValue") .setVariable("aNewKey", "aNewVariable") .correlateAll(); long uncorrelatedExecutions = runtimeService .createExecutionQuery() .messageEventSubscriptionName("newInvoiceMessage") .count(); assertEquals(0, uncorrelatedExecutions); // the executions that has been correlated should have advanced long correlatedExecutions = runtimeService.createExecutionQuery() .activityId("task") .processVariableValueEquals("aKey", "aValue") .processVariableValueEquals("aNewKey", "aNewVariable") .count(); assertEquals(2, correlatedExecutions); }
@Test public void testProcessVariableParameters() { String variableName = "varName"; String variableValue = "varValue"; String queryValue = variableName + "_eq_" + variableValue; given().queryParam("processVariables", queryValue) .then().expect().statusCode(Status.OK.getStatusCode()) .when().get(EXECUTION_QUERY_URL); verify(mockedQuery).processVariableValueEquals(variableName, variableValue); queryValue = variableName + "_neq_" + variableValue; given().queryParam("processVariables", queryValue) .then().expect().statusCode(Status.OK.getStatusCode()) .when().get(EXECUTION_QUERY_URL); verify(mockedQuery).processVariableValueNotEquals(variableName, variableValue); }
.activityId("task").processVariableValueEquals("aProcessVariable", "aVariableValue") .singleResult(); .activityId("task").processVariableValueEquals("aProcessVariable", "aVariableValue") .singleResult();
@Deployment(resources = "org/camunda/bpm/engine/test/api/runtime/MessageCorrelationTest.testCatchingMessageEventCorrelation.bpmn20.xml") @Test public void testExecutionCorrelationByBusinessKeyWithVariables() { String businessKey = "aBusinessKey"; ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("process", businessKey); Map<String, Object> variables = new HashMap<String, Object>(); variables.put("aKey", "aValue"); runtimeService.correlateMessage("newInvoiceMessage", businessKey, variables); // the execution that has been correlated should have advanced long correlatedExecutions = runtimeService.createExecutionQuery() .processVariableValueEquals("aKey", "aValue").count(); assertEquals(1, correlatedExecutions); runtimeService.deleteProcessInstance(processInstance.getId(), null); // use fluent builder ///////////////////////// processInstance = runtimeService.startProcessInstanceByKey("process", businessKey); runtimeService.createMessageCorrelation("newInvoiceMessage") .processInstanceBusinessKey(businessKey) .setVariable("aKey", "aValue") .correlate(); // the execution that has been correlated should have advanced correlatedExecutions = runtimeService.createExecutionQuery() .processVariableValueEquals("aKey", "aValue").count(); assertEquals(1, correlatedExecutions); runtimeService.deleteProcessInstance(processInstance.getId(), null); }
@Deployment(resources = "org/camunda/bpm/engine/test/api/runtime/MessageCorrelationTest.testCatchingMessageEventCorrelation.bpmn20.xml") @Test public void testCorrelationByBusinessKeyAndNullVariablesUsingFluentCorrelateAll() { runtimeService.startProcessInstanceByKey("process", "aBusinessKey"); String messageName = "newInvoiceMessage"; runtimeService.createMessageCorrelation(messageName) .processInstanceBusinessKey("aBusinessKey") .setVariables(null) .setVariable("foo", "bar") .correlateAll(); List<Execution> correlatedExecutions = runtimeService .createExecutionQuery() .activityId("task") .processVariableValueEquals("foo", "bar") .list(); assertFalse(correlatedExecutions.isEmpty()); }
Collections.<String, Object>singletonMap("var", "123")); assertEquals(4, runtimeService.createExecutionQuery().processVariableValueEquals("var", Variables.numberValue(123)).count()); assertEquals(4, runtimeService.createExecutionQuery().processVariableValueEquals("var", Variables.numberValue(123L)).count()); assertEquals(4, runtimeService.createExecutionQuery().processVariableValueEquals("var", Variables.numberValue(123.0d)).count()); assertEquals(4, runtimeService.createExecutionQuery().processVariableValueEquals("var", Variables.numberValue((short) 123)).count()); assertEquals(1, runtimeService.createExecutionQuery().processVariableValueEquals("var", Variables.numberValue(null)).count());
.createExecutionQuery() .activityId("task") .processVariableValueEquals("aProcessVariable", "aVariableValue") .list();
@Deployment(resources = "org/camunda/bpm/engine/test/api/runtime/MessageCorrelationTest.testCatchingMessageEventCorrelation.bpmn20.xml") @Test public void testExecutionCorrelationByBusinessKeyWithVariablesUsingFluentCorrelateAll() { String businessKey = "aBusinessKey"; runtimeService.startProcessInstanceByKey("process", businessKey); runtimeService.startProcessInstanceByKey("process", businessKey); runtimeService.createMessageCorrelation("newInvoiceMessage") .processInstanceBusinessKey(businessKey) .setVariable("aKey", "aValue") .correlateAll(); // the executions that has been correlated should have advanced long correlatedExecutions = runtimeService .createExecutionQuery() .processVariableValueEquals("aKey", "aValue") .count(); assertEquals(2, correlatedExecutions); }
@Deployment(resources={"org/camunda/bpm/engine/test/api/runtime/concurrentExecution.bpmn20.xml"}) public void testExecutionQueryWithProcessVariable() { Map<String, Object> variables = new HashMap<String, Object>(); variables.put("x", "parent"); ProcessInstance pi = runtimeService.startProcessInstanceByKey("concurrent", variables); List<Execution> concurrentExecutions = runtimeService.createExecutionQuery().processInstanceId(pi.getId()).list(); assertEquals(3, concurrentExecutions.size()); for (Execution execution : concurrentExecutions) { if (!((ExecutionEntity)execution).isProcessInstanceExecution()) { // only the concurrent executions, not the root one, would be cooler to query that directly, see http://jira.codehaus.org/browse/ACT-1373 runtimeService.setVariableLocal(execution.getId(), "x", "child"); } } assertEquals(2, runtimeService.createExecutionQuery().processInstanceId(pi.getId()).variableValueEquals("x", "child").count()); assertEquals(1, runtimeService.createExecutionQuery().processInstanceId(pi.getId()).variableValueEquals("x", "parent").count()); assertEquals(3, runtimeService.createExecutionQuery().processInstanceId(pi.getId()).processVariableValueEquals("x", "parent").count()); assertEquals(3, runtimeService.createExecutionQuery().processInstanceId(pi.getId()).processVariableValueNotEquals("x", "xxx").count()); }
@Deployment(resources = "org/camunda/bpm/engine/test/api/runtime/MessageCorrelationTest.testCatchingMessageEventCorrelation.bpmn20.xml") @Test public void testExecutionCorrelationByBusinessKeyWithVariables() { String businessKey = "aBusinessKey"; ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("process", businessKey); Map<String, Object> variables = new HashMap<String, Object>(); variables.put("aKey", "aValue"); runtimeService.correlateMessage("newInvoiceMessage", businessKey, variables); // the execution that has been correlated should have advanced long correlatedExecutions = runtimeService.createExecutionQuery() .processVariableValueEquals("aKey", "aValue").count(); assertEquals(1, correlatedExecutions); runtimeService.deleteProcessInstance(processInstance.getId(), null); // use fluent builder ///////////////////////// processInstance = runtimeService.startProcessInstanceByKey("process", businessKey); runtimeService.createMessageCorrelation("newInvoiceMessage") .processInstanceBusinessKey(businessKey) .setVariable("aKey", "aValue") .correlate(); // the execution that has been correlated should have advanced correlatedExecutions = runtimeService.createExecutionQuery() .processVariableValueEquals("aKey", "aValue").count(); assertEquals(1, correlatedExecutions); runtimeService.deleteProcessInstance(processInstance.getId(), null); }
@Deployment(resources = "org/camunda/bpm/engine/test/api/runtime/MessageCorrelationTest.testCatchingMessageEventCorrelation.bpmn20.xml") @Test public void testCorrelationByBusinessKeyAndNullVariablesUsingFluentCorrelateAll() { runtimeService.startProcessInstanceByKey("process", "aBusinessKey"); String messageName = "newInvoiceMessage"; runtimeService.createMessageCorrelation(messageName) .processInstanceBusinessKey("aBusinessKey") .setVariables(null) .setVariable("foo", "bar") .correlateAll(); List<Execution> correlatedExecutions = runtimeService .createExecutionQuery() .activityId("task") .processVariableValueEquals("foo", "bar") .list(); assertFalse(correlatedExecutions.isEmpty()); }
@Deployment(resources = "org/camunda/bpm/engine/test/api/runtime/MessageCorrelationTest.testCatchingMessageEventCorrelation.bpmn20.xml") @Test public void testExecutionCorrelationByBusinessKeyWithVariablesUsingFluentCorrelateAll() { String businessKey = "aBusinessKey"; runtimeService.startProcessInstanceByKey("process", businessKey); runtimeService.startProcessInstanceByKey("process", businessKey); runtimeService.createMessageCorrelation("newInvoiceMessage") .processInstanceBusinessKey(businessKey) .setVariable("aKey", "aValue") .correlateAll(); // the executions that has been correlated should have advanced long correlatedExecutions = runtimeService .createExecutionQuery() .processVariableValueEquals("aKey", "aValue") .count(); assertEquals(2, correlatedExecutions); }
@Deployment(resources={"org/camunda/bpm/engine/test/api/runtime/concurrentExecution.bpmn20.xml"}) public void testExecutionQueryWithProcessVariable() { Map<String, Object> variables = new HashMap<String, Object>(); variables.put("x", "parent"); ProcessInstance pi = runtimeService.startProcessInstanceByKey("concurrent", variables); List<Execution> concurrentExecutions = runtimeService.createExecutionQuery().processInstanceId(pi.getId()).list(); assertEquals(3, concurrentExecutions.size()); for (Execution execution : concurrentExecutions) { if (!((ExecutionEntity)execution).isProcessInstanceExecution()) { // only the concurrent executions, not the root one, would be cooler to query that directly, see http://jira.codehaus.org/browse/ACT-1373 runtimeService.setVariableLocal(execution.getId(), "x", "child"); } } assertEquals(2, runtimeService.createExecutionQuery().processInstanceId(pi.getId()).variableValueEquals("x", "child").count()); assertEquals(1, runtimeService.createExecutionQuery().processInstanceId(pi.getId()).variableValueEquals("x", "parent").count()); assertEquals(3, runtimeService.createExecutionQuery().processInstanceId(pi.getId()).processVariableValueEquals("x", "parent").count()); assertEquals(3, runtimeService.createExecutionQuery().processInstanceId(pi.getId()).processVariableValueNotEquals("x", "xxx").count()); }