Megosztás a következőn keresztül:


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 (implementálva Flowchart) a szervezet több vezetőjétől kér engedélyt. 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. A feladat-közzététel a külső webhelyen egy meghatározott ideig (az időtúllépés lejáratáig) érhető el, vagy amíg a Contoso egyik alkalmazottja el nem tá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 a rendszer egy szolgáltatáshivatkozáson keresztül kapcsolódik a HiringRequest.csproj szolgáltatáshoz.)

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 a pozícióval és az időtúllépés időtartamával kapcsolatos információkat típusok. 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.

Project 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).
ResumeRequestService Egy munkafolyamat-szolgáltatás, amely a jelöltektől folytatja az időtúllépést, vagy valaki úgy dönt, hogy le 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.

Szolgáltatások ismertetése

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

Szolgáltatás Leírás Project
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 egyénit TrackingRecord bocsát ki (a használatával Track). 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 menti egy (használatávalHiringRequestRepository.Save) információit HiringRequest . 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-nyomkövetés az App.config fájlban van konfigurálva a HiringRequestService szolgáltatásban. HiringRequestService
Tevékenységek összetétele A folyamatdefiníció a Activity. 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> ezzel párhuzamosan regisztrálhat a vezérigazgató és a HR-vezetők Beérkezett üzenetek mappájába (két HR-vezető jóváhagyási lépésére vár).
- 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 lemondá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. ResumeRequestService
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). ResumeRequestService
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). ResumeRequestService
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ó részét képezik).

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. Lépjen a mintamappára.

  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ő, é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 nincsként.

  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. Lépjen vissza a megoldásban a InternalClient jobb gombbal az InternalClient elemre, és válassza a Nézet 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.

Forgatókönyvek

Felvételi kérelem

  1. Michael Alexander (szoftvermérnök) szeretne új pozíciót kérni a szoftvermérnök felvételéhez a test (SDET) a mérnöki részlegen, 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 feladat pozíciója arra vár, hogy közzétehesse azt egy külső webhelyen, ahol a felhasználók jelentkezhetnek (láthatja, hogy a Feladat feladása 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őtúllépés lehetővé teszi, hogy a feladat pozíciója 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 a Feladatkönyvelési lista 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 a megoldás összeállítása sikertelen, ellenőrizze a következőket:

    • A hivatkozás ContosoHR nem hiányzik a projektekből vagy CareersWebSite projektekbőlInternalClient.
  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ása

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

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