Moduł o nazwie Scheduler pozwala na okresowe uruchamianie zadań cyklicznych, zdefiniowanych za pomocą skryptów JavaScript Nashorn. Do celów tej funkcji należy:
wykonywanie zautomatyzowanego działania o charakterze okresowym, np. cotygodniowe sprawdzanie aktywności linków rekordów lub coroczne zaktualizowanie zewnętrznego wskaźnika jakości publikacji autorów,
wykonywanie działań technicznych lub deweloperskich o charakterze okresowym lub jednorazowym, np. aktualizacja systemu do nowszej wersji lub uzupełnienie niewypełnionego wcześniej pola rekordu.
Tworzenie nowych skryptów zadań cyklicznych nie następuje w kodzie źródłowym Omega-PSIR, ale w przeglądarce, w zakładce Panel Redaktora > Funkcje administracyjne > Scheduler. Dla użytkownika w roli administratora możliwe jest edytowanie, dodawanie nowych, usuwanie, uruchamianie oraz zaplanowanie skryptów.
Skrypty Scheduler są podobne do skryptów CLI. Główną różnicą między nimi jest konieczność inicjalizacji i zakończenia kontekstu w kodzie skryptów cyklicznych. Powodem takiej konieczności jest asynchroniczna natura działania skryptu - działa on niezależnie od kontekstu użytkownika zlecającego.
Każdy skrypt musi zostać otoczony następującym kodem:
org.jboss.seam.contexts.Lifecycle.beginCall(); // kod skryptu org.jboss.seam.contexts.Lifecycle.endCall(); |
Niemal każdy skrypt Omega-PSIR powinien rozpoczynać się od importu zewnętrznych dla skryptu bibliotek i konfiguracji potrzebnych narzędzi.
Najbardziej pomocne komponenty Omega-PSIR to DAO oraz DAO-Helper. Umożliwiają one ułatwione wyszukiwanie, iterację i edycję rekordów bazy wiedzy. Komponent DAO jest chronologicznie pierwszy i jest bazą dla komponentu DAO-Helper. Pełnią bardzo podobne funkcje, z tą różnicą, że DAO-Helper obsługuje bardziej zaawansowane, niezwykle potrzebne metody, np. ukryte stronicowanie rekordów. W większości przypadków użycia preferowane jest użycie komponentu DAO-Helper, jednak nie we wszystkich przypadkach jest to możliwe.
// komponenty Omegi var daoHelper = component('daoHelper'); var dao = component('jcrDAO'); |
Za pomocą podania kropkowanej ścieżki katalogu definicji klasy Java w kodzie Omega-PSIR, jest możliwy import dowolnej klasy z kodu źródłowego do języka JavaScript w skrypcie. Zaimportowane klasy mogą służyć do wywoływania metod statycznych, czy też tworzenia nowych instancji przy dodawaniu nowych rekordów (np. automatycznym dodawaniu nowego autora) czy konfiguracji tworzenia logów skryptu.
// sekcja importów (klasy Java) var SaveMode = Packages.pl.edu.pw.ii.framework.dao.GenericDAO.SaveMode; var SearchEntity = Packages.pl.edu.pw.ii.framework.search.SearchEntity; var Author = Packages.model.Author; var Authorprofile = Packages.model.Authorprofile; var Collectors = Packages.java.util.stream.Collectors; var Logging = Packages.org.jboss.seam.log.Logging; |
Istnieje także możliwość konfiguracji generowania logów przez skrypt, co może być pomocne podczas ręcznego wykrywania błędów oraz wykrywania anomalii w przetwarzanych rekordach. Aby móc korzystać z logowania, należy na początku skryptu umieścić poniższy kod.
// sekcja konfiguracji logowania var logger = Logging.getLog("book-authors"); var logStr = ""; function logError(s) { logger.error(s); logStr += s + "\n"; } function log(s) { logger.info(s); logStr += s + "\n"; } |
Następnie, w ramach właściwej części skryptu, należy korzystać z logowania poprzez wywoływanie wybranej z dwóch funkcji z argumentem tekstowym:
log("Informacja dla programisty") logError("Błąd typu "+error.number) |