Ejemplo n.º 1
0
        public static bool LoadModel(Stream load, List <ModelNode> nodes, List <Product> products)
        {
            var bformatter = new BinaryFormatter();
            var defs       = bformatter.Deserialize(load) as CMSDDocument;

            load.Close();

            if (defs != null)
            {
                nodes.AddRange(defs.DataSection.Resource.Select(resource => LoadModelNode(resource, defs.DataSection.Job.Where(t => t.Identifier != null && (t.Identifier.StartsWith(resource.Identifier) || t.Identifier.StartsWith("BaseJob" + resource.Identifier))))));
                var jobs = new List <Job>();
                foreach (var modelNode in nodes)
                {
                    jobs.AddRange(modelNode.DeclaredJobs);
                }

                products.AddRange(LoadProducts(defs, nodes));
                foreach (var resource in defs.DataSection.Resource)
                {
                    AddParent(nodes, resource);
                }
                ResourceDefinitionModel.LoadDistances(nodes.Select(t => t.ResourceModel), defs.DataSection.Resource);
            }
            return(true);
        }
Ejemplo n.º 2
0
 public ModelNode()
 {
     InitializeComponent();
     _nodeDef = (ResourceDefinitionModel)DataContext;
     ResourceModel.Capacity  = 10000000;
     VerticalAlignment       = VerticalAlignment.Top;
     HorizontalAlignment     = HorizontalAlignment.Left;
     ResourceModel.IsProcess = false;
     DeclaredJobs.Add(new Job()
     {
         Name  = "Default",
         State = new State("Used")
     });
 }
Ejemplo n.º 3
0
        private static Resource HarvestModelNode(ModelNode modelNode)
        {
            ResourceProperty x = null, y = null;
            string           resType = null, id = null;

            modelNode.Dispatcher.Invoke((Action)(() =>
            {
                x = new ResourceProperty()
                {
                    Name = "XGrid", Value = modelNode.XGrid + "", Unit = "px"
                };
                y = new ResourceProperty()
                {
                    Name = "YGrid", Value = modelNode.YGrid + "", Unit = "px"
                };
                resType = (modelNode as object).GetType().ToString();
                id = modelNode.ResourceModel.ProcessName;
            }));
            var properties = new List <ResourceProperty>()
            {
                x, y
            };

            if (modelNode.ResourceModel.MTBF.Distribution != null)
            {
                properties.Add(new ResourceProperty()
                {
                    Distribution = new [] { modelNode.ResourceModel.MTBF.Distribution.CMSDDistribution },
                    Name         = "MTBF",
                    Unit         = modelNode.ResourceModel.MTBF.Distribution.ParameterConverter.UnitType.ToString()
                });
            }
            if (modelNode.ResourceModel.MTTR.Distribution != null)
            {
                properties.Add(new ResourceProperty()
                {
                    Distribution = new [] { modelNode.ResourceModel.MTTR.Distribution.CMSDDistribution },
                    Name         = "MTTR",
                    Unit         = modelNode.ResourceModel.MTTR.Distribution.ParameterConverter.UnitType.ToString()
                });
            }
            if (modelNode.ParentNode != null)
            {
                properties.Add(new ResourceProperty()
                {
                    Name = "ParentNode", Value = modelNode.ParentNode.ResourceModel.ProcessName
                });
            }
            if (modelNode.ResourceModel.IsTransport)
            {
                ResourceDefinitionModel.HarvestDistances(modelNode.ResourceModel, properties);
            }

            properties.Add(new ResourceProperty()
            {
                Name = "Capacity", Value = modelNode.ResourceModel.Capacity + ""
            });

            if (modelNode.ResourceModel.Idle != null)
            {
                foreach (var consumption in modelNode.ResourceModel.Idle.Consumptions)
                {
                    HarvestConsumption(properties, consumption, "IdleTime");
                }
            }
            if (modelNode.ResourceModel.Off != null)
            {
                foreach (var consumption in modelNode.ResourceModel.Off.Consumptions)
                {
                    HarvestConsumption(properties, consumption, "Off");
                }
            }
            if (modelNode.ResourceModel.Down != null)
            {
                foreach (var consumption in modelNode.ResourceModel.Down.Consumptions)
                {
                    HarvestConsumption(properties, consumption, "Down");
                }
            }
            foreach (var declaredJob in modelNode.DeclaredJobs)
            {
                foreach (var consumption in declaredJob.State.Consumptions)
                {
                    HarvestConsumption(properties, consumption, declaredJob.Name);
                }
            }
            return(new Resource()
            {
                Name = id,
                Identifier = id,
                ResourceType = resType,
                Property = properties.ToArray()
            });
        }