public static ActivityStatisticsResultDto fromActivityStatistics(ActivityStatistics statistics) { ActivityStatisticsResultDto dto = new ActivityStatisticsResultDto(); dto.id = statistics.getId(); dto.instances = statistics.getInstances(); dto.failedJobs = statistics.getFailedJobs(); dto.incidents = new ArrayList<IncidentStatisticsResultDto>(); for (IncidentStatistics incident : statistics.getIncidentStatistics()) { IncidentStatisticsResultDto incidentDto = IncidentStatisticsResultDto.fromIncidentStatistics(incident); dto.incidents.add(incidentDto); } return dto; }
@Test @Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testStatisticsQueryWithFailedJobs.bpmn20.xml") public void testActivityStatisticsQueryWithoutFailedJobs() { Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("fail", true); runtimeService.startProcessInstanceByKey("ExampleProcess", parameters); executeAvailableJobs(); ProcessDefinition definition = repositoryService.createProcessDefinitionQuery() .processDefinitionKey("ExampleProcess").singleResult(); List<ActivityStatistics> statistics = managementService.createActivityStatisticsQuery(definition.getId()).list(); Assert.assertEquals(1, statistics.size()); ActivityStatistics activityResult = statistics.get(0); Assert.assertEquals(1, activityResult.getInstances()); Assert.assertEquals("theServiceTask", activityResult.getId()); Assert.assertEquals(0, activityResult.getFailedJobs()); }
@Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testAsyncInterruptingEventSubProcessStatisticsQuery.bpmn20.xml") public void testAsyncInterruptingEventSubProcessActivityStatisticsQuery() { // given ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("process"); runtimeService.correlateMessage("Message"); // when ActivityStatistics activityStatistics = managementService .createActivityStatisticsQuery(processInstance.getProcessDefinitionId()) .singleResult(); // then assertNotNull(activityStatistics); assertEquals("eventSubprocess", activityStatistics.getId()); assertEquals(1, activityStatistics.getInstances()); }
@Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testFailedTimerStartEvent.bpmn20.xml") public void testQueryByFailedJobsAndIncidentsWithFailedTimerStartEvent() { ProcessDefinition definition = repositoryService .createProcessDefinitionQuery() .processDefinitionKey("process") .singleResult(); executeAvailableJobs(); List<ActivityStatistics> statistics = managementService .createActivityStatisticsQuery(definition.getId()) .includeFailedJobs() .includeIncidents() .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()); List<IncidentStatistics> incidentStatistics = result.getIncidentStatistics(); // and there is one incident for the failed timer job assertEquals(1, incidentStatistics.size()); IncidentStatistics incidentStatistic = incidentStatistics.get(0); assertEquals(1, incidentStatistic.getIncidentCount()); assertEquals(Incident.FAILED_JOB_HANDLER_TYPE, incidentStatistic.getIncidentType()); }
@Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testFailedTimerStartEvent.bpmn20.xml") public void testQueryByIncidentsWithFailedTimerStartEvent() { ProcessDefinition definition = repositoryService .createProcessDefinitionQuery() .processDefinitionKey("process") .singleResult(); executeAvailableJobs(); List<ActivityStatistics> statistics = managementService .createActivityStatisticsQuery(definition.getId()) .includeIncidents() .list(); assertEquals(1, statistics.size()); ActivityStatistics result = statistics.get(0); assertEquals("theStart", result.getId()); // there is no running activity instance assertEquals(0, result.getInstances()); List<IncidentStatistics> incidentStatistics = result.getIncidentStatistics(); // but there is one incident for the failed timer job assertEquals(1, incidentStatistics.size()); IncidentStatistics incidentStatistic = incidentStatistics.get(0); assertEquals(1, incidentStatistic.getIncidentCount()); assertEquals(Incident.FAILED_JOB_HANDLER_TYPE, incidentStatistic.getIncidentType()); }
@Test @Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testCallActivityWithIncidentsWithoutFailedJobs.bpmn20.xml") public void testActivityStatisticsQueryWithIncidentsWithoutFailedJobs() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("callExampleSubProcess"); executeAvailableJobs(); List<ActivityStatistics> statistics = managementService .createActivityStatisticsQuery(processInstance.getProcessDefinitionId()) .includeIncidents() .includeFailedJobs() .list(); Assert.assertEquals(1, statistics.size()); ActivityStatistics activityResult = statistics.get(0); Assert.assertEquals("callSubProcess", activityResult.getId()); Assert.assertEquals(0, activityResult.getFailedJobs()); // has no failed jobs List<IncidentStatistics> incidentStatistics = activityResult.getIncidentStatistics(); assertFalse(incidentStatistics.isEmpty()); assertEquals(1, incidentStatistics.size()); IncidentStatistics incident = incidentStatistics.get(0); assertEquals(Incident.FAILED_JOB_HANDLER_TYPE, incident.getIncidentType()); assertEquals(1, incident.getIncidentCount()); //... but has one incident }
@Deployment(resources = PARALLEL_MULTI_INSTANCE_TASK_PROCESS) public void testStartBeforeInnerActivityWithMiBodyParallelTasksActivityStatistics() { // given the mi body is not yet instantiated ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("miParallelUserTasks"); // when runtimeService .createProcessInstanceModification(processInstance.getId()) .startBeforeActivity("miTasks") .execute(); // then the activity instance statistics are correct List<ActivityStatistics> statistics = managementService.createActivityStatisticsQuery(processInstance.getProcessDefinitionId()).list(); assertEquals(2, statistics.size()); ActivityStatistics miTasksStatistics = getStatisticsForActivity(statistics, "miTasks"); assertNotNull(miTasksStatistics); assertEquals(1, miTasksStatistics.getInstances()); ActivityStatistics beforeTaskStatistics = getStatisticsForActivity(statistics, "beforeTask"); assertNotNull(beforeTaskStatistics); assertEquals(1, beforeTaskStatistics.getInstances()); }
@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()); }
@Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testFailedTimerStartEvent.bpmn20.xml") public void testQueryByIncidentTypeWithFailedTimerStartEvent() { ProcessDefinition definition = repositoryService .createProcessDefinitionQuery() .processDefinitionKey("process") .singleResult(); executeAvailableJobs(); List<ActivityStatistics> statistics = managementService .createActivityStatisticsQuery(definition.getId()) .includeIncidentsForType(Incident.FAILED_JOB_HANDLER_TYPE) .list(); assertEquals(1, statistics.size()); ActivityStatistics result = statistics.get(0); // there is no running instance assertEquals(0, result.getInstances()); List<IncidentStatistics> incidentStatistics = result.getIncidentStatistics(); // but there is one incident for the failed timer job assertEquals(1, incidentStatistics.size()); IncidentStatistics incidentStatistic = incidentStatistics.get(0); assertEquals(1, incidentStatistic.getIncidentCount()); assertEquals(Incident.FAILED_JOB_HANDLER_TYPE, incidentStatistic.getIncidentType()); }
@Test @Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testStatisticsQueryWithFailedJobs.bpmn20.xml") public void testActivityStatisticsQueryWithInvalidIncidentType() { Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("fail", true); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("ExampleProcess", parameters); executeAvailableJobs(); List<ActivityStatistics> statistics = managementService .createActivityStatisticsQuery(processInstance.getProcessDefinitionId()) .includeIncidentsForType("invalid") .list(); Assert.assertEquals(1, statistics.size()); ActivityStatistics activityResult = statistics.get(0); List<IncidentStatistics> incidentStatistics = activityResult.getIncidentStatistics(); assertTrue(incidentStatistics.isEmpty()); }
protected ActivityStatistics getStatisticsForActivity(List<ActivityStatistics> statistics, String activityId) { for (ActivityStatistics statisticsInstance : statistics) { if (statisticsInstance.getId().equals(activityId)) { return statisticsInstance; } } return null; }
@Test @Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testStatisticsQuery.bpmn20.xml") public void FAILING_testActivityStatisticsQueryWithNoInstances() { ProcessDefinition definition = repositoryService .createProcessDefinitionQuery() .processDefinitionKey("ExampleProcess") .singleResult(); List<ActivityStatistics> statistics = managementService .createActivityStatisticsQuery(definition.getId()) .list(); Assert.assertEquals(1, statistics.size()); ActivityStatistics result = statistics.get(0); Assert.assertEquals("theTask", result.getId()); Assert.assertEquals(0, result.getInstances()); Assert.assertEquals(0, result.getFailedJobs()); } }
Assert.assertEquals(1, result.getInstances()); Assert.assertEquals(0, result.getFailedJobs()); assertTrue(result.getIncidentStatistics().isEmpty()); Assert.assertEquals(1, result.getInstances()); Assert.assertEquals(0, result.getFailedJobs()); assertTrue(result.getIncidentStatistics().isEmpty());
@Test @Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testSubprocessStatisticsQuery.bpmn20.xml") public void testSubprocessActivityStatisticsQuery() { runtimeService.startProcessInstanceByKey("ExampleProcess"); ProcessDefinition definition = repositoryService .createProcessDefinitionQuery() .processDefinitionKey("ExampleProcess") .singleResult(); List<ActivityStatistics> statistics = managementService .createActivityStatisticsQuery(definition.getId()) .list(); Assert.assertEquals(1, statistics.size()); ActivityStatistics result = statistics.get(0); Assert.assertEquals(1, result.getInstances()); Assert.assertEquals("subProcessTask", result.getId()); }
@Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testFailedTimerStartEvent.bpmn20.xml") public void testQueryByIncidentsWithFailedTimerStartEvent() { ProcessDefinition definition = repositoryService .createProcessDefinitionQuery() .processDefinitionKey("process") .singleResult(); executeAvailableJobs(); List<ActivityStatistics> statistics = managementService .createActivityStatisticsQuery(definition.getId()) .includeIncidents() .list(); assertEquals(1, statistics.size()); ActivityStatistics result = statistics.get(0); assertEquals("theStart", result.getId()); // there is no running activity instance assertEquals(0, result.getInstances()); List<IncidentStatistics> incidentStatistics = result.getIncidentStatistics(); // but there is one incident for the failed timer job assertEquals(1, incidentStatistics.size()); IncidentStatistics incidentStatistic = incidentStatistics.get(0); assertEquals(1, incidentStatistic.getIncidentCount()); assertEquals(Incident.FAILED_JOB_HANDLER_TYPE, incidentStatistic.getIncidentType()); }
@Test @Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testCallActivityWithIncidentsWithoutFailedJobs.bpmn20.xml") public void testActivityStatisticsQueryWithIncidentsWithoutFailedJobs() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("callExampleSubProcess"); executeAvailableJobs(); List<ActivityStatistics> statistics = managementService .createActivityStatisticsQuery(processInstance.getProcessDefinitionId()) .includeIncidents() .includeFailedJobs() .list(); Assert.assertEquals(1, statistics.size()); ActivityStatistics activityResult = statistics.get(0); Assert.assertEquals("callSubProcess", activityResult.getId()); Assert.assertEquals(0, activityResult.getFailedJobs()); // has no failed jobs List<IncidentStatistics> incidentStatistics = activityResult.getIncidentStatistics(); assertFalse(incidentStatistics.isEmpty()); assertEquals(1, incidentStatistics.size()); IncidentStatistics incident = incidentStatistics.get(0); assertEquals(Incident.FAILED_JOB_HANDLER_TYPE, incident.getIncidentType()); assertEquals(1, incident.getIncidentCount()); //... but has one incident }
@Deployment(resources = PARALLEL_MULTI_INSTANCE_SUBPROCESS_PROCESS) public void testStartBeforeInnerActivityWithMiBodyParallelSubprocessActivityStatistics() { // given the mi body is not yet instantiated ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("miParallelSubprocess"); // when runtimeService .createProcessInstanceModification(processInstance.getId()) .startBeforeActivity("subProcessTask") .execute(); // then the activity instance statistics are correct List<ActivityStatistics> statistics = managementService.createActivityStatisticsQuery(processInstance.getProcessDefinitionId()).list(); assertEquals(2, statistics.size()); ActivityStatistics miTasksStatistics = getStatisticsForActivity(statistics, "subProcessTask"); assertNotNull(miTasksStatistics); assertEquals(1, miTasksStatistics.getInstances()); ActivityStatistics beforeTaskStatistics = getStatisticsForActivity(statistics, "beforeTask"); assertNotNull(beforeTaskStatistics); assertEquals(1, beforeTaskStatistics.getInstances()); }
@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()); }
@Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testFailedTimerStartEvent.bpmn20.xml") public void testQueryByIncidentTypeWithFailedTimerStartEvent() { ProcessDefinition definition = repositoryService .createProcessDefinitionQuery() .processDefinitionKey("process") .singleResult(); executeAvailableJobs(); List<ActivityStatistics> statistics = managementService .createActivityStatisticsQuery(definition.getId()) .includeIncidentsForType(Incident.FAILED_JOB_HANDLER_TYPE) .list(); assertEquals(1, statistics.size()); ActivityStatistics result = statistics.get(0); // there is no running instance assertEquals(0, result.getInstances()); List<IncidentStatistics> incidentStatistics = result.getIncidentStatistics(); // but there is one incident for the failed timer job assertEquals(1, incidentStatistics.size()); IncidentStatistics incidentStatistic = incidentStatistics.get(0); assertEquals(1, incidentStatistic.getIncidentCount()); assertEquals(Incident.FAILED_JOB_HANDLER_TYPE, incidentStatistic.getIncidentType()); }
@Test @Deployment(resources = "org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testStatisticsQueryWithFailedJobs.bpmn20.xml") public void testActivityStatisticsQueryWithIncidentType() { Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("fail", true); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("ExampleProcess", parameters); executeAvailableJobs(); List<ActivityStatistics> statistics = managementService .createActivityStatisticsQuery(processInstance.getProcessDefinitionId()) .includeIncidentsForType("failedJob") .list(); Assert.assertEquals(1, statistics.size()); ActivityStatistics activityResult = statistics.get(0); List<IncidentStatistics> incidentStatistics = activityResult.getIncidentStatistics(); assertFalse(incidentStatistics.isEmpty()); assertEquals(1, incidentStatistics.size()); IncidentStatistics incident = incidentStatistics.get(0); assertEquals(Incident.FAILED_JOB_HANDLER_TYPE, incident.getIncidentType()); assertEquals(1, incident.getIncidentCount()); }