Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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:
Egy alkalmazott (a kérelmező) elindítja a felvételi folyamatot.
A kérelmező kezelőjének jóvá kell hagynia a kérést:
A felettes elutasíthatja a kérést.
A felettes további információkért visszaküldheti a kérést a kérelmezőnek:
- A kérelmező áttekinti és visszaküldi a kérést a felettesnek.
A felettes jóváhagyhatja.
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:
A részleg tulajdonosa elutasíthatja.
A részleg tulajdonosa jóváhagyhatja.
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:
A folyamat áttérhet az elfogadott vagy elutasított állapotra.
Ha a folyamat elfogadásra kerül, a munkafolyamat új példánya
ResumeRequestelindul (ResumeRequestegy 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:
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.
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.
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
Nyisson meg egy Fejlesztői parancssort a Visual Studióhoz.
Navigáljon a mintamappához.
Futtassa a Setup.cmd.
Ellenőrizze, hogy a két adatbázis
ContosoHRInstanceStorelétrejött-e az SQL Expressben.
A megoldás beállítása végrehajtáshoz
Futtassa a Visual Studiót rendszergazdaként. Nyissa meg a HiringRequest.sln.
Kattintson a jobb gombbal a megoldásra a Megoldáskezelőben , és válassza a Tulajdonságok lehetőséget.
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.
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
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.
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
InternalClientalapértelmezett lap. Győződjön meg arról, hogy a szolgáltatások futnak, majd kattintson a hivatkozásra.Megjelenik a HiringRequest modul. Az itt ismertetett forgatókönyvet követheti.
Ha a
HiringRequestművelet befejeződött, elindíthatja aResumeRequest. Az itt ismertetett forgatókönyvet követheti.ResumeRequestA 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.Kattintson a jobb gombbal a CareersWebSite elemre a megoldásban, és válassza a Megtekintés böngészőben lehetőséget.
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.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
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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
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.
Ha visszatér az Álláshirdetések listája szolgáltatáshoz, megtekintheti az eddig összegyűjtött önéletrajzokat.
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
Győződjön meg arról, hogy rendszergazdai jogosultságokkal futtatja a Visual Studiót.
Ha sikertelen a megoldás felépítése, ellenőrizze a következőket:
- A
ContosoHRhivatkozás nem hiányzik aInternalClientvagyCareersWebSiteprojektekből.
- A
Ha a megoldás végrehajtása sikertelen, ellenőrizze a következőket:
Minden szolgáltatás fut.
A szolgáltatáshivatkozások frissülnek.
A App_WebReferences mappa megnyitása
Kattintson a jobb gombbal a Contoso elemre , és válassza a Web-/Szolgáltatáshivatkozások frissítése lehetőséget.
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
Törölje az SQL Server-példánytárolót a DbSetup mappában található Cleanup.batfuttatásával.
Törölje a merevlemez forráskódját.