Uprawnienia formularza
Przeczytasz w 19 min.
Spis treści
Idea…
Uprawnienia formularza to „przedłużenie” funkcjonalności szablonów uprawnień na poziom formularza. Pozwalają one definiować dostęp do indywidualnych sekcji i pól formularza i w ten sposób określać wartości, które mają być widoczne/„modyfikowalne” dla określonych użytkowników. Zatem przedmiotem definiowanych uprawnień są obiekty na formularzu. Natomiast podmiotem uprawnień formularza są, podobnie jak dla dokumentów, twórcy dokumentów, użytkownicy z określonymi rolami (w tym z wybranych jednostek organizacyjnych) oraz interesariusze. Ponadto uprawnienia formularza określa się dla indywidualnych statusów, w tym także dla nowego dokumentu (jeszcze bez statusu), natomiast nie ma możliwości zdefiniowania zestawu uprawnień formularza dla wszystkich statusów.
Uprawnienia formularza są realizowane za pomocą zmiany atrybutów kontrolek na formularzu, dlatego uprawnienie do odczytu określonej wartości jest równoznaczne z ustawieniem widoczności kontrolki, w której ta wartość jest wyświetlana. Analogicznie uprawnienie do modyfikacji wartości odpowiada ustawieniu atrybutu tylko do odczytu dla kontrolki. Z tego też powodu w uprawnieniach formularza jest jeszcze trzecie „uprawnienie”, które odpowiada ustawieniu atrybutu wymagalności dla danej kontrolki. W uprawnieniach formularza można także określić, że podanie określonej wartości będzie dla danego użytkownika obowiązkowe.
Podobne możliwości dają także ustawienia dostępności dla kontrolek i sekcji formularza. Sposób łączenia ze sobą ustawień dostępności i uprawnień formularza przy użyciu odpowiedniego typu walidacji opisano w osobny artykule.
Zastosowanie
Najprostszym zastosowaniem uprawnień formularza jest poprawa wrażeń użytkownika, który ma tylko uprawnienia do wyświetlania dokumentu (R
według szablonu uprawnień). Jednak po otwarciu dokumentu w formularzu we wszystkich polach jest możliwa edycja wartości. Dopiero przy próbie zapisu jest wyświetlany komunikat o braku dostępu. Używając uprawnień formularza, można włączyć tryb tylko do odczytu dla wszystkich sekcji formularza, dzięki czemu użytkownik nie odniesie wrażenia, że uprawnienia do dokumentu nie obowiązują w formularzu.

Są jednak sytuacje, kiedy użytkownik musi mieć uprawnienia do modyfikowania dokumentu, ponieważ powinien mieć możliwość zmiany niektórych wartości, ale jednocześnie nie powinien móc zmieniać innych wartości. W znanej z innych artykułów przykładowej aplikacji do obsługi zamówień pracownicy realizujący zamówienie muszą mieć możliwość zmiany statusu zamówienia na Zrealizowane
, jednak nie powinni móc zmieniać żadnych szczegółów zamówienia. W tej sytuacji można włączyć tryb tylko do odczytu dla wszystkich sekcji formularza z wyjątkiem sekcji toolbar, w której są wyświetlane przyciski workflow.
Założenia
Jedyną czynnością wykonywaną przez pracownika działu kompletacji zamówień jest zmiana statusu zamówienia na Zrealizowane
. To wymaga uprawnienia do aktualizacji dokumentu. W rezultacie taki pracownik może zmienić dane zamówienia, co na etapie realizacji jest raczej niepożądane. Aby rozwiązać ten problem biznesowy, można skorzystać z uprawnień formularza i dla interesariusza Realizator zamówienia
(lub pracownika z rolą Specjalista ds. kompletacji zamówień
, zależnie od modelu procesu biznesowego) wyłączyć możliwość aktualizacji sekcji formularza w statusie W toku
.
Zablokowanie kontrolek w przypadku kierownika działu sprzedaży wymaga natomiast zdefiniowania uprawnień we wszystkich statusach, ponieważ ma on uprawnienie do odczytu zdefiniowane jako szablon instancji, to jest bez względu na status.
Realizacja
Aby zdefiniować uprawnienia formularza, przejdź do edycji formularza i kliknij przycisk Uprawnienia
.
Uprawnienia formularza można definiować tylko wtedy, kiedy w definicji dokumentu biznesowego tego formularza włączono obsługę uprawnień.

Zostanie wymuszony zapis formularza. W wyświetlonym oknie dialogowym kliknij przycisk Nowy uprawniony
. Zostanie wyświetlone kolejne okno, podobne do okna definiowania szablonu uprawnień.

