Jednym z istotnych obszarów administracji Project Server 2007 są kolejki zadań. Zrozumienie kolejkowania w Project Server 2007 ułatwia analizę, konfigurację oraz troubleshooting i jest niezbędne każdemu administratorowi. Umiejętność konfiguracji tego obszaru usprawnia kontrolę nad kluczową część Project Server 2007.
Administracja Project Server 2007 to kontrola i monitorowanie wielu obszarów całego systemu. Jednym z istotnych elementów jest kolejka zadań.
Kolejką nazywamy strukturę, w której zdarzenia oczekują na przetworzenie, w sytuacji gdy system nie może przyjąć wszystkich zleconych zadań. Przykładem użycia kolejki może być aktualizacja timesheetów przez 20-osobowy zespół projektowy w jednym, krótkim okresie, na przykład na koniec tygodnia. System kolejkowania Project Server 2007 zbiera wszystkie żądania i przetwarza je asynchronicznie w trybie FIFO (First In First Out). Takie rozwiązanie zwiększa stabilność, eliminując niekontrolowane blokady podczas przetwarzania zdarzeń.
Zrozumienie kolejkowania w Project Server 2007 ułatwia analizę, konfigurację oraz troubleshooting i jest niezbędne każdemu administratorowi.
Słowniczek
Artykuł stanie się bardziej czytelny, jeżeli na początku zdefiniujemy hasła, które będą w nim często używane.
Zadanie to pakiet czynności do wykonania po przeprowadzeniu (przez system lub użytkownika) akcji. Każde zadanie ma nadane ID.
Pakietem w zadaniu nazywamy wszystkie elementy, które muszą zostać wykonane dla danej akcji, na przykład zapis projektu powoduje zapis danych w wielu tabelach w bazie danych Draft.
Grupa korelacji to zestaw zadań dobranych przez Project Server na podstawie jego wewnętrznych zasad. Zadania w grupie zawsze są wykonywane razem i w określonym porządku.

Kolejki dla projektu i timesheetów
System kolejkowania Project Server 2007 składa się z dwóch kolejek:
- kolejka projektów - tabele i procedury składowane są w bazie Draft. Ta kolejka obsługuje zadania takie jak publikacja lub zapis projektu;
- kolejka timesheetów - tabele i procedury składowane są w bazie Published. Ta kolejka obsługuje zadania takie jak publikacja i zapis timesheetów.
Obie kolejki zaprojektowano tak samo. Różnica jest jedynie w bazie danych. Zaleta rozwiązania to wyższa wydajność oraz elastyczność konfiguracji.
Zarządzanie Kolejkami
Aby parametryzować kolejki Project Server 2007, należy udać się do Project Web Access>Server Settings>Queue>Queue Settings.

