예제 #1
0
        public virtual void testQueryIncludingIncidentsAndFailedJobsWithReadPermissionOnOneProcessInstance()
        {
            // 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).includeIncidents().includeFailedJobs().singleResult();

            // then
            assertNotNull(statistics);
            assertEquals("scriptTask", statistics.Id);
            assertEquals(1, statistics.Instances);
            assertEquals(1, statistics.FailedJobs);
            assertFalse(statistics.IncidentStatistics.Count == 0);
            IncidentStatistics incidentStatistics = statistics.IncidentStatistics[0];

            assertEquals(1, incidentStatistics.IncidentCount);
        }
예제 #2
0
        public virtual void testQueryByFailedJobsAndIncidentsWithFailedTimerStartEvent()
        {
            ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().processDefinitionKey("process").singleResult();

            executeAvailableJobs();

            IList <ActivityStatistics> statistics = managementService.createActivityStatisticsQuery(definition.Id).includeFailedJobs().includeIncidents().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);

            IList <IncidentStatistics> incidentStatistics = result.IncidentStatistics;

            // and there is one incident for the failed timer job
            assertEquals(1, incidentStatistics.Count);

            IncidentStatistics incidentStatistic = incidentStatistics[0];

            assertEquals(1, incidentStatistic.IncidentCount);
            assertEquals(org.camunda.bpm.engine.runtime.Incident_Fields.FAILED_JOB_HANDLER_TYPE, incidentStatistic.IncidentType);
        }
예제 #3
0
        public virtual void testActivityStatisticsQueryWithIncidentType()
        {
            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("failedJob").list();

            Assert.assertEquals(1, statistics.Count);

            ActivityStatistics activityResult = statistics[0];

            IList <IncidentStatistics> incidentStatistics = activityResult.IncidentStatistics;

            assertFalse(incidentStatistics.Count == 0);
            assertEquals(1, incidentStatistics.Count);

            IncidentStatistics incident = incidentStatistics[0];

            assertEquals(org.camunda.bpm.engine.runtime.Incident_Fields.FAILED_JOB_HANDLER_TYPE, incident.IncidentType);
            assertEquals(1, incident.IncidentCount);
        }
예제 #4
0
        public virtual void testQueryByFailedJobsAndIncidentsWithFailedTimerStartEvent()
        {
            executeAvailableJobs();

            IList <DeploymentStatistics> statistics = managementService.createDeploymentStatisticsQuery().includeFailedJobs().includeIncidents().list();

            assertEquals(1, statistics.Count);

            DeploymentStatistics result = statistics[0];

            // there is no running instance
            assertEquals(0, result.Instances);
            // but there is one failed timer job
            assertEquals(1, result.FailedJobs);

            IList <IncidentStatistics> incidentStatistics = result.IncidentStatistics;

            // and there is one incident for the failed timer job
            assertEquals(1, incidentStatistics.Count);

            IncidentStatistics incidentStatistic = incidentStatistics[0];

            assertEquals(1, incidentStatistic.IncidentCount);
            assertEquals(org.camunda.bpm.engine.runtime.Incident_Fields.FAILED_JOB_HANDLER_TYPE, incidentStatistic.IncidentType);
        }
예제 #5
0
        public virtual void testActivityStatisticsQueryWithIncidentsWithoutFailedJobs()
        {
            ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("callExampleSubProcess");

            executeAvailableJobs();

            IList <ActivityStatistics> statistics = managementService.createActivityStatisticsQuery(processInstance.ProcessDefinitionId).includeIncidents().includeFailedJobs().list();

            Assert.assertEquals(1, statistics.Count);

            ActivityStatistics activityResult = statistics[0];

            Assert.assertEquals("callSubProcess", activityResult.Id);
            Assert.assertEquals(0, activityResult.FailedJobs);     // has no failed jobs

            IList <IncidentStatistics> incidentStatistics = activityResult.IncidentStatistics;

            assertFalse(incidentStatistics.Count == 0);
            assertEquals(1, incidentStatistics.Count);

            IncidentStatistics incident = incidentStatistics[0];

            assertEquals(org.camunda.bpm.engine.runtime.Incident_Fields.FAILED_JOB_HANDLER_TYPE, incident.IncidentType);
            assertEquals(1, incident.IncidentCount);     //... but has one incident
        }
