Felvételi folyamat

A HiringProcess minta bemutatja, hogyan implementálhat egy üzleti folyamatot üzenetkezelési tevékenységek és munkafolyamat-szolgáltatásként üzemeltetett két munkafolyamat használatával. Ezek a munkafolyamatok a Contoso, Inc. nevű fiktív vállalat informatikai infrastruktúrájának részei.

A HiringRequest munkafolyamat (amikor Flowchart-ként valósul meg) engedélyt kér a szervezet több vezetőjétől. E cél elérése érdekében a munkafolyamat a szervezet egyéb meglévő szolgáltatásait használja (esetünkben egy beérkezett üzeneteket használó szolgáltatást és egy egyszerű Windows Communication Foundation (WCF) szolgáltatásként megvalósított szervezeti adatszolgáltatást).

A ResumeRequest munkafolyamat (implementálva Sequence) közzétesz egy feladat-közzétételt a Contoso külső karrierwebhelyén, és kezeli az önéletrajzok beszerzését. Az álláshirdetés a külső webhelyen meghatározott ideig (az időtúllépés lejártáig) érhető el, vagy amíg egy Contoso alkalmazott úgy nem dönt, hogy eltávolítja.

Ez a minta a .NET-keretrendszer 4.6.1 következő funkcióit mutatja be:

  • Flowchart és Sequence munkafolyamatokat az üzleti folyamatok modellezéséhez.

  • Munkafolyamat-szolgáltatások.

  • Üzenetkezelési tevékenységek.

  • Tartalomalapú korreláció.

  • Egyéni tevékenységek (deklaratív és kódalapú).

  • Rendszer által biztosított SQL Server-adatmegőrzés.

  • Egyéni PersistenceParticipant.

  • Egyéni nyomon követés.

  • Eseménykövetés a Windows (ETW) nyomon követéséhez.

  • A tevékenységek összetétele.

  • Parallel Tevékenységek.

  • CancellationScope tevékenység.

  • Tartós időzítők (Delay tevékenység).

  • Tranzakciók.

  • Több munkafolyamat ugyanabban a megoldásban.

A folyamat leírása

A Contoso, Inc. minden részlegében szoros ellenőrzést szeretne a létszám felett. Ezért bármikor, amikor bármely alkalmazott új felvételi folyamatot szeretne kezdeni, át kell mennie egy felvételi kérelem folyamatának jóváhagyásán, mielőtt a toborzás ténylegesen megtörténhetne. Ezt a folyamatot nevezik felvételi folyamatkérésnek (a HiringRequestService projektben definiálva), és a következő lépésekből áll:

  1. Egy alkalmazott (a kérelmező) elindítja a felvételi folyamatot.

  2. A kérelmező kezelőjének jóvá kell hagynia a kérést:

    1. A felettes elutasíthatja a kérést.

    2. A felettes további információkért visszaküldheti a kérést a kérelmezőnek:

      1. A kérelmező áttekinti és visszaküldi a kérést a felettesnek.
    3. A felettes jóváhagyhatja.

  3. Miután a kérelmező felettese jóváhagyta a kérelmet, a részleg tulajdonosának jóvá kell hagynia a kérést:

    1. A részleg tulajdonosa elutasíthatja.

    2. A részleg tulajdonosa jóváhagyhatja.

  4. Miután a részleg tulajdonosa jóváhagyta, a folyamathoz 2 HR-vezető vagy a vezérigazgató jóváhagyása szükséges:

    1. A folyamat áttérhet az elfogadott vagy elutasított állapotra.

    2. Ha a folyamat elfogadásra kerül, a munkafolyamat új példánya ResumeRequest elindul (ResumeRequest egy szolgáltatáshivatkozáson keresztül kapcsolódik a HiringRequest.csproj projektfájlhoz.)

