Lunchtime – zamawianie posiłków

 

Wprowadzenie

Niezależnie od wykonywanej pracy, każdy człowiek potrzebuje krótkiej przerwy na zregenerowanie sił i zjedzenia smacznego posiłku. Jak wskazują liczne badania, pozwala to wrócić pracownikom do swoich obowiązków ze zdwojoną siłą, zminimalizować liczbę popełnianych przez nich błędów i znacznie poprawić wyniki. Coś tak oczywistego jak posiłek podczas szkolenia, czy spotkania analitycznego, wpływa na lepsze relacje z klientem.

Z drugiej strony, zarządzanie zamówieniami wymaga pewnego nakładu czasu i zdolności organizacyjnych. Znalezienie grupy osób chętnych na wspólny posiłek, samodzielne zebranie zamówień, a następnie poinformowanie zainteresowanych o jego dostarczeniu, to tylko niektóre z nich.

System WEBCON BPS pozwala zapanować nad dowolnym przepływem pracy, również tym związanym niebezpośrednio z pracą biurową. W celu sprawnego zarządzania procesem zamawiania posiłków, wystarczy przygotować prostą aplikację Lunchtime.

Aplikacja składa się z jednego procesu głównego oraz trzech słownikowych:

  • Lunchtime – proces główny, umożliwiający tworzenie nowego zbioru zamówień i zarządzania nim.
  • [LT] Food Suppliers – słownik przechowujący listę dostawców.
  • [LT] Menu Items – słownik przechowujący pozycję dostępne w menu danego dostawcy. Powiązany za pomocą GUID ze słownikiem „Food Suppliers”.
  • [LT] Places of Delivery – słownik przechowujący możliwe miejsca dostawy.

W aplikacji można wydzielić dwie role:

  • Zbierającego zamówienia – Osoba odpowiedzialna za wystartowanie nowej instancji „Lunchtime”, jej przeprocesowanie i złożenie zamówienia u dostawcy poza systemem. Dodatkowo ma ona możliwość uzupełnienia słowników o brakujących dostawców, elementy menu oraz miejsca dostawy. W samym procesie „Lunchtime” zapisywana jest w polu „Registrant”, a potocznie u nas w firmie nazywana jest dobrym człowiekiem.
  • Zamawiającego – Osoba składająca zamówienie. Jest informowana o rozpoczęciu procesu i jego kolejnych fazach poprzez powiadomienia mailowe.

Strona aplikacji

Strona aplikacji składa się z dwóch dashboard’ów:

  • Lunchtime
  • Luchtime administration

Pierwszy z nich „Lunchtime”, jest przeznaczony do startowania nowych instancji. Dodatkowo zawiera raport „Orders” związany z procesem zamawiania.

Rys.1. - Strona główna aplikacji

 

Raport daje możliwość przełączania się pomiędzy dostępnymi widokami:

  • Current – Bieżące zamówienia w krokach pośrednich.
  • My orders – wszystkie instancje „Lunchtime”, w których użytkownik brał udział
  • All – wszystkie instancje „Lunchtime”

Drugi dashboard służy do zarządzania słownikami. Zawiera on raport dedykowany każdemu z nich, z podziałek na widoki „Active” i „Inactive”.

Rys.2. – Lunchtime administration

 

Raporty słownikowe dają możliwość wyeksportowania wartości z jednego środowiska (np. testowego), a następnie zaimportowania go na inne (np. produkcyjne). Dzięki zastosowaniu GUIDu jako klucza łączącego instancje „Food Suppliers” oraz „Menu Items”, słowniki nie stracą wzajemnego powiązania nawet po ich zaimportowaniu.

Z tego poziomu możliwe jest również utworzenie nowej wartości w słownikach „Food Suppliers” oraz „Places of Delivery” poprzez przycisk „New”.

Aplikacja Lunchtime

W ramach procesu „Lunchtime” istnieje jeden obieg o tej samej nazwie. Poniżej przedstawiono jego schemat:

Rys. 3. – Schemat obiegu Lunchtime

 

Proces składa się z serii następujących po sobie kroków, które opisano poniżej.

a) Registration

Zadaniem zbierającego zamówienia użytkownika jest uzupełnienie formularza i zarejestrowanie instancji.

Rys. 4. – Formularz na kroku Registration

 

Formularz składa się z następujących sekcji:

  • System data – Sekcja systemowa uzupełniana automatycznie na podstawie bieżącej daty i użytkownika
  • Food Supplier – Sekcja, w której użytkownik w polu „Name” wskazuje spośród wartości dostępnych w słowniku „Food Suppliers”, skąd zamówione zostaną posiłki.

