Informacje o wersji 1.8 z dn. 15-07-2022

PDF

Nowe i zmodernizowane funkcje

Autoryzacja oparta na uprawnieniach (PBA)

Zaimplementowano model uprawnień Permissions Based Authorization (autoryzacja oparta na uprawnieniach), który pozwala kontrolować dostęp użytkowników do wykonywania określonych czynności w systemie na podstawie posiadanych przez nich uprawnień. Proces przyznawania uprawnień odbywa się po stronie front-office (w aplikacji FrontSPA).

Uprawnienia podzielono na dwa obszary uprawnień: zarządzanie użytkownikami oraz globalne ustawienia aplikacji. Pierwszy obszar dotyczy różnych czynności związanych z zarządzaniem profilami użytkowników, drugi korzystania z aplikacji oraz tworzenia aplikacji. Osobna kategoria to uprawnienia do wyznaczania administratorów uprawnień, czyli użytkowników, którzy będą mogli przyznawać uprawnienia innym użytkownikom.

  • Uprawnienia mogą być przyznawane rolom biznesowym oraz indywidualnym użytkownikom.
  • Uprawnienia wynikowe każdego użytkownika stanowią logiczną sumę uprawnień przypisanych w ramach każdej jego roli oraz indywidualnie jego profilowi; to znaczy, że aby pozbawić użytkownika danego uprawnienia, należy je wyłączyć zarówno w jego profilu, jak i we wszystkich jego rolach.
  • Weryfikacja uprawnień odbywa się podczas logowania użytkownika (zmiana uprawnień zaczyna obowiązywać po ponownym zalogowaniu użytkownika).

