예제 #1
0
 public EventMessageModel(EventRuleCatalog eventRuleCatalog,
                          string triggeredTime, bool eventSent,
                          string messageDocumentId, JObject payload)
 {
     MessageId            = eventRuleCatalog.MessageCatalogId;
     EventRuleId          = eventRuleCatalog.Id;
     EventRuleName        = eventRuleCatalog.Name;
     EventRuleDescription = eventRuleCatalog.Description;
     TriggeredTime        = triggeredTime;
     EventSent            = eventSent;
     MessageDocumentId    = messageDocumentId;
     Payload = payload;
 }
예제 #2
0
        public void DeleteById(int id)
        {
            using (CDStudioEntities dbEntity = new CDStudioEntities())
            {
                EventRuleCatalog existingData = dbEntity.EventRuleCatalog.Find(id);
                if (existingData == null)
                {
                    throw new CDSException(10701);
                }

                dbEntity.EventRuleCatalog.Remove(existingData);
                dbEntity.SaveChanges();
            }
        }
예제 #3
0
        public int Create(int companyId, Format_Create parseData)
        {
            using (CDStudioEntities dbEntity = new CDStudioEntities())
            {
                EventRuleCatalog newData = new EventRuleCatalog();
                newData.CompanyId        = companyId;
                newData.MessageCatalogId = parseData.MessageCatalogId;
                newData.Name             = parseData.Name;
                newData.Description      = parseData.Description ?? "";
                newData.AggregateInSec   = parseData.AggregateInSec;
                newData.ActiveFlag       = parseData.ActiveFlag;

                dbEntity.EventRuleCatalog.Add(newData);
                dbEntity.SaveChanges();
                return(newData.Id);
            }
        }
예제 #4
0
        public Format_Detail GetById(int id)
        {
            using (CDStudioEntities dbEntity = new CDStudioEntities())
            {
                EventRuleCatalog existingData = (from c in dbEntity.EventRuleCatalog.AsNoTracking()
                                                 where c.Id == id
                                                 select c).SingleOrDefault <EventRuleCatalog>();
                if (existingData == null)
                {
                    throw new CDSException(10701);
                }

                return(new Format_Detail()
                {
                    Id = existingData.Id,
                    MessageCatalogId = existingData.MessageCatalogId,
                    Name = existingData.Name,
                    MessageCatalogName = existingData.MessageCatalog == null ? "" : existingData.MessageCatalog.Name,
                    Description = existingData.Description ?? "",
                    AggregateInSec = existingData.AggregateInSec,
                    ActiveFlag = existingData.ActiveFlag
                });
            }
        }
예제 #5
0
        private Dictionary <string, RuleEngineItem> createRuleEngineItem(EventRuleCatalog eventRuleCatalog)
        {
            List <DetailForRuleEngineModel> detailForRuleEngineModelList = new List <DetailForRuleEngineModel>();

            foreach (EventRuleItem erItem in eventRuleCatalog.EventRuleItem)
            {
                DetailForRuleEngineModel returnData = new DetailForRuleEngineModel();
                returnData.Id = erItem.Id;
                returnData.EventRuleCatalogId = eventRuleCatalog.Id;
                returnData.Ordering           = erItem.Ordering;
                returnData.MessageElementId   = erItem.MessageElementId;
                returnData.EqualOperation     = erItem.EqualOperation;
                returnData.Value                  = erItem.Value;
                returnData.BitWiseOperation       = erItem.BitWiseOperation;
                returnData.MessageElementDataType = erItem.MessageElement1.ElementDataType;

                if (erItem.MessageElement != null)
                {
                    returnData.MessageElementFullName = erItem.MessageElement.ElementName + "_" + erItem.MessageElement1.ElementName;
                }
                else
                {
                    returnData.MessageElementFullName = erItem.MessageElement1.ElementName;
                }

                detailForRuleEngineModelList.Add(returnData);
            }

            Dictionary <string, RuleEngineItem> ruleEngineItems = new Dictionary <string, RuleEngineItem>();

            int index = 0;

            foreach (var detailForRuleEngineModel in detailForRuleEngineModelList)
            {
                RuleEngineItem rei = new RuleEngineItem();
                rei.ElementName    = detailForRuleEngineModel.MessageElementFullName;
                rei.DataType       = AlarmRuleItemEngineUtility.GetSupportDataType(detailForRuleEngineModel.MessageElementDataType);
                rei.OrderOperation = detailForRuleEngineModel.BitWiseOperation;
                rei.Result         = false;

                _consoleLog.MessageEventDebug("--ElementName={0}, BitWiseOperation={1}", rei.ElementName, rei.OrderOperation);

                if (rei.DataType == SupportDataTypeEnum.String &&
                    (string.IsNullOrEmpty(detailForRuleEngineModel.Value) || detailForRuleEngineModel.Value.ToLower().Equals("null")))
                {
                    detailForRuleEngineModel.Value = "null";
                }

                if (rei.DataType == SupportDataTypeEnum.Numeric || rei.DataType == SupportDataTypeEnum.Bool)
                {
                    rei.Equality = createCompiledRuleFunc(rei.DataType, detailForRuleEngineModel.EqualOperation, detailForRuleEngineModel.Value);
                }
                else
                {
                    // SupportDataTypeEnum.String
                    rei.Equality         = null;
                    rei.StringRightValue = detailForRuleEngineModel.Value;

                    if (detailForRuleEngineModel.EqualOperation.Equals("=") || detailForRuleEngineModel.EqualOperation.Equals("!="))
                    {
                        rei.StringEqualOperation = detailForRuleEngineModel.EqualOperation;
                    }
                    else
                    {
                        throw new ArgumentNullException("String equal operation is not supported - " + detailForRuleEngineModel.EqualOperation);
                    }

                    _consoleLog.MessageEventDebug("----ruleText=({0} {1} {2})", rei.ElementName, detailForRuleEngineModel.EqualOperation, rei.StringRightValue);
                }

                // Add the index to avoid the duplicate key
                ruleEngineItems.Add(rei.ElementName + "-" + index, rei);
                index++;
            }

            return(ruleEngineItems);
        }
