Lista pozycji – akcje

Facebooktwitterpinterestlinkedinmail
Dotyczy wersji 2020.1.3.x; autor: Józef Cyran

 

Wprowadzenie

Lista pozycji jest często wykorzystywanym elementem wielu aplikacji, ponieważ pozwala na przechowywanie dowolnej liczby wierszy danych w przeciwieństwie do innych atrybutów. Funkcjonalność ta sprawia, że akcje wykonywane na liście pozycji różnią się od standardowej konfiguracji atrybutów.

Przypadek biznesowy: Planowanie personelu na potrzeby projektu

Działanie atrybutu lista pozycji oraz konfiguracja różnych akcji dotyczących list pozycji zostanie przedstawiona na przykładzie aplikacji służącej do planowania i wyceny kosztów zasobów ludzkich w projekcie.

Aplikacja składa się z dwóch procesów: słownikowego (posiadającego dwa kroki i służącego do przechowywania szablonów dokumentów), oraz głównego o nazwie Planowanie personelu. Proces ten umożliwia określenie zapotrzebowania na zasoby ludzkie oraz przydzielenie konkretnych pracowników do projektu wraz z automatyczną wyceną i generacją odpowiednich dokumentów.

Kierownik projektu wskazuję nazwę projektu i zapotrzebowanie na pracowników z każdego z działów – Development, Marketing oraz Testing. Następnie formularz trafia do kierowników poszczególnych działów – tylko jeśli istnieje zapotrzebowanie na pracowników z danego działu. Krok końcowy przydzielony jest z powrotem do kierownika projektu, który może przejrzeć i zmodyfikować listę pracowników oraz wygenerować arkusz Excel z listą, a także wycenę w formacie Word.

Rys. 1. Schemat obiegu

 

Oprócz kroków pośrednich, na schemacie widoczne są też kroki sterujące – kierują one formularz do każdego działu, z którego potrzebni są pracownicy.

W tabeli znajdują się atrybuty używane w procesie:

Atrybut Opis
Nazwa projektu atrybut typu pole tekstowe
Koszt całkowity liczba zmiennoprzecinkowa (atrybut techniczny służący do generowania dokumentu Word)
Zapotrzebowanie w osobomiesiącach – development liczba zmiennoprzecinkowa
Zapotrzebowanie w osobomiesiącach – testing liczba zmiennoprzecinkowa
Zapotrzebowanie w osobomiesiącach – marketing liczba zmiennoprzecinkowa
Personel lista pozycji z kolumnami tak jak na rys. 2
Personel – development lista pozycji identyczna do Personel, ale z filtrem na źródle danych oraz widocznością wyłącznie w kroku delegowania z działu Development
Personel – marketing analogicznie tak jak do działu Development
Personel – testing analogicznie tak jak do działu Development

 

Jako źródła danych użyto specjalnie przygotowanej tabeli z pracownikami, ich działami, stanowiskami oraz wynagrodzeniami. W WEBCON BPS standardowym źródłem danych o pracownikach jest AD lub CacheOrganizationStructure – ale w tym przypadku źródło danych z pracownikami nie służy do przypisywania zadań, bo te zostały przypisane do kierowników działu i kierownika projektu, o tworzeniu zadań można przeczytać https://kb.webcon.pl/przypisywanie-zadan-reguly-biznesowe/).

Użycie postbacków i reguł formularza jest jedną z metod implementacji automatycznego uzupełniania się kolumn w oparciu o inne. W tym przypadku najlepszym sposobem będzie użycie wartości wyliczanej zmiennoprzecinkowej jako typu atrybutu.

Rys. 2. Narzuty przeważnie wynoszą 0.2 wartości wynagrodzenia, ale kierownik może zmodyfikować tę wartość, gdyż wpływ na nią ma zmienne prawo podatkowe i jego interpretacje

 

Warto zwrócić uwagę na checkbox Pokazuj sumę pod kolumną. Jest to jedna z wielu użytecznych funkcjonalności listy pozycji.

Rys. 3. Konfiguracja kolumny Koszt udziału w projekcie

 

Aby upewnić się, że właściwa liczba miesięcy i zaangażowania została wpisana przez wypełniającego formularz, można użyć akcji walidacyjnej. WEBCON BPS posiada jednak wbudowaną funkcję sprawdzania sumy (oraz kopiowania sumy do atrybutu – z tej funkcji nie ma potrzeby korzystać). W konfiguracji listy pozycji należy wybrać zakładkę Sumowanie po czym dodać wiersz i uzupełnić kolumnę sprawdzaną, pole w którym znajduje się wartość oczekiwana, oraz Akcje do wykonania.

