コード例 #1
0
        public void SetDefinitionModel(Resource resource, IEnumerable <CMSDDocumentDataSectionJob> CMSDjobs)
        {
            foreach (ResourceProperty resourceProperty in resource.Property)
            {
                if (resourceProperty != null)
                {
                    switch (resourceProperty.Name)
                    {
                    case "MTTR":
                        var distsource = resourceProperty.Distribution.First();
                        MTTR.Distribution = IDistribution.GetFromCmsd(distsource);
                        MTTR.Distribution.ParameterConverter.UnitType = GeneralConverter.GetInstance(resourceProperty.Unit);
                        break;

                    case "MTBF":
                        distsource        = resourceProperty.Distribution.First();
                        MTBF.Distribution = IDistribution.GetFromCmsd(distsource);
                        MTBF.Distribution.ParameterConverter.UnitType = GeneralConverter.GetInstance(resourceProperty.Unit);
                        break;

                    case "Capacity":
                        try
                        {
                            Capacity = Int32.Parse(resourceProperty.Value);
                        }
                        catch
                        {
                        }
                        break;

                    case "Speed":
                        try
                        {
                            Speed = Int32.Parse(resourceProperty.Value, CultureInfo.InvariantCulture);
                        }
                        catch
                        {
                        }
                        break;

                    case "DistanceToNode":
                        try
                        {
                            DistansToNode = int.Parse(resourceProperty.Value, CultureInfo.InvariantCulture);
                        }
                        catch
                        { }
                        break;
                    }
                }
            }

            ProcessName = resource.Name;

            AddConsumption(resource.Property.FirstOrDefault(t => t.Name.StartsWith("Idle")), Idle);
            AddConsumption(resource.Property.FirstOrDefault(t => t.Name.StartsWith("Off")), Off);
            AddConsumption(resource.Property.FirstOrDefault(t => t.Name.StartsWith("Down")), Down);

            Job.Clear();
            var cmsdDocumentDataSectionJobs = CMSDjobs as IList <CMSDDocumentDataSectionJob> ?? CMSDjobs.ToList();

            foreach (var sectionJob in cmsdDocumentDataSectionJobs.Where(t => t.Identifier.StartsWith("BaseJob")))
            {
                var job = new Job()
                {
                    Name = sectionJob.Identifier.Remove(0, 7).Replace(ProcessName, "")
                };
                AddConsumption(resource.Property.FirstOrDefault(t => t.Name.Contains(job.Name)), job.State);
                job.Subjobs.Clear();
                foreach (var pointSubJob in sectionJob.SubJob)
                {
                    var cmsdSubJob = cmsdDocumentDataSectionJobs.FirstOrDefault(t => t.Identifier == pointSubJob.JobIdentifier);
                    if (cmsdSubJob != null)
                    {
                        var sub = new SubJob()
                        {
                            Description  = cmsdSubJob.Description,
                            Distribution = IDistribution.GetFromCmsd(cmsdSubJob.PlannedEffort.ProcessingTime.Distribution)
                        };
                        sub.Distribution.ParameterConverter.UnitType = GeneralConverter.TimeConverters.FirstOrDefault(
                            t => t.ToString() == cmsdSubJob.PlannedEffort.ProcessingTime.TimeUnit);
                        job.Subjobs.Add(sub);
                    }
                }

                Job.Add(job);
                LoadDistances(new [] { this }, new [] { resource });
            }
            foreach (var reloadJob in _reloadJobs)
            {
                var productcollection = reloadJob.Key.Nodes.Where(t => t.Key.ResourceModel == this).GetEnumerator();
                foreach (var jobstring in reloadJob.Value)
                {
                    productcollection.MoveNext();
                    productcollection.Current.Value = Job.First(t => t.Name == jobstring);
                }
            }
        }
