/// ///////////////////////////////////////
 /// 以下为本Package自己的任务
 private void CollectEventsInOtherPackage(BaseProfile profile)
 {
     // 整合别的包里面的Action
     foreach (Type type in profile.GetAllTypes())
     {
         if (type.IsSubclassOf(typeof(BaseEvent)))
         {
             EventsManagement.AddEventType(type.Name, type);
         }
     }
 }
 private void CollectEventsInSelfPackage()
 {
     // 整合自己包里面的Action
     foreach (Type type in GetAllTypes())
     {
         if (type.IsSubclassOf(typeof(BaseEvent)))
         {
             EventsManagement.AddEventType(type.Name, type);
         }
     }
 }
        private void LoadEventsFromXml(IEnumerable level1Node)
        {
            #region events

            foreach (XmlNode level2Node in level1Node)
            {
                // level2 --  "events"

                //add
                if (level2Node.NodeType == XmlNodeType.Comment)
                {
                    continue;
                }

                var level2Item = (XmlElement)level2Node;

                // 动态创建Event
                var Name      = level2Item.GetAttribute("Name");
                var EventType = level2Item.GetAttribute("Type");

                var Event = EventsManagement.CreateEvent(EventType, Name);
                Event.OwnerResource = this;

                if (Event == null)
                {
                    throw new Exception($"创建Event 名称{Name},类型{EventType}失败");
                }
                if (Event.LoadFromConfig(level2Item))
                {
                    // 加入到Machine的Event集合
                    try
                    {
                        AddEvent(Event);
                    }
                    catch (Exception ex)
                    {
                        Log.Error($"加载机器{ResourceName} 的Event:{Name}出错:{ex}");
                    }
                }
                else
                {
                    Log.Error($"加载机器{ResourceName} 的Event:{Name}出错");
                }
            }

            #endregion
        }
        public override bool LoadFromConfig(XmlElement level1Item)
        {
            try
            {
                var strContainer = level1Item.GetAttribute("Container");
                var strEvent     = level1Item.GetAttribute("Event");

                var container = EventsManagement.GetContainer(strContainer);
                _event = container.GetEvent(strEvent);

                return(true);
            }
            catch (Exception ex)
            {
                Log.Error($"装载EventCondition {Name}时出错:{ex}");
                return(false);
            }
        }
示例#5
0
 public Machine(string name) : base(name)
 {
     EventsManagement.AddEventContainer(this);
 }