예제 #6
0
        private List <EventRuleCatalog> generateEventRuleCatalogList(int messageCatalogId)
        {
            List <EventRuleCatalog> eventRuleCatalogList = new List <EventRuleCatalog>();
            EventRuleCatalog        erc1, erc2, erc3, erc4;

            switch (messageCatalogId)
            {
            case 79:
                erc1    = new EventRuleCatalog();
                erc1.Id = 54;
                erc1.MessageCatalogId = messageCatalogId;
                erc1.Name             = "MachineA_Color_Red_Warning";
                erc1.Description      = "MachineA_Color_Red_Warning";
                erc1.AggregateInSec   = 0;
                erc1.ActiveFlag       = true;
                erc1.EventRuleItem    = generateEventRuleItemList(erc1.Id);
                erc1.EventInAction    = generateEventInActionList(erc1.Id);
                eventRuleCatalogList.Add(erc1);

                erc2    = new EventRuleCatalog();
                erc2.Id = 55;
                erc2.MessageCatalogId = messageCatalogId;
                erc2.Name             = "MachineB_Color_Green_Warning";
                erc2.Description      = "MachineB_Color_Green_Warning";
                erc2.AggregateInSec   = 30;
                erc2.ActiveFlag       = true;
                erc2.EventRuleItem    = generateEventRuleItemList(erc2.Id);
                erc2.EventInAction    = generateEventInActionList(erc2.Id);
                eventRuleCatalogList.Add(erc2);

                erc3    = new EventRuleCatalog();
                erc3.Id = 56;
                erc3.MessageCatalogId = messageCatalogId;
                erc3.Name             = "MaA_NotWhite_n_NotBlack_OR_MaB_Yellow";
                erc3.Description      = "MaA_NotWhite_n_NotBlack_OR_MaB_Yellow";
                erc3.AggregateInSec   = 60;
                erc3.ActiveFlag       = true;
                erc3.EventRuleItem    = generateEventRuleItemList(erc3.Id);
                erc3.EventInAction    = generateEventInActionList(erc3.Id);
                eventRuleCatalogList.Add(erc3);

                erc4    = new EventRuleCatalog();
                erc4.Id = 59;
                erc4.MessageCatalogId = messageCatalogId;
                erc4.Name             = "MachineA_Color_Black_Warning";
                erc4.Description      = "MachineA_Color_Black_Warning";
                erc4.AggregateInSec   = 60;
                erc4.ActiveFlag       = false;
                erc4.EventRuleItem    = generateEventRuleItemList(erc4.Id);
                erc4.EventInAction    = generateEventInActionList(erc4.Id);
                eventRuleCatalogList.Add(erc4);
                break;

            case 84:
                break;

            case 85:
                erc1    = new EventRuleCatalog();
                erc1.Id = 60;
                erc1.MessageCatalogId = messageCatalogId;
                erc1.Name             = "TemperatureAlert";
                erc1.Description      = "TemperatureAlert";
                erc1.AggregateInSec   = 60;
                erc1.ActiveFlag       = true;
                erc1.EventRuleItem    = generateEventRuleItemList(erc1.Id);
                erc1.EventInAction    = generateEventInActionList(erc1.Id);
                eventRuleCatalogList.Add(erc1);
                break;

            default:
                throw new ArgumentException();
            }

            return(eventRuleCatalogList);
        }