Informacje o wersji 1.14.2.0
z dn. 31-01-2025

PDF

W tej wersji

Wymagane działania

  • Nowe zastępstwa:

    W ramach modyfikacji funkcji core.GetAllSubstitutions usunięto parametr LangId. W związku z tą zmianą zdefiniowane wywołania funkcji będą zwracać błąd. Wymagane jest usunięcie parametru z wywołania funkcji:

    SELECT * FROM core.GetAllSubstitutions ()
    

Kompatybilność aplikacji

Migracja aplikacji jest możliwa tylko między wersjami nAxiom kompatybilnymi na poziomie bazy danych.

Bieżąca wersja bazy danych: 20250129124203

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. Nowe zastępstwa

Gruntownie zmodernizowano funkcjonalność zastępstw, opierając ją na nowej mechanice pracy w kontekście wybranego użytkownika. Kiedy użytkownik podejmuje pracę w zastępstwie, system wysyła żądanie wystawienia nowego tokenu z identyfikatorem zastępowanego użytkownika. Jednak token zawiera teraz także atrybut NativeUserId, który odpowiada faktycznej tożsamości użytkownika. Obecnie parametr systemowy @_UserId określa kontekst pracy użytkownika, a nowy parametr @_NativeUserId - tożsamość użytkownika.

Zgodnie z parametrem UserId (oraz powiązanymi z nim rolami, rolami w jednostkach i przynależnością do grup interesariuszy) sprawdzane są uprawnienia ACL, PBA oraz dostęp do menu aplikacji i uprawnienia do akceptacji dokumentów.

Obecnie użytkownik, który podejmie pracę w zastępstwie, ma wyłącznie uprawnienia użytkownika zastępowanego, a zastępstwo obejmuje wszystkie role użytkownika zastępowanego.

  1. Definiowanie zastępstw
    • Wymagane są odpowiednie uprawnienia PBA.
    • Należy wskazać zastępowanego, zastępującego, datę rozpoczęcia (dowolna), datę zakończenia (bieżąca lub przyszła), status aktywne/nieaktywne.
    • Nie można utworzyć zastępstwa za samego siebie ani za użytkownika z zablokowanym/nieaktywnym profilem.
    • W przypadku użytkownika, którego profil wygasł, możliwość zdefiniowania zastępstwa zależy od nowego ustawienia systemowego (adminSPA).
    • W przypadku dezaktywacji zastępstwa, którego okres się rozpoczął, wyświetlany jest komunikat z ostrzeżeniem. Jeśli zastępstwo dezaktywuje zastępujący podczas pracy w zastępstwie, nastąpi zakończenie pracy w zastępstwie. UWAGA: Dezaktywacja zastępstwa podczas pracy w zastępstwie powoduje, że znika oznaczenie pracy w trybie zastępstwa oraz przycisk do zakończenia pracy w zastępstwie. To zachowanie zostanie poprawione w przyszłości. Jednak w takim przypadku wartości UserId i NativeUserId pozostają różne.
    • Możliwe jest wyznaczenie kilkorga zastępujących za jednego zastępowanego; jeden zastępujący może zastępować kilkoro zastępowanych (zawsze jako osobne zastępstwa).
    • System nie weryfikuje, czy osoby wyznaczane jako zastępujący są obecne, ani czy definiowane zastępstwo nie jest zagnieżdżone (A za B za C) lub rekurencyjne (A za B i B za A). Zastępstwa są nieprzechodnie.
  2. Podejmowanie/kończenie pracy w zastępstwie
    • Aby podjąć pracę w zastępstwie, należy rozwinąć menu profilu zalogowanego użytkownika i kliknąć przycisk Rozpocznij obok imienia i nazwiska osoby zastępowanej.
    • Aby zakończyć pracę w zastępstwie, należy kliknąć przycisk Zakończ w menu profilu użytkownika.
    • Praca w zastępstwie jest sygnalizowana dopiskiem zastępstwo za: Imię Nazwisko pod imieniem i nazwiskiem zalogowanego użytkownika.
    • Przy rozpoczynaniu i kończeniu pracy w zastępstwie jest wyświetlane potwierdzenie.
    • Użytkownik może się wylogować podczas pracy w zastępstwie, co jest równoważne z zakończeniem pracy w zastępstwie.
    • Podjęcie i zakończenie pracy w zastępstwie jest rejestrowane w audycie bezpieczeństwa (core.SecurityAudits, kategoria Permissions, typ zdarzenia UserIdentityChanged). Nie dotyczy to sytuacji, kiedy użytkownik wyloguje się podczas pracy w zastępstwie (zdarzenie wylogowania będzie rejestrowane w kolejnej wersji).
    • Jeśli użytkownik ma przypisanych kilka zastępstw, może się przełączać między nimi bez konieczności kończenia pracy w zastępstwie.
  3. Praca w zastępstwie
    • Jeśli audyt zdarzeń dla dokumentu biznesowego jest włączony, rejestrowane są informacje o użytkowniku który dokonał zmian oraz o tym, że pracował w zastępstwie i o osobie zastępowanej. W tabelach core.Audits, core.AudtitEventLogs i core.AuditEventLog dodano kolumnę NativeUserId. Jako wartości bilansu otwarcia dla nowej kolumny przyjęto wartości z kolumny UserId. Nie dotyczy to tabeli core.AuditLogs, której aktualizacja mogłaby powodować przekroczenie limitu czasu ze względu na dużą liczbę rekordów. W przypadku tej tabeli można po aktualizacji do nowej wersji uruchomić poniższy skrypt SQL.
        UPDATE [core].[AuditLogs] SET [NativeUserProfileId] = [UserProfileId]
        WHERE [NativeUserProfileId] IS NULL
      
    • W przypadku komentarzy do dokumentów biznesowych dodawanych podczas pracy w zastępstwie, obok imienia i nazwiska autora jest wyświetlana informacja o zastępstwie. W tabeli core.Comments dodano kolumnę NativeUserId. Jako wartości bilansu otwarcia dla nowej kolumny przyjęto wartości z kolumny UserId.
    • W okresie aktywnego zastępstwa powiadomienia do użytkownika zastępowanego są kierowane także do użytkowników, którzy go zastępując (bez względu na to czy pracują w zastępstwie).
    • Podczas pracy w zastępstwie czat jest wyłączony. Podczas pracy w normalnym trybie, przy próbie napisania wiadomości do użytkownika, który jest nieobecny, wyświetlana jest informacja o nieobecności i osobach zastępujących (wiadomości czatu nie są wysyłane do zastępujących).
    • Podczas pracy w zastępstwie polecenie Mój profil wyświetla dane użytkownika zastępującego. Wyjątkiem jest sytuacja, kiedy użytkownik zastępowany nie ma uprawnień PBA do podglądu własnych danych. W takiej sytuacji wyświetlana jest informacja o braku dostępu (403), ponieważ zastępujący pracuje z uprawnieniami PBA zastępowanego.
  4. Inne zmiany
    • Dotychczas podczas określania uprawnień ACL użytkownika sprawdzane były także jego zastępstwa, ponieważ zastępujący zachowywał swoje uprawnienia oraz nabywał uprawnienia zastępowanych. Obecnie nie jest to konieczne, a zmieniona funkcja core.GetAclIds powinna wydajniej obsługiwać uprawnienia ACL dla dużych zbiorów danych.
    • Usunięto tabelę core.PermittedRoles (informacje o rolach objętych zastępstwem), a także zmodyfikowano funkcje tabelaryczne dotyczące zastępstw core.GetAllSubstitutions oraz core.SubstitutionsPerformedByUser. Obecnie te funkcje zwracają inny zestaw kolumn.
    • Zmieniono weryfikację uprawnień PBA. Po podjęciu pracy w zastępstwie zastępujący ma tylko takie uprawnienia, jak zastępowany. Po zakończeniu pracy w zastępstwie przywracane są własne uprawnienia zalogowanego użytkownika.
    • Akcje dodawania, edytowania i usuwania zastępstw nie zostały zmienione, jednak działają one poprawnie. Dla akcji dodawania i edycji atrybuty ról objętych zastępstwem są ignorowane.
    • Zmodyfikowano endpoint PublicAPI PermissionDelegation/Save.

