Systemdesign\Applikation zur Pflege von Kundenbestellungen (Sevin&Chris) - notrautmann/TINF23CS1 GitHub Wiki

Grundlegende Anforderungen

  • Bestellungen einpflegen können

  • Bestellungen modifizieren können

  • Bestellungen einsehen können

  • (Bestellungen an andere Komponenten übergeben können / ein Interface anbieten)

Einpflegen von Bestellungen

Anwendung muss

  • unterscheiden können zwischen B2B und Privatkunde
  • Datum kennen wann Bestellung fertig sein soll
  • Namen des Bestellers kennen
  • Bei B2B (evtl.) wiederkehrende Bestellungen (jeden Arbeitstag/jeden Dienstag/ etc.)
  • Wo soll abgeholt werden? (Filiale)
  • Produkte mit Anzahl auswählen können
  • Neue Bestellung an Datenbank übergeben können

Modifizieren von Bestellungen

Anwendung muss

  • Bestellung aus Datenbank laden können
  • Jedes Bestelldetail ändern können (selbe Ansicht wie beim Einpflegen)
  • Änderungen an Datenbank übermitteln können

Einsehen von Bestellungen

Anwendung muss

  • Relevante Bestellungen aus der Datenbank laden können (nur Bestellungen laden, die noch ausgeliefert werden müssen)
  • Bestellungen filtern können (nur Bestellungen von Kunde x anzeigen)
  • Bestellungen sortieren können (Name des Kunden, Lieferdatum, weitere Eigenschaften einer Bestellung)
  • Bestellungen vereinfacht anzeigen können (zusammenfassende Übersicht der Bestellung siehe Mock-UI)

Übergeben von Bestellungen an andere Komponenten

Anwendung muss

  • in Echtzeit Änderungen an Bestellungen mitteilen können

    • bietet Komponenten eine Subscription-API an
    • Komponenten melden Zeitraum an, für welchen sie Änderungen benötigen (Bestellungen die zwischen x und y abgeholt werden sollen)
    • Gibt es Änderungen an Bestellungen innerhalb des Zeitraums, übergibt Anwendung die ID der geänderten Bestellung an interessierte Komponenten
    • diese können geänderte Bestellung anhand der ID von der DB abrufen
    • relevant für Produktionsplan
  • Schnittstellen zur Datenbank anbieten

    • Anhand von Bestellungs-ID einen Eintrag aus der DB
    • Anhand eines Zeitfensters eine Liste an Einträgen aus der DB

Benötigte Daten

Aus dem System

  • Aktuelle Produktliste
  • Filialen
  • Komponenten, die an Änderungen interessiert sind (melden sich dynamisch -> Observer-pattern)

Von dem Benutzer

  • Name des Kunden
  • Art des Kunden
  • Filiale der Abholung
  • Abholdatum und -zeit der Bestellung
  • Serienmuster (-> Wiederkehrende Bestellungen, bei B2B Kunden)
  • Bestellte Produkte und Anzahlen
  • Anmerkungen zu Bestellungen

Benötigte Externe Komponenten

Keine. Selbstständige Implementierung.

Mock-UIs

Bestellungen drawio