Miután a vezetők jóváhagyták egy új alkalmazott felvételét, a HR-nek meg kell találnia a megfelelő jelöltet. Ezt a folyamatot a második munkafolyamat (ResumeRequesta ResumeRequestService.csprojban definiálva) hajtja végre. Ez a munkafolyamat határozza meg azt a folyamatot, amely során karrierlehetőséggel rendelkező álláshirdetést küldhet a Contoso külső Karrierwebhelyére, önéletrajzokat fogad a jelentkezőktől, és figyeli az álláshirdetés állapotát. A pozíciók meghatározott ideig (egy idő lejáratáig) vagy addig érhetők el, amíg a Contoso alkalmazottja el nem távolítja azt. A ResumeRequest munkafolyamat a következő lépésekből áll:

  1. A Contoso alkalmazottja beírja a pozícióval kapcsolatos információkat és az időtúllépés időtartamát. Miután az alkalmazott beszúrta ezt az információt, a pozíció megjelenik a Karrierek webhelyen.

  2. Az információk közzététele után az érdekelt felek beküldhetik önéletrajzukat. Az önéletrajz elküldésekor a rendszer egy, a feladat megnyitásához csatolt rekordban tárolja.

  3. A pályázók önéletrajzokat küldhetnek az időkorlát lejártáig, vagy a Contoso HR-részlegének valaki kifejezetten úgy dönt, hogy a folyamat leállításával eltávolítja a bejegyzést.

A mintában szereplő projektek

Az alábbi táblázat a mintamegoldás projektjeit mutatja be.

Projekt Leírás
ContosoHR Adatszerződéseket, üzleti objektumokat és adattárosztályokat tartalmaz.
HiringRequestService A felvételi kérelem folyamatának definícióját tartalmazza.

Ez a projekt egy olyan konzolalkalmazásként van implementálva, amely szolgáltatásként üzemelteti a munkafolyamatot (xaml-fájlt).
FolytatásiKérésSzolgáltatás Egy munkafolyamat-szolgáltatás, amely gyűjti az önéletrajzokat a jelöltektől, amíg le nem jár az időkorlát vagy valaki úgy dönt, hogy meg kell állítani a folyamatot.

Ez a projekt deklaratív munkafolyamat-szolgáltatásként (xamlx) van implementálva.
OrgService Olyan szolgáltatás, amely szervezeti adatokat (alkalmazottak, pozíciók, pozíciótípusok és részlegek) tesz közzé. Ezt a szolgáltatást vállalati erőforrásterv (ERP) Vállalati szervezet moduljaként tekintheti.

Ez a projekt egy olyan konzolalkalmazásként van implementálva, amely egy Windows Communication Foundation (WCF) szolgáltatást tesz elérhetővé.
Beérkezett üzenetek szolgáltatás Az alkalmazottak számára végrehajtható feladatokat tartalmazó beérkezett üzenetek.

Ez a projekt egy olyan konzolalkalmazásként van implementálva, amely egy WCF-szolgáltatást tesz elérhetővé.
InternalClient Webalkalmazás a folyamattal való interakcióhoz. A felhasználók elindíthatják, részt vehetnek és megtekinthetik a HiringProcess-munkafolyamatokat. Ezzel az alkalmazással a ResumeRequest folyamatokat is elindíthatják és figyelhetik.

Ez a webhely a Contoso intranetén belülre van implementálva. Ez a projekt ASP.NET webhelyként van implementálva.
CareersWebSite Egy külső webhely, amely a Contoso nyitott pozícióit teszi elérhetővé. Bármely lehetséges jelölt navigálhat erre a webhelyre, és önéletrajzot küldhet be.

Funkció összefoglalása

Az alábbi táblázat bemutatja, hogyan használják az egyes funkciókat ebben a mintában.

Tulajdonság Leírás Projekt
Folyamatábra Az üzleti folyamat folyamatábraként jelenik meg. Ez a folyamatábra-leírás ugyanúgy jeleníti meg a folyamatot, ahogyan egy vállalkozás rajztáblára rajzolta volna. HiringRequestService
Munkafolyamat-szolgáltatások A folyamatdefinícióval rendelkező folyamatábra egy szolgáltatásban fut (ebben a példában a szolgáltatást egy konzolalkalmazás üzemelteti). HiringRequestService
Üzenetkezelési tevékenységek A folyamatábra kétféleképpen használ üzenetkezelési tevékenységeket:

