public bool CheckEntity(float value, AlertMeasure measure, MeasureDiff diff)
        {
            if (value < 0)
            {
                return(false);
            }

            if (measure == null)
            {
                return(false);
            }

            try
            {
                MeasuredParameters ret = new MeasuredParameters();
                bool bRet = false;
                ret = CheckMeasure(measure, value, diff);

                if (ret != null && ret.Count > 0)
                {
                    AllocateReport(ret, measure.AlertMeasureName, diff);

                    //If we have something to report about - also flush it into the database.
                    Flush(ret);
                    bRet = true;
                }

                return(bRet);
            }
            catch (Exception ex)
            {
                Log.Write("Exception in CheckEntity", ex);
                return(false);
            }
        }
        protected bool Evaluate(float value, float compare, MeasureDiff diff)
        {
            bool bRet = false;

            switch (diff)
            {
            case MeasureDiff.Equal:
            {
                if (value == compare)
                {
                    bRet = true;
                }
                else
                {
                    bRet = false;
                }

                break;
            }

            case MeasureDiff.Large:
            {
                if (value > compare)
                {
                    bRet = true;
                }
                else
                {
                    bRet = false;
                }

                break;
            }

            case MeasureDiff.Smaller:
            {
                //AP - what we want here is actually if the delta is smaller than -VALUE
                float neg = 0 - compare;
                if (value < neg)
                {
                    bRet = true;
                }
                else
                {
                    bRet = false;
                }

                break;
            }
            }

            return(bRet);
        }
Ejemplo n.º 3
0
        public Hashtable Get(MeasureDiff diff)
        {
            Hashtable ret = new Hashtable();

            if (diff == MeasureDiff.Unknown)
            {
                return(ret);
            }

            IDictionaryEnumerator ide = GetEnumerator();

            ide.Reset();

            while (ide.MoveNext())
            {
                Report r = (Report)ide.Value;
                if (r.DifferenceType == diff)
                {
                    ret.Add(ide.Key, ide.Value);
                }
            }

            return(ret);
        }
        /* Rules */
        protected virtual MeasuredParameters CheckMeasure(AlertMeasure measure, float value, MeasureDiff diff)
        {
            AlertMeasures measures = null;

            if (!ParentWorkflow.InternalParameters.Contains("AlertMeasures"))
            {
                measures = new AlertMeasures();
                ParentWorkflow.InternalParameters.Add("AlertMeasures", measures);
            }
            else
            {
                measures = (AlertMeasures)ParentWorkflow.InternalParameters["AlertMeasures"];
            }

            MeasuredParameters ret = new MeasuredParameters();

            for (int i = 0; i < _results.Count; i++)
            {
                try
                {
                    MeasuredParameter mp = (MeasuredParameter)_results[i];
                    if (measure.CompositeMeasure)
                    {
                        if (measure.Evaluate(mp, value, diff, measures))
                        {
                            ret.Add(mp.GK, mp);
                        }
                    }
                    else
                    {
                        if (Evaluate(mp.ValueFromMeasure(measure.AlertMeasureName),
                                     value,
                                     diff))
                        {
                            ret.Add(mp.GK, mp);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Log.Write("Exception occured while adding measured parameters", ex);
                    continue;;
                }
            }

            return(ret);
        }
        protected void AllocateReport(MeasuredParameters mps, string measure, MeasureDiff diff)
        {
            if (ParentWorkflow.InternalParameters.ContainsKey("Reports"))
            {
                Hashtable currentReports = (Hashtable)ParentWorkflow.InternalParameters["Reports"];
                if (currentReports.ContainsKey(_entityType))
                {
                    Reports entReports = (Reports)currentReports[_entityType];
                    if (entReports.ContainsDifference(diff))
                    {
                        //We have a report which contains this type of difference.
                        Report curReport = (Report)entReports[diff];
                        curReport.MeasuredParameters.Append(mps);
                        curReport.Processed      = false;
                        curReport.DifferenceType = diff;

                        if (!curReport.Measures.Contains(MeasuredParameter.FromString(measure)))
                        {
                            curReport.Measures.Add(MeasuredParameter.FromString(measure));
                        }

                        entReports[diff] = curReport;
                    }
                    else
                    {
                        //We do not have a report which contains this type of difference.
                        Report r = new Report();
                        r.MeasuredParameters.Append(mps);
                        r.Processed      = false;
                        r.Name           = this.Name;
                        r.DifferenceType = diff;
                        r.Measures.Add(MeasuredParameter.FromString(measure));
                        entReports.Add(diff, r);
                    }

                    currentReports[_entityType] = entReports;
                }
                else
                {
                    //We do not have a report for this entity type.
                    Report r = new Report();
                    r.MeasuredParameters.Append(mps);
                    r.Processed      = false;
                    r.Name           = this.Name;
                    r.DifferenceType = diff;
                    r.Measures.Add(MeasuredParameter.FromString(measure));

                    if (ParentWorkflow.InternalParameters.ContainsKey("AccountFilters"))
                    {
                        r.Filters = (AccountAlertFilters)ParentWorkflow.InternalParameters["AccountFilters"];
                    }

                    r.Account = Convert.ToInt32(ParentWorkflow.Parameters["AccountID"]);

                    Reports ht = new Reports();
                    ht.Add(diff, r);

                    currentReports.Add(_entityType, ht);
                    ParentWorkflow.InternalParameters["Reports"] = currentReports;
                }
            }
            else
            {
                Report r = new Report();
                r.MeasuredParameters.Append(mps);
                r.Processed      = false;
                r.Name           = this.Name;
                r.DifferenceType = diff;
                r.Measures.Add(MeasuredParameter.FromString(measure));

                if (ParentWorkflow.InternalParameters.ContainsKey("AccountFilters"))
                {
                    r.Filters = (AccountAlertFilters)ParentWorkflow.InternalParameters["AccountFilters"];
                }

                r.Account = Convert.ToInt32(ParentWorkflow.Parameters["AccountID"]);

                Reports ht = new Reports();
                ht.Add(diff, r);

                Hashtable reports = new Hashtable();
                reports.Add(_entityType, ht);
                ParentWorkflow.InternalParameters.Add("Reports", reports);
            }
        }
Ejemplo n.º 6
0
 public bool ContainsDifference(MeasureDiff diff)
 {
     return(Get(diff).Count > 0);
 }