Wybierz status dokumentu, w którym mają obowiązywać uprawnienia oraz użytkownika, któremu uprawnienia zostaną przypisane. W omawianym przypadku będzie to status W toku
i rola Specjalista ds. kompletacji zamówień
albo interesariusz Realizator zamówienia
. Kliknij przycisk Zapisz
. W oknie Uprawnienia dla formularza
zostanie dodany wiersz ze znakowanymi kolorem polami wyboru dla każdej sekcji i każdej kontrolki na formularzu. Domyślnie pola wyboru uprawnień do odczytu i aktualizacji (Read
i Update
) są zaznaczone, a pole wyboru wymagalności (Mandatory
) nie jest zaznaczone.
Aby zrealizować przyjęte założenia, wyczyść zaznaczenie pól wyboru Update
w sekcji pól użytkownika i w sekcji pól systemowych.
Sekcja toolbar jest reprezentowana jako dwie podsekcje: sekcję przycisków akcji i sekcję przycisków workflow.
W podobny sposób utwórz uprawnienia dla kierownika działu sprzedaży. Po wykonaniu tych czynności schemat uprawnień formularza powinien wyglądać jak poniżej.

Aby zapewnić, że skonfigurowane uprawnienia będą obowiązywać niezależnie od ustawień dostępności zdefiniowanych dla poszczególnych pól i sekcji formularza, z listy Typ walidacji
wybierz pozycję Ustawienia ACL
. Spowoduje to, że ustawienia dostępności będą ignorowane, natomiast egzekwowane będą tylko uprawnienia formularza. Pozostałe pozycje z tej listy zostaną opisane w osobnym artykule.
Testy
W przeciwieństwie do uprawnień określanych na poziomie dokumentu biznesowego, zmiany uprawnień formularza obowiązują dla wszystkich dokumentów objętych uprawnieniami, a nie tylko dla tych, które zostały utworzone po wprowadzeniu zmiany.
Kierownik sprzedaży może wyświetlać poszczególne zamówienia w widoku formularza, ale wszystkie kontrolki na formularzu, z wyjątkiem przycisku Anuluj
, są wyświetlane w trybie tylko do odczytu.

Realizator zamówienia również ma kontrolki na formularzu w trybie tylko do odczytu, ale może kliknąć przycisk Zakończ
, aby przenieść dokument do statusu Zrealizowane
i zakończyć obsługę zamówienia. (Pole wyboru Read
oznaczone zieloną ramką na ilustracji w poprzedniej sekcji).

Baza danych
Informacje o uprawnieniach formularza są zapisywane w kilku tabelach systemowych, które przedstawiono na ilustracji. Poniżej zamieszczono krótki opis tych tabel.

