private void LoadActionsFromXml(XmlNode subNode)
        {
            foreach (XmlNode ac in subNode)
            {
                if (ac is XmlComment || ac.Name != "Action")
                {
                    continue;
                }
                var level2Item = (XmlElement)ac;
                var name       = level2Item.GetAttribute("Name");
                var actionType = level2Item.GetAttribute("Type");
                var action     = ActionsManagement.CreateAction(actionType, name);

                try
                {
                    action.LoadFromConfig(level2Item);
                    action.ActionContainer = this;
                    AddAction(action);
                }
                catch (Exception e)
                {
                    Log.Error($"加载CommonResource: {ResourceName} Action:{name}出错,{e.Message}");
                }
            }
        }
        //public abstract void CreateActions();

        public BaseAction GetAction(string name)
        {
            if (_actionNames.Contains(name))
            {
                var action = ActionsManagement.CreateAction(name, name);
                action.ActionContainer = this;
                return(action);
            }

            return(_actions[name]);
        }
        private void LoadActions()
        {
            // 收集本身包里的Actions
            CollectActionsInSelfPackage();

            // 收集其它包里的Actions
            foreach (BaseProfile profile in OtherPackages)
            {
                CollectActionsInOtherPackage(profile);
            }

            // 创建通用Action的容器
            ActionsManagement.BuildCommonActionContainer();
        }
 private void CollectActionsInSelfPackage()
 {
     // 整合自己包里面的Action
     foreach (Type type in GetAllTypes())
     {
         if (type.IsSubclassOf(typeof(BaseAction)))
         {
             ActionsManagement.AddActionType(type.Name, type);
         }
         else if (type.IsSubclassOf(typeof(DataSource)))
         {
             DataSourceManagement.AddDataSourceType(type.Name, type);
         }
     }
 }
 /// ///////////////////////////////////////
 /// 以下为本Package自己的任务
 private void CollectActionsInOtherPackage(BaseProfile profile)
 {
     // 整合别的包里面的Action
     foreach (Type type in profile.GetAllTypes())
     {
         if (type.IsSubclassOf(typeof(BaseAction)))
         {
             ActionsManagement.AddActionType(type.Name, type);
         }
         else if (type.IsSubclassOf(typeof(DataSource)))
         {
             DataSourceManagement.AddDataSourceType(type.Name, type);
         }
     }
 }
Пример #6
0
        public void AssignAction(ParameterManager processParameterManager)
        {
            //if (!_bindToResourceTemplate) return;
            var dictionaryParameter = processParameterManager.GetDictionaryParam(_bindingDictionaryName);

            var selectedResource = dictionaryParameter.GetValue(_bindKey).ToString();

            var resource = ActionsManagement.GetContainer(selectedResource);

            var baseAction = resource.GetAction(_actionName);

            Action = baseAction.Clone();
            Action.ActionContainer = baseAction.ActionContainer;

            Log.Info($"当前StepAction绑定的是Machine:[{selectedResource}]的Action:[{_actionName}].");
        }
        private void LoadActionsFromXml(IEnumerable level1Node)
        {
            #region actions

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

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

                var level2Item = (XmlElement)level2Node;

                // 动态创建Action
                var name       = level2Item.GetAttribute("Name");
                var actionType = level2Item.GetAttribute("Type");

                var action = (MachineAction)ActionsManagement.CreateAction(actionType, name);
                action.OwnerMachine = this;

                if (action.LoadFromConfig(level2Item))
                {
                    // 加入到Machine的Action集合
                    try
                    {
                        AddAction(action);
                    }
                    catch (Exception ex)
                    {
                        Log.Error($"加载机器{ResourceName} 的Action:{name}出错:{ex}");
                    }
                }
                else
                {
                    Log.Error($"加载机器{ResourceName} 的Action:{name}出错");
                }
            }

            #endregion
        }
Пример #8
0
        public void InitFromXml(XmlElement xmlElement)
        {
            var containerName = xmlElement.GetAttribute("Container");

            _actionName = xmlElement.GetAttribute("Action");

            //step action的container绑定了resource Template, sunjian 2019-12-25

            if (containerName.Contains("{Using"))
            {
                _bindToResourceTemplate = true;

                var trimmedContainerString = containerName.Trim('{').Trim('}').Replace(" ", "").Trim();

                var containerAttribute = trimmedContainerString.Split(',');

                var resourceTemplateName = containerAttribute[0].Substring("Using".Length,
                                                                           containerAttribute[0].Length - "Using".Length);

                _bindingDictionaryName = containerAttribute[1]
                                         .Substring("Binding{".Length, containerAttribute[1].Length - "Binding{".Length);

                _bindKey = containerAttribute[2].Substring("Key=".Length, containerAttribute[2].Length - "Key=".Length);

                var resourceTemplate =
                    (MachineResourceTemplate)ResourceManager.GetResourceTemplate(resourceTemplateName);

                if (!resourceTemplate.HasAction(_actionName))
                {
                    Log.Error($"ResourceTemplate:[{resourceTemplate}]中不存Action:[{_actionName}]");
                }
            }

            else if (!string.IsNullOrEmpty(containerName))
            {
                _bindToResourceTemplate = false;
                var container = ActionsManagement.GetContainer(containerName);
                Action = container.GetAction(_actionName);
            }
        }
        //public override List<string> GetResourceNames()
        //{ // 获得所有资源名
        //    return (Enum.GetNames(typeof(ResourceType))).ToList();
        //}

        protected override void InitResources()
        {
            ActionsManagement.Init();

            base.InitResources();
        }