Exemplo n.º 1
0
        /// <summary>
        /// Geht rekursiv durch Prozessstruktur und baut Pendant mit Instanzklassen auf.
        /// </summary>
        /// <param name="model">Prozessmodell, dessen Instanzpendant erzeugt wird.</param>
        public void LoadDataFromModel(ProcessModel model)
        {
            _id = model.Id + "-" + model.RegisterNewInstance(this).ToString();
            model.CurrentlyExecutedInstances++;

            _name         = model.Name;
            _type         = model.Type;
            _categoryList = model.Categories;

            _portList = new List <InstancePort>(model.PortList.Count);
            foreach (Port port in model.PortList)
            {
                List <InstanceTransition> transitionList = new List <InstanceTransition>(port.TransitionList.Count);
                foreach (Transition transition in port.TransitionList)
                {
                    transitionList.Add(new InstanceTransition(transition.Name, transition.Id, transition.TargetPortId));
                }

                InstancePort instancePort = new InstanceControlPort();
                if (port is ModelData.StartDataPort)
                {
                    instancePort = new InstanceStartDataPort();
                    ((InstanceStartDataPort)instancePort).Data      = ((StartDataPort)port).Data;
                    ((InstanceStartDataPort)instancePort).DataTitle = ((StartDataPort)port).DataTitle;
                }
                else if (port is ModelData.EndDataPort)
                {
                    instancePort = new InstanceEndDataPort();
                    ((InstanceEndDataPort)instancePort).Data      = ((EndDataPort)port).Data;
                    ((InstanceEndDataPort)instancePort).DataTitle = ((EndDataPort)port).DataTitle;
                }
                instancePort.Name           = port.Name;
                instancePort.Id             = port.Id;
                instancePort.TransitionList = transitionList;

                _portList.Add(instancePort);
            }

            _substepList = new List <InstanceSubstep>(model.SubstepList.Count);
            foreach (Substep substep in model.SubstepList)
            {
                InstanceSubstep instanceSubstep = new InstanceSubstep();
                instanceSubstep.Name             = substep.Name;
                instanceSubstep.Id               = substep.Id;
                instanceSubstep.ProcessCharacter = substep.ProcessCharacter;

                instanceSubstep.LoadDataFromModel(substep);
                _substepList.Add(instanceSubstep);
            }

            //_substepList = _model.SubstepList;
            _model = model;
        }