Zasady pisania skryptów
Niemal każdy skrypt polega na uzyskiwaniu dostępu do rekordów Omega-PSIR w ramach różnych typów, w zależności od celu skryptu. Skrypt może jedynie agregować informacje poprzez odczyt informacji z rekordów i przetwarzaniu i zapisywaniu tych informacji poza skryptem i rekordem. Może on też zmieniać informacje zawarte w rekordzie, według predefiniowanej w skrypcie zasady.
Tworzenie zapytań
Istnieje kilka sposobów na tworzenie zapytań do bazy rekordów. Mogą one być obsługiwane poprzez DAO lub jego ulepszoną wersję DAO-Helper.
Poprzez DAO można wykonywać zapytanie w następujący sposób:
var books = dao.getEntities(["book"], new SearchEntity("my query", "owner='admin'"), START_SEARCH, END_SEARCH, null);
W miejsce pierwszego argumentu można wpisywać kolejne typy, w których będzie przeprowadzone wyszukiwanie. Z kolei drugi argument oznacza zapytanie i dodatkowe ograniczenie takie jak data publikacji czy login właściciela rekordu. Następnie index pierwszego i ostatniego elementu wyszukiwania jest przekazywany w kolejnych dwóch argumentach. Można wykonywać nowe wyszukiwanie dla każdej strony i dzielić wyszukiwania na mniejsze. Można także skorzystać z DAO-Helper, który przeprowadza ukryte stronicowanie, co znacznie ułatwia zadanie wykonywania skryptu. Ostatni argument dotyczy sortowania i zazwyczaj pozostaje pusty.
Poprzez DAO-Helper można wykonywać zapytanie na dwa główne sposoby:
var q = "my query"; //zapytanie
var SearchEntity = Packages.pl.edu.pw.ii.framework.search.SearchEntity;
var se = new SearchEntity(q);
var beg = 0;
var end = java.lang.Integer.MAX_VALUE;
var entities = daoHelper.getEntities(["book"], se, beg, end, null);
Funkcja getEntities w komponencie daoHelper przyjmuje te same argumenty, jednak argument początku i końca indeksowania jest niemal zawsze nieograniczony (od 0 do wartości maksymalnej całkowitej Integer). Ta różnica występuje z powodu wbudowanego mechanizmu stronicowania w komponencie DAO-Helper.
Drugi prostszy sposób na wykonywanie zapytania to:
var entities = daoHelper.listQ(query, type, orderBy);
Jest to łatwiejszy sposób osiągnięcia podobnej funkcji co zaawansowane zapytanie getEntities.
Iteracja po rekordach
Po uzyskaniu rekordów poprzez wykonanie zapytania, należy wykonać iterację po wszystkich rekordach. W przypadku wbudowanego stronicowania DAO-Helper, jest to dużo łatwiejszy i bardziej czytelny kod.
Za pomocą prostej wbudowanej w JavaScript funkcji forEach, dla każdego rekordu jest wykonywana funkcja zadeklarowana jako argument. W funkcji pod określonymi danymi w skrypcie warunkami są wykonywane pewne prace modyfikacyjne lub agregacje statystyczne wymagające jedynie odczytu. Przykład takiej akcji - zamiana protokołu w URL książki - został pokazany w powyższym kodzie.