Kalendarz dni roboczych w WEBCON BPS

Facebooktwitterpinterestlinkedinmail
dotyczy wersji 8.3.1.x; autor: Kamil Nędza

Kalendarz dni roboczych pozwala na wybrany rok stworzyć kalendarz zawierający dokładne zestawienie roboczych dni – poprzez zdefiniowanie dni wolnych od pracy.

Poprawnie skonfigurowany kalendarz może zostać zastosowany do rozwinięcia możliwości Web Part SWE (Show Workflow Elements) oraz akcji typu Timeout które będą mogły brać pod uwagę tylko dni robocze do obliczeń.

Konfiguracja kalendarza:

Aby skonfigurować kalendarz dni roboczych należy przejść do sekcji „Konfiguracja systemu” i z drzewa wybrać „Kalendarz dni roboczych”.

Następnie:

  • Dodaj rok
  • Dodaj wolne dni tygodnia
  • Zdefiniuj pozostałe dni wolne w roku
  • Zapisz

robocze_p1

 

Przykład wykorzystania 1 – Timeout:

Aby skorzystać z kalendarza w akcjach wykonywanych na Timeout należy zaznaczyć opcję „Ignoruj dni wolne”. Istnieje możliwość ignorowania wyłącznie weekendów lub wszystkich dni zdefiniowanych jako dni wolne.

robocze_p2

Przykład wykorzystania 2 – Zestawienie SWE:

W momencie jeżeli kalendarz jest poprawnie skonfigurowany, w konfiguracji Web Part SWE mamy możliwość do zestawienia dodać informację na temat tego, ile dni roboczych dokument przebywa w danym kroku. Aby to zrobić wystarczy wejść w konfigurację Web Parta i w sekcji „Prezentacja danych i wyszukiwanie” zaznaczyć „[Systemowe] Dni robocze w kroku”

robocze_p3

Przykład wykorzystania 3 – Utworzenie własnej funkcji SQL:

Za każdy dodany w „Kalendarzu dni roboczych” rok, na bazie kontentu BPS w tabeli Calendars tworzone są wpisy dla każdego dnia dodanego roku:

robocze_p4

Na podstawie tej tabeli możemy w bazie danych utworzyć prostą funkcję która na jako parametry przyjmie jakąś datę (najlepiej w formie tekstowej, aby mogła obsługiwać tagi BPS) oraz jakąś liczbę dni roboczych – natomiast zwróci datę dnia roboczego który nastąpi o podaną liczbę dni roboczych po podanej dacie:

create function CALENDAR_ReturnWorkDay (@Date varchar(11), @NumberOfDays int)
RETURNS datetime AS
BEGIN
DECLARE @result datetime

set @result = (select top 1 CAL_WorkingDate from (select top (@NumberOfDays) 
CAL_WorkingDate from Calendars where CAL_IsWorkingDay = 1 and CONVERT(date, 
CAL_WorkingDate, 121) > (convert(date, @date, 121)) order by CAL_WorkingDate ) as 
WorkingDays order by CAL_WorkingDate desc)

return @result
END

Należy zwrócić uwagę, że powyższa funkcja nie zwróci nic, jeżeli liczba dni wyniesie 0. Wywołanie funkcji wygląda następująco:

robocze_p5

Powyższą funkcję można śmiało wykorzystać w konfiguracji procesów, zastępując datę tagiem na datę z atrybutu formularza.

 

 

One thought to “Kalendarz dni roboczych w WEBCON BPS”

  1. Dzień dobry,
    Na SharePoint prezentowana jest informacja o tym ile element przebywa w danym kroku na procesie. Jaka jest możliwość wyciągnięcia takiej informacji do atrybutu w BPS, aby użyć jej jako kolumna do maila masowego?

    Aktualnie mam takie rozwiązanie:
    Globalna akcja cykliczna (startowa) codziennie wykonuje zapytanie:
    UPDATE WFElements
    SET WFD_AttInt1 = DATEDIFF(dd, WFD_EnterToCurrentStepDate, getdate())
    FROM WFElements
    WHERE WFD_DTYPEID = 44

    Czy jest jakieś inne, bezpieczniejsze niż taki update na bazie rozwiązanie? Wartość domyślna na atrybucie ‚Dni w kroku’ z wykorzystaniem DATEDIFF raz mi zapisuje wartość do bazy i w mailu masowym nie jest prezentowana faktyczna ilość tych dni.

Dodaj komentarz

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