Ograniczenie edycji wybranego pola

Parę dni temu szperając po Internecie natrafiłem na ciekawe rozwiązanie kwestii ograniczenia edycji wybranego pola w projekcie. Jest to kolejny przykład na to jak wiele można osiągnąć z Jira bez zastosowania wtyczek. Wystarczy jedynie znajomość wbudowanych funkcji i odrobina kreatywności. Brak takiego ograniczenia w schematach uprawnień? Nic to. Z pewnością znajdzie się sposób…

Osobiście nie dostałem jeszcze takiego business case do zrobienia, ale rozwiązanie spodobało mi się na tyle, że postanowiłem je tutaj opisać. A nuż Tobie się przyda?

Zadanie

Wyobraź sobie następujący scenariusz. W projekcie X jedyną osobą uprawnioną do zmiany priorytetu zadania ma być Project Manager. Jeśli spojrzysz w schematy uprawnień okaże się, że znajdziesz tam ograniczenia dotyczące dodawania komentarzy, tworzenia, zamykania zgłoszeń i wielu, wielu innych. Niestety nie ma tam opcji ograniczenia dostępu do jednego wybranego pola. Cóż zatem zrobić?

Rozwiązaniem jest utworzenie nowego ekranu, przeniesienie pola Priorytet z ekranu edycji zgłoszenia na nowo utworzony ekran, następnie zmapowanie tego ekranu do zapętlonego issue transition i ograniczenie dostępu do tego transition…

Co Ty bredzisz… Hę?

Jeśli już wiesz o co chodzi to poniżej jest checklista co trzeba zrobić. Jeśli nie wiesz to pod checklistą dokładnie wyjaśniam poszczególne kroki.

Checklista

  1. Idź do Administration > Issues > Screens
  2. Kliknij Add screen, podaj nazwę ekranu i opis
  3. Z menu wybierz pole Priority i kliknij Add
  4. Przejdź do projektu, w którym chcesz wprowadzić zmiany
  5. Kliknij Project settings > Screens
  6. Przejdź do edycji ekranu dla operacji Edit issue
  7. Usuń z tego ekranu pole Priority
  8. Przejdź do edycji workflow dla tego projektu Project settings > Workflows
  9. Wyedytuj workflow dla zgłoszenia/zgłoszeń, które Cię interesuje
  10. Dla statusu/ów przy których chcesz umożliwić wprowadzenie zmiany dodaj transition prowadzące do tego samego statusu i dodaj do transition screen, który stworzyłeś w punkcie 2
  11. W Options dla tego transition kliknij Conditions > Add condition > User Is In Project Role
  12. Wybierz do jakiej roli chcesz ograniczyć możliwość uruchomienia transition

Środowisko

Na potrzeby wpisu stworzyłem sobie w Jira Core fikcyjny projekt o nazwie Iron Man. Projekt ma dwie role: administrator i developer. Do ról są przypisani dwaj użytkownicy Tony Stark jako administrator projektu i Bruce Banner jako developer:

Business case jest taki, że w tym projekcie tylko Tony Stark ma prawo zmienić priorytet już utworzonego zadania. Bruce może ustalić priorytet przy zakładaniu zgłoszenia, ale później może tylko widzieć jakie są priorytety dla poszczególnych zadań.

Stworzenie ekranu pod transition

Jira umożliwia stworzenie ekranów m.in. dla trzech podstawowych operacji na zgłoszeniu – create, edit, view. Pozwala też na stworzenie ekranu, który pojawi się podczas transition dla zgłoszenia, czyli sytuacji, w której następuje przejście zgłoszenia z jednego statusu do drugiego. Możliwe jest ograniczenie uprawnień kto może kliknąć transition. Wykorzystamy te wszystkie funkcje do obsługi naszego przypadku.

Pierwsze co musisz zrobić to przygotować ekran, który pojawi się podczas transition. Przejdź do Administration > Issues > Screens i kliknij Add screen po prawej stronie. Nazwij swój ekran i dodaj jakiś sensowny opis. Ja nazwałem go „Priority Change Screen” i dodałem opis „Screen for lock priority change in project”.

W dalszej kolejności, do nowo utworzonego ekranu musisz dodać pole Priority. Wybierz je z rozwijanej listy i kliknij Add:

Usunięcie pola Priority z ekranu edit

Poprzednio przygotowałeś nowy ekran, na którym będzie się pojawiać pole Priority. Teraz czas na usunięcie tego pola z ekranu edycji dla zgłoszenia. Przejdź zatem do projektu Iron Man, kliknij Project settings > Screens. Kliknij w nazwę ekranu dla operacji Edit issue:

