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); } } }
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 }
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(); }