W panelu konfiguracyjnym kolejki mamy następujące parametry:
- Queue Type - pozwala na wybór typu kolejki (Projekt lub Timesheet);
- Maximum Number of Job Processor Threads - maksymalna przypadająca na zadanie liczba wątków, które mogą być jednocześnie wykonywane. Zakres liczby wątków: od 1 do 20, przy czym wartość domyślna wynosi 4;
- Polling Interval - interwał pobierania nowych zadań z bazy danych. Zakres czasu w milisekundach: od 500 do 300 000, wartość domyślna: 1000;
- Retry Interval - odstęp między próbami ponownego wykonania zadania, w przypadku gdy wystąpił błąd bazy danych. Zakres czasu w milisekundach: od 0 do 300 000, wartość domyślna: 1000. Wartość 0 oznacza natychmiastową próbę ponownego wykonania zadania;
- Retry Limit - parametr ściśle związany z Retry Interval, definiujący liczbę prób ponownego wykonania zadania. Zakres liczby ponowień: od 0 do 100, wartość domyślna: 5. Wartość 0 oznacza brak prób ponowienia;
- SQL Retry Interval - kolejka pobiera w regularnych odstępach zadania, które muszą zostać wykonane. Jeżeli zapytanie nie zostanie wykonane z powodu błędu, kolejka zapyta bazę danych o zadania w zdefiniowanych odstępach czasu. Zakres czasu w milisekundach: od 0 do 60 000, wartość domyślna: 1000;
- SQL Retry Limit - parametr ściśle związany z SQL Retry Interval, definiujący liczbę prób ponownego przesłania zapytania do bazy danych. Zakres liczby ponowień: od 0 do 100, wartość domyślna: 5. Wartość 0 oznacza brak prób ponowienia.
- SQL Timeout - parametr definiujący czas, po którym zapytanie do bazy danych zostanie uznane za przedawnione. Zakres sekund: od 30 do 86 400, wartość domyślna: 1800.
- Cleanup Interval - parametr definiujący częstotliwość czyszczenia kolejki. Zakres czasu w godzinach: od 1 do 100 000, wartość domyślna: 24.
- Cleanup Interval Offset - parametr definiujący godzinę, kiedy kolejka zostanie wyczyszczona. Zakres czasu w minutach: od 0 do 1439, wartość domyślna: 0. Wartość 0 oznacza północ.
- Cleanup Age Limit for Successful Jobs - parametr definiujący okres, po którym poprawnie zakończone zadanie może zostać usunięte. Zakres czasu w godzinach: od 1 do 100 000, wartość domyślna: 24.
- Cleanup Age Limit for Non-Successful Jobs - parametr definiujący okres, po którym niepoprawnie zakończone zadanie może zostać usunięte. Zakres czasu w godzinach: od 1 do 100 000, wartość domyślna: 168.
- Bookkeeping Interval - parametr definiujący interwał uruchamiania zadań administracyjnych przez Project Server 2007. Takie zadania to na przykład wyczyszczenie kolejki. Zakres czasu w milisekundach: od 500 do 300 000, wartość domyślna: 10 000.
- Queue Timeout - parametr definiujący czas, po którym kolejka uznawana jest za nieaktualną. System nie zarejestrował żadnej akcji w kolejce na bazie danych. Zakres czasu w minutach: od 2 do 20, wartość domyślna: 3;
- Fast Polling - parametr, który - jeżeli jest włączony - staje się nadrzędny nad parametrem Polling Intreval. Włączony Fast Polling oznacza, że wszystkie zadania w stanie Waiting to be Processed zostaną obsłużone jak najszybciej. Serwer nie będzie czekał na następną próbę pobrania zadań z bazy zadań, tylko wykona te, które są już w kolejce. Gdy parametr jest wyłączony, serwer wykona zadania, jeżeli ma wolne wątki.
Stany kolejkowania
Wszystkie zadania w kolejce muszą przejść kolejne stany przetwarzania. Znajomość znaczenia każdego stanu jest niezbędna do poprawnego troubleshootingu. Wiedza o tym:
- jakie zadania mogą być raz jeszcze przetworzone w przypadku błędu,
- podstawowe przyczyny wystąpienia stanu zadania
pomoże każdemu administratorowi.
Aby zobaczyć dostępne stany zadania, można przejść do Server Settings>Queue>Manage Queue.

Tabela opisuje szczegółowo każdy stan zadania w kolejce.

Grafika poniżej ilustruje macierz stanów zadania w kolejce.

Screencast - przejścia stanów kolejki
Aby zwizualizować przejścia stanów kolejki, zamieszczam krótki screencast pokazujący, jak zadania mogą przemieszczać się pomiędzy stanami.

Podsumowanie
Zrozumienie działania systemu kolejkowania w Project Server 2007 ułatwi życie każdemu administratorowi. Rozpoznawanie stanów, zapamiętanie kolejności działań oraz wiedza na temat architektury grup korelacji umożliwiają kontrolowanie całego systemu. Dzięki temu można w pełni korzystać z niezawodnego systemu wspomagającego zarządzanie projektami.
Kolejkowanie - test
Tych, którzy lubią wyzwania, zapraszam na krótki kursu e-learning z testem (pod IE7 - szczegółowe wymagania tu).
Autor:
Michał Bojko
Pracuje w międzynarodowej firmie zajmującej się produkcją i wdrażaniem systemów Sharepoint.