W tym miejscu drobna uwaga z mojej strony. W powyższym przypadku, jak widzisz, dla każdej operacji mam osobne screeny. Jira pozwala na wykorzystanie tego samego ekranu dla każdego przypadku lub pozwala na dowolne ich kombinacje. Zatem zdarzyć się może (i z tego co pamiętam jest to domyślne zachowanie Jira), że będziesz miał w tym miejscu zestawienie podobne do poniższego:

  • Create Issue: IM: Project Management Create Issue Screen
  • Edit Issue: IM: Project Management Edit/View Issue Screen
  • View Issue: IM: Project Management Edit/View Issue Screen

Operacje edit i view korzystają z tego samego ekranu. Nasz business case zakłada, że co innego będzie widoczne na ekranie edit (brak pola Priority) a co innego na ekranie view (widoczne pole Priority). Musisz zatem rozdzielić te dwa ekrany. Najłatwiej będzie jeśli w Administration > Issues > Screens znajdziesz IM: Project Management Edit/View Issue Screen i klikniesz copy. Kopię nazwij IM: Project Management Edit Issue Screen a przy oryginale kliknij edit i zmień nazwę na IM: Project Management View Issue Screen. Następnie w Screen schemes przydziel odpowiednie ekrany do operacji.

Wracamy do usuwania pola Priority z ekranu edycji.

Jak klikniesz w IM: Project Management Edit Issue Screen dla operacji Edit issue pojawi Ci się lista wszystkich dostępnych pól dla tego ekranu:

Najedź myszą na nazwę Priority. Z prawej pojawi Ci się X do usunięcia go z ekranu.

Edycja workflow

Do tej pory utworzyłeś nowy ekran z polem Priority oraz z ekranu dla edycji zgłoszenia usunąłeś to pole. Czas na dodanie nowego ekranu do workflow.

W projekcie przejdź do Project settings > Workflows:

Kliknij ikonę edit w kolumnie Actions. Zostaniesz przeniesiony do edycji workflow. Na potrzeby tego przykładu przyjmijmy, że edycja priorytetu zgłoszenia będzie możliwa jedynie w statusie To Do. Jeśli chcesz dodać edycję w innych priorytetach to poniższe musisz wykonać dla każdego priorytetu.

Do priorytetu dodaj loop transition czyli taką, która będzie prowadzić do tego samego zgłoszenia. Chodzi o to żebyś uzyskał efekt taki jak na poniższym obrazku:

Ja nazwałem moje transition „Change Priority”. Z rozwijanej listy w polu Screen wybierz ekran, który ma się pojawić przy wywołaniu akcji. W moim przypadku jest to wcześniej utworzony „Priority Change Screen”:

Po utworzeniu transition, zaznacz je i w pop-up, który pojawił się po prawej stronie wybierz Conditions > Add condition. Do wyboru będziesz mieć kilka warunków. Ja na moje potrzeby wybrałem User Is In Project Role, ale możesz rozważyć skorzystanie z innych. Ciekawe jest np. User Is In Group.

Następnie dodałem warunek mówiący, że transition może być przeprowadzone tylko przez osoby, które są w roli Administrator. Pamiętasz, że Tony Stark ma taką rolę dla projektu Iron Man.

W workflow to wszystko. Kliknij Publish i opublikuj konfigurację.

Efekt końcowy

Sprawdźmy co udało się osiągnąć. Loguję się jako user Bruce Banner i w projekcie Iron Man wyświetlam przypisane do mnie zadanie IM-1:

W obrębie pola priority, które jest ustawione na High nie mam możliwości edycji. Powyżej w przyciskach transition widzę tylko dwa: Start Progress oraz Done.

Zobaczmy teraz jak to zgłoszenie widzi Tony Stark. Przelogowuję się na jego konto:

Pojawił mi się trzeci przycisk transition – Change Priority. Po jego kliknięciu wyświetli mi się skonfigurowane okno transition z polem Priority:

W oknie pojawia się też pole do wpisania komentarza. Jego ukrycie to osobny temat. Na razie niech zostanie 😉 Wybieram priorytet Highest (a co, niech się Banner spina) i klikam na dole Change Priority. Po zapisaniu widzę, że priorytet się zmienił a zgłoszenie nadal jest w statusie To Do:

Voila! Ograniczenie zmiany priorytetu skonfigurowane 🙂 Oczywiście możesz dowolnie zmieniać dostępne opcje. Wybierać inne pola, w inny sposób dodawać uprawnienia do zmiany etc.



Skomentuj:

Twój adres email nie zostanie opublikowany

Site Footer