- Információk lekérése a felhasználótól (a döntések és a kapcsolódó információk fogadása az egyes jóváhagyási lépésekben).
- Más meglévő szolgáltatásokkal (InboxService és OrgDataService, szolgáltatáshivatkozásokon keresztül) való kommunikáció.
HiringRequestService
Tartalomalapú korreláció A jóváhagyási üzenetek korrelálnak a felvételi kérelem azonosító tulajdonságával:

– Egy folyamat indításakor a korrelációs leíró inicializálódik a kérés azonosítójával.
- A bejövő jóváhagyási üzenetek korrelálnak az azonosítójukkal (az egyes jóváhagyási üzenetek első paramétere a kérés azonosítója).
HiringRequestService / ResumeRequestService
Egyéni tevékenységek (deklaratív és kódalapú) Ebben a mintában számos egyéni tevékenység található:

- SaveActionTracking: Ez a tevékenység egyéni TrackingRecord-t bocsát ki (Track használatával). Ezt a tevékenységet imperatív kódbővítéssel NativeActivityhozták létre.
- GetEmployeesByPositionTypes: Ez a tevékenység megkapja a pozíciótípus azonosítóinak listáját, és visszaadja azoknak a személyeknek a listáját, akik ilyen pozícióval rendelkeznek a Contoso-ban. Ez a tevékenység deklaratív módon lett hitelesítve (a tevékenységtervező használatával).
- SaveHiringRequestInfo: Ez a tevékenység elmenti a HiringRequest információit a HiringRequestRepository.Save használatával. Ezt a tevékenységet imperatív kódbővítéssel CodeActivityhozták létre.
HiringRequestService
Rendszer által biztosított SQL Server-adatmegőrzés A WorkflowServiceHost Folyamatábra folyamatdefiníciót futtató példány a rendszer által biztosított SQL Server-adatmegőrzés használatára van konfigurálva. HiringRequestService / ResumeRequestService
Egyéni nyomon követés A minta tartalmaz egy egyéni nyomon követési résztvevőt, amely menti a művelet előzményeit HiringRequestProcess (ez rögzíti, hogy milyen műveletet hajtottak végre, ki és mikor). A forráskód a HiringRequestService Nyomkövetés mappájában található. HiringRequestService
ETW-nyomkövetés A rendszer által biztosított ETW Tracking a HiringRequestService szolgáltatás App.config fájljában van konfigurálva. HiringRequestService
Tevékenységek összetétele A folyamatdefiníció a szabad összetételt használja a Activity vonatkozásában. A folyamatábra több sorozat- és párhuzamos tevékenységet tartalmaz, amelyek ugyanakkor más tevékenységeket (és így tovább) is tartalmaznak. HiringRequestService
Párhuzamos tevékenységek - ParallelForEach<T> használható a vezérigazgató és a HR-vezetők Beérkezett üzenetei között való regisztrációra, párhuzamosan várakozva két HR-vezető jóváhagyására.
- Parallel a befejezett és az elutasított lépésekben végzett egyes tisztítási feladatok végrehajtására szolgál
HiringRequestService
Modell lemondása A folyamatábra CancellationScope megszakítási viselkedést hoz létre (ebben az esetben némi tisztítást végez). HiringRequestService
Ügyfélmegőrzési résztvevő HiringRequestPersistenceParticipant Adatokat ment egy munkafolyamat-változóból a Contoso HR-adatbázisban tárolt táblába. HiringRequestService
Munkafolyamat-szolgáltatások ResumeRequestService munkafolyamat-szolgáltatások használatával implementálva. A munkafolyamat-definíciót és a szolgáltatásinformációkat a ResumeRequestService.xamlx tartalmazza. A szolgáltatás konfigurálva van az adatmegőrzés és a nyomon követés használatára. FolytatásiKérésSzolgáltatás
Tartós időzítők ResumeRequestService Tartós időzítőkkel határozza meg a feladat-feladás időtartamát (ha lejár az időkorlát, a feladat feladása lezárul). FolytatásiKérésSzolgáltatás
Tranzakciók TransactionScope az adatok konzisztenciájának biztosítására szolgál több tevékenység végrehajtása során (új önéletrajz érkezésekor). FolytatásiKérésSzolgáltatás
Tranzakciók Az egyéni adatmegőrzési résztvevő (HiringRequestPersistenceParticipant) és az egyéni nyomkövetési résztvevő (HistoryFileTrackingParticipant) ugyanazt a tranzakciót használja. HiringRequestService
WF használata ASP.NET alkalmazásokban. A munkafolyamatok két ASP.NET alkalmazásból érhetők el. InternalClient / CareersWebSite

