Child pages
  • ST2-Workshop am 02.06.21


ST2-Workshop am 02.06.21

In diesem Workshop geht es um die Themen von Meilenstein M3: Aggregates und REST. 

Die entsprechenden Videos sind leider noch nicht fertig, daher wird es zu Beginn einen Inhaltsimpuls geben. Danach haben Sie in einer Übung die Gelegenheit, die Inhalte anzuwenden. 

  1. Inhaltsimpulse
    1. Was sind Aggregates?
    2. Regeln für Aggregates
    3. HTTP-Grundlagen und -Tools
    4. Prinzipien von REST
    5. Regeln und Standards für REST
  2. Übung
    1. Bestimmung von Aggregates
    2. Design REST-API

Inhalte

Finden Sie vorläufig im Script (wird dann später durch die überarbeiteten Script-Passagen ersetzt): https://ilias.th-koeln.de/goto.php?target=file_1854728_download&client_id=ILIAS_FH_Koeln - ab S. 118

Übung 1: Zeichnen Sie die Aggregates ein

Hier haben Sie einen Ausschnitt aus dem Campus-Management-System. Zeichnen Sie die Aggregates ein.

Gehen Sie dabei nach der Checkliste vor (I = inneres Entity, R = Root).

o

I tritt immer zusammen mit R auf. Es gibt keine Query nach I, außer zusammen mit einer Query nach R.

o

Alle Zugriffe auf I erfolgen via R.

o

Wenn R gelöscht wird, wird auch I gelöscht.

(o)

Es kann Invarianten (immer gültige Bedingungen) in der Beziehung zwischen R und I (und ggfs. weiteren Klassen) geben. (Optionale Bedingung)


Auflösung

  • A1 scheint relativ klar zu sein. 
  • Ebenso A2. 
  • A3 (StudyProgram) - warum nicht zusammen mit Course?
    • Course (Fach) wird zwischen verschiedenen StudyPrograms geshared. Ein Fach kann in mehreren Studiengängen angeboten werden.
    • Aus diesem Grund gibt es ein Modulverzeichnis, das unabhängig vom Studiengang das Editieren eines Fachs erlaubt. 
    • Damit ist die Bedingung "I tritt immer zusammen mit R auf. Es gibt keine Query nach I, außer zusammen mit einer Query nach R." verletzt. 
    • Auch würde man ein Fach nicht notwendig löschen, wenn der Studiengang nicht mehr angeboten wird. 
    • Also sind bei jeweils eigenständige Aggregates. 
  • Bei A5 (Professor) ist das ebenfalls naheliegend.

Übung 2: Spezifizieren Sie das folgende REST-API

1.Finde alle Kurse (Course)

2.Finde ein bestimmten Kurs anhand seiner ID

3.Setze einen Professor für einen Kurs

4.gebe alle Studiengänge (StudyProgram) zurück

5.gebe einen bestimmten Studiengang zurück

6.gebe alle Fächer (Course) zu einem Studiengang zurück

7.lösche alle Studiengänge

8.lösche alle Zuordnungen von Fächern (Course) zu einem Studiengang

9.Lege neuen Studiengang an

10.Ordne ein Fach (Course) einem Studiengang zu

11.Ändere den Namen eines Studiengangs

12.Finde alle Studierenden mit Matrikel-Nummern, die mit 1,2 oder 3 beginnen

13.Gebe die Adresse einer Studentin zurück

14.Ändere die Adresse eines Studenten

15.Finde alle geplanten Treffen (PlannedMeeting) einer Lerngruppe (StudyGroup) an Donnerstagen (Annahme: Tage haben Nummern, Do = 4)

16.Lege ein neues Treffen einer Lerngruppe zum Thema „ST2“ an

Auflösung

1.Finde alle Kurse (Course)

GET /courses

2.Finde ein bestimmten Kurs anhand seiner ID

GET /courses/{course-id}

3.Setze einen Professor für einen Kurs

PUT /courses/{course-id}/professors/{professor-id}

4.gebe alle Studiengänge (StudyProgram) zurück

GET /studyPrograms

5.gebe einen bestimmten Studiengang zurück

GET /studyPrograms/{studyProgram-id}

6.gebe alle Fächer (Course) zu einem Studiengang zurück

GET /studyPrograms/{studyProgram-id}/courses

7.lösche alle Studiengänge

DELETE /studyPrograms

8.lösche alle Zuordnungen von Fächern (Course) zu einem Studiengang

DELETE /studyPrograms/{studyProgram-id}/courses

9.Lege neuen Studiengang an

POST /studyPrograms

10.Ordne ein Fach (Course) einem Studiengang zu

PUT /studyPrograms/{studyProgram-id}/courses/{course-id}

11.Ändere den Namen eines Studiengangs

PATCH /studyPrograms/{studyProgram-id}

12.Finde alle Studierenden mit Matrikel-Nummern, die mit 1,2 oder 3 beginnen

GET /students?matrNumFrom=10000000&matrNumUntil=39999999

13.Gebe die Adresse einer Studentin zurück

GET /students/{student-id}/address

14.Ändere die Adresse eines Studenten

POST /students/{student-id}/address

15.Finde alle geplanten Treffen (PlannedMeeting) einer Lerngruppe (StudyGroup) an Donnerstagen (Annahme: Tage haben Nummern, Do = 4)

GET /studyGroups/{studyGroup-id}/plannedMeetings?day=4

16.Lege ein neues Treffen einer Lerngruppe zum Thema „ST2“ an

POST /studyGroups/{studyGroup-id}/plannedMeetings