@Override public List<StatisticsResultDto> getActivityStatistics(Boolean includeFailedJobs, Boolean includeIncidents, String includeIncidentsForType) { if (includeIncidents != null && includeIncidentsForType != null) { throw new InvalidRequestException(Status.BAD_REQUEST, "Only one of the query parameter includeIncidents or includeIncidentsForType can be set."); } ManagementService mgmtService = engine.getManagementService(); ActivityStatisticsQuery query = mgmtService.createActivityStatisticsQuery(processDefinitionId); if (includeFailedJobs != null && includeFailedJobs) { query.includeFailedJobs(); } if (includeIncidents != null && includeIncidents) { query.includeIncidents(); } else if (includeIncidentsForType != null) { query.includeIncidentsForType(includeIncidentsForType); } List<ActivityStatistics> queryResults = query.list(); List<StatisticsResultDto> results = new ArrayList<StatisticsResultDto>(); for (ActivityStatistics queryResult : queryResults) { StatisticsResultDto dto = ActivityStatisticsResultDto.fromActivityStatistics(queryResult); results.add(dto); } return results; }
@Test public void testActivtyStatisticsIncidentsForTypeAndFailedJobsOptionByKey() { given().pathParam("key", MockProvider.EXAMPLE_PROCESS_DEFINITION_KEY) .queryParam("incidentsForType", "failedJob").queryParam("failedJobs", "true") .then().expect() .statusCode(Status.OK.getStatusCode()) .when().get(ACTIVITY_STATISTICS_BY_KEY_URL); InOrder inOrder = Mockito.inOrder(activityQueryMock); inOrder.verify(activityQueryMock).includeFailedJobs(); inOrder.verify(activityQueryMock).includeIncidentsForType("failedJob"); inOrder.verify(activityQueryMock).list(); }
@Test public void testActivityStatisticsWithFailedJobs() { given().pathParam("id", "aDefinitionId").queryParam("failedJobs", "true") .then().expect() .statusCode(Status.OK.getStatusCode()) .when().get(ACTIVITY_STATISTICS_URL); InOrder inOrder = Mockito.inOrder(activityQueryMock); inOrder.verify(activityQueryMock).includeFailedJobs(); inOrder.verify(activityQueryMock).list(); }
@Test public void testActivityStatisticsWithFailedJobsByKey() { given().pathParam("key", MockProvider.EXAMPLE_PROCESS_DEFINITION_KEY).queryParam("failedJobs", "true") .then().expect() .statusCode(Status.OK.getStatusCode()) .when().get(ACTIVITY_STATISTICS_BY_KEY_URL); InOrder inOrder = Mockito.inOrder(activityQueryMock); inOrder.verify(activityQueryMock).includeFailedJobs(); inOrder.verify(activityQueryMock).list(); }
@Test public void testActivtyStatisticsIncidentsForTypeAndFailedJobsOption() { given().pathParam("id", "aDefinitionId") .queryParam("incidentsForType", "failedJob").queryParam("failedJobs", "true") .then().expect() .statusCode(Status.OK.getStatusCode()) .when().get(ACTIVITY_STATISTICS_URL); InOrder inOrder = Mockito.inOrder(activityQueryMock); inOrder.verify(activityQueryMock).includeFailedJobs(); inOrder.verify(activityQueryMock).includeIncidentsForType("failedJob"); inOrder.verify(activityQueryMock).list(); }
@Test public void testActivtyStatisticsIncidentsAndFailedJobsOption() { given().pathParam("id", "aDefinitionId") .queryParam("incidents", "true").queryParam("failedJobs", "true") .then().expect() .statusCode(Status.OK.getStatusCode()) .when().get(ACTIVITY_STATISTICS_URL); InOrder inOrder = Mockito.inOrder(activityQueryMock); inOrder.verify(activityQueryMock).includeFailedJobs(); inOrder.verify(activityQueryMock).includeIncidents(); inOrder.verify(activityQueryMock).list(); }
@Test public void testActivtyStatisticsIncidentsAndFailedJobsOptionByKey() { given().pathParam("key", MockProvider.EXAMPLE_PROCESS_DEFINITION_KEY) .queryParam("incidents", "true").queryParam("failedJobs", "true") .then().expect() .statusCode(Status.OK.getStatusCode()) .when().get(ACTIVITY_STATISTICS_BY_KEY_URL); InOrder inOrder = Mockito.inOrder(activityQueryMock); inOrder.verify(activityQueryMock).includeFailedJobs(); inOrder.verify(activityQueryMock).includeIncidents(); inOrder.verify(activityQueryMock).list(); }
public void testQueryIncludingFailedJobsWithoutAuthorizationOnProcessInstance() { // given String processDefinitionId = selectProcessDefinitionByKey(ONE_INCIDENT_PROCESS_KEY).getId(); createGrantAuthorization(PROCESS_DEFINITION, ONE_INCIDENT_PROCESS_KEY, userId, READ); // when ActivityStatistics statistics = managementService .createActivityStatisticsQuery(processDefinitionId) .includeFailedJobs() .singleResult(); // then assertNull(statistics); }
public void testQueryIncludingIncidentsAndFailedJobsWithoutAuthorizationOnProcessInstance() { // given String processDefinitionId = selectProcessDefinitionByKey(ONE_INCIDENT_PROCESS_KEY).getId(); createGrantAuthorization(PROCESS_DEFINITION, ONE_INCIDENT_PROCESS_KEY, userId, READ); // when ActivityStatistics statistics = managementService .createActivityStatisticsQuery(processDefinitionId) .includeIncidents() .includeFailedJobs() .singleResult(); // then assertNull(statistics); }
public void testManyAuthorizationsActivityStatisticsQueryIncludingFailedJobsAndIncidents() { String processDefinitionId = selectProcessDefinitionByKey(ONE_INCIDENT_PROCESS_KEY).getId(); createGrantAuthorization(PROCESS_DEFINITION, ONE_INCIDENT_PROCESS_KEY, userId, READ, READ_INSTANCE); createGrantAuthorizationGroup(PROCESS_DEFINITION, ONE_INCIDENT_PROCESS_KEY, groupId, READ, READ_INSTANCE); List<ActivityStatistics> statistics = managementService .createActivityStatisticsQuery(processDefinitionId) .includeFailedJobs() .includeIncidents() .list(); assertEquals(1, statistics.size()); ActivityStatistics activityResult = statistics.get(0); assertEquals(3, activityResult.getInstances()); assertEquals("scriptTask", activityResult.getId()); assertEquals(3, activityResult.getFailedJobs()); assertFalse(activityResult.getIncidentStatistics().isEmpty()); IncidentStatistics incidentStatistics = activityResult.getIncidentStatistics().get(0); assertEquals(3, incidentStatistics.getIncidentCount()); }
@Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testFailedTimerStartEvent.bpmn20.xml") public void testQueryByFailedJobsWithFailedTimerStartEvent() { ProcessDefinition definition = repositoryService .createProcessDefinitionQuery() .processDefinitionKey("process") .singleResult(); executeAvailableJobs(); List<ActivityStatistics> statistics = managementService .createActivityStatisticsQuery(definition.getId()) .includeFailedJobs() .list(); assertEquals(1, statistics.size()); ActivityStatistics result = statistics.get(0); // there is no running instance assertEquals(0, result.getInstances()); // but there is one failed timer job assertEquals(1, result.getFailedJobs()); }
@Test @Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testMultiInstanceStatisticsQuery.bpmn20.xml") public void testParallelMultiInstanceActivityStatisticsQueryIncludingFailedJobIncidents() { runtimeService.startProcessInstanceByKey("MIExampleProcess"); ProcessDefinition definition = repositoryService.createProcessDefinitionQuery() .processDefinitionKey("MIExampleProcess").singleResult(); List<ActivityStatistics> statistics = managementService .createActivityStatisticsQuery(definition.getId()) .includeFailedJobs() .includeIncidents() .list(); Assert.assertEquals(1, statistics.size()); ActivityStatistics activityResult = statistics.get(0); Assert.assertEquals(3, activityResult.getInstances()); Assert.assertEquals("theTask", activityResult.getId()); Assert.assertEquals(0, activityResult.getFailedJobs()); assertTrue(activityResult.getIncidentStatistics().isEmpty()); }
@Test @Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testParallelGatewayStatisticsQuery.bpmn20.xml") public void testActivityStatisticsQueryPagination() { ProcessDefinition definition = repositoryService .createProcessDefinitionQuery() .processDefinitionKey("ParGatewayExampleProcess") .singleResult(); runtimeService.startProcessInstanceById(definition.getId()); List<ActivityStatistics> statistics = managementService .createActivityStatisticsQuery(definition.getId()) .includeFailedJobs() .includeIncidents() .listPage(0, 1); Assert.assertEquals(1, statistics.size()); }
@Test @Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testActivityStatisticsQueryWithIntermediateTimer.bpmn20.xml") public void testActivityStatisticsQueryWithIntermediateTimer() { runtimeService.startProcessInstanceByKey("ExampleProcess"); ProcessDefinition definition = repositoryService.createProcessDefinitionQuery() .processDefinitionKey("ExampleProcess").singleResult(); List<ActivityStatistics> statistics = managementService .createActivityStatisticsQuery(definition.getId()) .includeFailedJobs() .includeIncidents() .list(); Assert.assertEquals(1, statistics.size()); ActivityStatistics activityResult = statistics.get(0); Assert.assertEquals(1, activityResult.getInstances()); Assert.assertEquals("theTimer", activityResult.getId()); Assert.assertEquals(0, activityResult.getFailedJobs()); assertTrue(activityResult.getIncidentStatistics().isEmpty()); }
@Test @Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testStatisticsQuery.bpmn20.xml") public void testActivityStatisticsQuery() { runtimeService.startProcessInstanceByKey("ExampleProcess"); ProcessDefinition definition = repositoryService.createProcessDefinitionQuery() .processDefinitionKey("ExampleProcess").singleResult(); List<ActivityStatistics> statistics = managementService .createActivityStatisticsQuery(definition.getId()) .includeFailedJobs() .includeIncidents() .list(); Assert.assertEquals(1, statistics.size()); ActivityStatistics activityResult = statistics.get(0); Assert.assertEquals(1, activityResult.getInstances()); Assert.assertEquals("theTask", activityResult.getId()); Assert.assertEquals(0, activityResult.getFailedJobs()); assertTrue(activityResult.getIncidentStatistics().isEmpty()); }
public void testQueryIncludingFailedJobsWithReadInstancePermissionOnProcessDefinition() { // given String processDefinitionId = selectProcessDefinitionByKey(ONE_INCIDENT_PROCESS_KEY).getId(); createGrantAuthorization(PROCESS_DEFINITION, ONE_INCIDENT_PROCESS_KEY, userId, READ, READ_INSTANCE); // when ActivityStatistics statistics = managementService .createActivityStatisticsQuery(processDefinitionId) .includeFailedJobs() .singleResult(); // then assertNotNull(statistics); assertEquals("scriptTask", statistics.getId()); assertEquals(3, statistics.getInstances()); assertEquals(3, statistics.getFailedJobs()); assertTrue(statistics.getIncidentStatistics().isEmpty()); }
public void testQueryIncludingIncidentsAndFailedJobsWithReadInstancePermissionOnProcessDefinition() { // given String processDefinitionId = selectProcessDefinitionByKey(ONE_INCIDENT_PROCESS_KEY).getId(); createGrantAuthorization(PROCESS_DEFINITION, ONE_INCIDENT_PROCESS_KEY, userId, READ, READ_INSTANCE); // when ActivityStatistics statistics = managementService .createActivityStatisticsQuery(processDefinitionId) .includeIncidents() .includeFailedJobs() .singleResult(); // then assertNotNull(statistics); assertEquals("scriptTask", statistics.getId()); assertEquals(3, statistics.getInstances()); assertEquals(3, statistics.getFailedJobs()); assertFalse(statistics.getIncidentStatistics().isEmpty()); IncidentStatistics incidentStatistics = statistics.getIncidentStatistics().get(0); assertEquals(3, incidentStatistics.getIncidentCount()); }
@Test @Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testStatisticsQuery.bpmn20.xml") public void testActivityStatisticsQueryCount() { runtimeService.startProcessInstanceByKey("ExampleProcess"); ProcessDefinition definition = repositoryService.createProcessDefinitionQuery() .processDefinitionKey("ExampleProcess").singleResult(); long count = managementService .createActivityStatisticsQuery(definition.getId()) .includeFailedJobs() .includeIncidents() .count(); Assert.assertEquals(1, count); }
public void testQueryIncludingFailedJobsWithReadPermissionOnAnyProcessInstance() { // given String processDefinitionId = selectProcessDefinitionByKey(ONE_INCIDENT_PROCESS_KEY).getId(); createGrantAuthorization(PROCESS_DEFINITION, ONE_INCIDENT_PROCESS_KEY, userId, READ); createGrantAuthorization(PROCESS_INSTANCE, ANY, userId, READ); // when ActivityStatistics statistics = managementService .createActivityStatisticsQuery(processDefinitionId) .includeFailedJobs() .singleResult(); // then assertNotNull(statistics); assertEquals("scriptTask", statistics.getId()); assertEquals(3, statistics.getInstances()); assertEquals(3, statistics.getFailedJobs()); assertTrue(statistics.getIncidentStatistics().isEmpty()); }
public void testQueryIncludingFailedJobsWithReadPermissionOnOneProcessInstance() { // given String processDefinitionId = selectProcessDefinitionByKey(ONE_INCIDENT_PROCESS_KEY).getId(); disableAuthorization(); String processInstanceId = runtimeService.createProcessInstanceQuery().list().get(0).getId(); enableAuthorization(); createGrantAuthorization(PROCESS_DEFINITION, ONE_INCIDENT_PROCESS_KEY, userId, READ); createGrantAuthorization(PROCESS_INSTANCE, processInstanceId, userId, READ); // when ActivityStatistics statistics = managementService .createActivityStatisticsQuery(processDefinitionId) .includeFailedJobs() .singleResult(); // then assertNotNull(statistics); assertEquals("scriptTask", statistics.getId()); assertEquals(1, statistics.getInstances()); assertEquals(1, statistics.getFailedJobs()); assertTrue(statistics.getIncidentStatistics().isEmpty()); }