@Test public void testCompletePostParameters() { Map<String, String> queryParameters = getCompleteQueryParameters(); given().contentType(POST_JSON_CONTENT_TYPE).body(queryParameters) .expect().statusCode(Status.OK.getStatusCode()) .when().post(EXECUTION_QUERY_URL); verify(mockedQuery).processInstanceBusinessKey(queryParameters.get("businessKey")); verify(mockedQuery).processInstanceId(queryParameters.get("processInstanceId")); verify(mockedQuery).processDefinitionKey(queryParameters.get("processDefinitionKey")); verify(mockedQuery).processDefinitionId(queryParameters.get("processDefinitionId")); verify(mockedQuery).activityId(queryParameters.get("activityId")); verify(mockedQuery).signalEventSubscriptionName(queryParameters.get("signalEventSubscriptionName")); verify(mockedQuery).messageEventSubscriptionName(queryParameters.get("messageEventSubscriptionName")); verify(mockedQuery).active(); verify(mockedQuery).suspended(); verify(mockedQuery).incidentId(queryParameters.get("incidentId")); verify(mockedQuery).incidentMessage(queryParameters.get("incidentMessage")); verify(mockedQuery).incidentMessageLike(queryParameters.get("incidentMessageLike")); verify(mockedQuery).incidentType(queryParameters.get("incidentType")); verify(mockedQuery).list(); }
@Test public void testAdditionalParametersExcludingVariables() { Map<String, String> queryParameters = getCompleteQueryParameters(); given().queryParams(queryParameters) .expect().statusCode(Status.OK.getStatusCode()) .when().get(EXECUTION_QUERY_URL); verify(mockedQuery).processInstanceBusinessKey(queryParameters.get("businessKey")); verify(mockedQuery).processInstanceId(queryParameters.get("processInstanceId")); verify(mockedQuery).processDefinitionKey(queryParameters.get("processDefinitionKey")); verify(mockedQuery).processDefinitionId(queryParameters.get("processDefinitionId")); verify(mockedQuery).activityId(queryParameters.get("activityId")); verify(mockedQuery).signalEventSubscriptionName(queryParameters.get("signalEventSubscriptionName")); verify(mockedQuery).messageEventSubscriptionName(queryParameters.get("messageEventSubscriptionName")); verify(mockedQuery).active(); verify(mockedQuery).suspended(); verify(mockedQuery).incidentId(queryParameters.get("incidentId")); verify(mockedQuery).incidentMessage(queryParameters.get("incidentMessage")); verify(mockedQuery).incidentMessageLike(queryParameters.get("incidentMessageLike")); verify(mockedQuery).incidentType(queryParameters.get("incidentType")); verify(mockedQuery).list(); }
query.signalEventSubscriptionName(signalEventSubscriptionName);
query.signalEventSubscriptionName(signalEventSubscriptionName);
@Deployment(resources={ "org/camunda/bpm/engine/test/api/runtime/RuntimeServiceTest.catchAlertSignal.bpmn20.xml" }) @Test public void testExecutionWaitingForDifferentSignal() { runtimeService.startProcessInstanceByKey("catchAlertSignal"); Execution execution = runtimeService.createExecutionQuery() .signalEventSubscriptionName("alert") .singleResult(); try { runtimeService.signalEventReceived("bogusSignal", execution.getId()); fail("exeception expected"); }catch (ProcessEngineException e) { // this is good assertTrue(e.getMessage().contains("has not subscribed to a signal event with name 'bogusSignal'")); } }
.signalEventSubscriptionName("alert") .listPage(0, 1); runtimeService.signalEventReceived("alert", page.get(0).getId()); assertEquals(executions-1, runtimeService.createExecutionQuery().signalEventSubscriptionName("alert").count()); .signalEventSubscriptionName("panic") .listPage(0, 1); runtimeService.signalEventReceived("panic", page.get(0).getId()); assertEquals(executions-1, runtimeService.createExecutionQuery().signalEventSubscriptionName("panic").count());
@Test public void signalIntermediateCatchEventWithAuthenticatedTenant() { testRule.deployForTenant(TENANT_ONE, SIGNAL_CATCH_PROCESS); engineRule.getRuntimeService().createProcessInstanceByKey("signalCatch").processDefinitionTenantId(TENANT_ONE).execute(); Execution execution = engineRule.getRuntimeService().createExecutionQuery() .processDefinitionKey("signalCatch") .signalEventSubscriptionName("signal") .singleResult(); engineRule.getIdentityService().setAuthentication("user", null, Arrays.asList(TENANT_ONE)); engineRule.getRuntimeService().signal(execution.getId(), "signal", null, null); engineRule.getIdentityService().clearAuthentication(); TaskQuery query = engineRule.getTaskService().createTaskQuery(); assertThat(query.count(), is(1L)); assertThat(query.tenantIdIn(TENANT_ONE).count(), is(1L)); }
public void execute(DelegateExecution execution) throws Exception { businessProcess.setVariable("processName", "throwSignal-visited (was " + businessProcess.getVariable("processName") + ")"); String signalProcessInstanceId = (String) execution.getVariable("signalProcessInstanceId"); String executionId = runtimeService.createExecutionQuery().processInstanceId(signalProcessInstanceId).signalEventSubscriptionName("alert").singleResult().getId(); CommandContext commandContext = Context.getCommandContext(); List<EventSubscriptionEntity> findSignalEventSubscriptionsByEventName = commandContext .getEventSubscriptionManager() .findSignalEventSubscriptionsByNameAndExecution("alert", executionId); for (EventSubscriptionEntity signalEventSubscriptionEntity : findSignalEventSubscriptionsByEventName) { signalEventSubscriptionEntity.eventReceived(null, true); } } }
@Test public void sendSignalToIntermediateCatchEventWithExecutionIdAndAuthenticatedTenant() { testRule.deployForTenant(TENANT_ONE, SIGNAL_CATCH_PROCESS); engineRule.getRuntimeService().createProcessInstanceByKey("signalCatch").processDefinitionTenantId(TENANT_ONE).execute(); Execution execution = engineRule.getRuntimeService().createExecutionQuery() .processDefinitionKey("signalCatch") .signalEventSubscriptionName("signal") .singleResult(); engineRule.getIdentityService().setAuthentication("user", null, Arrays.asList(TENANT_ONE)); engineRule.getRuntimeService().createSignalEvent("signal").executionId(execution.getId()).send(); engineRule.getIdentityService().clearAuthentication(); TaskQuery query = engineRule.getTaskService().createTaskQuery(); assertThat(query.count(), is(1L)); assertThat(query.tenantIdIn(TENANT_ONE).count(), is(1L)); }
@Test public void signalIntermediateCatchEventNoAuthenticatedTenants() { testRule.deploy(SIGNAL_CATCH_PROCESS); engineRule.getRuntimeService().createProcessInstanceByKey("signalCatch").execute(); Execution execution = engineRule.getRuntimeService().createExecutionQuery() .processDefinitionKey("signalCatch") .signalEventSubscriptionName("signal") .singleResult(); engineRule.getIdentityService().setAuthentication("user", null, null); engineRule.getRuntimeService().signal(execution.getId(), "signal", null, null); engineRule.getIdentityService().clearAuthentication(); TaskQuery query = engineRule.getTaskService().createTaskQuery(); assertThat(query.count(), is(1L)); assertThat(query.withoutTenantId().count(), is(1L)); }
@Test public void signalIntermediateCatchEventDisabledTenantCheck() { testRule.deployForTenant(TENANT_ONE, SIGNAL_CATCH_PROCESS); testRule.deployForTenant(TENANT_TWO, SIGNAL_CATCH_PROCESS); engineRule.getRuntimeService().createProcessInstanceByKey("signalCatch").processDefinitionTenantId(TENANT_ONE).execute(); engineRule.getRuntimeService().createProcessInstanceByKey("signalCatch").processDefinitionTenantId(TENANT_TWO).execute(); Execution execution = engineRule.getRuntimeService().createExecutionQuery() .processDefinitionKey("signalCatch") .signalEventSubscriptionName("signal") .tenantIdIn(TENANT_ONE) .singleResult(); engineRule.getProcessEngineConfiguration().setTenantCheckEnabled(false); engineRule.getIdentityService().setAuthentication("user", null, null); engineRule.getRuntimeService().signal(execution.getId(), "signal", null, null); TaskQuery query = engineRule.getTaskService().createTaskQuery(); assertThat(query.count(), is(1L)); assertThat(query.tenantIdIn(TENANT_ONE).count(), is(1L)); assertThat(query.tenantIdIn(TENANT_TWO).count(), is(0L)); }
@Test public void failToSignalIntermediateCatchEventNoAuthenticatedTenants() { testRule.deployForTenant(TENANT_ONE, SIGNAL_CATCH_PROCESS); engineRule.getRuntimeService().createProcessInstanceByKey("signalCatch").execute(); Execution execution = engineRule.getRuntimeService().createExecutionQuery() .processDefinitionKey("signalCatch") .signalEventSubscriptionName("signal") .singleResult(); // declared expected exception thrown.expect(ProcessEngineException.class); thrown.expectMessage("Cannot update the process instance"); engineRule.getIdentityService().setAuthentication("user", null, null); engineRule.getRuntimeService().signal(execution.getId(), "signal", null, null); } }
@Deployment public void testSignalCatchAfterEventGateway() { // given ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("process"); Execution execution = runtimeService.createExecutionQuery() .processInstanceId(processInstance.getId()) .signalEventSubscriptionName("foo") .singleResult(); assertNotNull(execution); // when runtimeService.signalEventReceived("foo", execution.getId()); // then VariableInstance variableInstance = runtimeService.createVariableInstanceQuery() .processInstanceIdIn(processInstance.getId()) .variableName("foo") .singleResult(); assertNotNull(variableInstance); assertEquals("bar", variableInstance.getValue()); }
@Test public void failToSendSignalToIntermediateCatchEventWithExecutionIdAndNoAuthenticatedTenants() { testRule.deployForTenant(TENANT_ONE, SIGNAL_CATCH_PROCESS); engineRule.getRuntimeService().createProcessInstanceByKey("signalCatch").processDefinitionTenantId(TENANT_ONE).execute(); Execution execution = engineRule.getRuntimeService().createExecutionQuery() .processDefinitionKey("signalCatch") .signalEventSubscriptionName("signal") .singleResult(); // declare expected exception thrown.expect(ProcessEngineException.class); thrown.expectMessage("Cannot update the process instance"); engineRule.getIdentityService().setAuthentication("user", null, null); engineRule.getRuntimeService().createSignalEvent("signal").executionId(execution.getId()).send(); }
@Deployment public void testInterruptingBoundarySignalEvent() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); Execution execution = runtimeService.createExecutionQuery().signalEventSubscriptionName("newSignal").singleResult(); runtimeService.signalEventReceived("newSignal", execution.getId()); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery(); query.activityId("signal"); assertEquals(1, query.count()); assertNotNull(query.singleResult().getEndTime()); assertEquals("boundarySignal", query.singleResult().getActivityType()); Task task = taskService.createTaskQuery().singleResult(); taskService.complete(task.getId()); assertProcessEnded(pi.getId()); }
@Deployment public void testNonInterruptingBoundarySignalEvent() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); Execution execution = runtimeService.createExecutionQuery().signalEventSubscriptionName("newSignal").singleResult(); runtimeService.signalEventReceived("newSignal", execution.getId()); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery(); query.activityId("signal"); assertEquals(1, query.count()); assertNotNull(query.singleResult().getEndTime()); assertEquals("boundarySignal", query.singleResult().getActivityType()); List<Task> tasks = taskService.createTaskQuery().list(); for (Task task : tasks) { taskService.complete(task.getId()); } assertProcessEnded(pi.getId()); }
.signalEventSubscriptionName("alert") .singleResult(); assertNotNull(execution);
@Test public void failToSignalIntermediateCatchEventNoAuthenticatedTenants() { testRule.deployForTenant(TENANT_ONE, SIGNAL_CATCH_PROCESS); engineRule.getRuntimeService().createProcessInstanceByKey("signalCatch").execute(); Execution execution = engineRule.getRuntimeService().createExecutionQuery() .processDefinitionKey("signalCatch") .signalEventSubscriptionName("signal") .singleResult(); // declared expected exception thrown.expect(ProcessEngineException.class); thrown.expectMessage("Cannot update the process instance"); engineRule.getIdentityService().setAuthentication("user", null, null); engineRule.getRuntimeService().signal(execution.getId(), "signal", null, null); } }
@Test public void failToSendSignalToIntermediateCatchEventWithExecutionIdAndNoAuthenticatedTenants() { testRule.deployForTenant(TENANT_ONE, SIGNAL_CATCH_PROCESS); engineRule.getRuntimeService().createProcessInstanceByKey("signalCatch").processDefinitionTenantId(TENANT_ONE).execute(); Execution execution = engineRule.getRuntimeService().createExecutionQuery() .processDefinitionKey("signalCatch") .signalEventSubscriptionName("signal") .singleResult(); // declare expected exception thrown.expect(ProcessEngineException.class); thrown.expectMessage("Cannot update the process instance"); engineRule.getIdentityService().setAuthentication("user", null, null); engineRule.getRuntimeService().createSignalEvent("signal").executionId(execution.getId()).send(); }
@Deployment public void testInterruptingBoundarySignalEvent() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); Execution execution = runtimeService.createExecutionQuery().signalEventSubscriptionName("newSignal").singleResult(); runtimeService.signalEventReceived("newSignal", execution.getId()); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery(); query.activityId("signal"); assertEquals(1, query.count()); assertNotNull(query.singleResult().getEndTime()); assertEquals("boundarySignal", query.singleResult().getActivityType()); Task task = taskService.createTaskQuery().singleResult(); taskService.complete(task.getId()); assertProcessEnded(pi.getId()); }