Pozostałe pola są automatycznie uzupełniane zgodnie ze słownikiem dzięki mapowaniu atrybutów.

Rys. 5. – Mapowanie atrybutów w konfiguracji pola „Name”

 

Warto zauważyć, że do pola technicznego zapisywany jest GUID. Umożliwia to zawężenie menu do wybranego dostawcy.

  • Order’s data – Sekcja, w której użytkownik w polu „Place of Delivery” wskazuje jedno z zarejestrowanych w słowniku miejsc dostawy. Z każdym miejscem powiązana jest grupa użytkowników zapisywana w polu technicznym. Dzięki temu powiadomienia mailowe są wysyłane jedynie do potencjalnie zainteresowanych osób.

Użytkownik ma możliwość wpisania dodatkowych informacji w polu „Additional order information” oraz obligatoryjnie uzupełnienia dealine’u zamówienia „Order deadline”. Należy wspomnieć, że jest to wartość informacyjna i nie wpływa automatycznie na procedowanie instancji.

b) Food choices oraz Final call

Kroki te posiadają identyczną mechanikę działania, a powodem ich rozdzielenia jest poinformowanie potencjalnych zamawiających o zbliżającym się końcu zbierania zamówień.

Odbywa się to poprzez zmianę kroku przez zbierającego zamówienia, co dodatkowo skutkuję wysłaniem powiadomienia e-mail.

Rys. 6. – Formularz z uprawnieniami zamawiającego na kroku Food Choices

 

W sekcji „Food Supplier” pojawia się nowe pole „Current Order Value”, natomiast na dole formularza lista pozycji „Today’s Order”.

Pod względem uprawnień krok różni się w zależności od pełnionej roli. Zamawiający widzi tylko jedną ścieżkę „Add Order / Save” oraz ma możliwość edycji/usunięcia własnego zamówienia i dodania nowego. Dodatkowo nie posiada możliwości edycji kolumny „Paid up” oznaczającej opłacenie zamówienia.

Rys. 7. – Formularz z uprawnieniami zamawiającego na kroku Food Choices

 

Zbierający zamówienie posiada z kolei możliwość edycji dowolnego wiersza i przejścia do kolejnego kroku procesu, jak również anulowania instancji.

Ograniczenie edycji poszczególnych wierszy jest efektem wykorzystania kombinacji, kolumny technicznej, wartości domyślnych oraz mechaniki akceptacji w konfiguracji listy pozycji.

Lista pozycji „Today’s Order” posiada ukrytą kolumnę techniczną „T: Row Edition”, na którą wpisywany jest zamawiający i zbierający zamówienie.

Rys. 8. – Fragment listy pozycji „Today’s Order” w widoku administracyjnym

 

W konfiguracji kroków “Food Choices” i „Final Call” w zakładce „Forms” zerwana została konfiguracja ustawień procesu dla tej listy pozycji.

Rys. 9. – Zakładka „Forms” na kroku Food Choices

 

Kliknięcie w oznaczoną na powyższym rysunku ikonę z narzędziami, powoduje otwarcie ustawień listy pozycji na danym kroku. Wewnątrz, możliwe jest wskazanie użytkowników, którzy mają uprawnienia do edycji danego wiersza. W przypadku konfigurowanego procesu będzie to ustawienie dynamiczne na podstawie kolumny technicznej „T: Row Edition”.

Rys. 10. – Zakładka „Acceptance” i konfiguracja akceptantów

 

Lista pozycji „Today’s Order” składa się z następujących kolumn:

  • Orderer – kolumna automatycznie uzupełniana loginem zamawiającego
  • Menu Item – pola wyboru ze słownika „Menu Items” zawężone na podstawie GUID do wybranego dostawcy

Rys. 11. Konfiguracja źródła danych pola „Menu Item”

 

  • Comment – opcjonalny komentarz zamawiającego
  • Details – Dodatkowe informacje o elemencie, pobierane ze słownika „Menu Items”
  • Price – Cena elementu pobierana ze słownika „Menu Items”
  • Number – liczba elementów, którą chce zamówić użytkownik
  • Value – automatycznie wyliczany iloczyn kolumn „Price” i „Number”. Suma wartości jest kopiowana do pola „Current Order Value”.
  • For the Customer – checkbox oznaczający, że zamówienie jest składane dla klienta
  • Paid Up – checkbox oznaczający, że zamówienie zostało opłacone. Może być edytowane wyłącznie przez zbierającego zamówienie.

Rys. 12. Konfiguracja edytowalności kolumny „Paid Ip”

 