Adattárolás

Az adatok tárolása egy SQL Server-adatbázisban ContosoHR történik( az adatbázis létrehozására szolgáló szkript a DbSetup mappában található). A munkafolyamat-példányokat egy SQL Server-adatbázisban tárolja a rendszer ( InstanceStore a példánytár létrehozásához használt szkriptek a .NET-keretrendszer 4.6.1-beli disztribúciójának részei).

Mindkét adatbázis úgy jön létre, hogy Setup.cmd szkriptet futtat egy Visual Studióhoz készült fejlesztői parancssorból.

A minta futtatása

Az adatbázisok létrehozása

  1. Nyisson meg egy Fejlesztői parancssort a Visual Studióhoz.

  2. Navigáljon a mintamappához.

  3. Futtassa a Setup.cmd.

  4. Ellenőrizze, hogy a két adatbázis ContosoHRInstanceStore létrejött-e az SQL Expressben.

A megoldás beállítása végrehajtáshoz

  1. Futtassa a Visual Studiót rendszergazdaként. Nyissa meg a HiringRequest.sln.

  2. Kattintson a jobb gombbal a megoldásra a Megoldáskezelőben , és válassza a Tulajdonságok lehetőséget.

  3. Válassza a Több indítási projekt lehetőséget, és állítsa a CareersWebSite, az InternalClient, a HiringRequestService és a ResumeRequestService beállítást indításra. Hagyja a ContosoHR, az InboxService és az OrgService szolgáltatást None értékre.

  4. A megoldás létrehozásához nyomja le a CTRL+SHIFT+B billentyűkombinációt. Ellenőrizze, hogy a build sikeres volt-e.

A megoldás futtatása

  1. A megoldás létrehozása után a CTRL+F5 billentyűkombinációt lenyomva hibakeresés nélkül futhat. Ellenőrizze, hogy minden szolgáltatás elindult-e.

  2. Kattintson a jobb gombbal az InternalClient elemre a megoldásban, majd válassza a Nézet böngészőben lehetőséget. Megjelenik az InternalClient alapértelmezett lap. Győződjön meg arról, hogy a szolgáltatások futnak, majd kattintson a hivatkozásra.

  3. Megjelenik a HiringRequest modul. Az itt ismertetett forgatókönyvet követheti.

  4. Ha a HiringRequest művelet befejeződött, elindíthatja a ResumeRequest. Az itt ismertetett forgatókönyvet követheti.

  5. ResumeRequest A közzététel után elérhető a nyilvános webhelyen (Contoso Careers webhely). A álláshirdetés megtekintéséhez (és a pozícióra való jelentkezéshez) lépjen a Karrierwebhelyre.

  6. Kattintson a jobb gombbal a CareersWebSite elemre a megoldásban, és válassza a Megtekintés böngészőben lehetőséget.

  7. Navigáljon vissza a InternalClient-hoz, ha jobb gombbal kattint az InternalClient elemre a megoldásban, és kiválasztja a Megtekintés böngészőben lehetőséget.

  8. Lépjen a JobPostings szakaszra a beérkezett üzenetek felső menüjében található Feladat feladások hivatkozásra kattintva. Az itt ismertetett forgatókönyvet követheti.

Lehetséges helyzetek

