Tags:
create new tag
, view all tags

Synchronisation von Studiengang und Einschreibung

TODO

  • TODO bestehende (alte Gruppen bereinigen)
  • DONE Gruppen und Trigger in Betrieb nehmem

Synchronisationsverlauf


Legende
=======
GROSSBUCHSTABEN  : Tabelle
~ bla_ins_aft    : Trigger
* create_dings   : stored Procedure

   DLDB_STUDIENGANG
          |
          |    * sync_studiengang (DBMS-Job)       # läuft zeitlich immer vor sync_einschreibung
          v
     STUDIENGANG     ~ studiengang_ins_aft         # Produzieren Studiengang-Ngroups ohne Member
                     ~ studiengang_del_aft         # mit übergeordneten Departements-Ngroups
                     ~ studiengang_up_aft
                             |      |
                             |      |
                             v      |
                           NGROUP   |         * create_ngroup_for_studiengang
                                    v         * create_ngroup_for_deptkz
                           NGROUP_INCLUDES
                        
                           NGROUP_MEMBER
                                ^
                                |     ~ ngroup_person_ins_aft
                                |     ~ ngroup_person_del_aft
                                |
                       ->  NGROUP_PERSON          # Hält fest, welche Person welcher Einschreibungs-Ngroup zugeordnet ist.
                       |                          # wichtig, falls UNAME noch nicht existiert oder PRIMARY_UNAME geändert wird
                       |
                       |  * map_einschreibung_to_ngroup (DBMS Job)
                       |        * get_ngroup_for_studiengangkz    # gibt die GRID für einen Studiengang/Semester zurück
                       |        * create_ngroup_for_studiengang   # erstellt die notwendige Ngroup (mit Semester) falls nicht vorh.
                       |
                       |
                   UPDATE_EINSCHREIBUNG           # Änderungen an der Tabelle EINSCHREIBUNG (Zwischentabelle)
                       ^
                       |
                       |
                     ~ einschreibung_ins_aft      # Produzieren Einschreibungs-Ngroups mit Semesterzahl.
                     ~ einschreibung_del_aft      # vertrauen darauf, dass Studiengang-Ngroup existiert. Ansonsten kann die Gruppe nicht als Untergruppe angehängt werden
     EINSCHREIBUNG   ~ einschreibung_up_aft       # hängen sowohl Members an die Ngroup als auch Eintrag in NGROUP_PERSON
          ^
          |    * sync_einschreibung (DBMS-Job)
          |
   DLDB_EINSCHREIBUNG

Studiengang-Synchronisiation

Aufgrund der existierenden Studiengänge werden entsprechende Ngroups erstellt. Dabei wird das Studiengang-Kürzel (STUDIENGANGKZ) als Primärschlüssel verwendet (obwohl es technisch gesehen kein eigentlicher Primärschlüssel ist).

  1. periodisch ablaufender DBMS-Job SYNC_STUDIENGANG
    • holt eine aktuelle Kopie der gültigen Semester unter Verwendung von current_semkez()
    • löscht alle nicht mehr vorhanden Studiengänge aus der Tabelle STUDIENGANG
    • vorhandene Studiengänge werden in STUDIENGANG aktualisiert
    • noch nicht vorhandene Studiengänge werden in STUDIENGANG eingetragen
  2. INSERT-Trigger auf der Tabelle STUDIENGANG
    • Studiengang-Ngroup wird erstellt oder aktualisiert unter Verwendung von create_ngroup_for_studiengang
    • Departements-Ngroup wird gesucht oder erstellt unter Verwendung von create_ngroup_for_studiengang
    • Studiengang-Ngroup wird der Departementsgruppe angehängt
  3. UPDATE-Trigger auf der Tabelle STUDIENGANG
    • Studiengang-Ngroup wird erstellt oder aktualisiert unter Verwendung von create_ngroup_for_studiengang
    • falls Departement gewechselt hat:
      • alte Zuweisung zum Departement löschen
      • neue Departements-Ngroup suchen oder erstellen
      • Studiengang-Ngroup der neuen Departements-Ngroup zuweisen
  4. DELETE-Trigger auf der Tabelle STUDIENGANG
    • alle Studiengang-Gruppen (auch Semestergruppen) durchlaufen
    • Mitglieder aus jeder dieser Gruppen entfernen
    • alle Gruppenzuweisungen entfernen ( NGROUP_INCLUDES)
    • Gruppe löschen TODO prüfen, ob allenfalls auch Departements-Gruppe obsolet geworden ist und gelöscht werden kann (d.h. Departement existiert nicht mehr, es existieren keine Mitglieder und keine Untergruppen in dieser Departements-Gruppe)

Einschreibungs-Synchronisation

Aufgrund der Einschreibungen im aktuellen Semester ( current_semkez) werden Studienganggruppen (mit Semesterzahl) erstellt und Studierende diesen Gruppen zugewiesen. Die Studienganggruppen (mit Semesterzahl) werden als Untergruppe zu den bereits bestehenden Studienganggruppen (ohne Semesterzahl) zugewiesen. Studierende, welche noch nicht in nethz existieren oder noch keinen Usernamen bekommen haben werden zurückgestellt. Alle Zuweisungen werden auch in der Tabelle NGROUP_PERSON nachgeführt. Damit ist jederzeit ersichtlich,

  1. welche «offiziellen» Ngroup-Zuweisungen den neuen Usernamen zugewiesen werden müssen
  2. beim Wechsel des primären Usernamens diese offiziellen Ngroups dem neuen primären User umgeteilt werden

