public void Start() { // TODO: schaue ob alle Verarbeitungsschritte in FIs behandelt werden können DateTime nächsterSchritt = DateTime.Now; while (!IstFertig()) { if (DateTime.Now >= nächsterSchritt.AddSeconds(1 / 4.0)) { nächsterSchritt = DateTime.Now; Produktionseinrichtung prodEinr = GetAbholbereiteProduktionseinrichtung(); // wenn es eine abholbereite produktionseinrichtung gibt if (prodEinr != null) { // hole teil if (prodEinr is EingangsLager) { _AktuellesTeil = ((EingangsLager)prodEinr).TeilAusgeben(); } else if (prodEinr is Fertigungsinsel) { _AktuellesTeil = ((Fertigungsinsel)prodEinr).TeilZurueckgeben(); // _aktue } Console.WriteLine(_AktuellesTeil.GetSeriennummer() + " < " + prodEinr.GetName()); if (_AktuellesTeil.SelbstTestTeil()) { Console.WriteLine(_AktuellesTeil.GetSeriennummer() + " > LagerAus"); FindeAusgangsLager().TeilFuerDenVersandEmpfangen(_AktuellesTeil); } else { Fertigungsinsel insel = GetSchnellsteFertigungsinsel(); // wenn es keine FI gibt die das teil verarbeiten kann if (insel == null) { Console.WriteLine(_AktuellesTeil.GetSeriennummer() + " > LagerEin"); findeEingangsLager().TeilZwischenlagern(_AktuellesTeil); } else { Console.WriteLine(_AktuellesTeil.GetSeriennummer() + " > " + insel.GetName()); insel.TeilEntgegennehmen(_AktuellesTeil); } } } } } Console.WriteLine("Robbie ist fertig. " + FindeAusgangsLager().GetBestand().Count + " Teile im Ausgangslager"); }
public Verarbeitungsschritt TransferiereSchrittInHistorie(Produktionseinrichtung bearbeitetIn) { // packe erstes element aus rezept in historie Verarbeitungsschritt schritt = _Rezept[0]; Tuple <Verarbeitungsschritt, string> historienEintrag = new Tuple <Verarbeitungsschritt, string>(_Rezept[0], bearbeitetIn.GetName()); _Historie.Add(historienEintrag); // entferne aus rezept _Rezept.RemoveAt(0); return(schritt); }