예제 #6
0
        public virtual void testDeploymentStatisticsQueryWithTwoIncidentsAndOneFailedJobs()
        {
            runtimeService.startProcessInstanceByKey("callExampleSubProcess");

            executeAvailableJobs();

            IList <DeploymentStatistics> statistics = managementService.createDeploymentStatisticsQuery().includeIncidents().includeFailedJobs().list();

            assertFalse(statistics.Count == 0);
            assertEquals(1, statistics.Count);

            DeploymentStatistics result = statistics[0];

            // has one failed job
            Assert.assertEquals(1, result.FailedJobs);

            IList <IncidentStatistics> incidentStatistics = result.IncidentStatistics;

            assertFalse(incidentStatistics.Count == 0);
            assertEquals(1, incidentStatistics.Count);

            IncidentStatistics incident = incidentStatistics[0];

            assertEquals(org.camunda.bpm.engine.runtime.Incident_Fields.FAILED_JOB_HANDLER_TYPE, incident.IncidentType);
            assertEquals(2, incident.IncidentCount);     // ...but two incidents
        }
예제 #7
0
        public virtual void testDeploymentStatisticsQueryWithIncidentsAndFailedJobs()
        {
            IDictionary <string, object> parameters = new Dictionary <string, object>();

            parameters["fail"] = true;

            runtimeService.startProcessInstanceByKey("MIExampleProcess");
            runtimeService.startProcessInstanceByKey("ExampleProcess", parameters);

            executeAvailableJobs();

            IList <DeploymentStatistics> statistics = managementService.createDeploymentStatisticsQuery().includeIncidents().includeFailedJobs().list();

            assertFalse(statistics.Count == 0);
            assertEquals(1, statistics.Count);

            DeploymentStatistics result = statistics[0];

            Assert.assertEquals(1, result.FailedJobs);

            IList <IncidentStatistics> incidentStatistics = result.IncidentStatistics;

            assertFalse(incidentStatistics.Count == 0);
            assertEquals(1, incidentStatistics.Count);

            IncidentStatistics incident = incidentStatistics[0];

            assertEquals(org.camunda.bpm.engine.runtime.Incident_Fields.FAILED_JOB_HANDLER_TYPE, incident.IncidentType);
            assertEquals(1, incident.IncidentCount);
        }
예제 #8
0
        public virtual void testProcessDefinitionStatisticsQueryWithIncidents()
        {
            runtimeService.startProcessInstanceByKey("ExampleProcess");

            IDictionary <string, object> parameters = new Dictionary <string, object>();

            parameters["fail"] = true;
            runtimeService.startProcessInstanceByKey("ExampleProcess", parameters);

            executeAvailableJobs();

            IList <ProcessDefinitionStatistics> statistics = managementService.createProcessDefinitionStatisticsQuery().includeIncidents().list();

            Assert.assertEquals(1, statistics.Count);

            ProcessDefinitionStatistics definitionResult = statistics[0];

            Assert.assertEquals(2, definitionResult.Instances);

            assertFalse(definitionResult.IncidentStatistics.Count == 0);
            assertEquals(1, definitionResult.IncidentStatistics.Count);

            IncidentStatistics incidentStatistics = definitionResult.IncidentStatistics[0];

            Assert.assertEquals(org.camunda.bpm.engine.runtime.Incident_Fields.FAILED_JOB_HANDLER_TYPE, incidentStatistics.IncidentType);
            Assert.assertEquals(1, incidentStatistics.IncidentCount);
        }
