public virtual IList <StatisticsResultDto> getActivityStatistics(bool?includeFailedJobs, bool?includeIncidents, string includeIncidentsForType) { if (includeIncidents != null && !string.ReferenceEquals(includeIncidentsForType, null)) { throw new InvalidRequestException(Response.Status.BAD_REQUEST, "Only one of the query parameter includeIncidents or includeIncidentsForType can be set."); } ManagementService mgmtService = engine.ManagementService; ActivityStatisticsQuery query = mgmtService.createActivityStatisticsQuery(processDefinitionId); if (includeFailedJobs != null && includeFailedJobs) { query.includeFailedJobs(); } if (includeIncidents != null && includeIncidents) { query.includeIncidents(); } else if (!string.ReferenceEquals(includeIncidentsForType, null)) { query.includeIncidentsForType(includeIncidentsForType); } IList <ActivityStatistics> queryResults = query.list(); IList <StatisticsResultDto> results = new List <StatisticsResultDto>(); foreach (ActivityStatistics queryResult in queryResults) { StatisticsResultDto dto = ActivityStatisticsResultDto.fromActivityStatistics(queryResult); results.Add(dto); } return(results); }