Ostatnią wartą wspomnienia na tym kroku mechaniką jest zmiana koloru czcionki pola „Current Order Value” zależnie od jego wartości względem „Minimum Order Value”. Zostało ono zrealizowane za pomocą prostej reguły formularza, na zmianę wartości „Current Order Value” oraz ładowanie formularza.

Rys. 13. Reguła biznesowa Color: Current Order Value

 

c) Ordering

Po tym jak użytkownik zbierający zamówienia zdecyduje się zamknąć etap zbierania zamówień, przechodząc kolejno ścieżkami „Final Call” i „Finish Collecting Orders”, znajdzie się w kroku Ordering.

Rys. 14. Fragment formularza na kroku „Ordering”

 

Jego zadaniem jest złożenie zamówienia (poza systemem WEBCON BPS) u dostawcy. Następnie powinien uzupełnić na formularzu informację o godzinie zamówienia i zakładanej godzinie dostawy oraz przejść do kolejnego kroku.

Warto zwrócić uwagę, że użytkownik nie traci możliwości oznaczenia, które zamówienia zostały opłacone.

d) Awaiting delivery

W kroku tym nie pojawiają się żadne nowe pola i mechaniki. Użytkownik zbierający zamówienia oczekuję na dostawę, a po jej nadejściu przechodzi do następnego kroku. Powoduje to wysłanie maila do użytkowników, którzy złożyli zamówienia.

e) Are all orders paid up?

Krok sterujący obiegiem zależny od opłacenia wszystkich zamówień. Jeżeli na liście pozycji wszystkie checkbox’y w kolumnie „Paid Up” zostały zaznaczone – instancja przechodzi do pozytywnego kroku końcowego „Finalized”. W przeciwnym wypadku do dodatkowego kroku „Delivered”.

Rys. 15. Kontrola przepływu w kroku „Are all orders paid up?”

 

f) Delivered

Krok, w którym użytkownik zbiera opłaty za posiłki od osób, które zamówiły, a do tej pory jeszcze nie uiściły opłaty . Następnie ma możliwość przejścia do pozytywnego kroku końcowego.

g) Finalized

Pozytywny krok końcowy bez możliwości dalszej edycji.

h) Canceled

Negatywny krok końcowy, w którym znajdują się anulowane zamówienia.

Warto dodać, że o wejściu do tego kroku poprzez powiadomienie mailowe informowani są następujący użytkownicy:

  • Wszyscy potencjalni zamawiający – jeżeli anulowano z kroku „Food Choices” lub „Final Call”
  • Tylko osoby, które złożyły zamówienie – jeżeli anulowano z kroku „Ordering” lub „Awaiting Delivery”

Procesy słownikowe

Aplikacja zawiera 3 procesy słownikowe. Pierwszym z nich jest „Places of Delivery”. Słownik można utworzyć zarówno z poziomu witryny głównej jak i dashboardu słownikowego.

Rys. 16. Przykładowa wartość w słowniku „Places of Delivery”

 

W celu jego zarejestrowania należy uzupełnić formularz i przejść ścieką „Save”.

Dostępne są następujące pola:

  • Name – wymagana nazwa miejsca dostawy
  • Description – opcjonalny dodatkowy opis
  • Recipitents – osoby, które otrzymają powiadomienie mailowe o utworzonej instancji „Lunchtime” i będą mogły dodać zamówienie do listy
  • Active – znacznik decydujący o tym, czy wartość słownikowa jest możliwa do wyboru

Drugi słownik to „Food Suppliers”. Przechowuje on informację o dostawcach, a wystartowanie nowej instancji przebiega analogicznie jak w wyżej opisanym słowniku.

Rys. 17. Przykładowa wartość w słowniku „Food Suppliers”

 

Dostępne są w nim następujące pola:

  • Name – wymagana nazwa dostawcy
  • Webpage – pole typu hiperłącze składające się z dwóch części – wyświetlanej nazw oraz adresu url.
  • Phone number – numer telefonu dostawcy
  • Address – adres dostawcy
  • Additional Information – dodatkowe informacje o dostawcy
  • Minimum Order Value – minimalna wartość zamówienia u danego dostawcy
  • Active – znacznik decydujący o tym, czy wartość słownikowa jest możliwa do wyboru
  • Menu Items – Tabela danych SQL pokazująca powiązane (na podstawie GUID) elementy w słowniku „Menu Items”

Oprócz zestawu przechowywanych wartości, słownik „Food Suppliers” zapewnia jedyną możliwość utworzenia nowej instancji w słowniku „Menu Items”. Odbywa się to za pomocą przycisku na górnej belce.

Pod względem technicznym jest to globalna akcja typu hiperłącze.

