Informacje o wersji 1.15.1.0
z dn. 30-09-2025
W tej wersji
- Nowy typ źródła danych
Tenant w środowisku nAxiom - Nowy parametr
Identyfikator tenantaw akcji Zapytania do Webserwisów - Możliwość wysyłania załączników w akcji Zapytania do Webserwisów
- Nowa kontrolka formularza
Lista wyboru (tenant nAxiom) - Nowy punkt końcowy API publicznego Document/CreateWithAttachments
- Historia aplikacji
- Logger w akcji C#
- Widoczność kolumny w sekcji typu lista
- Eksport listy użytkowników
- Integracja z OpenBao: etap 1
- Modernizacje i usunięte problemy
Wymagane działania
Nie jest wymagane wykonanie żadnych dodatkowych czynności.
Kompatybilność aplikacji
Migracja aplikacji jest możliwa tylko między wersjami nAxiom kompatybilnymi na poziomie bazy danych.
Bieżąca wersja bazy danych: 20250912121801
W tej wersji nAxiom struktura bazy danych zmieniła się. Przed migracją aplikacji do tej wersji wymagane jest zaktualizowanie środowiska źródłowego.
Nowe i zmodernizowane funkcje
1. Nowy typ źródła danych "Tenant w środowisku nAxiom"
Dodano nowy typ źródła danych Tenant w środowisku nAxiom. Źródło tego typu wskazuje na interfejs PublicAPI bieżącego środowiska nAxiom i umożliwia przesyłanie żądań między tenantami. Ten typ źródła danych nie ma żadnych parametrów konfiguracyjnych. Dzięki zastosowaniu źródła danych tego typu w żądaniu do PublicAPI w obrębie danego środowiska nie trzeba stosować obsługi uwierzytelniania.
Ten typ źródeł danych jest dostępny tylko w akcjach zapytań do web service.
2. Nowy parametr "Identyfikator tenanta" w akcji Zapytania do Webserwisów
W akcji zapytań do web service dodano obsługę źródła danych typu Tenant w środowisku nAxiom. Aby używać tego źródła, w definicji akcji należy podać identyfikator (GUID) tenanta. Akcje korzystające z tego źródła danych używają mechanizmu automatycznego uwierzytelniania opartego na tokenach TOTP.
3. Możliwość wysyłania załączników w akcji Zapytania do Webserwisów
W akcji zapytań do web service dodano możliwość wysyłania załączników. Ta funkcjonalność dotyczy żądań typu REST API korzystających z metod POST, PUT i PATCH. Dostępne są dwa tryby wysyłania: RAW (Base64) i Multipart/Form data.
Aby wysłać plik w trybie Raw, w definicji akcji, w polu SQL wysyłanych danych należy zwrócić wartość parametru {@_AttachmentContent_FILEID}, gdzie FILEID to identyfikator załącznika z tabeli core.Attachments, jako kolumnę AttachmentContent. Następnie, w polu Wysyłane dane, należy użyć zmiennej {@_QueryBody_AttachmentContent}, która zawiera dane załącznika zakodowane jako Base64. Przykład wykorzystania tej metody podano w Leksykonie nAxiom.
W trybie Multipart/Form-Data dane niezbędne do skonstruowania żądania należy zwrócić zapytaniem SQL. Odpowiednie informacje podano w oknie dialogowym definicji akcji.
Ponadto w ramach zadania dodano obsługę żądań typu PATCH oraz obsługę nowego typu zawartości w przypadku importu specyfikacji OpenAPI.
4. Nowa kontrolka formularza "Lista wyboru (tenant nAxiom)"
Dodano nową kontrolkę Lista wyboru (tenant nAxiom). Pozwala ona wybrać dowolnego tenanta zdefiniowanego w danym środowisku nAxiom. Kontrolka jest przeznaczona do „adresowania” korespondencji między tenantami, to jest do wskazania identyfikatora tenanta w akcji zapytań do web service wykorzystującej źródła danych typu Tenant w środowisku nAxiom.
Lista zwraca następujące kolumny:
- Id (GUID)
- Code
- Name
- UrlPrefix
Listę należy powiązać z polem typu uniqueidentifier. Wartości zwracane przez listę można przypisać do innych pól na formularzu, po kliknięciu przycisku Konfiguracja listy wyboru.
5. Nowy punkt końcowy API publicznego "Document/CreateWithAttachments"
Dodano nowy punkt końcowy do serwisu PublicAPI: Document/CreateWithAttachments. Pozwala on tworzyć nowe dokumenty i w ramach tego samego żądania dodawać do nich załączniki. W przypadku błędu podczas przetwarzania jednego z załączników, cała operacja zostanie wycofana i dokument nie zostanie utworzony.
Parametry żądania:
- documentDefinitionId (GUID): identyfikator (RowGuid) definicji dokumentu; parametr wymagany,
- batchId (GUID): opcjonalny identyfikator operacji wsadowej na potrzeby audytu; jeśli nie zostanie podany, zostanie wygenerowany nowy identyfikator GUID,
- skipWorkflowActions (boolean): flaga określająca, czy podczas tworzenia dokumentu mają być wykonywane akcje workflow; wartość domyślna false.
W sekcji body (obowiązkowej) należy podać dane dokumentu oraz załączników. Załączniki są przesyłane w formacie Base64 i zapisywane w podanej kategorii, lub w kategorii domyślnej, gdy kategoria nie zostanie podana. Rozmiar pliku i dozwolone rozszerzenia są sprawdzane zgodnie z ustawieniami kategorii.
Przykład żądania:
curl
--location '<naxiom-site-url>/publicapi/Document/CreateWithAttachments?documentDefinitionId=<guid>&skipWorkflowActions=<true/false>' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <token>' \
--data-raw '{ "Model": { "Id": 0, "MyField1": "<value1>", "MyField2": "<value2>" }, "Attachments": [ { "Base64Content": "<base64>", "FileName": "<file-name", "Description": "<file-desc>", "AttachmentCategoryId": "<cat-id>" } ] }'
6. Historia aplikacji
Dodano możliwość przypisania dwóch atrybutów tekstowych w definicji aplikacji: Nazwa wersji (obowiązkowy, maks. 200 znaków) i Opis wersji (opcjonalny, maks. 2000 znaków). Ich wartości wraz z datą wpisu są zapisywane w nowej tabeli core.ApplicationDefinitionVersions. Funkcjonalność pozwala rejestrować historię zmian w aplikacji oraz identyfikować kolejne wersje aplikacji. Historia aplikacji podlega migracji.
Ponadto w definicji aplikacji na karcie Ogólne dodano przełącznik Wyświetl nazwę wersji. Jego włączenie powoduje, że w trybie pojedynczej aplikacji pod nazwą aplikacji jest wyświetlana nazwa wersji.
7. Logger w akcji C#
W akcjach algorytmu C# udostępniono właściwość Logger. Pozwala ona zapisywać komunikaty z wykorzystaniem systemowego mechanizmu logowania. Logowanie komunikatów może odbywać się za pomocą metod opisanych w dokumentacji interfejsu ILogger z przestrzeni nazw Microsoft.Extensions.Logging.
Najniższy poziom logowania komunikatów określa ustawienie poziomu logowania w serwisie TenantsAdmin. Na przykład, jeśli ustawiony w TenantsAdmin poziom logowania to Error, komunikaty z akcji C# z niższym poziomem logowania nie będą logowane.
Dostępne są następujące poziomy logowania:
- FATAL (CRITICAL)
- ERROR
- WARNING
- INFO
- DEBUG
- TRACE
Aby skorzystać z udostępnionego mechanizmu należy zaimportować przestrzeń nazw Microsoft.Extensions.Logging za pomocą dyrektywy using na początku skryptu:
using Microsoft.Extensions.Logging;W nowo tworzonych skryptach będzie ona dodawana automatycznie.
Przykład skryptu z wykorzystaniem mechanizmu logowania zgodny z dokumentacją przywołaną powyżej.
using System;
using System.Linq;
using System.Text;
using CSharpScript.ActionRunner;
using CSharpScript.SqlRunner;
using CSharpScript.WebServiceRunner;
using CSharpScript.WebServiceRunner.Models;
using Microsoft.Extensions.Logging;
Logger.LogTrace("TRACE");
Logger.LogDebug("DEBUG");
Logger.LogInformation("INFO");
Logger.LogWarning("WARNING");
Logger.LogError("ERROR");
Logger.LogCritical("CRITICAL");
Logger.LogTrace("TRACE: {recordId}", RecordId);
Logger.LogDebug("DEBUG: {recordId}", RecordId);
Logger.LogInformation("INFO: {recordId}", RecordId);
Logger.LogWarning("WARNING: {recordId}", RecordId);
Logger.LogError("ERROR: {recordId}", RecordId);
Logger.LogCritical("CRITICAL: {recordId}", RecordId);
var value = "TEXT";
try
{
var number = int.Parse(value);
}
catch (Exception exc)
{
Logger.LogError(exc, "Error occurred while parsing {value}...", value, RecordId);
}
8. Widoczność kolumny w sekcji typu lista
W konfiguracji widoczności kolumny dodano obsługę odwołania do pola formularza w przypadku listy osadzonej jako sekcja na formularzu. Odwołanie powinno mieć postać {@*KodFormularza.PoleFormularza}. W AdminSPA na podglądzie listy w kreatorze list warunek widoczności nie jest wyliczany.
Odwołanie do pola formularza jest obsługiwane wyłącznie w listach osadzonych na formularzu. Próba wyświetlenia widoku listy zawierającej takie odwołanie poza sekcją formularza spowoduje zwrócenie wyjątku.
9. Eksport listy użytkowników
W aplikacji FrontSPA w widokach Lista użytkowników i Drzewo listy użytkowników dodano ikonę eksportu danych do plików w formacie MS Excel (xlsx). Eksport uwzględnia bieżące ustawienia filtrowania i sortowania rekordów.
10. Integracja z OpenBao: etap 1
Rozpoczęto prace nad integracją nAxiom z zewnętrznym systemem do zarządzania szyfrowaniem i hasłami, który umożliwi bezpieczne przechowywanie haseł i plików certyfikatów poza bazą danych. W pierwszym etapie realizacji tego tematu, w aplikacji TenantsAdminSPA dodano możliwość konfiguracji połączenia z portfelem OpenBao oraz możliwość definiowania sekretów typu tekstowego i plikowego na poziomie całego środowiska nAxiom oraz indywidualnych tenantów. Uzupełnieniem tej funkcjonalności będzie obsługa odwołań do zdefiniowanych sekretów przy użyciu zmiennych aplikacji oraz metod C#. Opis funkcjonalności zostanie opublikowany wraz z oddaniem jej do użytku (w wersji nAxiom 1.15.2.0).
Modernizacje i usunięte problemy
1. Zmiana nazw predefiniowanych ról
Do nazw wstępnie definiowanych ról nAxiom dodano przedrostek **System - **, aby odróżnić je od ról definiowanych przez konsultantów, np. podczas przypisywania uprawnień.
2. Obsługa wyjątków w akcji C#
Zmodyfikowano obsługę błędów w akcji algorytmu C#. Obecnie w komunikacie o błędzie można wyświetlać wyjątek typu TranslatedException z informacjami o błędach walidacji, które wystąpiły podczas obsługi załączników lub wykonania akcji. Ponadto poprawiono brak dostępności typu ActionExecutionException zwracanego po wywołaniu akcji:
- SqlAction,
- EmailAction,
- CSharpScriptAction,
- ReportsAction
Obecnie typ ActionExecutionException jest dostępny w przestrzeni nazw CSharpScript.ActionRunner.
Przykład:
using Shared.Exceptions;
try
{
var actionResult = await CSharpScript.ActionRunner.SqlAction.Instance.RunActionAsync(1, null);
}
catch (CSharpScript.ActionRunner.ActionExecutionException exc)
{
throw new TranslatedException("Błąd wywołania akcji SQL.", exc.ExecutionResult.ValidationResult);
}
Akcje SaveRecordAction i ChangeStatusAction wymagają innego sposobu obsługi błędów. Odpowiednie przykłady zamieszczono w Leksykonie (przykład 1, przykład 2). W przyszłości obsługa błędów dla tych akcji zostanie ujednolicona.
3. Obsługa DBNull
Poprawiono błąd zapisu rekordu w formularzu dla kolumny typu BIT w przypadkach:
- zapis dokumentu w akcji algorytmu C#, gdzie model formularza pochodzi z wywołania SqlHelper.ExecuteSqlQueryRowsToDictionary,
- akcja importu dokumentów, wartość w kolumnie BIT zwrócona jako INT NULL np.
SELECT CAST(NULL AS INT).
W powyższych przypadkach, gdy wartość, która ma zostać wstawiona do kolumny typu BIT była wartością DBNull typu INT, nie można było zapisać rekordu w formularzu.
4. Szerokość kolumn listy
Poprawione ustawianie szerokości kolumn z poziomu podglądu listy w kreatorze list. Zmiana szerokości na podglądzie powoduje zapisanie nowej wartości w polu Szerokość w ustawieniach kolumny. W ramach zadania określono także minimalną szerokość kolumny akcji równą 60 px.
5. Przyciski w oknie komunikatów
Usunięto błąd, który powodował, że nie wyświetlały się etykiety przycisków w oknie z pytaniem o zapis akcji w przypadku wykrycia błędów konfiguracji akcji. Ponadto, na skutek błędu kliknięcie dowolnego przycisku powodowało zapis akcji.