# Info
Hier sind die Antworten auf die Auflagen der IHK von meinem Ausbilder aufgelistet.



# 1. Hintergrund Ihrer Arbeit
Es geht um einen Materialflussrechner. Die Aufgabe befasst sich mit der Auflösung einer Race Condition zwischen zwei Prozessen beim Starten von Transporten im System.

# 2. Welche Prozesse sind beteiligt? Beschreiben Sie diese kurz.
Beteiligt sind die Prozesse ConveyorDispo und HostBooking.
Der ConveyorDispo disponiert Transporte, prüft Zielressourcen und deren Verfügbarkeit und startet Transporte. Außerdem übernimmt er das Scheduling mehrerer Transporte für denselben Ladungsträger.
Der HostBooking verarbeitet Nachrichten eines übergeordneten Host-Systems. Dabei legt er Transporte an und startet in bestimmten Fällen auch direkt Aufträge, zum Beispiel beim Rücktransport eines Behälters vom Arbeitsplatz ins Lager.

# 3. Was ist das Ziel der Prozesse?
Die Prozesse sollen Transporte bzw. Aufträge automatisch starten, damit kein manueller Eingriff erforderlich ist. Zusätzlich sollen sie die Anlage möglichst effizient auslasten und auf Vorgaben des übergeordneten Host-Systems reagieren.

# 4. Wer startet die Prozesse?
Beide Prozesse laufen permanent als Services im Hintergrund.
Der ConveyorDispo wird zyklisch ausgeführt und prüft in Echtzeit die aktuellen Transportmöglichkeiten der Anlage.
Der HostBooking wird durch eingehende Host-Nachrichten ausgelöst, die ebenfalls zyklisch aus der Datenbank gelesen werden.

# 5. Über welche Schnittstellen werden die Prozesse angesprochen?
Die Anbindung an das Host-System erfolgt über verschiedene Schnittstellen, zum Beispiel SAP IDoc, TCP/IP, Dateischnittstellen oder Webservices. Die eingehenden Daten werden in einer Datenbank bereitgestellt.
Der HostBooking liest diese Daten zyklisch aus der Datenbank und legt daraus Auftragsdatensätze an. Der ConveyorDispo greift ebenfalls auf diese Datenbanktabellen zu und startet Transporte, sobald die Bedingungen erfüllt sind.

# 6. Welches Problem tritt auf?
Wenn ein Behälter einen Arbeitsplatz verlässt und kein Transport in der Datenbank vorhanden ist, legt der HostBooking einen Transport an und startet diesen direkt.
Gleichzeitig kann durch Multithreading ein neuer Host-Auftrag eintreffen, der vom ConveyorDispo verarbeitet und ebenfalls gestartet wird.
Dadurch entstehen zwei aktive Transporte für denselben Ladungsträger.

# 7. Wie soll das Problem gelöst werden?
Die Lösung besteht darin, alle Auftragsstarts zentral im ConveyorDispo zu bearbeiten. Dadurch können Überschneidungen an einer Stelle erkannt und aufgelöst werden.