protected override Boolean Run(XmlElement state)
        {
            try
            {
                if (!this.IsReady())
                {
                    return false;
                }
                PopInputValue();

                _parameters = this.GetInputValue("Paras") as ParaItem[];
                ModelParameterWizardForm wizard = new ModelParameterWizardForm();
                ProcessDescription[] processQueue = new ProcessDescription[1];
                ProcessDescription item = new ProcessDescription("sample", 1, "sample", "sample");
                item.Inputs = _parameters;
                processQueue[0] = item;

                wizard.ProcessQueue = processQueue;
                if (wizard.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    List<ParameterSet> paras = wizard.ParameterSetList; //这个地方速度慢
                    _para = paras[0];
                }
                else
                {
                    wizard.Close();
                    return false;
                }

                PushOutputValue();
                return true;
            }
             catch (Exception ex)
             {
                 IRunningLogger logger = InstanceManager.Instance.Context.GetVariable("RunningLogger") as IRunningLogger;
                 if (null != logger)
                 {
                     logger.Error("sample.ProcessValidateModelFile", ex.Message);
                 }
             }
             finally
             {

             }

             return false;
        }
        public static Boolean ExecuteXmlModel(String filePath, Boolean isWithParameter)
        {
            try
            {
                String _filePath = filePath;
                if (!File.Exists(_filePath))
                {
                    return false;
                }
                //解析文件
                IModelParser parser = InstanceManager.Instance.NewParser;
                if (null == parser)
                {
                    return false;
                }
                parser.File = filePath;
                Boolean _isStepByStep = parser.IsStepByStepMode;
                //建立地理空间处理模型
                Graph gpm = new Graph();
                ProcessDescription[] processes = parser.ProcessList;

            //                List<ProcessDescription> processQueue = null;
            //                if (_isStepByStep)
            //                {
            //                    processQueue = new List<ProcessDescription>();
            //                    //从空间处理列表查找SpatialProcess
            //                    IProcessListParser processListParser = InstanceManager.Instance.ProcessListParser;
            //                    if (null == processListParser)
            //                    {
            //                        return false;
            //                    }

            //                    ProcessDefineDescription processDefine = null;
            //                    //ProcessDescription item = null;
            //                    List<ParaItem> parameters = null;
            //                    //ParaItem parameter = null;
            //                    foreach (ProcessDescription process in processes)
            //                    {
            //                        //如果是开始结点,就不添加到列表中
            //                        if (process.Name.Equals(_XMLTag.g_ValueStart))
            //                        {
            //                            continue;
            //                        }

            //                        processDefine = processListParser.GetProcess(process.Name);
            //                        //item = new ProcessDescription(processDefine.Name, process.Id, processDefine.Caption, processDefine.Description);
            //                        parameters = new List<ParaItem>();
            //                        foreach (ParaItem paraitem in processDefine.Inputs)
            //                        {
            //                            if (IsParameterInProcess(process, paraitem.Name))
            //                            {
            ////                                paraitem.Value = GetVariable(process, paraitem.Name);
            //                                parameters.Add(paraitem);
            //                            }
            //                        }
            //                        item.Inputs = parameters;
            //                        processQueue.Add(item);
            //                    }
            //                }
            //                else
            //                {
                    foreach (ProcessDescription process in processes)
                    {
                        gpm.CreateNode(process.Id, process);
                    }
                //}
                LinkDescription[] links = parser.LinkList;
                foreach (LinkDescription link in links)
                {
                    gpm.Link(gpm.NodeById(link.FromId), gpm.NodeById(link.ToId), link);
                }

                IModelJob job = InstanceManager.Instance.ProcessManager.CreateJob("xmlModel") as IModelJob;
                if (null == job)
                {
                    return false;
                }
                job.JobValue = gpm;

                if (!isWithParameter)
                {

                    if (_isStepByStep)
                    {
                        ModelParameterWizardForm wizard = new ModelParameterWizardForm();
                        //List<ProcessDescription> processQueue = new List<ProcessDescription>();
                        ////从空间处理列表查找SpatialProcess
                        //IProcessListParser processListParser = InstanceManager.Instance.ProcessListParser;
                        //if (null == processListParser)
                        //{
                        //    return false;
                        //}

                        //ProcessDefineDescription processDefine = null;
                        //ProcessDescription item = null;
                        //List<ParaItem> parameters = null;
                        ////ParaItem parameter = null;
                        //foreach (ProcessDescription process in parser.ProcessList)
                        //{
                        //    //如果是开始结点,就不添加到列表中
                        //    if (process.Name.Equals(_XMLTag.g_ValueStart))
                        //    {
                        //        continue;
                        //    }

                        //    processDefine = processListParser.GetProcess(process.Name);
                        //    item = new ProcessDescription(processDefine.Name, process.Id, processDefine.Caption, processDefine.Description);
                        //    parameters = new List<ParaItem>();
                        //    foreach (ParaItem paraitem in processDefine.Inputs)
                        //    {
                        //        if (IsParameterInProcess(process, paraitem.Name))
                        //        {
                        //            paraitem.Value = GetVariable(process, paraitem.Name);
                        //            parameters.Add(paraitem);
                        //        }
                        //    }
                        //    item.Inputs = parameters;
                        //    processQueue.Add(item);
                        //}

            //                        wizard.ProcessQueue = processQueue;
                        wizard.ProcessQueue = processes;
                        if (wizard.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                        {
                            List<ParameterSet> paras = wizard.ParameterSetList; //这个地方速度慢
                            if (!job.SetParameters(paras.ToArray()))
                            {
                                throw new Exception("设置参数失败");
                            }
                        }
                        else
                        {
                            wizard.Close();
                            return false;
                        }
                    }
                }
                else
                {
                    throw new NotImplementedException("该场景未实现");
                }

                return job.Execute();
            }
            catch (Exception ex)
            {
                IRunningLogger logger = InstanceManager.Instance.Context.GetVariable("RunningStatusLogger") as IRunningLogger;
                if (null != logger)
                {
                    logger.Error(_LOG, ex.Message);
                }
            }

            return false;
        }
Beispiel #3
0
        public static Boolean ExecuteXmlModel(String filePath, Boolean isWithParameter)
        {
            try
            {
                String _filePath = filePath;
                if (!File.Exists(_filePath))
                {
                    return(false);
                }
                //解析文件
                IModelParser parser = InstanceManager.Instance.NewParser;
                if (null == parser)
                {
                    return(false);
                }
                parser.File = filePath;
                Boolean _isStepByStep = parser.IsStepByStepMode;
                //建立地理空间处理模型
                Graph gpm = new Graph();
                ProcessDescription[] processes = parser.ProcessList;

//                List<ProcessDescription> processQueue = null;
//                if (_isStepByStep)
//                {
//                    processQueue = new List<ProcessDescription>();
//                    //从空间处理列表查找SpatialProcess
//                    IProcessListParser processListParser = InstanceManager.Instance.ProcessListParser;
//                    if (null == processListParser)
//                    {
//                        return false;
//                    }

//                    ProcessDefineDescription processDefine = null;
//                    //ProcessDescription item = null;
//                    List<ParaItem> parameters = null;
//                    //ParaItem parameter = null;
//                    foreach (ProcessDescription process in processes)
//                    {
//                        //如果是开始结点,就不添加到列表中
//                        if (process.Name.Equals(_XMLTag.g_ValueStart))
//                        {
//                            continue;
//                        }

//                        processDefine = processListParser.GetProcess(process.Name);
//                        //item = new ProcessDescription(processDefine.Name, process.Id, processDefine.Caption, processDefine.Description);
//                        parameters = new List<ParaItem>();
//                        foreach (ParaItem paraitem in processDefine.Inputs)
//                        {
//                            if (IsParameterInProcess(process, paraitem.Name))
//                            {
////                                paraitem.Value = GetVariable(process, paraitem.Name);
//                                parameters.Add(paraitem);
//                            }
//                        }
//                        item.Inputs = parameters;
//                        processQueue.Add(item);
//                    }
//                }
//                else
//                {
                foreach (ProcessDescription process in processes)
                {
                    gpm.CreateNode(process.Id, process);
                }
                //}
                LinkDescription[] links = parser.LinkList;
                foreach (LinkDescription link in links)
                {
                    gpm.Link(gpm.NodeById(link.FromId), gpm.NodeById(link.ToId), link);
                }

                IModelJob job = InstanceManager.Instance.ProcessManager.CreateJob("xmlModel") as IModelJob;
                if (null == job)
                {
                    return(false);
                }
                job.JobValue = gpm;

                if (!isWithParameter)
                {
                    if (_isStepByStep)
                    {
                        ModelParameterWizardForm wizard = new ModelParameterWizardForm();
                        //List<ProcessDescription> processQueue = new List<ProcessDescription>();
                        ////从空间处理列表查找SpatialProcess
                        //IProcessListParser processListParser = InstanceManager.Instance.ProcessListParser;
                        //if (null == processListParser)
                        //{
                        //    return false;
                        //}

                        //ProcessDefineDescription processDefine = null;
                        //ProcessDescription item = null;
                        //List<ParaItem> parameters = null;
                        ////ParaItem parameter = null;
                        //foreach (ProcessDescription process in parser.ProcessList)
                        //{
                        //    //如果是开始结点,就不添加到列表中
                        //    if (process.Name.Equals(_XMLTag.g_ValueStart))
                        //    {
                        //        continue;
                        //    }

                        //    processDefine = processListParser.GetProcess(process.Name);
                        //    item = new ProcessDescription(processDefine.Name, process.Id, processDefine.Caption, processDefine.Description);
                        //    parameters = new List<ParaItem>();
                        //    foreach (ParaItem paraitem in processDefine.Inputs)
                        //    {
                        //        if (IsParameterInProcess(process, paraitem.Name))
                        //        {
                        //            paraitem.Value = GetVariable(process, paraitem.Name);
                        //            parameters.Add(paraitem);
                        //        }
                        //    }
                        //    item.Inputs = parameters;
                        //    processQueue.Add(item);
                        //}

//                        wizard.ProcessQueue = processQueue;
                        wizard.ProcessQueue = processes;
                        if (wizard.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                        {
                            List <ParameterSet> paras = wizard.ParameterSetList; //这个地方速度慢
                            if (!job.SetParameters(paras.ToArray()))
                            {
                                throw new Exception("设置参数失败");
                            }
                        }
                        else
                        {
                            wizard.Close();
                            return(false);
                        }
                    }
                }
                else
                {
                    throw new NotImplementedException("该场景未实现");
                }

                return(job.Execute());
            }
            catch (Exception ex)
            {
                IRunningLogger logger = InstanceManager.Instance.Context.GetVariable("RunningStatusLogger") as IRunningLogger;
                if (null != logger)
                {
                    logger.Error(_LOG, ex.Message);
                }
            }

            return(false);
        }