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
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.
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”
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:
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:
Powyższą funkcję można śmiało wykorzystać w konfiguracji procesów, zastępując datę tagiem na datę z atrybutu formularza.
Podsumowanie
Poprawnie skonfigurowany kalendarz pozwala na zdefinowanie dni roboczych i dni wolnych w WEBPCON BPS Designer Studio. Kalendarz może być używany w Twoich innych aplikacjach i wspierać automatyzację procesów biznesowych. Na przykład, można ustawić, żeby dokumenty wysyłane w dzień wolny od pracy były kolejkowane do obsługi w najbliższy dzień roboczy.
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.