W celu zainicjowania modelu PBA należy skorzystać z predefiniowanego profilu użytkownika superuser (domyślne hasło !Q2w3e4r%T). Ten profil odgrywa rolę superadministratora uprawnień, to znaczy może wyznaczać użytkowników (w tym siebie) jako administratorów uprawnień. Temu użytkownikowi nie można odebrać uprawnień do administracji uprawnieniami.

  • Uprawnienia PBA są weryfikowane podczas logowania użytkownika, dlatego każda zmiana uprawnień zalogowanego użytkownika zacznie obowiązywać dopiero po jego wylogowaniu i ponownym zalogowaniu.
  • Bez uprawnienia Używanie wszystkich aplikacji (Uprawnienia systemowe > Globalne uprawnienia aplikacji) inne posiadane przez użytkownika uprawnienia będą nieskuteczne, z wyjątkiem uprawnienia Zmiana własnego hasła.
  • Niezależnie od uprawnień PBA, użytkownikom, którzy mają zarządzać profilami użytkowników, należy przypisać rolę biznesową z dostępem do polecenia Lista użytkowników (ewentualnie Drzewo listy użytkowników.
  • Analogicznie, administratorzy uprawnień będą mieli dostęp do obszarów uprawnień po przypisaniu im ról biznesowych z włączonym dostępem do menu Zarządzanie uprawnieniami > Systemowe; domyślnie to menu jest dostępne tylko dla posiadaczy roli systemowej Administrator.
  • Czynności związane z tworzeniem i edytowaniem profili użytkownika są dostępne tylko dla użytkowników z przypisaną rolą systemową Administrator.
  • Dostęp do back-office (zarządzanie definicjami aplikacji, rozbudowa aplikacji) wymaga posiadania roli Konsultant
  • Jeśli podczas instalowania witryny nie zostanie wskazana licencja, użytkownik systemowy consultant ma uprawnienia do zaimportowania licencji podczas pierwszego uruchomienia. Dopiero wtedy można będzie zalogować się na konto superuser i zarządzać uprawnieniami.
  • Użytkownik superuser ma na stałe przypisane uprawnienie do wyznaczania administratorów uprawnień (pole wyboru Dostęp do administracji uprawnieniami) i nie można tego zmienić. Po zainicjowaniu uprawnień PBA ten profil można dezaktywować.
Wsparcie dla obsługi środowiska deweloperskiego, testowego i produkcyjnego

Dodano możliwość definiowania środowisk: deweloperskiego, testowego i produkcyjnego. Wyboru rodzaju środowiska dokonuje się podczas instalacji nAxiom. Środowisko deweloperskie i testowe jest oznaczone kolorowym paskiem z odpowiednim tekstem w górnej części okna przeglądarki. Środowisko produkcyjne nie ma takiego oznaczenia. Dodatkowe funkcjonalności wspierające model trzech środowisk to możliwość definiowania osobnych akcji dla każdego środowiska oraz możliwość definiowania zmiennych przyjmujących różne wartości w różnych środowiskach.

W przypadku akcji w oknie definicji dodano trzy przełączniki do ustawiania środowisk, w których akcja ma być wykonywana (w przypadku istniejących definicji wszystkie przełączniki są domyślnie włączone).

Zmienne definiuje się na liście definicji aplikacji. Odwołanie do zmiennej wymaga użycia składni {&NazwaAplikacji.AppVariables.KodZmiennej}. Zmienne mogą być używane jako parametry akcji (np. adres serwera dla źródła danych), w edytorze HTML, w szablonie e-mail, w szablonach oraz w edytorze SQL. W tym ostatnim przypadku jest dostępny mechanizm asysty SmartNumbers.

Dodatkowo w środowisku deweloperskim użytkownik ma możliwość przełączenia wartości zmiennych oraz akcji na takie jak dla środowiska testowego, a w środowisku testowym na wartości zmiennych i akcje dla środowiska deweloperskiego.

Odpowiednie ustawienia dotyczące rodzaju środowiska są zapisywane w plikach appsettings.json dla aplikacji API i Auth w kluczu Environment. Obsługiwane wartości to Development, Test, Production.

W przypadku witryn aktualizowanych z wcześniejszej wersji nAxiom, domyślnie ustawiane jest środowisko deweloperskie. Tę wartość można zmienić w obu plikach, jednak w celu zastosowania zmiany konieczne jest restartowanie aplikacji.

Kreator filtrów dla list

W widoku list w aplikacji FrontSPA dodano kreator filtrów, w którym można definiować kryteria filtrowania bez użycia SQL. Kreator oferuje predefiniowane operatory oraz umożliwia łączenie warunków filtrowania operatorami logicznymi AND i OR. Możliwe jest także grupowanie warunków i łączenie grup operatorami logicznymi.

Filtry zdefiniowane we wcześniejszych wersjach pozostają dostępne, jednak do ich edycji wymagane jest odpowiednie uprawnienie w modelu PBA. Ponadto zmodernizowano edytor filtrów SQL.

Wszystkie filtry są dostępne tylko dla ich twórców.

Pomoc w aplikacjach biznesowych nAxiom

Dodano funkcjonalność wyświetlania treści pomoc dotyczącej formularzy, list, definicji dokumentów biznesowych oraz statusów w aplikacjach biznesowych nAxiom. Treść pomocy jest wyświetlana w zdefiniowanym przez konsultanta formularzu, kiedy użytkownik kliknie ikonę koła ratunkowego but-sos.png . Ikona pomocy jest wyświetlana w obszarze ikon systemowych (np. kontekst, audyt, odśwież) na formularzu i w widoku listy (także w sekcji typu lista).

Przykładowy scenariusz konfigurowania pomocy dla użytkownika może wyglądać następująco:

  1. Dodać treść pomocy do elementów aplikacji — przycisk Tłumaczenia i pomoc w oknach kreatora listy i formularzy, w oknie definicji dokumentu biznesowego oraz na diagramie procesu.
  2. Zdefiniować formularz do wyświetlania pomocy.
  3. Zdefiniować akcje otwierania formularza z przekazywaniem identyfikatora formularza/statusu i listy.
  4. Przypisać akcje wykonywane po kliknięciu przycisku pomocy:
    • w ustawieniach systemowych (ADMINISTRACJA > Ustawienia systemu > Pomoc i dokumentacja)
    • indywidualnie dla dokumentu biznesowego (PROCESY BIZNESOWE > Dokumenty biznesowe > ‘Edycja’ > karta Pomoc dla użytkownika)
  5. Skonfigurować opcje wyświetlania przycisku pomocy dla list i formularzy (INTERFEJS UŻYTKOWNIKA > Formularze/Listy >Edycja > karta Pomoc dla użytkownika).
Formatowanie warunkowe kolumny HTML

Dodano możliwości formatowania warunkowego kolumny HTML. Odpowiednie ustawienia znajdują się na karcie Formatowanie warunkowe w oknie dialogowym właściwości kolumny HTML. Ta karta zawiera dwie karty podrzędne:

  • Warunki formatowania: służy do określenia warunków zastosowania stylu do elementu HTML z kolumny HTML. W wyrażeniu należy odwoływać się do elementów kolekcji RowHtmlElements, które w definicji HTML są określane przez użycie atrybutu rowHtmlElement o wartości odpowiadającej nazwie tego elementu (dla tych elementów jest dostępna asysta Smart Numbers). Wartości kolumn z rekordu listy są dostępne jako elementy kolekcji RowDataContext.
  • Stylizacja: pozwala określić style CSS używane do formatowania wartości w kolumnie HTML. Obsługiwane są selektory CSS z bibliotek Bootstrap 5 (https://getbootstrap.com/docs/5.0/).

Nazwy elementów kolekcji RowHtmlElements mogą zawierać wyłącznie małe i wielkie litery (bez znaków diakrytycznych).

Przykład:

HTML:

<table>
  <tr>
    <td>Nr reklamacji:</td>
    <td><a rowHtmlElement="MyLink" ><code>{@Code}</code></a></td>
  </tr>
  <tr>
    <td>Status:</td>
    <td><i rowHtmlElement="StatusIcon" ></i>
        <p>{@StatusName}</p></td>
  </tr>
  <tr>
    <td>Dni od zgłoszenia:</td>
    <td rowHtmlElement="MyCell"></td>
  </tr>
</table>

Warunek formatowania:

switch (RowDataContext.Status) {
  case 1:
    RowHtmlElements.StatusIcon.className = 'fas fa-pen fa-2x text-success';
    break;
case 30:
    RowHtmlElements.StatusIcon.className = 'fas fa-pen fa-2x text-success';
    break;
  case 2:
    RowHtmlElements.StatusIcon.className = 'fas fa-hourglass fa-2x text-info';
    break;
  case 3:
     RowHtmlElements.StatusIcon.className = 'far fa-hourglass fa-2x text-warning';
    break;
  case 4:
    RowHtmlElements.StatusIcon.className = 'fas fa-check fa-2x text-success';
    break;
  case 5:
    RowHtmlElements.StatusIcon.className = 'fas fa-ban fa-2x text-danger';
    break;
  case 6:
    RowHtmlElements.StatusIcon.className = 'fas fa-ban fa-2x';
    break;
  case 7:
    RowHtmlElements.StatusIcon.className = 'fas fa-check fa-2x';
};
var anchor = 'http://localhost:4200/front/form/59CEB6A4-0DAD-4E0D-9C0D-E017357CDE12/'
       + RowDataContext.Id
RowHtmlElements.MyLink.href = anchor;
var dzisiaj = new Date();
var utworzono = new Date(RowDataContext.CreateDate).setHours(0);
var dni = Math.floor(Math.abs(dzisiaj-utworzono)/(1000 * 3600 * 24));
RowHtmlElements.MyCell.innerHTML = dni;
if (dni > 14 ) {
    RowHtmlElements.MyCell.className = 'warn14';
}

Stylizacja:

td:nth-child(odd) {
  background-color: #85cc98;
  text-align: right;
  vertical-align: top;
}

td:nth-child(even) {
  background-color: #a7d9b4;
  text-align: center;
  column-width: 200px;
  max-width: 200px;
}

.warn14 {
  color: orangered;
  font-size: 1.4rem;
}

Rezultat:

Nowe filtry logów aplikacji

Zmodyfikowano obsługę filtrowania logów aplikacji. Można ustawić zakres dat, tylko datę początkową lub tylko datę końcową. Osobno dodano predefiniowane filtry dla ostatnich 15/30 i 60 minut. Na liście widoczne są obecnie tylko kolumny z datą, poziomem logowania i komunikatem o błędzie. Pozostałe informacje są dostępne po kliknięciu przycisku Szczegóły.

Dane są filtrowane i stronicowane po stronie serwera. Odfiltrowane wpisy — łącznie ze szczegółami — można wyeksportować do arkusza Excel (z ograniczeniami narzucanymi przez program Excel: maks. liczba wierszy 1048576, maks. liczba znaków w komórce 32767)

Zmiany funkcji tłumaczeń

Wprowadzono zmiany w obsłudze tłumaczeń. Zmieniono sposób powiązania definicji tłumaczenia z tłumaczonym rekordem. Obecnie jest do tego używana kolumna RowGuid z tabeli rekordu (np. FormFields.RowGuid) i kolumna RecordRowGuid z definicji tłumaczenia (TranslationDefinitions.RecordRowGuid).

Ponadto zmodyfikowano wygląd list tłumaczeń wyświetlanych poleceniem Tłumaczenia i pomoc w menu ADMINISTRACJA oraz przyciskami Tłumaczenia i pomoc w kreatorach list i formularzy. Dodano także możliwości grupowania i filtrowania rekordów.

W związku z tą zmianą konieczne jest odświeżenie funkcji tabelarycznych (widoków) używanych jako źródła danych dla list generowanych automatycznie. W tym celu w Kreatorze modeli danych dodano polecenie Aktualizacja widoków, które opisano poniżej. Jeśli widoki nie zostaną odświeżone, podczas otwierania list będą występować błędy:

Invalid column name 'RecordId'.
...
...
...
Could not use view or function 'dbo.OutgoingCorrespondence_View' because of binding errors.

Konieczna może być również ręczna modyfikacja istniejących zapytań, które odwołują się do definicji tłumaczeń.

Aktualizacja widoków

W Kreatorze modeli danych dodano polecenie Aktualizacja widoków, które umożliwia wsadową aktualizację widoków ([KodDokBiz_View]) używanych jako źródła danych dla list. Po kliknięciu przycisku polecenia wyświetlana jest lista tabel (z modeli standardowych i uproszczonych) z polami wyboru. Użytkownik może wybrać tabele, dla których chce odświeżyć widoki. Poza tym polecenie działa tak samo, jak przycisk odświeżania dostępny indywidualnie dla tabel.

Aktualizacja obejmuje wyłącznie widoki tworzone automatycznie podczas generowania elementów aplikacji.

Nowy sposób definiowania przycisków do edycji inline

Zmodyfikowano sposób definiowania przycisków do edycji inline na liście. Obecnie włączenie przełącznika operacji edycji inline (edycja, dodawanie, usuwanie) powoduje dodanie przycisku w strukturze drzewa listy. Na przykład włączenie edycji inline powoduje dodanie przycisku do edycji, dla którego jednocześnie definiuje się wygląd i akcję wykonywaną w celu zapisania zmian oraz wygląd przycisku do anulowania zmian. Domyślnie przyciski do edycji inline mają w nazwie człon [inline].

Ta modyfikacja umożliwia zmiany kolejności wyświetlania przycisków do edycji inline.

Zidentyfikowano problem ze stylem przycisków: po wskazaniu kursorem myszy lub kliknięciu przycisk „znika”. Ten problem zostanie poprawiony w pierwszym patchu do wersji 1.8. Tymczasowym obejściem jest wybranie koloru wypełnienia przycisku i zapisanie zmiany.

Przebudowany komponent wyboru akcji

Przebudowano selektor akcji oraz listę akcji wywoływanych dla konkretnej czynności użytkownika. Obecnie możliwe jest dodawanie akcji bezpośrednio z listy wszystkich akcji. Ta lista ma wszystkie standardowe funkcjonalności widoku listowego oraz informację o włączonym warunkowym wykonywaniu akcji i dostępności akcji dla konkretnego środowiska. Z poziomu selektora oraz listy wszystkich akcji możliwe jest szybsze tworzenie nowych akcji wybranego typu.

Zmiana domyślnego ustawienia właściwości Preload enabled

Wprowadzono zmianę, która powoduje, że obecnie instalator ustawia wartość true dla właściwości Włączono wstępne ładowanie (Preload enabled) dla aplikacji API (back na serwerze IIS). Ta zmiana wyeliminuje problemy w działaniu zadań cyklicznych.

Właściwość Kod w definicji akcji

W definicjach akcji dodano pole Kod. Kod akcji może zawierać małe i wielkie litery (bez znaków diakrytycznych), cyfry oraz znaki podkreślenia. Kod musi być unikalny w obrębie aplikacji. Dla istniejących definicji kody generowane są automatycznie na podstawie nazwy akcji (obsługiwane są także przypadki, kiedy automatycznie utworzony kod już istnieje). Dla akcji systemowych kodem jest wartość z kolumny Command w tabeli core.Actions.

Dzięki tej zmianie w akcji Algorytm C# można będzie odwoływać się do innych akcji, używając asysty Smart Numbers.

„Globalne” wartości parametrów widżetów na pulpicie

Dodano możliwość określania globalnej wartości dla parametrów powtarzających się w widżetach na pulpicie. Jeśli dla kilku widżetów zostanie zdefiniowany parametr o takiej samej nazwie i zostanie dla niego zaznaczone pole wyboru Globalny. Zmiana wartości parametru w jednym widżecie spowoduje aktualizację danych wyświetlanych w pozostałych widżetach.

Rozbudowa akcji Algorytm C#

Rozbudowano możliwości akcji Algorytm C#. Obecnie w tej akcji można wykonywać następujące rodzaje akcji:

  1. Akcje SQL
  2. Akcje e-mail
  3. Akcje WebServices
  4. Akcje algorytm C#

Do wykonania akcji służy funkcja RunActionAsync, która działa asynchronicznie, dlatego należy dodać słowo kluczowe await, aby akcje wykonywały się synchronicznie. Funkcja przyjmuję dwa parametry: identyfikator wykonywanej akcji oraz model w formacie JSON. Identyfikator akcji można podać, używając składni SmartNumbers ({&BaseApp.Actions.BaseModule.KodAkcji}). Modele danych dla akcji przedstawiono poniżej, jeśli nie trzeba przekazywać parametrów, można wstawić wartość *NULL lub pusty ciąg znaków. Funkcja RunActionAsync zwraca obiekt o typie danych ActionExecutionResult, który jest zbudowany następująco:

public class ActionExecutionResult
    {
        public string Result { get; set; }
        public bool IsValid { get; set; }
        public ValidationResult ValidationResult { get; set; }
        public List<ResponseMessage> ResponseMessages { get; set; }
    }

Result: zmienna z obiektem JSON odpowiedzi z wykonywanej akcji, w większości wypadków będzie to bool. IsValid: flaga poprawności wykonania akcji. ValidationResult: lista błędów, które wystąpiły w czasie wykonania akcji. Jest to klasa pochodząca z biblioteki .FluentValidation, a dokładnie *FluentValidation.Results.ValidationResult. ResponseMessages – jest to klasa która może przenosić komunikaty sqlowe. Struktura:

public class ResponseMessage
{
        public string Message { get; set; }
        public ResponseMessageType Type { get; set; }
        public IList<object> Arguments { get; set; }
        public bool ShowImmediately { get; set; }
}

Błędy, które wystąpią w akcjach, zostaną zalogowane i zwrócone w akcji akcji Algorytm C#, gdzie można będzie je obsłużyć (w bloku try catch). Błędy są zwracane jako Exception typu ActionExecutionException. Wyjątek zawiera właściwość ExecutionResult typu ActionExecutionResult, w której jest przechowywany wynik wykonanej akcji:

public ActionExecutionResult ExecutionResult { get; set; }
  1. Wykonanie akcji SQL:
    await CSharpScript.ActionRunner.SqlAction.Instance.RunActionAsync(id, model);
    

    Struktura modelu:

    {
      "RecordId": "string",
      "Model": "model JSON dla wykonywanej akcji, te parametry mogą być wykorzystane
             jako parametry np. w zapytaniu sql",
      "UserId": "00000000-0000-0000-0000-000000000000",
      "GridId": null,
      "FormDefinitionId": null,
      "BusinessDocumentId": null
    }
    
  2. Akcja e-mail:
    await CSharpScript.ActionRunner.
       EmailAction.Instance.RunActionAsync(id, model);
    

    Struktura modelu:

    {
      "RecordId": "string",
      "Model": "model JSON dla wykonywanej akcji, te parametry mogą być wykorzystane
             jako parametry np. w zapytaniu sql",
      "UserId": "00000000-0000-0000-0000-000000000000",
      "GridId": null,
      "FormDefinitionId": null,
      "BusinessDocumentId": null,
      "ExtraEmailsToSend": [
     "string",
     "string"
      ]
    }
    
  3. Akcja WebServices:
    await CSharpScript.ActionRunner.
       WebServiceAction.Instance.RunActionAsync(id, model);
    

    Struktura modelu:

    {
      "RecordId": "string",
      "Model": "model JSON dla wykonywanej akcji, te parametry mogą być wykorzystane
            jako parametry np. w zapytaniu sql",
      "UserId": "00000000-0000-0000-0000-000000000000",
      "GridId": null,
      "FormDefinitionId": null,
      "BusinessDocumentId": null
    }
    
  4. Akcja algorytm C#:
    await CSharpScript.ActionRunner.
       CSharpScriptAction.Instance.RunActionAsync(id, model);
    

    Struktura modelu:

    {
      "RecordId": "string",
      "Model": "model JSON dla wykonywanej akcji, te parametry mogą być wykorzystane jako
             parametry np. w zapytaniu sql",
      "UserId": "00000000-0000-0000-0000-000000000000",
      "GridId": null,
      "FormDefinitionId": null,
      "BusinessDocumentId": null
    }
    

W zmiennej ActionExecutionResult.Result zwracany jest obiekt JSON:

{
	"ExecutedSuccessfully": true,
	"ReturnValue": "",
}
Dodatkowe informacje w logach aplikacji

Rozszerzono możliwości diagnostyki błędów rejestrowanych w logach nAxiom. W tym celu do tabeli w pliku log.db3 dodano kolumny CustomParamModel oraz QueryModel, w których zapisywane są (w formacie JSON) wartości parametrów używanych podczas wykonywania kodu SQL przy wywołaniu akcji.

Logowane wartości są prezentowane w okienku szczegółów, w którym dodano pole tekstowe z parametrami systemowymi, okno do prezentacji SQL oraz tabelkę z wartościami parametrów zapytania.

Ponadto w ustawieniach systemowych w sekcji Logi dodano przełącznik Ukryj wartości parametrów w logowanym zapytaniu SQL. Przełącznik jest domyślnie wyłączony, po włączeniu wartości parametrów nie są rejestrowane.

Obsługa akcji algorytm C# przez funkcję zadań cyklicznych

W funkcji zadań cyklicznych dodano możliwość cyklicznego wykonywania akcji typu Algorytm C#.

Obsługa procedur callback

Rozbudowano pakiet funkcjonalności pozwalający na wywołanie przekierowania wraz z przekazaniem danych wejściowych z systemu nAxiom do innego systemu oraz obsługę w tym ciągu zdarzeń powrotnego przekierowania do systemu nAxiom i dalszą obsługę procesu biznesowego w zależności od danych otrzymanych z zewnętrznego systemu. Ten pakiet funkcjonalności wspiera takie procesy jak obsługa podpisów elektronicznych lub zakupy online z obsługą płatności.

W ramach tego zadania dodano nowy rodzaj akcji: Inicjowanie przekierowania HTTP. W tej akcji definiuje się, czy token jest jednorazowy, czas ważności tokena, procedurę callback (wybierana z listy), dwa adresy URL — dla poprawnej odpowiedzi (ResponseType=OnSuccess) oraz dla błędnej odpowiedzi (ResponseType=OnError). Od wartości parametru ResponseType zależą akcje wykonywane w ramach procedury callback. Obydwa adresy URL muszą mieć parametr Token={@_Token}. Parametr {@_Token} jest to parametr zwracany przez zapytanie SQL (SQL dla zapisu parametrów), oprócz niego zapytanie zwraca wartości {@_OnSuccessUrl} i {@_OnErrorUrl}.

Indeksowanie warstwy tekstowej z OCR

W konfiguracji wyszukiwarki pełnotekstowej dodano obsługę wyszukiwania w treści załączników przetworzonych przez OCR. W wynikach wyszukiwania zwracane są dane dokumentu biznesowego i nazwa załącznika.

Warunek wyświetlania kolumny w widoku listy

W kreatorze list, w oknie właściwości kolumny źródła danych dodano kartę Widoczność. Na tej karcie można zdefiniować warunek SQL wyświetlania tej kolumny. Funkcjonalność powstała z myślą o umożliwieniu ukrywania kolumn na listach w przypadku obsługi witryny nAxiom w aplikacji mobilnej.

Warunek musi zwrócić wartość liczbową (0 — kolumna zostaje ukryta). W warunku można używać szeregu parametrów systemowych ({@_Nazwa}), w tym parametru {@_MobileMode}. Ten parametr pozwala wykrywać, czy użytkownik pracuje w aplikacji mobilnej, i w takiej sytuacji ukrywać kolumny. W przypadku aplikacji mobilnej (instalowanej ze sklepu, nie dotyczy trybu PWA) ten parametr przyjmuje wartość FLUTTER.

Dostęp do struktury organizacyjnej w FrontSPA

Dodano możliwość wyboru formularza ze strukturą organizacyjną podczas tworzenia pozycji menu użytkownika. Na liście wyświetlanej po kliknięciu przycisku Utwórz dla kodu formatki formularz struktury znajduje się na ostatnim miejscu.

Instalowanie witryn nAxiom w systemie Windows Server 2022 DataCenter

Wprowadzono poprawki umożliwiające uruchamianie instalatora jednoplikowego w systemie Windows Server 2022 DataCenter.

Definiowanie akcji dla przycisku audytu

Dodano możliwość definiowania akcji uruchamianych kliknięciem przycisku audytu (ikona zegara) na formularzu wyświetlanym we front-office. Widoczność przycisku i jego akcje można definiować globalnie w ustawieniach (ADMINISTRACJA > Ustawienia systemowe > Audyt) oraz indywidualnie dla definicji dokumentu biznesowego (okno Edycja definicji dokumentu > karta Audyt).

Akcja skanowania kodów kodów kreskowych i QR

Dodano akcję Skaner kodów QR/BC, która umożliwia wczytywanie danych z kodów kreskowych/QR w aplikacji mobilnej nAxiom. Akcja zwraca obiekt JSON o strukturze

{
  "codeFormat": "ean-13",
  "code": "1234567"
}

Ten obiekt można przetworzyć w zapytaniu SQL definiowanym dla akcji w celu wyodrębnienia danych.

Dodatkowo użytkownik może zdefiniować standard obsługiwanych kodów kreskowych i QR, rozmiar i położenie obszaru skanowania, jego proporcje, atrybuty stylu oraz opcje dodatkowe, m.in. włączanie latarki podczas skanowania.

Określanie typu MIME w akcji WebService

W definicji akcji Webservice dodano właściwość Typ zawartości (MIME type), w którym można określić rodzaj zwracanych danych. Do tej pory ten parametr miał stałą wartość text/xml;charset=”utf-8. Obecnie jest to wartość domyślna, w związku z czym nie ma potrzeby zmiany istniejących akcji.

Pole tej właściwości jest dostępne tylko w przypadku wyboru źródła danych typu API/SOAP.

Nowy wygląd menu szybkich akcji

Zmieniono wygląd menu szybkich akcji w widoku mobilnym.

Lokalizacja elementów natywnych aplikacji mobilnej

Dodano mechanizm obsługi tłumaczeń nazw elementów natywnych aplikacji mobilnej. W pliku konfiguracyjnym aplikacji mobilnej dodano klucz localization. Obsługiwane wartości tego klucza to pl i en.

Wskaźnik operacji w toku dla ekranu logowania

Dodano wskaźnik operacji w toku do ekranu logowania do aplikacji mobilnej.

Nowy wygląd przycisków do filtrowania listy w widoku mobilnym

Zmodyfikowano wygląd przycisków używanych do filtrowania i sortowania wartości w widoku listy w przypadku wyświetlania witryny nAxiom na urządzeniu mobilnym.

Poprawki i usunięte błędy

Modernizacja bloku Oczekiwanie

Zmodyfikowano właściwości i sposób działania bloku Oczekiwanie na diagramie procesów. Obecnie ten blok wymaga przypisania statusu.

W związku z tą zmianą po aktualizacji konieczne jest uzupełnienie statusu w istniejących diagramach procesów, w których używany jest ten blok.

Ponadto do bloku można teraz przypisać akcje wykonywane po przejściu. W ramach modyfikacji dodano sekcję Procesy biznesowe w ustawieniach systemowych. Zawiera ona ustawienie Interwał powtarzania uruchamiania oczekujących procesów (s). Określa ono interwał sprawdzania, czy ustawiony czas oczekiwania upłynął. Wartość domyślna 0 wyłącza to sprawdzanie. W takiej sytuacji proces zatrzyma się w statusie przypisanym do bloku Oczekiwanie. Zmiana ustawienia wymaga restartowania aplikacji taskservice.

Uprawnienia formularza i kontrolka checkbox

Dodano walidowanie wymagalności dla kontrolek CheckBox (pojedynczy) oraz Checkbox (grupa). Ponadto wyłączono możliwość ustawienia wymagalności dla kontrolki CheckBox (pojedynczy typu switch).

Funkcje agregacyjne w stopce listy

Usunięto problem z wyświetlaniem funkcji agregującej w stopce widoku listy w przypadku, gdy nazwa kolumny zawierała znak podkreślenia.

Akcja powiadomień w podprocesie

Zmodyfikowano obsługę akcji wysyłania powiadomień w taki sposób, aby mogła być wykonywana w operacjach „backendowych”, to jest jako akcja wykonywana przed lub po przejściu kroku na diagramie procesu.

Ustawianie daty za pomocą SQL

Poprawiono błąd z ustawianiem daty dla kontrolek Datapicker oraz Datapicker i pole czasu w przypadku gdy ustawiane wartość jest zwracana zapytaniem SQL SELECT GetDate() dla polskich ustawień narodowych (dd.MM.yyyy).

Widżet z podglądem raportu Telerik

Usunięto problemy występujące w przypadku wyświetlania raportu Telerik w widgecie na pulpicie w aplikacji FrontSPA.

Zależności kontroli — zbiór wartości oraz przedział

Poprawiono działanie funkcji zależności kontrolki. Obecnie możliwe jest określenie zbioru oraz przedziału wartości, na podstawie których będzie wyświetlana kontrolka zależna. W celu podania zbioru wartości należy wybrać operator zawiera się w, a w kolumnie Wartość wpisać wyrażenie [14, 18] — odpowiada wartościom 14 i 18. W celu zdefiniowania zakresu, należy użyć składni <14;18> — odpowiada wartościom od 14 do 18 włącznie.

Zmienne w nagłówku szablonu Word

Usunięto problem, który powodował, że niektóre zmienne używane w nagłówku szablonu Word nie renderowały się poprawnie.

Ustawianie daty strzałkami

Dla kontrolki Pole daty poprawiono funkcję zmiany daty przyciskami strzałek z prawej strony pola.

Walidacja wyrażeń regularnych w kontrolkach

W kontrolkach formularza poprawiono obsługę walidacji wyrażeń regularnych i wyświetlanie komunikatu użytkownika.

Generowanie PDF jako akcja po

Usunięto problem z wykonywaniem akcji generowania pliku PDF jako akcji po zmianie statusu. Aby jednak taka akcja była wykonywana poprawnie, musi mieć włączony przełącznik Zapisz wygenerowany plik do załączników.

Anonimizacja danych liczbowych

W akcji anonimizacji, dodano obsługę danych typu liczba zmiennoprzecinkowa. ponadto poprawiono anonimizację danych typu liczba dziesiętna z liczbą miejsc przed przecinkiem mniejszą niż 7.

Kontrolki Pole czasu oraz Datapicker i pole czasu

Poprawiono style dla kontrolek Pole czasu oraz Datapicker i pole czasu

Akcja Ustaw dane formularza

Poprawiono ustawianie wartości przy użyciu akcji Ustaw dane formularza w przypadku, gdy docelową kontrolką była Lista wyboru SQL (async).

Automatyczne wylogowanie

Do komponentów systemu wykorzystujących element iframe dodano kontener, w którym jest śledzona aktywność użytkownika. Dzięki temu wyeliminowane zostaną sytuacje, w których użytkownik aktywnie korzystający z nAxiom zostaje wylogowany z powodu bezczynności. Te komponenty to: podgląd raportów Telerik, podgląd formularza w designerze formularzy w aplikacji AdminSPA, sekcja załączników, sekcja OCR, okno dokumentacji, widżety w aplikacji FrontSPA.

Szablon Word

Usunięto błąd, który umożliwiał zapis szablonu Word, pomimo braku odpowiedniego folderu na dysku. Usunięto błąd, którego skutkiem był wielokrotny zapis tego samego szablonu Word, także w przypadku błędów w modelu JSON.

Kaskadowe zależności kontrolki

Poprawiono działanie funkcji zależności kontrolki w przypadku zależności kaskadowych (kontrolka zależna jest jednocześnie kontrolką nadrzędną dla innej kontrolki).

Komponent wyboru akcji we FrontSPA

Poprawiono działanie komponentu do wyboru akcji dostępnego w aplikacji FrontSPA (Akcje zdarzeń systemowych).

Okno logowania w widoku mobilnym

Dostosowane okno dialogowe zmiany hasła użytkownika do wyświetlania w widoku mobilnym.

Synchronizacja z Active Directory

Usunięto błędy występujące w procesie synchronizacji użytkowników i ról biznesowych z usługą Active Directory

Uprawnienia formularza a przyciski sekcji

Usunięto błąd, który powodował, że przycisk umieszczony w nagłówku sekcji nie był widoczny w uprawnieniach formularza.

Nadpisywanie appsetings.json

Usunięto błąd, który powodował nadpisywanie przez instalator ustawień dotyczących ElasticSearch w pliku appsettings.json.

Akcje po dla zapętlonego przejścia

Poprawiono wykonywanie akcji po w przypadku przejścia, które wracało do swojego statusu początkowego (pętla).

Migracja w przypadku zmiany nazwy modelu/kolumny

Poprawiono działanie migratora aplikacji w przypadku zmian nazwy modelu i/lub kolumn. Modyfikacja obejmuje tylko zmiany, które zostaną wprowadzone w tej wersji nAxiom.

W przypadku zmian wprowadzonych w poprzednich wersjach konieczne jest ręczna poprawa wpisów w tabeli [core.SqlBuilderMigrations]. W przeciwnym razie migrowane są modele/kolumny przed zmianą i po zmianie.

Kontrolka wyboru interesariuszy

Poprawiono działanie kontrolki wyboru interesariuszy w przypadku wybierania użytkowników przez wpisywanie ich nazw (filtrowanie). Błąd powodował, że w takim przypadku użytkownicy wybrani wcześniej byli usuwani.

GUID-y na formularzach

Poprawiono sposób obsługi tłumaczeń w celu wyeliminowania sytuacji, kiedy na formularzu zamiast etykiet wyświetlane były identyfikatory GUID.

Synchronizacja z Active Directory

Usunięto błędy występujące w procesie synchronizacji użytkowników i ról biznesowych z usługą Active Directory.

Kończenie sesji po zamknięciu karty

Poprawiono mechanizm zarządzania sesją użytkownika w taki sposób, że po zamknięciu stron witryny nAxiom, próba przywrócenia takiej strony z historii wymaga ponownego zalogowania się.

Brak szablonu Excell

W akcji eksportu do pliku Excel dodano sprawdzanie, czy wskazany w definicji akcji szablon istnieje oraz sprawdzanie podczas próby usunięcia szablonu, czy nie jest on używany w żadnej akcji.

Zadanie cykliczne, opis właściwości Cron

Zmieniono opis do pola Cron w oknie dialogowym definiowania zadania cyklicznego. Zwrócono uwagę, że przykłady podane na stronie walidatora online, nie są obsługiwane przez nAxiom (składają się z pięciu elementów, podczas gdy wyrażenia cron w nAxiom muszą mieć 6 części).

Akcja Otwórz formularz

Poprawiono wykonywanie akcji globalnej Otwórz formularz w przypadku, gdy identyfikator otwieranego formularza jest zwracany zapytaniem SQL.

Modernizacje Kreatora modeli danych

Dodano udogodnienia w obsłudze Kreatora modeli danych, w tym wyszukiwanie tabel na liście, przechodzenie do projektu tabeli po dwukrotnym kliknięciu nazwy tabeli oraz domyślne ustawianie schematu dbo dla nowej tabeli.

Własne style CSS

Przywrócono działanie funkcjonalności własnych stylów CSS (Ustawienia systemu > Ogólne > Własny CSS).

Aktualizacja do bieżącej wersji może wymagać dokonania zmian w zdefiniowanych stylach z powodu zmiany struktury selektorów CSS, m. in. na potrzeby obsługi wersji desktopowej i mobilnej.

Przykład: dotychczasowa deklaracja zmiany koloru nagłówka

nax-header > nav.navbar { background: red!important; }

nie będzie działać ze względu na zmianę struktury paska nawigacyjnego. Poprawne będą następujące deklaracje:

nav.navbar { background: red!important; }
nax-header > nax-header-desktop > nav.navbar { background: red!important; }
nax-header > nax-header-mobile > nav.navbar { background: red!important; }

Informacje uzupełniające

Migrator aplikacji

Wprowadzono szereg poprawek do funkcjonalności migratora aplikacji. Od strony użytkowej funkcjonalność nie zmieniła się, jednak korzystając z niej należy mieć na uwadze następujące kwestie:

  • Przed przystąpieniem do migracji zawsze wykonać kopię zapasową bazy danych, która ma zostać zaktualizowana.

  • Podczas migracji odtwarzane są wszystkie operacje wykonywane w Kreatorze modeli danych (zapisane w tabeli SQLBuilderMigrations). Może to prowadzić do sytuacji, w której operacja niezamierzonego usunięcia kolumny, a następnie jej odtworzenia przez konsultanta, zostanie powtórzona w środowisku docelowym, co doprowadzi do utraty danych.

  • Poprawiono działanie migratora aplikacji w przypadku zmian nazwy modelu i/lub kolumn. Modyfikacja obejmuje tylko zmiany, które zostaną wprowadzone w tej wersji nAxiom.
    W przypadku zmian wprowadzonych w poprzednich wersjach konieczne jest ręczna poprawa wpisów w tabeli [core.SqlBuilderMigrations]. W przeciwnym razie modele/kolumny są migrowane dwukrotnie, przed zmianą i po.

Brak strzałek przy polach numerycznych

Wykryto błąd polegający na tym, że nie są wyświetlane strzałki do zmiany wartości w polach numerycznych. Ten błąd zostanie naprawiony w pierwszym patchu do tej wersji.

Akcje po akcji zapisu OCR

Wykryto możliwe problemy związane z wykonywaniem akcji uruchamianych po akcji zapisu danych OCR. Aby te błędy nie występowały, akcja SQL zapisu danych musi zwracać identyfikator rekordu w klauzuli OUTPUT INSERTED.Id. Na przykład:

UPDATE [dbo].[Faktury]
   SET Data = {@Data},
          Nazwa = {@Nazwa},
          Kwota = {@Kwota}
   OUTPUT INSERTED.Id
WHERE Id = {@_Id}
Filtrowanie zależnej listy wyboru

W obecnej wersji nie potwierdzono zgłoszonego problemu z filtrowaniem zależnej listy wyboru, kiedy wartość wybierana w liście nadrzędnej jest typu unikalny identyfikator (funkcja zależności kontrolki).


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