Przykłady

Typowe użycie modułu historii:

$// zmiana imienia klienta o id=35 z "Jan" na "Kazimierz"
$=(@customerId, 35)
$=(@oldFirstName, "Jan")
$=(@newFirstName, "Kazimierz")
$sql.write("update customers set first_name=? where id=?", [$@newFirstName, $@customerId])
$=(@historyId, $history.recordChange("customers", "first_name", $@customerId, $@oldFirstName, $@newFirstName))

Wywołanie z powyższego przykładu odpowiada następującemu pełnemu wywołaniu funkcji recordChange:

$=(@historyId, $history.recordChange("data", "p_history", "customers", "first_name", $@customerId, $@oldFirstName, $@newFirstName, $user.userID(), (Long)null, (String)null))

Jeżeli poprzednia wartość imienia nie jest znana, to aby osiągnąć taki sam efekt jak powyżej można użyć następującej konstrukcji (funkcja sama odczyta poprzednią wartość):

$=(@customerId, 35)
$=(@newFirstName, "Kazimierz")
$history.modifyH("customers", "first_name", $@customerId, $@newFirstName)

Jeżeli zmiany są wykonywane w zadaniu, to id użytkownika nie jest znane (sesja użytkonika nie jest utworzona). Można wtedy przypisać zmiany do użytkownika specjalnego używając funkcji modułu w wersji z argumentem userId:

$=(@customerId, 35)
$=(@oldFirstName, "Jan")
$=(@newFirstName, "Kazimierz")
$=(@specialUserId, -1) $// id użytkownika specjalnego
$sql.write("update customers set first_name=? where id=?", [$@newFirstName, $@customerId])
$=(@historyId, $history.recordChange("customers", "first_name", $@customerId, $@oldFirstName, $@newFirstName, $@specialUserId))

Niekiedy istotne jest, aby zarejestrować w historii nie tylko zmianę wartości pola, ale także fakt próby modyfikacji pola, nawet jeśli wartość faktycznie nie uległa zmianie. Należy wtedy zastosować wywołania funkcji z argumentem saveAlways:

$=(@customerId, 35)
$=(@oldFirstName, "Jan")
$=(@newFirstName, "Jan")
$sql.write("update customers set first_name=? where id=?", [$@newFirstName, $@customerId])
$// wpis w historii zostanie dokonany mimo iż $@oldFirstName == $@newFirstName
$=(@historyId, $history.recordChange("customers", "first_name", $@customerId, $@oldFirstName, $@newFirstName, $user.userID(), (Long)null, "Y"))

Do rejestracji zmian w polach numerycznych służy ta sama funkcja, która zapisuje zmiany w polach tekstowych:

$=(@customerId, 35)
$=(@oldStreetNr, 2)
$=(@newStreetNr, 7)
$sql.write("update customers set street_nr=? where id=?", [$@newStreetNr, $@customerId])
$=(@historyId, $history.recordChange("customers", "street_nr", $@customerId, $toString($@oldStreetNr), $toString($@newStreetNr)))

Do zmian w polach daty można stosować przeznaczoną do tego celu funkcję recordDateChange (i modifyDateH):

$=(@dateFormat, "yyyy.MM.dd")
$=(@customerId, 35)
$=(@newLastContactDate, $sysDate())
$// rejestracja zmiany w historii musi być przed wykonaniem zmiany, ponieważ recordDateChange odczyta poprzednią wartość pola last_contact_date bezpośrednio z bazy
$=(@historyId, $history.recordDateChange("customers", "last_contact_date", $@customerId, $toString($@newLastContactDate, $@dateFormat), $@dateFormat))
$sql.write("update customers set last_contact_date=? where id=?", [$@newLastContactDate, $@customerId])

Zmiany w polach daty można rejestrować także zwykłą funkcją recordChange:

$=(@dateFormat, "yyyy.MM.dd")
$=(@customerId, 35)
$=(@oldLastContactDate, "2011.01.01")
$=(@newLastContactDate, $sysDate())
$sql.write("update customers set last_contact_date=? where id=?", [$@newLastContactDate, $@customerId])
$=(@historyId, $history.recordChange("customers", "last_contact_date", $@customerId, $@oldLastContactDate, $toString($@newLastContactDate, $@dateFormat)))