Rys. 18. Konfiguracja przycisku „Add menu item”

 

Jedynym przekazywanym parametrem jest GUID, który zostaje zapisany w polu technicznym.

Ry. 19. Konfiguracja hiperlinku do startowania elementu

 

Jak wspomniano na początku artykułu, taka konfiguracja umożliwia swobodny eksport kilkupoziomowych słowników pomiędzy różnymi środowiskami.

Ostatnim słownikiem jest „Menu Items”. Słownik zawiera elementy z menu konkretnego dostawcy, w związku z czym utworzenie nowego, jest możliwe tylko z jego poziomu.

Rys. 20. Przykładowa wartość w słowniku „Menu Items”

 

Dostępne są następujące pola:

  • Food Supplier – Wiersz SQL z nazwą i linkiem do słownika dostawcy. Jest wyświetlany na podstawie GUID.
  • Name – wymagana nazwa elementu
  • Description – Opcjonalny opis dodatkowy
  • Price – Wymagana wartość jednostkowa elementu
  • Active – znacznik decydujący o tym, czy wartość słownikowa jest możliwa do wyboru
  • T: Parent GUID – pole techniczne widoczne jedynie w trybie administracyjnym. Zawiera GUID powiązanego dostawcy.

Ostatnią rzeczą, którą należały omówić jest udostępnienie słowników jako źródeł danych. W momencie utworzenia procesu słownikowego automatycznie tworzone jest powiązane z nim źródło.

Rys. 21. Źródło typu Dictionaries

 

Linkowanie zapewniono poprzez utworzenie źródła typu „BPS internal view”.

Rys. 22. Konfiguracja wiersza danych „Food Supplier” w procesie „Menu Items”

 

Aby zagadnienie było kompletne potrzebna jest kolumna z GUID dostawcy. W konfiguracji procesu zastosowano kolumnę wyliczaną na źródle BPS. Została ona skonfigurowana w poniższy sposób:

Rys. 23. Konfiguracja kolumny wyliczanej z GUIDem dostawcy

 

Uprawnienia

Ostatnim elementem, który musi zostać uwzględniony są uprawnienia.

Ich rodzaje oraz przykłady konfiguracji zostały wielokrotnie opisane m.in. w poniższych artykułach:

Ponieważ każda firma posiada unikatowe grupy o różnych nazwach i zawartości, a także spółki w jej obrębie, nie da się wprost wskazać uniwersalnej konfiguracji. Warto natomiast skorzystać z poniższych wskazówek.

Rys. 24. Konfiguracja uprawnień na poziomie aplikacji

 

Warto nadać grupie zawierającej wszystkich pracowników uprawnienia „Read-only” na poziomie aplikacji, co pozwoli na bezproblemowy dostęp do Portalu.

Rys. 25. Konfiguracja uprawnień na poziomie procesu Lunchtime

 

W polu „Launch new workflow instances” na poziomie procesu „Lunchtime” powinna znaleźć się grupa, której członkowie będą zbierać zamówienia.

Rys. 26. Konfiguracja uprawnień na poziomie procesu słownikowego

 

Uprawnienia na poziomie procesów słownikowych (dla każdego z nich niezależnie) powinny być nieco bardziej zróżnicowane:

  • Access and edit all workflow – należy wskazać grupę, która może edytować miejsca dostawy, dostawców oraz pozycję w menu. Najczęściej będzie to grupa z osobami zbierającymi zamówienia.
  • Access all workflow intances and attachements – grupa posiadająca uprawnienia do odczytu dowolnej instancji słownikowej. Warto tutaj wskazać wszystkich pracowników.
  • Launch new workflow instances - grupa mogąca tworzyć nowe wartości w słownikach. Zwykle będzie to grupa z osobami zbierającymi zamówienia, analogicznie jak dla uprawnienia „Access and edit all workflow”

Podsumowanie

Jak widać na powyższym przykładzie aplikacje tworzone w WEBCON BPS mogą ułatwiać funkcjonowanie firmy na wiele sposobów. Nie muszą być związane tylko z działalnością stricte biznesową organizacji, taką jak procedowanie umów, obsługą korespondencji, czy rozliczaniem faktur. Świetnie sprawdzają się także do wspomagania procesów wewnętrznych organizacji, nawet w takich aspektach jak zamawianie posiłków dla pracowników, ale także osób, które przyjechały na szkolenie, wizytę biznesową, czy konferencję. W ramach WEBCON BPS można tworzyć przeróżne aplikacje, odpowiadające na potrzeby poszczególnych pracowników w firmie. Jedyne ograniczenie stanowi wyobraźnia.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *