/// <summary>
        /// 添加新的节点
        /// </summary>
        /// <returns></returns>
        public ActionResult AddNewNode(string CallBackIndexView = "Index")
        {
            //获取合法的新节点ID
            int targetDefaultNodeId = 0;

            lock (((ICollection)ConfigNodeList).SyncRoot)
            {
                do
                {
                    targetDefaultNodeId++;
                } while (ConfigNodeList.ContainsKey(targetDefaultNodeId.ToString()));

                //添加默认的数据
                ResponseNodeConfig          newOne  = new ResponseNodeConfig(targetDefaultNodeId.ToString());
                DefaultDealingHandlerConfig dealing = new DefaultDealingHandlerConfig()
                {
                    DataType = DataTypes.Text,
                    RawData  = "呈現的文本"
                };
                newOne.DealingHandlerConfig = dealing;
                newOne.DoneHandlerConfig    = new DefaultDoneHandlerConfig();
                ConfigNodeList.Add(newOne.NodeID, newOne);

                //写入到配置文件
                ResponseConfiguration.SaveConfig_ResponseChain(ConfigNodeList.Values.ToArray());

                ViewData["CurrentEditedNode"] = newOne;                                                                  //进入编辑状态
                Session["AdvantanceConfig_CustomHandler_Result"] = new Dictionary <Type, IConfigClassOfCustomHandler>(); //每次进去编辑状态,清空自定义处理器的参数配置结果
            }

            LoadDatas();
            ViewBag.CallBackIndexView = CallBackIndexView;
            return(View("Index"));
        }
Example #2
0
 public HttpSend(
     HttpEntityManager httpEntityManager, ResponseConfiguration configuration, string data, Message message)
     : base(Guid.Empty, null, httpEntityManager)
 {
     Data          = data;
     Configuration = configuration;
     Message       = message;
 }
        /// <summary>
        /// 保存单个节点的配置
        /// </summary>
        private void SaveOneConfig(ResponseNodeConfig configNode, string oldNodeId)
        {
            lock (((ICollection)ConfigNodeList).SyncRoot)
            {
                //删除旧的
                if (ConfigNodeList.ContainsKey(oldNodeId))
                {
                    ConfigNodeList.Remove(oldNodeId);
                }

                //新增
                ConfigNodeList[configNode.NodeID] = configNode;
            }

            //写入到配置文件
            ResponseConfiguration.SaveConfig_ResponseChain(ConfigNodeList.Values.ToArray());
        }
        /// <summary>
        /// 删除指定的节点
        /// </summary>
        /// <returns></returns>
        public ActionResult Delete(string nodeID, string CallBackIndexView = "Index")
        {
            if (ConfigNodeList != null)
            {
                lock (((ICollection)ConfigNodeList).SyncRoot)
                {
                    if (nodeID != ConstString.ROOT_NODE_ID && ConfigNodeList.ContainsKey(nodeID))
                    {
                        #region 自定义处理器的额外处理

                        //自定义处理的参数配置
                        if (ConfigNodeList[nodeID].DealingHandlerConfig is CustomHandlerConfig)
                        {
                            CustomHandlerConfig hd = ConfigNodeList[nodeID].DealingHandlerConfig as CustomHandlerConfig;
                            Type targetType        = CustomHandlerConfig.GetICustomHandlerTypeFromCurrentDomain(hd.HandlerTypeName);
                            bool isConfigable      = typeof(ICustomHandlerConfigable).IsAssignableFrom(targetType);
                            if (isConfigable)
                            {
                                //获取配置类
                                Type configClassType = ConfigClassOfCustomHandlerHelper.GetConfigClassType(targetType);
                                if (configClassType != null)
                                {
                                    //加载
                                    XDocument xdoc = ConfigClassOfCustomHandlerHelper.LoadConfigByType(configClassType);
                                    ConfigClassOfCustomHandlerHelper.RemoveConfig(xdoc, nodeID);
                                    //保存
                                    ConfigClassOfCustomHandlerHelper.SaveConfigByType(configClassType, xdoc);
                                }
                            }
                        }

                        #endregion

                        ConfigNodeList.Remove(nodeID);

                        //写入到配置文件
                        ResponseConfiguration.SaveConfig_ResponseChain(ConfigNodeList.Values.ToArray());
                    }
                }
            }

            LoadDatas();
            return(View(CallBackIndexView));
        }
Example #5
0
 public HttpBeginSend(Guid correlationId, IEnvelope envelope,
                      HttpEntityManager httpEntityManager, ResponseConfiguration configuration)
     : base(correlationId, envelope, httpEntityManager)
 {
     Configuration = configuration;
 }