Release - wersja 21.17
Poniżej opisane są najważniejsze zmiany wykonane w wersji 21.17.
Zmiany w aplikacji WWW
Możliwość podpięcia tego samego pola struktury do kilku kontrolek edycyjnych
W aktualnej wersji istnieje możliwość podpięcia tego samego pola struktury danych pod klika formatek edycyjnych. Jest to użyteczne, na przykład gdy chcemy, w zależności od warunków biznesowych, umożliwić użytkownikowi edycję wartości w inny sposób (np. z różną maską).

Uwaga! Zapis danych powiedzie się, jeśli system otrzyma zmodyfikowaną wartość w co najwyżej jednej z kontrolek – należy więc zadbać, by uniemożliwić użytkownikowi edycję danych jednocześnie w większej ilości kontrolek (np. przez ustawienie na nich wartości disabled).
Możliwość określania domyślnego formatu daty dla systemu
Definicja aplikacji została rozbudowana o możliwość określenia formatu daty w zależności od języka, z którego korzysta zalogowany użytkownik.

Nowy styl dla formularza
Lista styli dla formularza została rozbudowana o możliwość centrowania w pionie.

Definiowanie ról
Lista ról aplikacji zamiast domyślnie być wypełniana danymi z providera logowania może być definiowana poprzez ręczne dodawanie ról przez low-code dewelopera. Umożliwia to skonfigurowanie zestawu ról odpowiedniego dla środowiska docelowego, który może być inny niż lista ról występująca na środowisku, na którym rozwijamy aplikację.

Nowa funkcja w wyrażeniach
Mechanizm wyrażeń został rozbudowany o funkcję GetSelectedElementsIds(), która umożliwia zwrócenie listy identyfikatorów zaznaczonych elementów na liście – może ją wykorzystać przy nawigacji na formularz, by w parametrze przekazać do formularza tą wartość.
Kontener flow
Kontener typu „flow” został rozbudowany o obsługę akcji onclick().

VSoft archITekT Launcher
Obsługa zamrażania wersji archITekta
VSoft archITekt Launcher ma możliwość czasowego zamrożenia wersji obrazu platformy używanej w projekcie. Powoduje to, że aktualizacja obrazu platformy nie będzie oddziaływać na ten projekt do czasu jego odmrożenia.

Powyższe zachowanie może być użyteczne w przypadku jednoczesnego rozwoju wielu projektów i chęci opóźnienia aktualizacji wersji platformy w niektórych z nich.
Ostrzeganie w przypadku zbytniego obciążenia systemu
Uruchomione aplikacje zużywają zasoby systemu (CPU, RAM, miejsce na dysku). W przypadku wyczerpywania się zasobów systemu Launcher ostrzega użytkownika, że uruchomienie kolejnej aplikacji może prowadzić do spadku wydajności systemu.
Ujednolicony user experience w obszarze tworzenia i zarządzania projektami
Sposób zarządzania projektami wszystkich typów (Developerskim, OnPremises, Cloud) został ujednolicony i poprawiony.
Wsparcie użytkownika przy uruchamianiu aplikacji DEMO
VSoft archITekt Launcher został rozbudowany o walidacje podpowiadające właściwe działania użytkownikowi chcącemu uruchomić swoją pierwszą aplikację DEMO.
Uruchamianie pakietów przetwarzania z poziomu GUI
Rozbudowany został mechanizm obsługi timeout dla synchronicznego uruchamiana pakietów przetwarzania:
- Na bloczku wywołania pakietu można określić parametry:
- Po jakim czasie ma być zasygnalizowany timeout dla wykonywanego pakietu.
- Czy po osiągnięciu timeout pakiet ma być przerywany, czy kontynuować działanie.
- Czy możliwe jest równoczesne uruchomienie dwóch tych samych pakietów przetwarzania.
W konfiguracji aplikacji (w sekcji AppSettings) możliwe jest określenie:
- maksymalnego czasu na uruchomienie pakietu – klucz PackageProcessor_TimeoutOldCommand (domyślnie 20 sekund)
- określenie po ilu dniach automatycznie mają być kasowane wpisy z tabel PKG_REQUEST – klucz PackageProcessor_CleanupOld (domyślna wartość: 60 dni).
Zmienione zostało zachowanie pakietów uruchamianych lokalnie (w ramach procesu WWW): w przypadku wystąpienia błędu zapisywany jest ono w tabeli PKG_REQUEST.
Pozostałe zmiany
- Wyświetlanie wyników zapytań prezentuje dodatkowe informacje dotyczące kolumn w tooltipie (typ danych, sformatowany wynik w przypadku XML). Różne typy kolumn są prezentowane w różnych kolorach.
- Silnik wyrażeń został rozbudowany o listę funkcji umożliwiających wygodne pobieranie metadanych z serwera wersji.

- Silnik wyrażeń został rozbudowany o drzewo BLK wykorzystywane w pakietach przetwarzania. Zawiera ono informacje o nazwie aktualnej fazy procesowania i nazwie wykonywanego bloczka.

- Rozbudowane funkcje do obsługi metadanych przetwarzanych danych:
- GetSchemaElementName(..) -> "Client"
- GetSchemaElementPath(..) -> "Record\Client"
- Drzewo THIS:: jest dostępne w operacji dodawania elementu, co upraszcza pisanie adnotacji dodających warunkowo dużo elementów dzieci do rekordu (daje możliwość wykorzystania operacji THIS::Name). Elementu jeszcze nie ma a już można się do niego odwoływać. W efekcie można zastosować tą samą nazwę rekordu, fragmentu SQL, fragmentu warunku. Potem identyczny warunek czy SQL można zastosować w wielu miejscach różniących się tylko nazwą rekordu.
GetSchemaElementName / path.
- RoleStore provider dla ActiveDirectory zyskał właściwość roleNameSuffix. Powoduje ona że:
- z ActiveDirectory wczytywane są wyłącznie role, których nazwy kończą się suffixem,
- do aplikacji przekazywane są nazwy wczytanych ról pozbawione już tego suffixu.
Ma to zastosowanie przy wdrażaniu tej samej aplikacji na różne środowiska przejściowe (deweloperskie -> testowe -> produkcyjne), gdzie nazwy ról różnią się jedynie suffixem.
- Mechanizm logowania został rozszerzony o możliwość zapisu logów bezpośrednio do Azure Application Insights.
- W aplikacji WWW w pliku Web.config została dodana możliwość definiowania niestandardowych nagłówków Content-Security-Policy.