2. Migrator aplikacji

W migratorze aplikacji dodano sprawdzanie zgodności bazy danych importowanej aplikacji z bazą danych środowiska docelowego. Bazy danych są zgodne, kiedy podczas aktualizacji wersji nAxiom w obu wykonywany jest ten sam zestaw migracji Entity Framework, czyli kiedy ostatni rekord w tabeli core.__EFMigrationsHistory ma tę samą wartość w kolumnie MigrationId w obu bazach. W przypadku niezgodności wyświetlany jest komunikat i import jest blokowany.

3. Akcje C#

Zoptymalizowano działanie akcji C# pod kątem czasu wykonania oraz wykorzystania procesora i pamięci RAM. W tym celu wprowadzono zapisywanie skompilowanych skryptów akcji w pamięci cache. Do tej pory kompilacja odbywała się za każdym razem podczas wywołania akcji, co prowadziło do nadmiernego wykorzystania zasobów sprzętowych.

Ustawienia konfiguracyjne pamięci cache dla akcji C# znajdują się w sekcji AppConfiguration:Modules:Scripting w pliku appsettings.json serwisu api. Są to:

  • SlidingCacheExpirationInHours: czas w godzinach (liczba zmiennoprzecinkowa) od ostatniego użycia, po upływie którego skompilowany skrypt jest usuwany z cache.
  • EnableCompiledScriptCache: wyłączenie zapisywania skompilowanych skryptów w pamięci cache.

Poprawki i usunięte błędy

1. Uprawnienia PBA do zastępstw

Wprowadzono drobne zmiany w uprawnieniach PBA w sekcji Zastępstwa. Poprawiono opisy pól wyboru, zmieniono ich kolejność oraz zmieniono zachowanie tak, że zaznaczenie pola wyboru uprawnień o większym zakresie powoduje zaznaczenie pól wyboru o mniejszych zakresach.

Należy pamiętać, że uprawnienie do nadawania zastępstw dla dowolnego użytkownika obejmuje także podwładnych i siebie, a uprawnie dotyczące podwładnych obejmuje także siebie. Po przyznaniu uprawnienia o szerszym zakresie, pola wyboru uprawnień o węższym zakresie są ignorowane.


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