public void DefineKpiIfRequired(OssKpiDefinition kpiDefinition) { Logger.WriteStartMessage(OssTracePoints.TelemetryTracePoints.DefineKpiIfRequiredStart, TraceLayer.Telemetry, MethodBase.GetCurrentMethod().Name); var isKpiDefined = this.oiPublisher.IsKpiDefined(kpiDefinition.Area, kpiDefinition.KpiName, KpiConstants.Scope); if (!isKpiDefined) { var definition = new KpiDefinition() { Name = kpiDefinition.KpiName, Scope = KpiConstants.Scope, DisplayName = kpiDefinition.DisplayName, Description = kpiDefinition.Description, Area = kpiDefinition.Area, HigherIsBetter = kpiDefinition.HigherIsBetter }; if (kpiDefinition.GoodValue.HasValue) { definition.States.Add(new KpiStateDefinition() { KpiState = KpiState.Good, Limit = kpiDefinition.GoodValue.Value, EventId = kpiDefinition.EventId, }); } if (kpiDefinition.WarningValue.HasValue) { definition.States.Add(new KpiStateDefinition() { KpiState = KpiState.Warning, Limit = kpiDefinition.WarningValue.Value, EventId = kpiDefinition.EventId, }); } if (kpiDefinition.ErrorValue.HasValue) { definition.States.Add(new KpiStateDefinition() { KpiState = KpiState.Error, Limit = kpiDefinition.ErrorValue.Value, EventId = kpiDefinition.EventId, }); } // Critical condition, enable alert. if (kpiDefinition.CriticalValue.HasValue) { definition.States.Add(new KpiStateDefinition() { KpiState = KpiState.Critical, Limit = kpiDefinition.CriticalValue.Value, EventId = kpiDefinition.EventId, }); } this.oiPublisher.SaveKpiDefinition(definition); } Logger.WriteEndMessage(OssTracePoints.TelemetryTracePoints.DefineKpiIfRequiredEnd, TraceLayer.Telemetry, MethodBase.GetCurrentMethod().Name); }
private void CreateKpiObjects() { KpiScorecard obj2 = objectSpace.FindObject <KpiScorecard>(CriteriaOperator.Parse("Name='Sales'")); if (obj2 == null) { obj2 = objectSpace.CreateObject <KpiScorecard>(); obj2.Name = "Sales"; } KpiDefinition obj1 = objectSpace.FindObject <KpiDefinition>(CriteriaOperator.Parse("Name='New Leads'")); if (obj1 == null) { obj1 = objectSpace.CreateObject <KpiDefinition>(); obj1.Name = "New Leads"; obj1.TargetObjectType = typeof(CRMLead); obj1.Criteria = "CreatedOn >= '@RangeStart' And CreatedOn <= '@RangeEnd'"; obj1.Expression = "Count"; obj1.Range = DevExpress.ExpressApp.Kpi.DateRangeRepository.FindRange("ThisMonthToDate"); obj1.Compare = true; obj1.RangeToCompare = DevExpress.ExpressApp.Kpi.DateRangeRepository.FindRange("LastMonthToDate"); obj1.MeasurementFrequency = DevExpress.ExpressApp.Kpi.TimeIntervalType.Day; obj2.Indicators.Add(obj1.KpiInstance); } KpiDefinition obj11 = objectSpace.FindObject <KpiDefinition>(CriteriaOperator.Parse("Name='New Opportunities'")); if (obj11 == null) { obj11 = objectSpace.CreateObject <KpiDefinition>(); obj11.Name = "New Opportunities"; obj11.TargetObjectType = typeof(CRMOpportunity); obj11.Criteria = "CreatedOn >= '@RangeStart' And CreatedOn <= '@RangeEnd'"; obj11.Expression = "Count"; obj11.Range = DevExpress.ExpressApp.Kpi.DateRangeRepository.FindRange("ThisMonthToDate"); obj11.Compare = true; obj11.RangeToCompare = DevExpress.ExpressApp.Kpi.DateRangeRepository.FindRange("LastMonthToDate"); obj11.MeasurementFrequency = DevExpress.ExpressApp.Kpi.TimeIntervalType.Day; obj2.Indicators.Add(obj11.KpiInstance); } KpiDefinition obj12 = objectSpace.FindObject <KpiDefinition>(CriteriaOperator.Parse("Name='New Quotes'")); if (obj12 == null) { obj12 = objectSpace.CreateObject <KpiDefinition>(); obj12.Name = "New Quotes"; obj12.TargetObjectType = typeof(CRMQuote); obj12.Criteria = "CreatedOn >= '@RangeStart' And CreatedOn <= '@RangeEnd'"; obj12.Expression = "Count"; obj12.Range = DevExpress.ExpressApp.Kpi.DateRangeRepository.FindRange("ThisMonthToDate"); obj12.Compare = true; obj12.RangeToCompare = DevExpress.ExpressApp.Kpi.DateRangeRepository.FindRange("LastMonthToDate"); obj12.MeasurementFrequency = DevExpress.ExpressApp.Kpi.TimeIntervalType.Day; obj2.Indicators.Add(obj12.KpiInstance); } KpiDefinition obj13 = objectSpace.FindObject <KpiDefinition>(CriteriaOperator.Parse("Name='New Orders'")); if (obj13 == null) { obj13 = objectSpace.CreateObject <KpiDefinition>(); obj13.Name = "New Orders"; obj13.TargetObjectType = typeof(CRMOrder); obj13.Criteria = "CreatedOn >= '@RangeStart' And CreatedOn <= '@RangeEnd'"; obj13.Expression = "Count"; obj13.Range = DevExpress.ExpressApp.Kpi.DateRangeRepository.FindRange("ThisMonthToDate"); obj13.Compare = true; obj13.RangeToCompare = DevExpress.ExpressApp.Kpi.DateRangeRepository.FindRange("LastMonthToDate"); obj13.MeasurementFrequency = DevExpress.ExpressApp.Kpi.TimeIntervalType.Day; obj2.Indicators.Add(obj13.KpiInstance); } KpiDefinition obj14 = objectSpace.FindObject <KpiDefinition>(CriteriaOperator.Parse("Name='New Invoices'")); if (obj14 == null) { obj14 = objectSpace.CreateObject <KpiDefinition>(); obj14.Name = "New Invoices"; obj14.TargetObjectType = typeof(CRMInvoice); obj14.Criteria = "CreatedOn >= '@RangeStart' And CreatedOn <= '@RangeEnd'"; obj14.Expression = "Count"; obj14.Range = DevExpress.ExpressApp.Kpi.DateRangeRepository.FindRange("ThisMonthToDate"); obj14.Compare = true; obj14.RangeToCompare = DevExpress.ExpressApp.Kpi.DateRangeRepository.FindRange("LastMonthToDate"); obj14.MeasurementFrequency = DevExpress.ExpressApp.Kpi.TimeIntervalType.Day; obj2.Indicators.Add(obj14.KpiInstance); } objectSpace.CommitChanges(); }