Módosítások

NeptunLdapSyncImpl

3 253 bájt hozzáadva, 2010. március 18., 17:05
Parancssoros paraméterek
A Neptun - LDAP szinkronizáció egy lehetséges implementációja az NIIF Intézet által fejlesztett PHP szkript. Ezen szkript a - lehetőségekhez képest - kellően általánosan kezeli az intézményi szinkronizációs igényeket, ezért önmagában, intézményi testreszabás nélkül, nem használható.
A szkript fejlesztés alatt levő verziója elérhető a [https://repo.niif.hu/gitweb/gitweb.cgi?p=neptun-ldap-script.git GIT Repositoryból]. A forráskód tartalmazza a keretrendszert, illetve intézményi példakódokat, melyek a BME által felvetett szinkronizációs igények alapján készültek el.
{{ATTENTION|Ez a szkript jelenleg is fejlesztés alatt áll, a felhasználása során előkerülő hibákért, esetleges adatvesztésért az NIIF Intézet semmilyen felelősséget nem vállal.}}
* általános szinkronizációs keretrendszer, ami nem csak az előre megszabott Neptun interfészekkel képes együttműködni, hanem tetszőleges webszolgáltatás eredményét képes feldolgozni
* intézményi testreszabás lehetősége
* hatékony, memóriakorlátozott futás (a felhasznált memória mérete ne függjön a webszolgáltatás által adott rekordok számától)
Nem célunk az összes intézmény összes egyedi igényét figyelembe venni, viszont ezen intézményi fejlesztéseknek helyet biztosítunk a központi forrásfában, így az intézmények egymás implementációit - szükség esetén - átvehetik.
= Architektúra Részletes(ebb) leírás =
A szinkronizáció művelete alapvetően két különböző szintre bomlik:
* az egyes webszolgáltatás-művelet paraméterezett meghívása, az eredmény rekordokra bontása (''szinkronizációs metódus'')
=== A leképező objektum életciklusa ===
[[Image:Szinkron-plain.png|thumb |alt=LDAP leképező objektum életciklusa |LDAP leképező objektum életciklusa]]
 
LDAP-ban létező bejegyzés esetén a következőképp alakul a leképező objektum életciklusa:
# azon mezők betöltése, melyek az LDAP bejegyzés kereséséhez szükségesek
# LDAP keresés végrehajtása
# LDAP-ból az attribútumok betöltése az objektum megfelelő mezőibe
# betöltés vége, életciklus metódus meghívása(pl. generált mezők számítása)
# az XML-ből a mezők frissítése
# életciklus metódus meghívása (pl. generált mezők számítása)
# megváltozott mezők keresése
# életciklus metódus meghívása (mentés előtti teendők végrehajtása)
# írás az LDAP-ba
public $mail;
/**
* @LDAP ccn
* @NEPTUN Szemely
*/
A bejegyzéshez tartozó XML-ben előfordulhatnak olyan elemek, melyek több értéket hordoznak (a fenti példában ilyen az <code>Email</code> elem, de például lehet több lakcímből, telefonszámból, ...). Az XML feldolgozása során ezeket a mezőket transzparensen kell kezelni, tehát a feldolgozás során minden egyes csomópontnál a többszörös illeszkedés összes ágának bejárása szükséges. Ezt a rekurzív bejárást a keretrendszer biztosítja.
 
=== Szelektív felülírás ===
Az LDAP attribútumok közül néhány esetén felmerülhet, hogy az adott attribútum ne kerüljön felülírásra a szinkronizáció során. Erre a keretrendszer kezdetleges lehetőséget biztosít, a következő három írási szemantika definiálásával:
* egy attribútum mindig felülírásra kerül (ez az alapértelmezett, <code>always</code>)
* egy attribútum csak akkor kerül felülírásra, ha az LDAP-ban az attribútum még nem szerepelt (<code>if-empty</code>)
* egy attribútum csak akkor kerül írásra az XML-ből, ha a teljes bejegyzés létrehozása történik (<code>create-only</code>)
 
A felülírási szemantikát az attribútumnál a <code>@WRITE</code> direktívával lehet jelezni.
= Részletes dokumentáció =
phpdoc -c phpdoc
x-www-browser docs/index.html
 
= Futtatás, tesztelés =
== Parancssoros paraméterek ==
A szinkronizáció a <code>test.php</code> szkript meghívásával indítható. Ez a parancssoros szkript a következő paramétereket fogadja:
 
* <code>--help</code>: súgó megjelenítése
* <code>--teljes</code>: figyelmen kívül hagyja az utolsó szinkronizálás időpontját
* <code>--neptunlist</code>: soronként egy neptun kódot tartalmazó fájl
* <code>--szinkron</code>: vesszővel (nem szóközzel) elválasztott lista a szinkronizálandó típusokról
 
=== Inkrementális szinkronizáció ===
A példaimplementáció alapértelmezetten (a <code>--teljes</code> kapcsoló hiánya esetén) az utolsó futtatás óta módosult rekordokat kérdezi le a Neptun webszolgáltatástól. Az egyes szinkronizációs modulok külön futtatásával elérhető, hogy bizonyos adatok (például a státuszok) gyakrabban frissüljenek, más adatok (például a hallgatott tárgyak) ritkábban.
 
Az utolsó futtatás időpontja tehát szinkronizációs metódusonként kerül tárolásra.
 
=== Szelektív feltöltés ===
A <code>--neptulist</code> paraméter használatával a szinkronizáció korlátozható bizonyos neptun kódokra. Ez a futtatási mód akkor lehet előnyös, ha például egy (néhány) felhasználó adatait kell csak szinkronizálni. Például elképzelhető egy olyan webes felület, ahol a felhasználók ellenőrizhetik a címtárban tárolt adataikat, illetve bizonyos esetekben kérhetik adataik frissítését. Ez a megoldás nagyban csökkentheti az adminisztrációs költségeket, hiszen a Neptunban elvégzett módosítások áttöltését maga a felhasználó kérheti.
 
== Konfiguráció ==
A szinkronizáció konfigurációt a <code>config.php</code> -ben lehet módosítani. Ebben a fájlban kell beállítani az LDAP szerver elérhetőségét és a jelszavakat, a logolás szintjét, a szinkronizációs metódusok nevét, illetve az ideiglenes fájlokat tároló könyvtárat.
565
szerkesztés

Navigációs menü