예제 #9
0
        public virtual void testProcessDefinitionStatisticsQueryWithIncidentsWithoutFailedJobs()
        {
            runtimeService.startProcessInstanceByKey("callExampleSubProcess");

            executeAvailableJobs();

            IList <ProcessDefinitionStatistics> statistics = managementService.createProcessDefinitionStatisticsQuery().includeIncidents().includeFailedJobs().list();

            Assert.assertEquals(2, statistics.Count);

            ProcessDefinitionStatistics callExampleSubProcessStaticstics = null;
            ProcessDefinitionStatistics exampleSubProcessStaticstics     = null;

            foreach (ProcessDefinitionStatistics current in statistics)
            {
                if (current.Key.Equals("callExampleSubProcess"))
                {
                    callExampleSubProcessStaticstics = current;
                }
                else if (current.Key.Equals("ExampleProcess"))
                {
                    exampleSubProcessStaticstics = current;
                }
                else
                {
                    fail(current.Key + " was not expected.");
                }
            }

            assertNotNull(callExampleSubProcessStaticstics);
            assertNotNull(exampleSubProcessStaticstics);

            // "super" process definition
            assertEquals(1, callExampleSubProcessStaticstics.Instances);
            assertEquals(0, callExampleSubProcessStaticstics.FailedJobs);

            assertFalse(callExampleSubProcessStaticstics.IncidentStatistics.Count == 0);
            assertEquals(1, callExampleSubProcessStaticstics.IncidentStatistics.Count);

            IncidentStatistics incidentStatistics = callExampleSubProcessStaticstics.IncidentStatistics[0];

            assertEquals(org.camunda.bpm.engine.runtime.Incident_Fields.FAILED_JOB_HANDLER_TYPE, incidentStatistics.IncidentType);
            assertEquals(1, incidentStatistics.IncidentCount);

            // "called" process definition
            assertEquals(1, exampleSubProcessStaticstics.Instances);
            assertEquals(1, exampleSubProcessStaticstics.FailedJobs);

            assertFalse(exampleSubProcessStaticstics.IncidentStatistics.Count == 0);
            assertEquals(1, exampleSubProcessStaticstics.IncidentStatistics.Count);

            incidentStatistics = exampleSubProcessStaticstics.IncidentStatistics[0];
            assertEquals(org.camunda.bpm.engine.runtime.Incident_Fields.FAILED_JOB_HANDLER_TYPE, incidentStatistics.IncidentType);
            assertEquals(1, incidentStatistics.IncidentCount);
        }
예제 #10
0
        public virtual void testProcessDefinitionStatisticsQueryForMultipleVersionsWithFailedJobsAndIncidents()
        {
            org.camunda.bpm.engine.repository.Deployment deployment = repositoryService.createDeployment().addClasspathResource("org/camunda/bpm/engine/test/api/mgmt/StatisticsTest.testStatisticsQueryWithFailedJobs.bpmn20.xml").deploy();

            IList <ProcessDefinition> definitions = repositoryService.createProcessDefinitionQuery().processDefinitionKey("ExampleProcess").list();

            IDictionary <string, object> parameters = new Dictionary <string, object>();

            parameters["fail"] = true;

            foreach (ProcessDefinition definition in definitions)
            {
                runtimeService.startProcessInstanceById(definition.Id, parameters);
            }

            executeAvailableJobs();

            IList <ProcessDefinitionStatistics> statistics = managementService.createProcessDefinitionStatisticsQuery().includeFailedJobs().includeIncidents().list();

            Assert.assertEquals(2, statistics.Count);

            ProcessDefinitionStatistics definitionResult = statistics[0];

            Assert.assertEquals(1, definitionResult.Instances);
            Assert.assertEquals(1, definitionResult.FailedJobs);

            IList <IncidentStatistics> incidentStatistics = definitionResult.IncidentStatistics;

            assertFalse(incidentStatistics.Count == 0);
            assertEquals(1, incidentStatistics.Count);

            IncidentStatistics incident = incidentStatistics[0];

            assertEquals(org.camunda.bpm.engine.runtime.Incident_Fields.FAILED_JOB_HANDLER_TYPE, incident.IncidentType);
            assertEquals(1, incident.IncidentCount);

            definitionResult = statistics[1];
            Assert.assertEquals(1, definitionResult.Instances);
            Assert.assertEquals(1, definitionResult.FailedJobs);

            incidentStatistics = definitionResult.IncidentStatistics;
            assertFalse(incidentStatistics.Count == 0);
            assertEquals(1, incidentStatistics.Count);

            incident = incidentStatistics[0];

            assertEquals(org.camunda.bpm.engine.runtime.Incident_Fields.FAILED_JOB_HANDLER_TYPE, incident.IncidentType);
            assertEquals(1, incident.IncidentCount);

            repositoryService.deleteDeployment(deployment.Id, true);
        }
예제 #11
0
        public virtual void testManyAuthorizationsActivityStatisticsQueryIncludingFailedJobsAndIncidents()
        {
            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).includeFailedJobs().includeIncidents().list();

            assertEquals(1, statistics.Count);

            ActivityStatistics activityResult = statistics[0];

            assertEquals(3, activityResult.Instances);
            assertEquals("scriptTask", activityResult.Id);
            assertEquals(3, activityResult.FailedJobs);
            assertFalse(activityResult.IncidentStatistics.Count == 0);
            IncidentStatistics incidentStatistics = activityResult.IncidentStatistics[0];

            assertEquals(3, incidentStatistics.IncidentCount);
        }