コード例 #1
0
        public virtual void testActivityStatisticsQuery()
        {
            runtimeService.startProcessInstanceByKey("ExampleProcess");
            ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().processDefinitionKey("ExampleProcess").singleResult();

            IList <ActivityStatistics> statistics = managementService.createActivityStatisticsQuery(definition.Id).includeFailedJobs().includeIncidents().list();

            Assert.assertEquals(1, statistics.Count);

            ActivityStatistics activityResult = statistics[0];

            Assert.assertEquals(1, activityResult.Instances);
            Assert.assertEquals("theTask", activityResult.Id);
            Assert.assertEquals(0, activityResult.FailedJobs);
            assertTrue(activityResult.IncidentStatistics.Count == 0);
        }
コード例 #2
0
        public virtual void testQueryIncludingFailedJobsWithReadInstancePermissionOnProcessDefinition()
        {
            // given
            string processDefinitionId = selectProcessDefinitionByKey(ONE_INCIDENT_PROCESS_KEY).Id;

            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.Id);
            assertEquals(3, statistics.Instances);
            assertEquals(3, statistics.FailedJobs);
            assertTrue(statistics.IncidentStatistics.Count == 0);
        }
コード例 #3
0
        public virtual void testQueryByFailedJobsWithFailedTimerStartEvent()
        {
            ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().processDefinitionKey("process").singleResult();

            executeAvailableJobs();

            IList <ActivityStatistics> statistics = managementService.createActivityStatisticsQuery(definition.Id).includeFailedJobs().list();

            assertEquals(1, statistics.Count);

            ActivityStatistics result = statistics[0];

            // there is no running instance
            assertEquals(0, result.Instances);
            // but there is one failed timer job
            assertEquals(1, result.FailedJobs);
        }
コード例 #4
0
        public static ActivityStatisticsResultDto fromActivityStatistics(ActivityStatistics statistics)
        {
            ActivityStatisticsResultDto dto = new ActivityStatisticsResultDto();

            dto.id         = statistics.Id;
            dto.instances  = statistics.Instances;
            dto.failedJobs = statistics.FailedJobs;

            dto.incidents = new List <IncidentStatisticsResultDto>();
            foreach (IncidentStatistics incident in statistics.IncidentStatistics)
            {
                IncidentStatisticsResultDto incidentDto = IncidentStatisticsResultDto.fromIncidentStatistics(incident);
                dto.incidents.Add(incidentDto);
            }

            return(dto);
        }
コード例 #5
0
        public virtual void testManyAuthorizationsActivityStatisticsQuery()
        {
            string processDefinitionId = selectProcessDefinitionByKey(ONE_INCIDENT_PROCESS_KEY).Id;

            createGrantAuthorization(PROCESS_DEFINITION, ONE_INCIDENT_PROCESS_KEY, userId, READ, READ_INSTANCE);
            createGrantAuthorizationGroup(PROCESS_DEFINITION, ONE_INCIDENT_PROCESS_KEY, groupId, READ, READ_INSTANCE);

            IList <ActivityStatistics> statistics = managementService.createActivityStatisticsQuery(processDefinitionId).list();

            assertEquals(1, statistics.Count);

            ActivityStatistics activityResult = statistics[0];

            assertEquals(3, activityResult.Instances);
            assertEquals("scriptTask", activityResult.Id);
            assertEquals(0, activityResult.FailedJobs);
            assertTrue(activityResult.IncidentStatistics.Count == 0);
        }
コード例 #6
0
        public virtual void testActivityStatisticsQueryWithInvalidIncidentType()
        {
            IDictionary <string, object> parameters = new Dictionary <string, object>();

            parameters["fail"] = true;

            ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("ExampleProcess", parameters);

            executeAvailableJobs();

            IList <ActivityStatistics> statistics = managementService.createActivityStatisticsQuery(processInstance.ProcessDefinitionId).includeIncidentsForType("invalid").list();

            Assert.assertEquals(1, statistics.Count);

            ActivityStatistics activityResult = statistics[0];

            IList <IncidentStatistics> incidentStatistics = activityResult.IncidentStatistics;

            assertTrue(incidentStatistics.Count == 0);
        }
