Printer icon

Informacje o wersji 1.15.1.0
z dn. 30-09-2025

W tej wersji

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.


Copyright © 2025 OPTEAM SA. Theme Copyright © 2017-2020 Patrick Marsceill. Distributed by an MIT license.