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.