Ablauf der Synchronisation im Detail

  1. aufgrund des aktuellen Semesters werden die Entsprechenden Einschreibungs-Daten von DLDB_EINSCHREIBUNG eingelesen
  2. diese aktuellen Daten mit der lokalen Kopie ( EINSCHREIBUNG) abgeglichen
  3. Trigger auf EINSCHREIBUNG füllen die Tabelle UPDATE_EINSCHREIBUNG (inkl. Timestamp ( ZEITSTEMPEL) sowie Art der ACTION: insert, update, delete)
  4. Nach der erfolgten Synchronisation arbeitet die Prozedur MAP_EINSCHREIBUNG_TO_NGROUP die Tabelle UPDATE_EINSCHREIBUNG ab
    • Falls noch keine Studienganggrupe (ohne Semester) vorhanden: Eintrag überspringen
    • Studienganggruppe (mit Semester) erstellen ( CREATE_NGROUP_FOR_STUDIENGANG)
    • Studienganggruppe (mit Semester) der Studienganggruppe (ohne Semester) zuweisen
    • Eintrag in NGROUP_PERSON
    • Falls Person eine primary_nuid hat
      • User der Studienganggruppe zuweisen (mit Semester)
      • Person mit VSETH-Mitgliedschaft: primary_nuid der VSETH-Ngroup zuweisen
    • lautet die ACTION auf delete und ist die Ngroup nicht auffindbar, so wird nichts unternommen
    • Zeile wird aus UPDATE_EINSCHREIBUNG gelöscht

Weiter zu beachtende Punkte

  • der primäre Username einer Person kann jederzeit ändern
  • die Tabelle PERSON_NGROUP enthält die Abbildung der Person zu den (automatisch generierten) «offiziellen» Gruppen:
    • Studenten (Studiengang)
    • LZ (Mitarbeiter)
    • Personenkategorie
  • TODO wenn sich der primäre Username einer Person ändert, müssen die «offiziellen» Gruppen dem neuen primären User übertragen werden.
  • die übrigen Gruppenzuweisungen dürfen sich nicht verändern!

Alle DB-Objekte im Überblick

Name Objekt-Typ Beschreibung
DLDB_STUDIENGANG view Quelle der Studiengänge auf OUS/PDB via DB-Link=
DLDB_EINSCHREIBUNG view Quelle der Einschreibedaten auf OIS/PDB via DB-Link
STUDIENGANG table lokale (nethz) Kopie der aktuellen Studiengänge
SYNC_STUDIENGANG procedure periodischer DBMS-Job gleicht die PDB-View DLDB_STUDIENGANG mit der lokalen Tabelle STUDIENGANG ab.
SYNC_EINSCHREIBUNG procedure läuft periodisch als DBMS-Job, holt die neuen Daten von OIS/PDB
STUDIENGANG_{INS/DEL/UP}_AFT trigger erstellen/aktualisieren/löschen entsprechende Studienganggruppen unter Verwendung von CREATE_NGROUP_FOR_STUDIENGANG
EINSCHREIBUNG table lokale Kopie der aktuellen Einschreibungen. Trigger schreiben alle Änderungen nach UPDATE_EINSCHREIBUNG
UPDATE_EINSCHREIBUNG table Enthält die Differenzen zwischen DLDB_EINSCHREIBUNG und EINSCHREIBUNG.
NGROUP_PERSON table enthält die Zuweisung Person (PERSID) MOVED TO... offizielle Ngroup (GRID)
NGROUP_PERSON_INS_AFT trigger weist den primären User der angegebenen Person als Mitglied der angegebenen Ngroup hinzu (sofern vorhanden)
NGROUP_PERSON_DEL_AFT trigger löscht den primären User als Mitglied aus der angegebenen Ngroup
MAP_EINSCHREIBUNG_TO_NGROUP procedure arbeitet UPDATE_EINSCHREIBUNG ab
CREATE_NGROUP_FOR_DEPTKZ procedure erstellt mit dem angegebenen Departement eine entsprechende Ngroup
CREATE_NGROUP_FOR_STUDIENGANG procedure erstellt mit dem angegebenen Studiengang (ev. +Semester) eine entsprechende (Semester-) Studienganggruppe
CHECK_VSETH_MITGLIED procedure Für alle Einträge in EINSCHREIBUNG mit VSETH_MITGLIED=1 wird ein Eintrag in NGROUP_PERSON geschrieben

VSETH Mitglied

In der View DLDB_EINSCHREIBUNG existiert ein Flag VSETH_MITGLIED. Dieses wird für jede Einschreibung separat gesetzt. Bei mehreren Einschreibungen kann es vorkommen, dass bei einer Person dieses Flag nicht bei allen Einschreibungen aufgeführt wird. Wenn irgend eine der aktuellen Einschreibungen dieses Flag hat, wird die Person der Usergruppe VSETH Mitglied zugewiesen.

Die Prozedur CHECK_VSETH_MITGLIED schreibt für alle Einträge in der Tabelle EINSCHREIBUNG mit dem Flag VSETH-MITGLIED=1 einen korrespondierenden Eintrag in der Tabelle NGROUP_PERSON. Daraus werden automatisch (via Trigger) Datensätze in NGROUP_MEMBER generiert oder gelöscht. Der DBMS-Job CHECK_VSETH_MITGLIED läuft täglich um 17:24

-- SwenVermeul - 2013-12-06

Topic revision: r14 - 2016-11-15 - SwenVermeul
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback