Tags:
create new tag
, view all tags
Organisationseinheiten und Strukturen werden automatisch in nethz-Gruppen (Ngroups) abgebildet. Im Folgenden Text wird erklärt, wie dies funktioniert.

Datenquelle

Die Datenquelle für Organisationseinheiten und -strukturen ist die PDB. Die nethz-Datenbank bezieht die aktuellen Daten der PDB über zwei sog. views:

Diese views beinhalten alle aktuellen und geplanten Organisationseinheiten sowie die Organisationsstruktur (vergangene, aktuelle und geplante). Weil wir nicht direkt informiert werden, wenn sich etwas in diesen Tabellen ändert, müssen wir lokale Kopien anfertigen und diese periodisch mit den Views vergleichen. Somit können die Änderungen zuverlässig festgestellt werden.

Synchronisation in lokale Kopien

Es gibt in der nethz-DB lokale Kopien der Views DLDB_ORGEINHEIT und DLDB_ORGSTRUKTUR. Die Tabellen heissen analog zu den Views

  • ORGEINHEIT Organisationseinheiten
  • ORGSTRUKTUR Organisationsstruktur

Ein DBMS-Job (eine Art cronjob für Datenbanken) startet täglich um 18:45 die stored procedure SYNC_ORGSTRUKTUR. Diese Prozedur stellt die Unterschiede zwischen den Views und den lokalen Kopien fest und schreibt die entsprechenden Änderungen in die Tabellen. Auf den Tabellen ORGEINHEIT und ORGSTRUKTUR befinden sich sog. «trigger», (engl. Gewehr-Abzug, Auslöser) welche durch diese Mutationen aktiviert resp. «gefeuert» werden:

  • Trigger auf der Tabelle ORGEINHEIT
    • ORGEINHEIT_INS_AFT
    • ORGEINHEIT_UP_AFT
    • ORGEINHEIT_DEL_AFT

  • Trigger auf der Tabelle ORGSTRUKTUR
    • ORGSTRUKTUR_INS_AFT
    • ORGSTRUKTUR_DEL_AFT

INS, UP und DEL stehen für die SQL-Statements INSERT, UPDATE und DELETE. AFT bedeutet, dass der Trigger nach dem jeweiligen SQL-Statement ausgeführt wird. ORGSTRUKTURen werden grundsätzlich nicht aktualisiert, sondern gelöscht und neu erstellt. Deshalb gibt es auch keinen ORGSTRUKTUR_UP_AFT Trigger. Die genannten Trigger sind sehr einfach gestaltet (das gilt im Übrigen für alle Trigger). Sie erzeugen lediglich Datensätze in den Synchronisations-Tabellen

  • UPDATE_ORGEINHEIT
  • UPDATE_ORGSTRUKTUR

und enthalten keine weitere Programmlogik.

Ableiten von Organisationseinheiten in Ngroups

Die Synchronisationstabellen UPDATE_ORGEINHEIT und UPDATE_ORGSTRUKTUR werden periodisch (DBMS-Job) durch die stored procedure MAP_ORGSTRUKTUR_TO_NGROUP abgearbeitet. Aus Organisationseinheiten (Tabelle ORGEINHEIT) werden Gruppen (NGROUP) vom Typ LZ erstellt, die Organisationsstrukturen (ORGSTRUKTUR) werden als Untergruppen (NGROUP_INCLUDES) abgebildet. Im Detail:

  1. Tabelle UPDATE_ORGEINHEIT durchlaufen (für alle SYNC_NGROUP=1)
    • NGROUPs erstellen für ACTION = 'i'
    • NGROUPs aktualisieren für ACTION = 'u'
    • NGROUPs löschen für ACTION = 'd'
      • Mitglieder löschen
      • Untergruppen löschen
      • aus übergeordneten Gruppen löschen
      • Gruppe selbst löschen
    • Synchronisations-Flag SYNC_NGROUP auf 0 setzen, falls die Aktion erfolgreich war
  2. Tabelle UPDATE_ORGSTRUKTUR durchlaufen (für alle SYNC_NGROUP=1)
    • NGROUP_INCLUDES erstellen für ACTION = 'i'
    • NGROUP_INCLUDES löschen für ACTION ='d'
    • Falls eine Organisationseinheit zwar in der Struktur vorhanden ist aber noch nicht als NGROUP, einen Eintrag in UPDATE_ORGEINHEIT machen
    • Beim nächsten Durchlauf von MAP_ORGSTRUKTUR_TO_NGROUP wird die fehlende NGROUP erstellt

Wir haben nun unsere Lokalen Kopien der Organisationseinheiten aktualisiert und die Änderungen in Ngroups abgeleitet. Damit sind zwar Ngroups erstellt worden, aber sie enthalten noch keine Mitglieder. Diese werden durch die Synchronisation von Anstellungen in entsprechende Ngroups befördert.

-- SwenVermeul - 2009-12-03

Topic revision: r5 - 2009-12-03 - vermeul
 
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