Háttérfolyamatok¶
A háttérfolyamatok önálló programok, amelyek ütemezett vagy manuálisan indított feladatokat hajtanak végre egy OpenBioMaps-projekt számára. Olyan műveletekhez használhatók, amelyeket nem szükséges interaktív webes kérés részeként futtatni, például adatvalidáláshoz, karbantartáshoz, importáláshoz, exportáláshoz, térbeli feldolgozáshoz és értesítések küldéséhez.
A háttérfolyamatok általában PHP nyelven készülnek, de egy OpenBioMaps-szerver a szerveradminisztrátor által telepített és engedélyezett Python, R, Bash vagy más nyelvet is támogathat.
A projektadminisztrátorok a Profile > Project administration > Background jobs felületen kezelhetik a háttérfolyamatokat. Jogosultságaiktól és a szerver konfigurációjától függően az adminisztrátorok:
előre meghatározott háttérfolyamatokat telepíthetnek a központi háttérfolyamat-repository-ból;
projektspecifikus háttérfolyamatokat tölthetnek fel;
konfigurálhatják a háttérfolyamatok paramétereit;
beállíthatják a végrehajtási ütemezéseket;
engedélyezhetik vagy letilthatják a háttérfolyamatokat;
manuálisan elindíthatják a háttérfolyamatokat;
megvizsgálhatják a legutóbbi végrehajtások eredményeit; valamint
szerkeszthetik a háttérfolyamatok forráskódját.
Az adminisztrációs felület áttekintését és a rendszerszintű ütemezési példát lásd: Háttérfolyamatok.
Háttérfolyamat-repository¶
Az előre meghatározott OpenBioMaps-háttérfolyamatokat az OpenBioMaps web-app-jobs repository tartalmazza.
A repository ettől a dokumentációtól függetlenül változhat. Egy háttérfolyamat telepítése vagy frissítése előtt tekintse át a kiválasztott verzió forráskódját és konfigurációját.
A repository README fájlja ismerteti a PHP-háttérfolyamatok hagyományos elrendezését. Egy PHP-háttérfolyamat általában két azonos nevű fájlból áll:
egy, a
jobs/run/könyvtárban elhelyezett végrehajtható fájlból; ésegy, a
jobs/run/lib/könyvtárban elhelyezett támogató könyvtárfájlból.
A más nyelven írt háttérfolyamatok állhatnak egyetlen, a jobs/run/
könyvtárban található végrehajtható fájlból. A pontos telepítési elrendezés
az OpenBioMaps verziójától és a szerver konfigurációjától függhet.
Háttérfolyamat telepítése és konfigurálása¶
Ahol ez támogatott, egy előre meghatározott háttérfolyamat a központi repository-ból telepíthető a háttérfolyamatok adminisztrációs felületén. Egy projektspecifikus háttérfolyamat feltölthető, vagy arra jogosult szerveradminisztrátor által manuálisan is telepíthető.
Egy háttérfolyamat telepítése után:
tekintse át a forráskódját;
tekintse át és állítsa be az összes projektspecifikus paramétert;
ellenőrizze, hogy a hivatkozott táblák, oszlopok, modulok, sablonok és könyvtárak léteznek;
a Run használatával futtassa manuálisan a háttérfolyamatot;
várja meg a végrehajtás befejezését;
vizsgálja meg az eredményt és a szervernaplókat;
ellenőrizze az adatbázisban vagy a fájlrendszerben végrehajtott módosításokat; valamint
csak a manuális teszt sikeres befejezése után engedélyezze az ismétlődő végrehajtást.
A háttérfolyamatok paraméterei és adatbázisra vonatkozó feltételezései megvalósításspecifikusak. Egy adott projekthez létrehozott háttérfolyamat módosítás nélkül nem feltétlenül működik másik projektben.
Ütemezés¶
Az ismétlődő háttérfolyamatok a projekthez konfigurált ütemezőt használják. A szerver rendszerszintű ütemezőjének rendszeresen meg kell hívnia az OpenBioMaps projektütemezőjét; ellenkező esetben a konfigurált háttérfolyamatok nem indulnak el automatikusan.
A központi repository a következő hagyományos cron-példát tartalmazza:
*/5 * * * * /usr/bin/php /var/www/html/biomaps/projects/YOUR-PROJECT/jobs.php > /dev/null 2>&1
Előfordulhat, hogy a parancsot a webszerver felhasználójával – általában a
www-data felhasználóval – kell futtatni. Az útvonalak, a végrehajtó
felhasználók, a konténerek és a PHP-parancsok telepítésenként eltérnek.
Docker-telepítésben a projektütemezőt általában az alkalmazáskonténeren
belül hívják meg.
A rendszerszintű meghívás időköze korlátozza az ütemezés tényleges felbontását. Ha például a projektütemezőt ötpercenként hívják meg, egy háttérfolyamat nem indítható el megbízhatóan percenként.
Az adminisztrációs áttekintést és a Docker-alapú példát lásd: Háttérfolyamatok ütemezése.
Felügyelet és hibaelhárítás¶
A háttérfolyamatok adminisztrációs felülete – ahol ez támogatott – megjeleníti a legutóbbi végrehajtás állapotát és kimenetét. Részletesebb információk lehetnek elérhetők a Project administration > Server logs felületen.
Egy háttérfolyamat hibájának vizsgálatakor ellenőrizze:
meghívja-e a rendszerütemező a projektütemezőt;
engedélyezve van-e a háttérfolyamat;
esedékes-e az ütemezés szerint;
fut-e még egy másik végrehajtás;
a végrehajtó felhasználó képes-e olvasni és írni a szükséges fájlokat;
telepítve vannak-e a szükséges programok és nyelvi csomagok;
léteznek-e a konfigurált táblák és oszlopok;
elegendők-e az adatbázis-jogosultságok;
van-e elegendő szabad hely az ideiglenes és exportkönyvtárakban; valamint
tartalmaz-e hibát az alkalmazás, a háttérfolyamatok, a PHP, a konténer vagy a rendszer naplója.
Egy háttérfolyamat akkor is befejeződhet anélkül, hogy a kívánt eredményt létrehozná, ha konfigurációja nem felel meg a projekt sémájának. Ne csak a sikeres kilépési állapotra hagyatkozzon, hanem ellenőrizze a létrehozott rekordokat, fájlokat vagy értesítéseket is.
Biztonság¶
Egy háttérfolyamat telepítése vagy szerkesztése végrehajtható kód szerverre telepítésével egyenértékű. Ezeket a funkciókat megbízható adminisztrátorokra kell korlátozni.
Egyéni vagy frissített háttérfolyamat telepítése előtt vizsgálja meg a következő kockázatokat:
SQL-injektálás;
operációsrendszer-parancsok injektálása;
nem biztonságos fájlútvonalak és fájljogosultságok;
adatbázis-hitelesítési adatok vagy személyes adatok felfedése;
korlátlan adatbázis-lekérdezések;
korlátlan memória-, processzor- vagy lemezhasználat;
nem biztonságos hálózati kérések;
hiányzó hozzáférés-ellenőrzések;
csatolmányok és archívumok nem biztonságos kezelése; valamint
nem szándékos ismételt végrehajtás.
Adatokat frissítő vagy törlő háttérfolyamatok futtatása előtt készítsen megfelelő biztonsági mentést. Az exportáló háttérfolyamatoknak alkalmazniuk kell a projekt adathozzáférési és adatvédelmi követelményeit a létrehozott fájlokra. A létrehozott archívumokat és jelentéseket védett helyen kell tárolni, és el kell távolítani, amikor már nincs rájuk szükség.
A központi repository háttérfolyamatai¶
A következő háttérfolyamat-könyvtárak találhatók meg a központi repository-ban. Egyes háttérfolyamatok általános célúak, míg másokat egy adott projekthez vagy munkafolyamathoz fejlesztettek.
Az alábbi leírások a repository nevei és az elérhető repository-metaadatok által jelzett célt foglalják össze. A telepítendő verzió forráskódjában ellenőrizni kell a pontos működést, a konfigurációs paramétereket, az adatbázis-módosításokat, az értesítések címzettjeit és a hibakezelést.
Általános adat- és fájlfeldolgozás¶
clean_tempAz OpenBioMaps-munkafolyamatok által létrehozott ideiglenes adatokat vagy fájlokat törli. Engedélyezése előtt tekintse át a konfigurált útvonalakat, táblákat, megőrzési szabályokat és törlési feltételeket. A hibás tisztítási konfiguráció még szükséges fájlokat vagy adatokat is eltávolíthat.
export_attachmentsExportot készít a projekt csatolmányaiból. Olyan munkafolyamatokban használható, amelyek a háttérben készítenek csatolmányarchívumokat. Ellenőrizze a rekordok kiválasztásának módját, a hozzáférési szabályok alkalmazását, az archívum létrehozási helyét és elérhetőségének időtartamát.
export_dataHáttérben futó adatexportot készít. A kiválasztott táblák, oszlopok, szűrők, a kimeneti formátum, a hozzáférés-ellenőrzések, a kimenet helye és a letöltési mechanizmus a háttérfolyamat konfigurációjától és a forráskód verziójától függ.
intersect_dataTérbeli metszési munkafolyamatot hajt végre a konfigurált adatkészletek között. Futtatása előtt ellenőrizze a forrás- és céltáblákat, geometriaoszlopokat, térbeli referenciarendszereket és a frissítés működését.
valid_list_valuesA konfigurált listamezőkhöz kapcsolódó értékeket ellenőrzi vagy dolgozza fel. A forráskód áttekintésével állapítsa meg, hogy csak jelenti-e az érvénytelen értékeket, vagy módosítja is azokat.
Megfigyelési listák feldolgozása¶
observation_listsA szabványos megfigyelésilista-munkafolyamat használatával dolgozza fel a megfigyelési listákat. Az adatbázisra vonatkozó feltételezéseit és az ideiglenes adatok kezelését össze kell vetni a projekt sémájával.
observation_lists_without_tempA megfigyelési listák feldolgozásának olyan változata, amelyet a szabványos ideiglenesadatszakaszt nem használó munkafolyamatokhoz terveztek.
incomplete_observation_listsA hiányos megfigyelési listákat dolgozza fel. A munkafolyamat az
incomplete_list_processedés azincomplete_list_unprocessedüzenetsablont használhatja a feldolgozás sikerességének közlésére. A telepített forrásverzióban ellenőrizze a sablonok tényleges használatát és címzettjeit.
Taxonómiai feldolgozás¶
species_name_validationA projektadatokban használt tudományos neveket validálja. Tekintse át a konfigurált taxontáblát, forrásmezőket, az elfogadott nevekre vonatkozó szabályokat, valamint azt, hogy a háttérfolyamat csak jelenti-e a problémákat, vagy módosítja is a rekordokat.
superspecies_autonamesEgy superspecies-munkafolyamat által használt neveket hoz létre vagy tart karban. Ez a háttérfolyamat projektspecifikus taxonómiai konvencióktól függ, ezért nem szabad engedélyezni a konfigurált táblák és névadási szabályok felülvizsgálata nélkül.
linnaeus_jobLinnaeushoz kapcsolódó, projektspecifikus feldolgozási munkafolyamatot valósít meg. Pontos taxonómiai műveletét és szükséges sémáját a repository áttekintése nem ismerteti; ezeket a forráskódból és a konfigurációból kell meghatározni.
Importálás és külső integrációk¶
iNatHarvesterMegfigyelési adatokat gyűjt az iNaturalist rendszerből OpenBioMaps- projektbe történő importáláshoz vagy feldolgozáshoz. Használata előtt tekintse át a távoli API beállításait, a taxon- és felhasználómegfeleltetést, a duplikátumészlelést, a földrajzi szűrőket, a sebességkorlátozást és a céltábla konfigurációját.
hunviphab_tracklogsA HunVipHab-munkafolyamat útvonalnaplóit dolgozza fel. Ez egy specializált háttérfolyamat, amelynek szükséges tábláit, útvonalnapló-formátumát és kimeneti mezőit a forráskódból kell ellenőrizni.
chirovox_renameÁtnevezési műveletet hajt végre a ChiroVox-munkafolyamathoz. Futtatása előtt a forráskód alapján azonosítsa az érintett fájlokat vagy rekordokat, a névadási konvenciót és az ütközések kezelését.
Adatbázis-karbantartás és egyéni SQL¶
sql_dailyKonfigurált SQL-t futtat ismétlődő karbantartási vagy feldolgozási feladatként. Az SQL-háttérfolyamatok tetszőleges projektadatot módosíthatnak vagy törölhetnek, ezért vizsgáljon meg minden utasítást, tesztelje őket nem éles környezetben, és szükség esetén készítsen biztonsági mentést.
sql_maintenancePostgreSQL-karbantartást végez az
ANALYZEés/vagy aVACUUMhasználatával. Ezek a műveletek frissítik a lekérdezéstervező statisztikáit, és felszabadítják vagy újrafelhasználhatóvá teszik az elavult sorverziókhoz kapcsolódó tárhelyet. Tekintse át a kiválasztott relációkat és beállításokat, az erőforrás-igényes karbantartást pedig egyeztesse a szerveradminisztrátorral.
Projektspecifikus munkafolyamatok¶
kaszalasi_bejelentoProjektspecifikus kaszálásbejelentési munkafolyamatot valósít meg. Ez a változat értesítésekhez kapcsolódó feldolgozást is tartalmaz. Használata előtt a forráskódból ellenőrizze az érintett rekordokat, üzenetsablonokat, címzetteket és feltételeket.
kaszalasi_bejelento_ertesites_nelkulA kaszálásbejelentési munkafolyamat értesítések nélküli változatát valósítja meg. Más adatfeldolgozási funkciókat megoszthat a
kaszalasi_bejelentoháttérfolyamattal; ezeket a forráskódban kell ellenőrizni.telepules_hozzarendelesTelepülést rendel a konfigurált rekordokhoz. Valószínűleg térbeli adatoktól és projektspecifikus mezőktől függ. Ellenőrizze a határadatokat, a geometriaoszlopokat, a térbeli referenciarendszereket, az egyeztetési szabályokat, valamint a településen kívüli vagy annak határán fekvő rekordok kezelését.
Fejlesztés és tesztelés¶
job_tesztA háttérfolyamatok telepítésének vagy végrehajtásának ellenőrzésére szolgáló tesztfeladat. Forráskódjának felülvizsgálata nélkül nem szabad éles adatfeldolgozási feladatként kezelni.
Háttérfolyamatok frissítése¶
Egy háttérfolyamat frissítése megváltoztathatja a szükséges paramétereket, az adatbázisra vonatkozó feltételezéseket és a mellékhatásokat. A telepített verzió lecserélése előtt:
őrizze meg a jelenlegi forráskódot és konfigurációt;
tekintse át a központi repository módosításait;
ellenőrizze az adatbázis-sémamigrációkat és az új függőségeket;
tiltsa le az ismétlődő ütemezést;
ahol lehetséges, telepítse a frissítést egy tesztprojektben;
futtassa manuálisan, és vizsgálja meg az eredményt; valamint
csak a validálás után állítsa vissza az ütemezést.
A központi repository-ból történő frissítés felülírhatja a helyi módosításokat. A projektspecifikus változtatásokat tartsa verziókövetés alatt, vagy külön egyéni háttérfolyamatként tartsa karban.
Egyéni háttérfolyamatok készítése¶
Egy egyéni háttérfolyamatnak:
egyértelműen dokumentált céllal kell rendelkeznie;
minden konfigurációt validálnia kell az adatok módosítása előtt;
paraméterezett SQL-t kell használnia;
kerülnie kell a hitelesítési adatok forráskódba ágyazását;
elegendő információt kell naplóznia a hibák diagnosztizálásához anélkül, hogy érzékeny adatokat fedne fel;
hiba esetén – ahol ez támogatott – nullától eltérő kilépési állapotot kell visszaadnia;
biztonságosan újrapróbálhatónak kell lennie, vagy egyértelműen dokumentálnia kell, ha nem az;
meg kell akadályoznia vagy biztonságosan kell kezelnie az egymást átfedő végrehajtásokat;
korlátozott lekérdezéseket és erőforrás-korlátokat kell használnia;
sikeres és sikertelen végrehajtás után is törölnie kell az ideiglenes fájlokat; valamint
dokumentálnia kell minden adatbázis-, modul-, végrehajthatóprogram- és nyelvicsomag-függőséget.
Ahol lehetséges, az egyéni háttérfolyamatokat éles telepítésük előtt reprezentatív adatokat tartalmazó külön projektben kell tesztelni.