Proces zatrudniania
W przykładzie HiringProcess pokazano, jak zaimplementować proces biznesowy przy użyciu działań obsługi komunikatów i dwóch przepływów pracy hostowanych jako usługi przepływu pracy. Te przepływy pracy są częścią infrastruktury IT fikcyjnej firmy o nazwie Contoso, Inc.
Proces HiringRequest
przepływu pracy (zaimplementowany jako Flowchart) prosi o autoryzację od kilku menedżerów w organizacji. Aby osiągnąć ten cel, przepływ pracy używa innych istniejących usług w organizacji (w naszym przypadku usługa skrzynki odbiorczej i usługa danych organizacji zaimplementowana jako zwykłe usługi Windows Communication Foundation (WCF).
Przepływ ResumeRequest
pracy (zaimplementowany jako Sequence) publikuje delegowanie zadań w zewnętrznej witrynie internetowej firmy Contoso i zarządza pozyskiwaniem życiorysów. Publikowanie zadań jest dostępne w zewnętrznej witrynie sieci Web przez określony czas (do czasu wygaśnięcia limitu czasu) lub do momentu, gdy pracownik firmy Contoso zdecyduje się go usunąć.
W tym przykładzie przedstawiono następujące funkcje programu .NET Framework 4.6.1:
Flowchart i Sequence przepływy pracy do modelowania procesów biznesowych.
Usługi przepływu pracy.
Działania związane z obsługą komunikatów.
Korelacja oparta na zawartości.
Działania niestandardowe (deklaratywne i oparte na kodzie).
Trwałość serwera SQL zapewniana przez system.
Niestandardowy PersistenceParticipant.
Śledzenie niestandardowe.
Śledzenie zdarzeń dla śledzenia systemu Windows (ETW).
Kompozycja działań.
Parallel Działania.
CancellationScope Działania.
Trwałe czasomierze (Delay działanie).
Transakcji.
Więcej niż jeden przepływ pracy w tym samym rozwiązaniu.
Opis procesu
Firma Contoso, Inc. chce mieć ścisłą kontrolę nad zatrudnieniem w każdym z jego działów. W związku z tym za każdym razem, gdy każdy pracownik chce rozpocząć nowy proces zatrudniania, musi przejść przez zatwierdzenie procesu wniosku o zatrudnienie, zanim faktycznie może się zdarzyć rekrutacja. Ten proces jest nazywany żądaniem procesu zatrudniania (zdefiniowanym w projekcie HiringRequestService) i składa się z następujących kroków:
Pracownik (osoba żądający) rozpoczyna wniosek o proces zatrudniania.
Menedżer osoby żądającej musi zatwierdzić żądanie:
Menedżer może odrzucić żądanie.
Menedżer może zwrócić żądanie do żądającego w celu uzyskania dodatkowych informacji:
- Żądający przegląda i wysyła żądanie z powrotem do menedżera.
Menedżer może zatwierdzić.
Po zatwierdzeniu przez menedżera osoby żądającej właściciel działu musi zatwierdzić żądanie:
Właściciel działu może odrzucić.
Właściciel działu może zatwierdzić.
Po zatwierdzeniu przez właściciela działu proces wymaga zatwierdzenia przez 2 menedżerów kadr lub dyrektora generalnego:
Proces może przejść do stanu zaakceptowanego lub odrzuconego.
Jeśli proces zostanie zaakceptowany, zostanie uruchomione nowe wystąpienie
ResumeRequest
przepływu pracy (ResumeRequest
jest połączone z plikiem HiringRequest.csproj za pośrednictwem odwołania do usługi).
Gdy menedżerowie zatwierdzą zatrudnienie nowego pracownika, dział kadr musi znaleźć odpowiedniego kandydata. Ten proces jest wykonywany przez drugi przepływ pracy (ResumeRequest
zdefiniowany w pliku ResumeRequestService.csproj). Ten przepływ pracy definiuje proces przesyłania delegowania pracy z możliwością kariery do zewnętrznej witryny sieci Web kariery firmy Contoso, odbiera życiorysy od wnioskodawców i monitoruje stan delegowania pracy. Stanowiska są dostępne dla stałego okresu (do czasu wygaśnięcia) lub do momentu, gdy pracownik firmy Contoso zdecyduje się go usunąć. Przepływ ResumeRequest
pracy składa się z następujących kroków:
Pracownik firmy Contoso wpisze informacje o stanowisku i czasie trwania limitu czasu. Gdy pracownik wpisze te informacje, stanowisko zostanie opublikowane w witrynie sieci Web Kariery.
Po opublikowaniu informacji zainteresowane strony mogą przesłać swoje życiorysy. Po przesłaniu życiorysu jest on przechowywany w rekordzie połączonym z otwarciem zadania.
Wnioskodawcy mogą przesyłać życiorysy do czasu wygaśnięcia limitu czasu lub ktoś z działu contoso HR jawnie decyduje się usunąć delegowanie, zatrzymując proces.
Projekty w przykładzie
W poniższej tabeli przedstawiono projekty w przykładowym rozwiązaniu.
Projekt | opis |
---|---|
ContosoHR | Zawiera kontrakty danych, obiekty biznesowe i klasy repozytorium. |
ZatrudnianieRequestService | Zawiera definicję przepływu pracy Procesu zatrudniania żądań. Ten projekt jest implementowany jako aplikacja konsolowa, która samodzielnie hostuje przepływ pracy (plik xaml) jako usługę. |
ResumeRequestService | Usługa przepływu pracy, która zbiera życiorysy od kandydatów do momentu wygaśnięcia limitu czasu lub ktoś zdecyduje, że proces musi zostać zatrzymany. Ten projekt jest implementowany jako deklaratywna usługa przepływu pracy (xamlx). |
Usługa organizacji | Usługa, która uwidacznia informacje organizacyjne (pracownicy, stanowiska, typy stanowisk i działy). Tę usługę można traktować jako moduł Organizacja firmy planu zasobów przedsiębiorstwa (ERP). Ten projekt jest implementowany jako aplikacja konsolowa, która uwidacznia usługę Windows Communication Foundation (WCF). |
Usługa skrzynki odbiorczej | Skrzynka odbiorcza zawierająca zadania umożliwiające podejmowanie działań dla pracowników. Ten projekt jest implementowany jako aplikacja konsolowa, która uwidacznia usługę WCF. |
InternalClient | Aplikacja internetowa do interakcji z procesem. Użytkownicy mogą uruchamiać, uczestniczyć i wyświetlać swoje przepływy pracy HiringProcess. Za pomocą tej aplikacji mogą również uruchamiać i monitorować procesy ResumeRequest. Ta witryna jest implementowana jako wewnętrzna w intranecie firmy Contoso. Ten projekt jest implementowany jako witryna sieci Web ASP.NET. |
KarieraWebSite | Zewnętrzna witryna sieci Web, która uwidacznia otwarte pozycje w firmie Contoso. Każdy potencjalny kandydat może przejść do tej witryny i przesłać życiorys. |
Podsumowanie funkcji
W poniższej tabeli opisano sposób użycia każdej funkcji w tym przykładzie.
Funkcja | opis | Project |
---|---|---|
Schemat blokowy | Proces biznesowy jest reprezentowany jako schemat blokowy . Ten opis schematu blokowego reprezentuje proces w taki sam sposób, w jaki firma narysowała ją w tablicy. | ZatrudnianieRequestService |
Usługi przepływu pracy | Schemat blokowy z definicją procesu jest hostowany w usłudze (w tym przykładzie usługa jest hostowana w aplikacji konsolowej). | ZatrudnianieRequestService |
Działania związane z obsługą komunikatów | Schemat blokowy używa działań obsługi komunikatów na dwa sposoby: — Aby uzyskać informacje od użytkownika (aby otrzymywać decyzje i powiązane informacje w każdym kroku zatwierdzania). - Aby wchodzić w interakcje z innymi istniejącymi usługami (InboxService i OrgDataService, używane za pośrednictwem odwołań do usług). |
ZatrudnianieRequestService |
Korelacja oparta na zawartości | Komunikaty zatwierdzenia są skorelowane z właściwością ID żądania zatrudniania: — Po uruchomieniu procesu dojście korelacji jest inicjowane przy użyciu identyfikatora żądania. — Przychodzące komunikaty zatwierdzenia są skorelowane z ich identyfikatorem (pierwszy parametr każdego komunikatu zatwierdzenia jest identyfikatorem żądania). |
HiringRequestService / ResumeRequestService |
Działania niestandardowe (deklaratywne i oparte na kodzie) | W tym przykładzie istnieje kilka działań niestandardowych: - SaveActionTracking : to działanie emituje niestandardowe TrackingRecord (przy użyciu polecenia Track). To działanie zostało utworzone przy użyciu kodu imperatywnego rozszerzającego NativeActivity.- GetEmployeesByPositionTypes : To działanie odbiera listę identyfikatorów typu pozycji i zwraca listę osób, które mają to stanowisko w firmie Contoso. To działanie zostało autoryzowane deklaratywnie (przy użyciu projektanta działań).- SaveHiringRequestInfo : to działanie zapisuje informacje o HiringRequest obiekcie (przy użyciu polecenia HiringRequestRepository.Save ). To działanie zostało utworzone przy użyciu kodu imperatywnego rozszerzającego CodeActivity. |
ZatrudnianieRequestService |
Zapewniana przez system trwałość programu SQL Server | Wystąpienie WorkflowServiceHost hostujące definicję procesu schematu blokowego jest skonfigurowane do korzystania z trwałości programu SQL Server dostarczonego przez system. | HiringRequestService / ResumeRequestService |
Niestandardowe śledzenie | Przykład zawiera niestandardowego uczestnika śledzenia, który zapisuje historię elementu HiringRequestProcess (rejestruje, jaką akcję wykonano, przez kogo i kiedy). Kod źródłowy znajduje się w folderze Tracking w obszarze HiringRequestService. |
ZatrudnianieRequestService |
Śledzenie ETW | Śledzenie ETW dostarczone przez system jest skonfigurowane w pliku App.config w usłudze HiringRequestService. | ZatrudnianieRequestService |
Kompozycja działań | Definicja procesu używa wolnego składu Activityelementu . Schemat blokowy zawiera kilka działań sekwencyjnych i równoległych, które jednocześnie zawierają inne działania (itd.). | ZatrudnianieRequestService |
Działania równoległe | - ParallelForEach<T> służy do rejestrowania się w skrzynce odbiorczej dyrektorów generalnych i menedżerów KADR równolegle (oczekiwanie na krok zatwierdzenia dwóch menedżerów kadr). - Parallel Służy do wykonywania niektórych zadań oczyszczania w krokach Ukończone i Odrzucone |
ZatrudnianieRequestService |
Anulowanie modelu | Schemat blokowy używa CancellationScope metody do tworzenia zachowania anulowania (w tym przypadku wykonuje czyszczenie). | ZatrudnianieRequestService |
Uczestnik trwałości klienta | HiringRequestPersistenceParticipant Zapisuje dane ze zmiennej przepływu pracy do tabeli przechowywanej w bazie danych Contoso HR. |
ZatrudnianieRequestService |
Usługi przepływu pracy | ResumeRequestService jest implementowany przy użyciu usług przepływu pracy. Informacje o definicji przepływu pracy i usłudze znajdują się w pliku ResumeRequestService.xamlx. Usługa jest skonfigurowana do używania trwałości i śledzenia. |
ResumeRequestService |
Trwałe czasomierze | ResumeRequestService używa trwałych czasomierzy do zdefiniowania czasu trwania delegowania zadań (po wygaśnięciu limitu czasu delegowanie zadania jest zamykane). |
ResumeRequestService |
Transakcje | TransactionScope służy do zapewnienia spójności danych w ramach wykonywania kilku działań (po odebraniu nowego wznawiania). | ResumeRequestService |
Transakcje | Niestandardowy uczestnik trwałości () i uczestnik śledzenia niestandardowego (HiringRequestPersistenceParticipant HistoryFileTrackingParticipant ) używają tej samej transakcji. |
ZatrudnianieRequestService |
Korzystanie z platformy WF w aplikacjach ASP.NET. | Przepływy pracy są dostępne z dwóch aplikacji ASP.NET. | InternalClient/CareersWebSite |
Magazyn danych
Dane są przechowywane w bazie danych programu SQL Server o nazwie ContosoHR
(skrypt tworzenia tej bazy danych znajduje się w folderze DbSetup
). Wystąpienia przepływu pracy są przechowywane w bazie danych programu SQL Server o nazwie InstanceStore
(skrypty tworzenia magazynu wystąpień są częścią dystrybucji programu .NET Framework 4.6.1).
Obie bazy danych są tworzone przez uruchomienie skryptu Setup.cmd z poziomu wiersza polecenia dewelopera dla programu Visual Studio.
Uruchamianie przykładowej aplikacji
Aby utworzyć bazy danych
Otwórz wiersz polecenia dla deweloperów dla programu Visual Studio.
Przejdź do folderu przykładów.
Uruchom Setup.cmd.
Sprawdź, czy dwie bazy danych
ContosoHR
iInstanceStore
zostały utworzone w programie SQL Express.
Aby skonfigurować rozwiązanie do wykonania
Uruchom program Visual Studio jako administrator. Otwórz HiringRequest.sln.
Kliknij rozwiązanie prawym przyciskiem myszy w Eksplorator rozwiązań i wybierz pozycję Właściwości.
Wybierz opcję Wiele projektów startowych i ustaw parametr CareersWebSite, InternalClient, HiringRequestService i ResumeRequestService na Start. Pozostaw wartości ContosoHR, InboxService i OrgService jako Brak.
Skompiluj rozwiązanie, naciskając klawisze CTRL+SHIFT+B. Sprawdź, czy kompilacja zakończyła się pomyślnie.
Aby uruchomić rozwiązanie
Po skompilowaniu rozwiązania naciśnij klawisze CTRL+F5, aby uruchomić bez debugowania. Sprawdź, czy wszystkie usługi zostały uruchomione.
Kliknij prawym przyciskiem myszy element InternalClient w rozwiązaniu, a następnie wybierz pozycję Widok w przeglądarce. Zostanie wyświetlona domyślna strona.
InternalClient
Upewnij się, że usługi są uruchomione, a następnie kliknij link.Zostanie wyświetlony moduł HiringRequest . Możesz postępować zgodnie ze scenariuszem opisanym tutaj.
Po zakończeniu
HiringRequest
możesz uruchomić elementResumeRequest
. Możesz postępować zgodnie ze scenariuszem opisanym tutaj.Po opublikowaniu
ResumeRequest
pliku jest ona dostępna w publicznej witrynie sieci Web (witryna sieci Web Contoso Careers). Aby wyświetlić delegowanie pracy (i ubiegać się o stanowisko), przejdź do witryny sieci Web Kariery.Kliknij prawym przyciskiem myszy pozycję CareersWebSite w rozwiązaniu i wybierz pozycję Wyświetl w przeglądarce.
Wróć do elementu
InternalClient
, klikając prawym przyciskiem myszy element InternalClient w rozwiązaniu i wybierając pozycję Widok w przeglądarce.Przejdź do sekcji JobPostings (ZadaniaPostings), klikając link Job Postings (Delegowanie zadań) w górnym menu skrzynki odbiorczej. Możesz postępować zgodnie ze scenariuszem opisanym tutaj.
Scenariusze
Wniosek o zatrudnienie
Michael Alexander (inżynier oprogramowania) chce poprosić o nowe stanowisko w zakresie zatrudniania inżyniera oprogramowania w teście (SDET) w dziale inżynierii, który ma co najmniej 3 lata doświadczenia w języku C#.
Po utworzeniu żądanie pojawia się w skrzynce odbiorczej Michaela (kliknij przycisk Odśwież , jeśli nie widzisz żądania) oczekując na zatwierdzenie Petera Brehma, który jest menedżerem Michaela.
Peter chce działać na prośbę Michaela. Uważa, że pozycja wymaga 5 lat doświadczenia c# zamiast 3, więc wysyła swoje komentarze z powrotem do przeglądu.
Michael widzi wiadomość w skrzynce odbiorczej od swojego menedżera i chce działać. Michael widzi historię wniosku o stanowisko i zgadza się z Peterem. Michael modyfikuje opis, aby wymagać 5 lat doświadczenia w języku C# i akceptuje modyfikację.
Peter działa na zmodyfikowany wniosek Michaela i akceptuje go. Żądanie musi teraz zostać zatwierdzone przez dyrektora ds. inżynierii, Tsvi Reiter.
Tsvi Reiter chce przyspieszyć wniosek, więc stawia w komentarzu, aby powiedzieć, że wniosek jest pilny i akceptuje go.
Wniosek musi teraz zostać zatwierdzony przez dwóch menedżerów KADR lub dyrektora generalnego. Dyrektor generalny, Brian Richard Goldstein, widzi pilne żądanie Tsvi. Działa na wniosek, akceptując go, przekazując w ten sposób zatwierdzenie przez dwóch menedżerów KADR.
Wniosek jest usuwany ze skrzynki odbiorczej Michaela i rozpoczął się proces zatrudniania SDET.
Rozpocznij żądanie wznawiania
Teraz pozycja zadania czeka na opublikowanie w zewnętrznej witrynie sieci Web, w której można zastosować osoby (możesz ją zobaczyć, klikając link Delegowanie zadań). Obecnie stanowisko pracuje z przedstawicielem działu kadr, który jest odpowiedzialny za finalizowanie stanowiska pracy i delegowanie go.
Dział kadr chce edytować to stanowisko (klikając link Edytuj), ustawiając limit czasu 60 minut (w rzeczywistym życiu może to być dni lub tygodnie). Limit czasu umożliwia odciążenie pozycji zadania z zewnętrznej witryny sieci Web zgodnie z określonym czasem.
Po zapisaniu edytowanego stanowiska zadania zostanie wyświetlona na karcie Życiorysy odbierania (odśwież stronę sieci Web, aby wyświetlić nowe stanowisko zadania).
Zbieranie życiorysów
Pozycja zadania powinna być wyświetlana w zewnętrznej witrynie sieci Web. Jako osoba zainteresowana ubieganiem się o pracę możesz ubiegać się o to stanowisko i przesłać swoje życiorysy.
Jeśli wrócisz do usługi Listy postów zadań, możesz "wyświetlić życiorysy", które zostały zebrane do tej pory.
Dział kadr może również przestać zbierać życiorysy (na przykład po zidentyfikowaniu odpowiedniego kandydata).
Rozwiązywanie problemów
Upewnij się, że używasz programu Visual Studio z uprawnieniami administratora.
Jeśli kompilacja rozwiązania nie powiedzie się, sprawdź następujące kwestie:
- Odwołanie do
ContosoHR
elementu nie brakuje w projektachInternalClient
lubCareersWebSite
.
- Odwołanie do
Jeśli wykonanie rozwiązania nie powiedzie się, sprawdź następujące kwestie:
Wszystkie usługi są uruchomione.
Odwołania do usługi są aktualizowane.
Otwórz folder App_WebReferences
Kliknij prawym przyciskiem myszy pozycję Contoso i wybierz polecenie Aktualizuj odwołania do sieci Web/usługi.
Skompiluj rozwiązanie, naciskając klawisze CTRL+SHIFT+B w programie Visual Studio.
Odinstalowywanie
Usuń magazyn wystąpień programu SQL Server, uruchamiając Cleanup.bat znajdującą się w folderze DbSetup.
Usuń kod źródłowy na dysku twardym.