Felvételi kérelem

  1. Michael Alexander (szoftvermérnök) szeretne egy új pozíciót kérni a mérnöki osztály számára egy szoftvermérnök a teszteléshez (SDET) felvételéhez, aki legalább 3 éves tapasztalattal rendelkezik a C#-ban.

  2. A létrehozás után a kérés megjelenik Michael postaládájában (ha nem látja a kérést, kattintson a Frissítés gombra), és várja Peter Brehm jóváhagyását, aki Michael menedzsere.

  3. Peter Michael kérésére akar cselekedni. Úgy véli, hogy a pozíció 3 helyett 5 év C#-tapasztalatot igényel, ezért visszaküldi észrevételeit véleményezésre.

  4. Michael egy üzenetet lát a postaládájában a felettesétől, és cselekedni akar. Michael látja a pozíciókérés előzményeit, és egyetért Peterrel. Michael módosítja a leírást, hogy 5 év C# tapasztalatot igényeljen, és elfogadja a módosítást.

  5. Peter michael módosított kérelmére cselekszik, és elfogadja azt. A kérést most Tsvi Reiter műszaki igazgatónak kell jóváhagynia.

  6. Tsvi Reiter szeretné felgyorsítani a kérést, ezért megjegyzést fűz hozzá, hogy azt mondja, hogy a kérés sürgős, és elfogadja azt.

  7. A kérést most két HR-vezetőnek vagy a vezérigazgatónak kell jóváhagynia. A vezérigazgató, Brian Richard Goldstein, látja Tsvi sürgős kérését. A kérést elfogadja, így megkerüli a két HR-vezető jóváhagyását.

  8. A kérés el lesz távolítva Michael postaládájából, és megkezdődött az SDET felvételének folyamata.

Folytatási kérelem indítása

  1. Most a munkakör arra vár, hogy közzétegyék egy külső webhelyen, ahol az emberek jelentkezhetnek (láthatja, ha a Álláshirdetések hivatkozásra kattint). Jelenleg a munkakör egy HR-képviselővel van, aki a munkakör véglegesítéséért és közzétételéért felelős.

  2. A HR 60 perces időtúllépés beállításával (a szerkesztési hivatkozásra kattintva) szeretné szerkeszteni ezt a munkakört (a valós életben ez napok vagy hetek lehetnek). Az időkeret lehetővé teszi, hogy az állás a megadott időnek megfelelően levehető legyen a külső webhelyről.

  3. A szerkesztett feladatpozíció mentése után megjelenik a Fogadó önéletrajzok lapon (frissítse a weblapot az új feladatpozíció megtekintéséhez).

Önéletrajzok gyűjtése

  1. A feladatpozíciónak meg kell jelennie a külső webhelyen. Az állásra való jelentkezés iránt érdeklődő személyként jelentkezhet erre a pozícióra, és beküldheti önéletrajzát.

  2. Ha visszatér az Álláshirdetések listája szolgáltatáshoz, megtekintheti az eddig összegyűjtött önéletrajzokat.

  3. A HR az önéletrajzok gyűjtését is leállítja (például a megfelelő jelölt azonosítása után).

Hibaelhárítás

  1. Győződjön meg arról, hogy rendszergazdai jogosultságokkal futtatja a Visual Studiót.

  2. Ha sikertelen a megoldás felépítése, ellenőrizze a következőket:

    • A ContosoHR hivatkozás nem hiányzik a InternalClient vagy CareersWebSite projektekből.
  3. Ha a megoldás végrehajtása sikertelen, ellenőrizze a következőket:

    1. Minden szolgáltatás fut.

    2. A szolgáltatáshivatkozások frissülnek.

      1. A App_WebReferences mappa megnyitása

      2. Kattintson a jobb gombbal a Contoso elemre , és válassza a Web-/Szolgáltatáshivatkozások frissítése lehetőséget.

      3. A megoldás újraépítéséhez nyomja le a CTRL+SHIFT+B billentyűkombinációt a Visual Studióban.

Eltávolítás

  1. Törölje az SQL Server-példánytárolót a DbSetup mappában található Cleanup.batfuttatásával.

  2. Törölje a merevlemez forráskódját.