/// <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; }