Rys.4. Kontrola sumy kolumny weryfikuje, czy suma wynosi odpowiednią wartość. Kopiowanie pozwala wpisać sumę wybranej kolumny do atrybutu wpisanego w Pole

 

 

Rys. 5. Możliwe akcje

 

Akcja „Tylko kontrola” oznacza, że użytkownik będzie mógł przejść ścieżką tylko jeśli suma będzie równa wartości z atrybutu wpisanego w Pole. Podpowiadanie oznacza, że przy dodaniu nowego wiersza listy pozycji wartość automatycznie uzupełni się taką, aby suma była równa wartości z atrybutu wpisanego w Pole.

Ponieważ o podziale osobomiesięcy pomiędzy pracowników decyduje kierownik projektu to nie ma potrzeby podpowiedzi – należy więc wybrać opcję „Tylko kontrola”. Jako kolumnę wybrano Liczbę osobomiesięcy, która jest kolumną wyliczaną i porównano ją do atrybutu Zapotrzebowanie w osobomiesiącach – development.

Rys. 6. Komunikat wyświetlający się, gdy suma z kolumny Liczba osobomiesięcy nie zgadza się z wartością z atrybutu Zapotrzebowanie w osobomiesiącach – development

 

Akcje

Po prawidłowej konfiguracji atrybutów należy stworzyć niezbędne akcje.

Pierwszą akcją jest Dodanie pracowników do projektu. Osoby wybrane przez kierownika i znajdujące się na liście pozycji Personel – development zostaną dodane do listy pozycji Personel. Na tej liście znajdują się wszyscy oddelegowani pracownicy, a dostęp i możliwość jej edycji będzie miał jedynie Kierownik Projektu na ostatnim kroku.

Rys. 7. Typ akcji musi być ustawiony na Zmiana wartości listy pozycji

 

Listę pozycji można modyfikować na trzy sposoby:

Rys. 8. Zmiana wartości listy pozycji

 

Wybranie ustawienia Dodaj nowe wartości oznacza pozostawienie dotychczasowych wartości i dodanie nowych wierszy. Aktualizuj wartości pozwala zmodyfikować wybrane kolumny dla wybranych wierszy. Zastąp wartości czyści całą listę i dodaje te które wybierzemy zapytaniem.

