Delen via


Proces voor inhuren

Het voorbeeld van HiringProcess laat zien hoe u een bedrijfsproces implementeert met behulp van berichtenactiviteiten en twee werkstromen die worden gehost als werkstroomservices. Deze werkstromen maken deel uit van de IT-infrastructuur van een fictief bedrijf met de naam Contoso, Inc.

Het HiringRequest werkstroomproces (geïmplementeerd als een Flowchart) vraagt om autorisatie van verschillende managers in de organisatie. Om dit doel te bereiken, gebruikt de werkstroom andere bestaande services in de organisatie (in ons geval een Postvak IN-service en een organisatiegegevensservice geïmplementeerd als gewone WCF-services (Windows Communication Foundation).

De ResumeRequest werkstroom (geïmplementeerd als een Sequence) publiceert een vacature op de website voor externe carrières van Contoso en beheert de overname van cv's. Een vacature is beschikbaar op de externe website voor een bepaalde periode (totdat een time-out verloopt) of totdat een werknemer van Contoso besluit deze te verwijderen.

In dit voorbeeld ziet u de volgende functies van .NET Framework 4.6.1:

  • Flowchart en Sequence werkstromen voor het modelleren van bedrijfsprocessen.

  • Werkstroomservices.

  • Berichtenactiviteiten.

  • Correlatie op basis van inhoud.

  • Aangepaste activiteiten (declaratief en op code gebaseerd).

  • Door het systeem geleverde SQL-serverpersistentie.

  • Aangepast PersistenceParticipant.

  • Aangepaste tracering.

  • Tracering van gebeurtenissen voor Windows (ETW).

  • Samenstelling van activiteiten.

  • Parallel Activiteiten.

  • CancellationScope Activiteit.

  • Duurzame timers (Delay activiteit).

  • Transacties.

  • Meer dan één werkstroom in dezelfde oplossing.

Beschrijving van het proces

Contoso, Inc. wil de controle over het aantal hoofden in elk van de afdelingen hebben. Daarom moeten werknemers, wanneer ze een nieuw wervingsproces willen starten, een goedkeuringsproces doorlopen voordat de werving daadwerkelijk kan plaatsvinden. Dit proces wordt aanvraag voor het wervingsproces genoemd (gedefinieerd in het project HiringRequestService) en bestaat uit de volgende stappen:

  1. Een werknemer (de aanvrager) start de aanvraag voor het wervingsproces.

  2. De manager van de aanvrager moet de aanvraag goedkeuren:

    1. De manager kan de aanvraag weigeren.

    2. De manager kan de aanvraag retourneren aan de aanvrager voor aanvullende informatie:

      1. De aanvrager beoordeelt en stuurt de aanvraag terug naar de manager.
    3. De manager kan goedkeuren.

  3. Nadat de manager van de aanvrager de aanvraag heeft goedgekeurd, moet de eigenaar van de afdeling de aanvraag goedkeuren:

    1. De eigenaar van de afdeling kan weigeren.

    2. De eigenaar van de afdeling kan goedkeuren.

  4. Nadat de eigenaar van de afdeling goedkeurt, vereist het proces de goedkeuring van 2 HR-managers of de CEO:

    1. Het proces kan worden overgestapt op de geaccepteerde of geweigerde status.

    2. Als het proces wordt geaccepteerd, wordt een nieuw exemplaar van de ResumeRequest werkstroom gestart (ResumeRequest is gekoppeld aan HiringRequest.csproj via een servicereferentie.)

Zodra de managers het aannemen van een nieuwe werknemer goedkeurt, moet HR de juiste kandidaat vinden. Dit proces wordt uitgevoerd door de tweede werkstroom (ResumeRequestgedefinieerd in ResumeRequestService.csproj). Deze werkstroom definieert het proces voor het indienen van een vacature met een carrièrekans op de externe website van Contoso, ontvangt cv's van aanvragers en bewaakt de status van de vacatures. Posities zijn beschikbaar voor een vaste periode (totdat een tijd verloopt) of totdat een werknemer van Contoso besluit deze te verwijderen. De ResumeRequest werkstroom bestaat uit de volgende stappen:

  1. Een werknemer van Contoso typt de informatie over de positie en een time-outduur. Zodra de werknemer deze informatie heeft getypeerd, wordt de positie geplaatst op de website van De carrière.

  2. Zodra de informatie is gepubliceerd, kunnen belanghebbenden hun cv's indienen. Wanneer een cv wordt verzonden, wordt het opgeslagen in een record die is gekoppeld aan het openen van de taak.

  3. Aanvragers kunnen cv's indienen totdat de time-out verloopt of iemand van de Hr-afdeling van Contoso besluit de boeking te verwijderen door het proces te stoppen.

Projecten in het voorbeeld

In de volgende tabel ziet u de projecten in de voorbeeldoplossing.

Project Beschrijving
ContosoHR Bevat gegevenscontracten, zakelijke objecten en opslagplaatsklassen.
HiringRequestService Bevat de definitie van de werkstroom Aanvraagproces voor het inhuren.

Dit project wordt geïmplementeerd als een consoletoepassing die zelf als host fungeert voor de werkstroom (xaml-bestand) als een service.
ResumeRequestService Een werkstroomservice die cv's van kandidaten verzamelt totdat een time-out verloopt of iemand besluit dat het proces moet worden gestopt.

Dit project wordt geïmplementeerd als een declaratieve werkstroomservice (xamlx).
OrgService Een service die organisatiegegevens beschikbaar maakt (Werknemers, Posities, PositionTypes en Afdelingen). U kunt deze service beschouwen als de bedrijfsorganisatiemodule van een Enterprise Resource Plan (ERP).

Dit project wordt geïmplementeerd als een consoletoepassing die een WCF-service (Windows Communication Foundation) beschikbaar maakt.
InboxService Een Postvak IN dat bruikbare taken voor werknemers bevat.

Dit project wordt geïmplementeerd als een consoletoepassing die een WCF-service beschikbaar maakt.
InternalClient Een webtoepassing voor interactie met het proces. Gebruikers kunnen hun werkstromen voor HiringProcess starten, eraan deelnemen en bekijken. Met deze toepassing kunnen ze ook ResumeRequest-processen starten en bewaken.

Deze site is geïmplementeerd om intern te zijn op het intranet van Contoso. Dit project wordt geïmplementeerd als een ASP.NET website.
CareersWebSite Een externe website die de openstaande posities in Contoso beschikbaar maakt. Elke potentiële kandidaat kan naar deze site navigeren en een cv indienen.

Functieoverzicht

In de volgende tabel wordt beschreven hoe elke functie in dit voorbeeld wordt gebruikt.

Functie Beschrijving Project
Stroomdiagram Het bedrijfsproces wordt weergegeven als een stroomdiagram. Deze beschrijving van het stroomdiagram vertegenwoordigt het proces op dezelfde manier waarop een bedrijf het zou hebben getekend op een whiteboard. HiringRequestService
Werkstroomservices Het stroomdiagram met de procesdefinitie wordt gehost in een service (in dit voorbeeld wordt de service gehost in een consoletoepassing). HiringRequestService
Berichtenactiviteiten In het stroomdiagram worden berichtenactiviteiten op twee manieren gebruikt:

- Om informatie van de gebruiker op te halen (om de beslissingen en gerelateerde informatie in elke goedkeuringsstap te ontvangen).
- Om te communiceren met andere bestaande services (InboxService en OrgDataService, gebruikt via serviceverwijzingen).
HiringRequestService
Correlatie op basis van inhoud Goedkeuringsberichten correleren met de id-eigenschap van de aanvraag voor inhuren:

- Wanneer een proces wordt gestart, wordt de correlatie-handle geïnitialiseerd met de id van de aanvraag.
- Binnenkomende goedkeuringsberichten correleren op hun id (de eerste parameter van elk goedkeuringsbericht is de id van de aanvraag).
HiringRequestService /ResumeRequestService
Aangepaste activiteiten (declaratief en op code gebaseerd) In dit voorbeeld zijn er verschillende aangepaste activiteiten:

- SaveActionTracking: Met deze activiteit wordt een aangepast ( TrackingRecord met behulp van Track) verzonden. Deze activiteit is gemaakt met behulp van imperatieve code die wordt uitgebreid NativeActivity.
- GetEmployeesByPositionTypes: Deze activiteit ontvangt een lijst met positietype-id's en retourneert een lijst met personen met die positie in Contoso. Deze activiteit is declaratief geschreven (met behulp van de activiteitontwerper).
- SaveHiringRequestInfo: Met deze activiteit worden de gegevens van een HiringRequest (met behulp van HiringRequestRepository.Save) opgeslagen. Deze activiteit is gemaakt met behulp van imperatieve code die wordt uitgebreid CodeActivity.
HiringRequestService
Door het systeem geleverde SQL Server-persistentie Het WorkflowServiceHost exemplaar dat als host fungeert voor de stroomdiagramprocesdefinitie, is geconfigureerd voor het gebruik van de door het systeem geleverde SQL Server-persistentie. HiringRequestService /ResumeRequestService
Aangepaste tracering Het voorbeeld bevat een aangepaste traceringsdeelnemer die de geschiedenis van een HiringRequestProcess (dit registreert welke actie is uitgevoerd, door wie en wanneer). De broncode bevindt zich in de map Tracking van HiringRequestService. HiringRequestService
ETW-tracering Door het systeem geleverde ETW-tracering is geconfigureerd in het App.config-bestand in de HiringRequestService-service. HiringRequestService
Samenstelling van activiteiten De procesdefinitie maakt gebruik van de vrije samenstelling van Activity. Het stroomdiagram bevat verschillende reeks- en parallelle activiteiten die tegelijkertijd andere activiteiten bevatten (enzovoort). HiringRequestService
Parallelle activiteiten - ParallelForEach<T> wordt gebruikt om u parallel te registreren in het Postvak IN van de CEO en HR-managers (wachtend op de goedkeuringsstap van twee HR-managers).
- Parallel wordt gebruikt voor het opschonen van taken in de stappen Voltooid en Geweigerd
HiringRequestService
Modelannulering Het stroomdiagram gebruikt CancellationScope om annuleringsgedrag te maken (in dit geval wordt er wat opgeschoond.) HiringRequestService
Deelnemer klantpersistentie HiringRequestPersistenceParticipant slaat gegevens van een werkstroomvariabele op in een tabel die is opgeslagen in de Contoso HR-database. HiringRequestService
Werkstroomservices ResumeRequestService wordt geïmplementeerd met behulp van werkstroomservices. Werkstroomdefinitie en service-informatie zijn opgenomen in ResumeRequestService.xamlx. De service is geconfigureerd voor het gebruik van persistentie en tracering. ResumeRequestService
Duurzame timers ResumeRequestService maakt gebruik van duurzame timers om de duur van een jobposting te definiëren (zodra een time-out verloopt, wordt de functieposting gesloten). ResumeRequestService
Transacties TransactionScope wordt gebruikt om consistentie van gegevens binnen de uitvoering van verschillende activiteiten te garanderen (wanneer een nieuw cv wordt ontvangen). ResumeRequestService
Transacties De aangepaste persistentiedeelnemer (HiringRequestPersistenceParticipant) en de aangepaste traceringsdeelnemer (HistoryFileTrackingParticipant) gebruiken dezelfde transactie. HiringRequestService
WF gebruiken in ASP.NET toepassingen. Werkstromen worden geopend vanuit twee ASP.NET toepassingen. InternalClient / CareersWebSite

Gegevensopslag

Gegevens worden opgeslagen in een SQL Server-database met de naam ContosoHR (het script voor het maken van deze database bevindt zich in de DbSetup map). Werkstroomexemplaren worden opgeslagen in een SQL Server-database met de naam InstanceStore (de scripts voor het maken van het exemplaararchief maken deel uit van de distributie .NET Framework 4.6.1).

Beide databases worden gemaakt door Setup.cmd script uit te voeren vanaf een opdrachtprompt voor Ontwikkelaars voor Visual Studio.

Het voorbeeld uitvoeren

De databases maken

  1. Open een opdrachtprompt voor ontwikkelaars voor Visual Studio.

  2. Navigeer naar de voorbeeldmap.

  3. Voer Setup.cmd uit.

  4. Controleer of de twee databases ContosoHR zijn gemaakt in InstanceStore SQL Express.

De oplossing instellen voor uitvoering

  1. Voer Visual Studio uit als beheerder. Open HiringRequest.sln.

  2. Klik met de rechtermuisknop op de oplossing in Solution Explorer en selecteer Eigenschappen.

  3. Selecteer de optie Meerdere opstartprojecten en stel de CareersWebSite, InternalClient, HiringRequestService en ResumeRequestService in op Start. Laat ContosoHR, InboxService en OrgService op Geen staan.

  4. Bouw de oplossing door op Ctrl+Shift+B te drukken. Controleer of de build is geslaagd.

De oplossing uitvoeren

  1. Nadat de oplossing is gebouwd, drukt u op Ctrl+F5 om zonder foutopsporing uit te voeren. Controleer of alle services zijn gestart.

  2. Klik met de rechtermuisknop op InternalClient in de oplossing en selecteer Weergeven in browser. De standaardpagina voor InternalClient wordt weergegeven. Zorg ervoor dat services worden uitgevoerd en klik op de koppeling.

  3. De module HiringRequest wordt weergegeven. U kunt het scenario volgen dat hier wordt beschreven.

  4. Zodra het HiringRequest is voltooid, kunt u de ResumeRequest. U kunt het scenario volgen dat hier wordt beschreven.

  5. Wanneer de ResumeRequest site is gepost, is deze beschikbaar op de openbare website (Contoso Careers-website). Als u de functie wilt zien (en op de positie wilt toepassen), gaat u naar de website voor carrières.

  6. Klik met de rechtermuisknop op CareersWebSite in de oplossing en selecteer Weergeven in browser.

  7. Ga terug naar de app door met de InternalClient rechtermuisknop op InternalClient in de oplossing te klikken en Weergave in browser te selecteren.

  8. Ga naar de sectie JobPostings door te klikken op de koppeling Vacatures in het bovenste menu van Postvak IN. U kunt het scenario volgen dat hier wordt beschreven.

Scenario's

Aanvraag voor inhuren

  1. Michael Alexander (Software Engineer) wil een nieuwe functie aanvragen voor het inhuren van een Software Engineer in Test (SDET) op de technische afdeling die minimaal 3 jaar ervaring heeft in C#.

  2. Nadat de aanvraag is gemaakt, wordt de aanvraag weergegeven in het Postvak IN van Michael (klik op Vernieuwen als u de aanvraag niet ziet) die wacht op de goedkeuring van Peter Brehm, die michaels manager is.

  3. Peter wil reageren op michaels verzoek. Hij denkt dat de positie 5 jaar C#-ervaring vereist in plaats van 3, dus stuurt hij zijn opmerkingen terug voor beoordeling.

  4. Michael ziet een bericht in zijn Postvak IN van zijn manager en wil handelen. Michael ziet de geschiedenis van het positieverzoek en gaat akkoord met Peter. Michael wijzigt de beschrijving om vijf jaar C#-ervaring te vereisen en accepteert de wijziging.

  5. Peter reageert op michaels wijzigingsverzoek en accepteert het. De aanvraag moet nu worden goedgekeurd door de directeur engineering, Tsvi Reiter.

  6. Tsvi Reiter wil het verzoek versnellen, dus hij plaatst een opmerking om te zeggen dat het verzoek dringend is en accepteert.

  7. De aanvraag moet nu worden goedgekeurd door twee HR-managers of de CEO. De CEO, Brian Richard Goldstein, ziet het dringende verzoek van Tsvi. Hij handelt op het verzoek door het te accepteren, waardoor de goedkeuring door twee HR-managers wordt overgeslagen.

  8. De aanvraag wordt verwijderd uit het Postvak IN van Michael en het proces van het inhuren van een SDET is nu begonnen.

Aanvraag hervatten starten

  1. Nu wordt de functie geplaatst op een externe website waar mensen kunnen worden toegepast (u kunt deze zien op de koppeling Vacatures ). Op dit moment zit de functie bij een HR-vertegenwoordiger die verantwoordelijk is voor het voltooien van de functie en het plaatsen ervan.

  2. HR wil deze functiepositie bewerken (door op de koppeling Bewerken te klikken) door een time-out van 60 minuten in te stellen (in realtime kan dit dagen of weken zijn). Met de time-out kan de taakpositie worden uitgeschakeld op basis van de opgegeven tijd.

  3. Nadat u de bewerkte taakpositie hebt opgeslagen, wordt deze weergegeven op het tabblad Cv's ontvangen (vernieuw de webpagina om de nieuwe taakpositie te zien).

Cv's verzamelen

  1. De taakpositie moet worden weergegeven op de externe website. Als persoon die geïnteresseerd is in het aanvragen van de functie, kunt u deze functie aanvragen en uw cv indienen.

  2. Als u teruggaat naar de service Lijst met vacatures, kunt u 'cv's weergeven' die tot nu toe zijn verzameld.

  3. HR kan ook stoppen met het verzamelen van cv's (bijvoorbeeld wanneer de juiste kandidaat is geïdentificeerd).

Probleemoplossing

  1. Zorg ervoor dat u Visual Studio uitvoert met beheerdersbevoegdheden.

  2. Als de oplossing niet kan worden gebouwd, controleert u het volgende:

    • De verwijzing waarnaar ContosoHR wordt verwezen, ontbreekt niet in de InternalClient of CareersWebSite projecten.
  3. Als de oplossing niet kan worden uitgevoerd, controleert u het volgende:

    1. Alle services worden uitgevoerd.

    2. De serviceverwijzingen worden bijgewerkt.

      1. De map App_WebReferences openen

      2. Klik met de rechtermuisknop op Contoso en selecteer Web-/serviceverwijzingen bijwerken.

      3. Bouw de oplossing opnieuw door op Ctrl+Shift+B in Visual Studio te drukken.

Verwijderen

  1. Verwijder het SQL Server-exemplaararchief door Cleanup.bat uit te voeren in de map DbSetup.

  2. Verwijder de broncode van de harde schijf.