コード例 #2
0
        private static ModelNode LoadModelNode(Resource resource, IEnumerable <CMSDDocumentDataSectionJob> CMSDjobs)
        {
            var modelnode = new ModelNode();

            if (resource.ResourceType.Contains("Machine"))
            {
                modelnode = new Machine();
            }
            else if (resource.ResourceType.Contains("Facility"))
            {
                modelnode = new Facility();
            }
            else if (resource.ResourceType.Contains("Buffer"))
            {
                modelnode = new UserControles.Buffer();
            }
            else if (resource.ResourceType.Contains("Transport"))
            {
                modelnode = new Transport();
            }

            double left = 0, top = 0;

            foreach (ResourceProperty resourceProperty in resource.Property)
            {
                switch (resourceProperty.Name)
                {
                case "XGrid":
                    left = double.Parse(resourceProperty.Value);
                    break;

                case "YGrid":
                    top = double.Parse(resourceProperty.Value);
                    break;

                case "MTTR":
                    var distsource = resourceProperty.Distribution.First();
                    modelnode.ResourceModel.MTTR.Distribution = DataLayer.IDistribution.GetFromCmsd(distsource);
                    modelnode.ResourceModel.MTTR.Distribution.ParameterConverter.UnitType = GeneralConverter.GetInstance(resourceProperty.Unit);
                    break;

                case "MTBF":
                    distsource = resourceProperty.Distribution.First();
                    modelnode.ResourceModel.MTBF.Distribution = DataLayer.IDistribution.GetFromCmsd(distsource);
                    modelnode.ResourceModel.MTBF.Distribution.ParameterConverter.UnitType = GeneralConverter.GetInstance(resourceProperty.Unit);
                    break;

                case "Capacity":
                    try
                    {
                        modelnode.ResourceModel.Capacity = int.Parse(resourceProperty.Value);
                    }
                    catch {}
                    break;

                case "Speed":
                    try
                    {
                        modelnode.ResourceModel.Speed = int.Parse(resourceProperty.Value, CultureInfo.InvariantCulture);
                    }
                    catch
                    {}
                    break;

                case "DistanceToNode":
                    try
                    {
                        modelnode.ResourceModel.DistansToNode = int.Parse(resourceProperty.Value, CultureInfo.InvariantCulture);
                    }
                    catch
                    { }
                    break;
                }
            }

            modelnode.Margin = new Thickness(left, top, 0, 0);
            modelnode.XGrid  = left;
            modelnode.YGrid  = top;
            modelnode.ResourceModel.ProcessName = resource.Name;

            AddConsumption(resource.Property.Where(t => t.Name.StartsWith("IdleTime")), modelnode.ResourceModel.Idle);
            AddConsumption(resource.Property.Where(t => t.Name.StartsWith("Off")), modelnode.ResourceModel.Off);
            AddConsumption(resource.Property.Where(t => t.Name.StartsWith("Down")), modelnode.ResourceModel.Down);

            modelnode.ResourceModel.Job.Clear();
            var cmsdDocumentDataSectionJobs = CMSDjobs as IList <CMSDDocumentDataSectionJob> ?? CMSDjobs.ToList();

            foreach (var sectionJob in cmsdDocumentDataSectionJobs.Where(t => t.Identifier.StartsWith("BaseJob")))
            {
                var job = new Job()
                {
                    Name = sectionJob.Identifier.Remove(0, 7).Replace(modelnode.ResourceModel.ProcessName, "")
                };

                AddConsumption(resource.Property.Where(t => t.Name.StartsWith(job.Name)), job.State);
                job.Subjobs.Clear();
                foreach (var pointSubJob in sectionJob.SubJob)
                {
                    var cmsdSubJob = cmsdDocumentDataSectionJobs.FirstOrDefault(t => t.Identifier == pointSubJob.JobIdentifier);
                    if (cmsdSubJob != null)
                    {
                        var sub = new SubJob()
                        {
                            Description  = cmsdSubJob.Description,
                            Distribution = IDistribution.GetFromCmsd(cmsdSubJob.PlannedEffort.ProcessingTime.Distribution)
                        };
                        sub.Distribution.ParameterConverter.UnitType = GeneralConverter.TimeConverters.FirstOrDefault(
                            t => t.ToString() == cmsdSubJob.PlannedEffort.ProcessingTime.TimeUnit);
                        job.Subjobs.Add(sub);
                    }
                }

                modelnode.ResourceModel.Job.Add(job);
            }
            return(modelnode);
        }