コード例 #7
0
        public virtual void testActivityStatisticsIgnoreRead()
        {
            // given
            IList <string> permissions = new List <string>();

            permissions.Add(READ.name());
            permissions.Add(READ_INSTANCE.name());
            processEngineConfiguration.DisabledPermissions = permissions;
            string processDefinitionId = runtimeService.startProcessInstanceByKey("timerBoundaryProcess").ProcessDefinitionId;

            authRule.enableAuthorization(USER_ID);

            // when
            ActivityStatistics statistics = managementService.createActivityStatisticsQuery(processDefinitionId).singleResult();

            // then
            assertNotNull(statistics);
            assertEquals("task", statistics.Id);
            assertEquals(1, statistics.Instances);
            assertEquals(0, statistics.FailedJobs);
            assertTrue(statistics.IncidentStatistics.Count == 0);
        }
コード例 #8
0
        public virtual void testActivityStatisticsQueryWithoutFailedJobs()
        {
            IDictionary <string, object> parameters = new Dictionary <string, object>();

            parameters["fail"] = true;

            runtimeService.startProcessInstanceByKey("ExampleProcess", parameters);

            executeAvailableJobs();

            ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().processDefinitionKey("ExampleProcess").singleResult();

            IList <ActivityStatistics> statistics = managementService.createActivityStatisticsQuery(definition.Id).list();

            Assert.assertEquals(1, statistics.Count);

            ActivityStatistics activityResult = statistics[0];

            Assert.assertEquals(1, activityResult.Instances);
            Assert.assertEquals("theServiceTask", activityResult.Id);
            Assert.assertEquals(0, activityResult.FailedJobs);
        }
コード例 #9
0
        public virtual void testInitActivityInstanceStatistics()
        {
            // given
            ProcessInstance processInstance = rule.processInstance();

            // when
            IList <ActivityStatistics> activityStatistics = rule.ManagementService.createActivityStatisticsQuery(processInstance.ProcessDefinitionId).list();

            // then
            Assert.assertEquals(2, activityStatistics.Count);

            ActivityStatistics outerTaskStatistics = getStatistics(activityStatistics, "outerTask");

            Assert.assertNotNull(outerTaskStatistics);
            Assert.assertEquals("outerTask", outerTaskStatistics.Id);
            Assert.assertEquals(1, outerTaskStatistics.Instances);

            ActivityStatistics afterBoundaryStatistics = getStatistics(activityStatistics, "afterBoundaryTask");

            Assert.assertNotNull(afterBoundaryStatistics);
            Assert.assertEquals("afterBoundaryTask", afterBoundaryStatistics.Id);
            Assert.assertEquals(1, afterBoundaryStatistics.Instances);
        }
コード例 #10
0
        public virtual void testQueryIncludingInstancesWithReadPermissionOnOneProcessInstance()
        {
            // given
            string processDefinitionId = selectProcessDefinitionByKey(ONE_INCIDENT_PROCESS_KEY).Id;

            disableAuthorization();
            string processInstanceId = runtimeService.createProcessInstanceQuery().list().get(0).Id;

            enableAuthorization();

            createGrantAuthorization(PROCESS_DEFINITION, ONE_INCIDENT_PROCESS_KEY, userId, READ);
            createGrantAuthorization(PROCESS_INSTANCE, processInstanceId, userId, READ);

            // when
            ActivityStatistics statistics = managementService.createActivityStatisticsQuery(processDefinitionId).singleResult();

            // then
            assertNotNull(statistics);
            assertEquals("scriptTask", statistics.Id);
            assertEquals(1, statistics.Instances);
            assertEquals(0, statistics.FailedJobs);
            assertTrue(statistics.IncidentStatistics.Count == 0);
        }
コード例 #11
0
        public virtual void testStartBeforeInnerActivityWithMiBodySequentialSubprocessActivityStatistics()
        {
            // given the mi body is not yet instantiated
            ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("miSequentialSubprocess");

            // when
            runtimeService.createProcessInstanceModification(processInstance.Id).startBeforeActivity("subProcessTask").execute();

            // then the activity instance statistics are correct
            IList <ActivityStatistics> statistics = managementService.createActivityStatisticsQuery(processInstance.ProcessDefinitionId).list();

            assertEquals(2, statistics.Count);

            ActivityStatistics miTasksStatistics = getStatisticsForActivity(statistics, "subProcessTask");

            assertNotNull(miTasksStatistics);
            assertEquals(1, miTasksStatistics.Instances);

            ActivityStatistics beforeTaskStatistics = getStatisticsForActivity(statistics, "beforeTask");

            assertNotNull(beforeTaskStatistics);
            assertEquals(1, beforeTaskStatistics.Instances);
        }