- [core].[ACLFormTemplateEntries]
- Ogólne informacje o zdefiniowanych zestawach uprawnień formularzy
Nazwa kolumny | Typ danych | Zezwól NULL | Opis |
---|---|---|---|
Id | int | Kolumna klucza głównego, identyfikator rekordu w tabeli | |
BusinessDocumentId | int | Identyfikator dokumentu biznesowego | |
FillRule | int | Identyfikator uprawnionego, patrz przypis poniżej | |
Description | nvarchar(MAX) | Opis zestawu uprawnień, kolumna nieużywana w przypadku uprawnień formularzy | |
StatusId | int | Identyfikator statusu, dla którego zdefiniowano zestaw uprawnień | |
OUInstanceId | int | Identyfikator jednostki organizacyjnej, w której obowiązuje zestaw uprawnień | |
StakeholderId | int | Identyfikator kategorii interesariuszy ([core].[Stakeholders]), dla której zdefiniowano zestaw uprawnień | |
RowGuid | uniqueidentifier | Unikatowy identyfikator zestawu uprawnień |
Kolumna [FillRule] może zawierać następujące wartości:
- 0: (na razie nieobsługiwane)
- 1: twórca dokumentu
- 2: właściciel dokumentu (na razie nieobsługiwane)
- 3: przełożony twórcy (na razie nieobsługiwane)
- 4: przełożony właściciela (na razie nieobsługiwane)
- 5: interesariusze
- 6: użytkownicy z wskazaną rolą
- 7: użytkownicy z wskazaną rolą z wskazanej jednostki organizacyjnej
- 8: użytkownicy z wskazaną rolą z wskazanej jednostki organizacyjnej i jej jednostkę podrzędnych
- [core].[ACLFormTemplateEntryRoles]
- Informacje o rolach powiązanych z poszczególnymi zestawami uprawnień formularzy
Nazwa kolumny | Typ danych | Zezwól NULL | Opis |
---|---|---|---|
Id | int | Kolumna klucza głównego, identyfikator rekordu w tabeli | |
ACLFormTemplateEntryId | int | Identyfikator zestawu uprawnień (kolumna [Id] z tabeli [core].[ACLFormTemplateEntries]) | |
RoleId | int | Identyfikator roli, dla której obowiązuje schemat uprawnień |
- [core].[ACLFormTemplateEntrySections]
- Szczegółowe uprawnienia dla sekcji formularza
Nazwa kolumny | Typ danych | Zezwól NULL | Opis |
---|---|---|---|
Id | int | Kolumna klucza głównego, identyfikator rekordu w tabeli | |
ACLFormTemplateEntryId | int | Identyfikator zestawu uprawnień (kolumna [Id] z tabeli [core].[ACLFormTemplateEntries]) | |
SectionId | int | Identyfikator sekcji formularza, której dotyczą uprawnienia | |
RUM | nvarchar(MAX) | Symbol przyznanych uprawnień (R - read/odczyt, U - update/modyfikacja, M - mandatory/wymagalność) |
- [core].[ACLFormTemplateEntryFields]
- Szczegółowe uprawnienia dla pól formularza
Nazwa kolumny | Typ danych | Zezwól NULL | Opis |
---|---|---|---|
Id | int | Kolumna klucza głównego, identyfikator rekordu w tabeli | |
ACLFormTemplateEntryId | int | Identyfikator zestawu uprawnień (kolumna [Id] z tabeli [core].[ACLFormTemplateEntries]) | |
FieldId | int | Identyfikator pola( kontrolki) na formularzu, którego dotyczą uprawnienia | |
RUM | nvarchar(MAX) | Symbol przyznanych uprawnień (R - read/odczyt, U - update/modyfikacja, M - mandatory/wymagalność) |
- [core].[ACLFormInstanceEntries]
- Szczegółowe wpisy uprawnień dla poszczególnych dokumentów; na schemat uprawnień dla jednego dokumentu składa się zestaw rekordów po jednym dla każdego pola i sekcji formularza
Nazwa kolumny | Typ danych | Zezwól NULL | Opis |
---|---|---|---|
Id | int | Kolumna klucza głównego, identyfikator rekordu w tabeli | |
ACLId | int | Identyfikator dokumentu biznesowego (kolumna o tej samej nazwie z odpowiedniej tabeli dokumentu biznesowego) | |
CanRead | bit | Uprawnienie do odczytu | |
CanUpdate | bit | Uprawnienie do aktualizacji | |
IsMandatory | bit | Ustawienie wymagalności | |
UserProfileId | uniqueidentifier | Identyfikator użytkownika — w przypadku schematu uprawnień dla twórcy dokumentu | |
StatusId | int | Identyfikator statusu, dla którego obowiązuje zestaw uprawnień | |
FormSectionId | int | Identyfikator sekcji formularza, której dotyczą uprawnienia | |
FormFieldId | int | Identyfikator pola na formularzu, którego dotyczą uprawnienia | |
OUInstanceId | int | Identyfikator jednostki organizacyjnej, w której obowiązuje zestaw uprawnień | |
OUSubinstances | bit | Flaga wskazująca, czy uprawnienia mają obowiązywać w jednostkach podrzędnych danej jednostki organizacyjnej; wartość domyślna 0 | |
StakeholderId | int | Identyfikator kategorii interesariuszy ([core].[Stakeholders]), dla której obowiązuje zestaw uprawnień |
- [core].[ACLFormInstanceEntryRoles]
- Informacje o rolach powiązanych z indywidualnym wpisem uprawnień dla konkretnego dokumentu
Nazwa kolumny | Typ danych | Zezwól NULL | Opis |
---|---|---|---|
Id | int | Kolumna klucza głównego, identyfikator rekordu w tabeli | |
ACLFormInstanceEntryId | int | Identyfikator zestawu uprawnień (kolumna [Id] z tabeli [core].[ACLFormTemplateEntries]) | |
RoleId | int | Identyfikator roli, dla której obowiązuje dany wpis uprawnień |
Do zapamiętania
- Uprawnienia na poziomie formularza można definiować tylko po włączeniu obsługi uprawnień w definicji dokumentu biznesowego oraz na poziomie listy.
- Schematy uprawnień formularza są przypisywane do definicji dokumentu biznesowego; jeśli z daną definicją będzie używanych kilka formularzy, będą one korzystać z tego samego schematu uprawnień.
- Uprawnienia formularza nie ograniczają dostępu do danych w bazie danych za pomocą instrukcji SQL, np. w akcjach.
- W przeciwieństwie do szablonów uprawnień, zmiany uprawnień formularza działają dla już istniejących dokumentów (dla których działają szablony uprawnień).
- Uprawnienia formularza można definiować dla nowo tworzonego dokumentu (bez statusu), co pozwala kontrolować możliwość tworzenia nowych dokumentów.
Patrz także
- Leksykon nAxiom: 5.8 Uprawnienia do dokumentów (CRUD/A)
- Leksykon nAxiom: 4.4.6.7 Lista wyboru (interesariusz)
- Leksykon nAxiom: 4.5.13 Akcje interesariuszy