Właściwą opcją w tym przypadku będzie Dodaj nowe wartości. Każdy dział dodaje osoby ze swojej listy pozycji (w tym przypadku Personel – development) do głównej listy Personel. Nie chcemy, żeby dodanie pracowników np. Marketingu usunęło oddelegowanych pracowników działu Development ((Jako że krok Development jest pierwszy, teoretycznie można by wybrać opcję Zastąp wartości dla tego kroku, ale dla pozostałych już nie bo akcje w następnych krokach nadpisałyby dotychczasowe wartości).

Rys. 9. Zmiana wartości listy pozycji

 

Nazwy kolumn po lewej to kolumny źródłowe. W naszym przypadku listą z której dane będą kopiowane jest Personel – development. Po prawej są nazwy kolumn docelowej listy pozycji – w naszym przypadku Personel.

Nazwy kolumn dla danych zwracanych przez zapytanie MUSZĄ BYĆ IDENTYCZNE jak nazwy kolumn listy pozycji do których dane mają trafić. Nazwy kolumn źródłowych wskazują na dane źródłowe, więc ich nazwa niekoniecznie będzie taka sama.

Istotnym jest też wybór Wartości unikalnej. Jest to kolumna służąca za klucz zwracanej tabeli i dla każdego wiersza musi być różna. W przypadku listy pracowników taką wartością może być kolumna Pracownik, gdyż jest ona polem wyboru, a więc oprócz imienia i nazwiska zawiera też ID. Przykładowo wartość kolumny Pracownik w bazie danych wygląda następująco:

9#Marcelina Kowalska

Należy pamiętać, że niezależnie od zastosowanych filtrów źródłem danych każdej listy pozycji w tym procesie jest JC_Pracownicy, gdzie ID jest różne dla każdego pracownika. Mogą więc istnieć dwie Marceliny Kowalskie, ale w bazie danych będą przechowywane np. jako:

9#Marcelina Kowalska

4#MarcelinaKowalska

Na kroku końcowym zostały stworzone trzy akcje – jedna uzupełniająca wartość pola Koszt całkowity na wejście do kroku i dwie akcje generowania dokumentu na przycisk.

Generowanie dokumentu Excel

Akcja generowania Excela pozwala na przypisanie atrybutu do komórki, bądź listy pozycji do tabeli znajdującej się w szablonie. Wybór szablonu można dokonać na wiele sposobów, dobrą praktyką jest stworzenie procesu słownikowego (więcej o tym https://kb.webcon.pl/procesy-slownikowe/).

Rys. 10. Wybór załącznika jako szablonu

 

Zapytanie SQL zwraca ID załącznika, ponieważ wersje załączników są przechowywane w bazie danych, ważnym jest wybranie aktualnej – służy ku temu dodanie TOP 1 oraz ORDER BY ATT_TSUpdate DESC. ATT_WFDID to ID elementu w jakim znajduje się szablon, czyli jest to ID jedynego elementu w utworzonym obiegu szablonowym, znajdujemy go przy użyciu Subquery i wyfiltrowaniu wyłącznie elementów typu Szablony. Ponieważ w elemencie przechowywane są dwa szablony, należy także dodać ograniczenie nazwy: ATT_Name = 'Personel.xlsx'.

Rys. 11. Mapowanie listy pozycji Personel do stworzonej tabelki w pliku Excel

 

W przypadku listy pozycji przypisanie wartości z kolumn do kolumn w tabeli docelowej następuje automatycznie – nazwy kolumn tabeli w Excel muszą być IDENTYCZNE co nazwy kolumn listy pozycji, używanych jako źródło. Nie jest natomiast konieczne zachowanie takiej samej kolejności kolumn. Wykrzyknikiem oddzielamy nazwę tabeli od nazwy arkuszu.

Poniżej znajduje się plik Excel:

Rys. 12. Plik Personel.xlsx użyty jako szablon

 

 

Rys. 13. Wypełniona tabela w Excel

 

Generowanie dokumentu Word odbywa się analogicznie do Excela, z tą różnicą, że zamiast mapowania atrybutów do komórek (lub list pozycji do tabeli), w programie MS Word przy użyciu wtyczki (o której więcej można poczytać https://kb.webcon.pl/dodatek-webcon-bps-do-ms-word/) należy wstawić placeholdery dla atrybutów, czy też listy pozycji.

Rys. 14. Personel – szablon

 

W oknie konfiguracji należy wybrać, które atrybuty chcemy pokazać. Ważne, aby zaznaczyć Wiersz podsumowania w odpowiedniej kolumnie – Koszt udziału w projekcie.

Tabelę wstawiamy korzystając z wtyczki WEBCON BPS. Po wygenerowaniu dokumentu zostanie ona uzupełniona tyloma wierszami ile znajduje się w liście Personel.

Rys. 15. Przykładowo wygenerowany WORD z personelem projektu

 

Powyższe przykłady pokazują, że akcje generowania WORD i Excel są dla listy pozycji zrobione „inteligentnie” i nie trzeba martwić się o ręczne przypisywanie każdej kolumny.

O inicjalizacji słów kilka…

Na koniec warto jeszcze dodać o możliwości automatycznej inicjalizacji listy pozycji. Można wykonać ją na dwa sposoby – ręcznie wpisując wartości, którymi się uzupełni lub zapytaniem SQL przypisując kolumny zwracanej tabeli do kolumn listy pozycji. Działa to tak samo jak przy opisanej wyżej akcji zmiany wartości listy pozycji.

Konfiguracja listy pozycji posiada zakładkę Inicjalizacja, gdzie oprócz rodzaju inicjalizacji (statyczna vs SQL) można ustawić czy inicjalizacja ma się dokonać tylko na kroku startowym czy na każdym oprócz końcowych.

Rys. 16. W przypadku statycznej inicjalizacji kolumny listy pozycji są ręcznie wypełniane danymi do wczytania

 

 

Rys. 17. Konfiguracja inicjalizacji

 

W przypadku wyboru inicjalizacji SQL należy pamiętać, aby nazwy kolumn zwracanego zapytania były takie same jak nazwy kolumn listy pozycji. Rysunek wyłącznie poglądowy, w procesie Planowanie personelu nie ma potrzeby inicjalizacji żadnej z list pozycji.

W praktyce inicjalizacja statyczna jest dobrym rozwiązaniem tam, gdzie dane do wczytania są znane i stałe. Jeśli trzeba wczytywać dane dynamicznie, należy wybrać ustawienie SQL oraz odpowiednio skonstruować zapytanie i opcjonalnie źródło danych. Wczytanie źródła danych innego niż domyślne zajmuje jednak czas podczas ładowania strony, dlatego zaleca się używanie domyślnego źródła tam gdzie to możliwe.

Działanie aplikacji przykładowej można zobaczyć poniżej:

Rys. 18. Krok "Określenie zapotrzebowania na personel

 

 

Rys. 19. Krok "Development", w którym kierownik działu development uzupełnia listę pracowników

 

Rys. 20. Krok "Końcowy", w którym kierownik projektu może przejrzeć i zmodyfikować listę oraz wygenerować dokumenty