Definicja i podstawy zadań cyklicznych

Podstawowe założenia skryptów

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.

Zasady pisania kodu skryptów

Tworzenie kontekstu zadań cyklicznych

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();

Etapy inicjalizacji skryptu

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.

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: