Del via


Udvide Universal Resource Scheduling med brugerdefinerede ressourcebegrænsninger

Universal Resource Scheduling, det underliggende planlægningsprogram for Dynamics 365 Field Service og Project Service Automation, leveres med omfattende ressourcematchningsfunktioner, som bruges til reservation af de rette ressourcer til et job. Universal Resource Scheduling-løsningen leveres sammen med Field Service og Project Service, men Universal Resource Scheduling kan også bruges til at planlægge en arbejdsstrøm i Dynamics 365. I denne artikel ser vi på, hvordan de indbyggede ressourcebegrænsninger implementeres, og hvordan du kan tilpasse Universal Resource Scheduling med brugerdefinerede ressourcebegrænsninger.

Ressourcer, krav og begrænsninger

Ressourcer

Kernen i Universal Resource Scheduling er ressourceobjektet (bookableresource). Når der oprettes poster af typen Reservation (bookableresourcebooking), tilknyttes de med en ressourcepost. Hvis du vil sikre, at den rigtige ressource er valgt, leveres Universal Resource Scheduling med mange indbyggede filtre og begrænsninger, som ressourcer kan kategoriseres efter. Af eksempler kan nævnes: Ressourcetype, der angiver, om ressourcen er en Bruger, Kontaktperson, et Firma, Udstyr osv., så ressourcer kan filtreres efter deres færdigheder, eller Distrikt, så ressourcen kan tildeles til bestemte områder, Afdeling for at tilpasse et organisationshierarki, og mange flere.

En ressourcepost og dens tilknyttede begrænsninger tilpasses via attributter eller relationer til andre objekter. F.eks. er Navn og Ressourcetype attributter til objektet Ressource. Ressourceegenskaber og Ressourcedistrikter er underordnede relationer, da en ressource kan være knyttet til mere end én af dem. Disse objekter er underordnede relationer til både Ressource OG objektet Egenskaber/Distrikt. Afdeling er en opslagsattribut i objektet Ressource til objektet Afdeling.

Krav

En anden vigtig enhed i Universal Resource Scheduling er objektet Ressourcekrav (msdyn_resourcerequirement). Krav-objektet registrerer et krav til det arbejde, der skal udføres. Det henter parametre om efterspurgt arbejde, f.eks. felterne Til- og Fra-dato, der begrænser det tidsrum, som arbejdet kan udføres i, feltet Varighed, som angiver, hvor lang tid jobbet forventes at tage, og Arbejdssted, der angiver placeringen af det arbejde, der er påkrævet. Objektet Krav henter også ressourcebegrænsninger for at begrænse, hvilke ressourcer der kan opfylde og reserveres til dette krav. På samme måde som Ressource-objektet, angives ressourcebegrænsninger som attributter i objektet Krav eller som relationer til andre objekter. Distrikt er en opslagsattribut fra objektet Krav til objektet Distrikt, som angiver det distrikt, som arbejdet skal udføres i, og at der skal derfor skal findes en ressource fra det samme distrikt. Kravsegenskab er en underordnet relation, der relaterer kravet til objektet Egenskaber og angiver de færdigheder, der kræves for at udføre jobbet, og derfor kan kravet kun sammenholdes med ressourcer med tilsvarende færdigheder.

Begrænsninger i Universal Resource Scheduling

I det følgende vises på listen over begrænsninger i Universal Resource Scheduling:

  • Egenskaber - Kan bruges til at modellere de færdigheder, en ressource har. Begrænsningen understøtter også valgfrie klassifikationsværdier til bedømmelse af ressources færdigheder på hvert område
  • Kategorier - Ressourcer, der kan knyttes til kategorier
  • Distrikter - Tildele ressourcer til geografiske områder
  • Afdelinger - Tilpasse et organisationshierarki
  • Ressourcetype - Definerer typen af ressource
  • Team - De team, en ressource er medlem af
  • Afdelinger - Hvilken afdeling ressourcen er en del af

Filtrering i planlægningsområdet

Planlægningsområdet viser en liste over ressourcer og reservationer, der er tildelt til dem. Med filterpanelet i planlægningsområdet kan du filtrere listen over ressourcer efter deres begrænsninger – f.eks. hvis du vælger en ressourcetype for Bruger på rullelisten, filtrerer ressourcetypen ressourcelisten og viser ressourcer af typen Bruger. På samme måde kan du filtrere ressourcer ved at sammenligne egenskaber eller distrikter.

Brug af filterpanelet til at filtrere ressourcer er én metode til at finde matchende ressourcer. Denne metode bruges, når du manuelt vil have vist en liste over ressourcer, der svarer til et bestemt sæt begrænsninger.

Søge efter tilgængelige ressourcer med planlægningsassistenten

Nederst i planlægningsområdet finder du en liste over kravsposter. Du kan vælge en af dem, og du kan vælge at søge efter tilgængelighed. Denne handling åbner planlægningsassistenten. Planlægningsassistenten bruger de begrænsninger, der er hentet i den valgte kravspost, til at finde matchende ressourcer, der er tilgængelige for reservation. I området vises kun de ressourcer, der svarer til begrænsningerne i kravet, og som er tilgængelige i den tidsperiode, der er angivet i kravet.

En lignende oplevelse er tilgængelig via knappen "Reservér" på båndet, der er tilgængelig i objektet Krav og andre objekter, der kan planlægges, i Dynamics 365-listevisninger eller formularer. Når du klikker på "Reservér", åbnes planlægningsassistenten og viser ressourcer, der svarer til begrænsningerne for den valgte kravspost.

I modsætning til den tidligere nævnte planlægningsområdetilstand, hvor du kan bruge filterpanelet til manuelt at filtrere ressourcer, udfylder filterpanelet i Planlægningsassistent-tilstand ressourcebegrænsningerne fra kravsposten, og kun de matchende ressourcer vises.

Sådan fungerer sammenligning af begrænsninger

Begrænsningsobjekter

Visse begrænsninger er angivet som attributter direkte i objektet Ressource, mens andre defineres via relationer. Relationer er nødvendige, når en begrænsning refererer til et endnu et objekt, som er overordnet.

Lad os se på en ressourcepost og dens tilknyttede begrænsninger for Distrikt og Egenskaber.

Først masterposterne. Vi har distrikter, der er gemt i objektet Distrikt:

Distrikt
New York
New Jersey
Seattle

Vi har også egenskaber i objektet Egenskaber:

Egenskab
Projektleder
Designer
Økonomianalytiker

Objektet Afdeling:

Afdeling
Contoso USA
Contoso EU

Endelig har vi objektet Ressource:

Ressource Ressourcetype Afdeling
Jorge Galt User Contoso USA
Abraham McCormick Kontaktperson Contoso EU

En enkelt ressourcepost arbejder på at registrere begrænsninger med én værdi, som f.eks. Ressourcetype og Afdeling ovenfor. Hvis vi vil knytte en ressource til flere Distrikt- og Egenskaber-poster, skal vi skal bruge et tredje objekt, en mange-til-mange (N:N)-relation til at gemme disse tilknytninger.

Vi bruger objektet Ressourcedistrikt til at tilknytte flere distrikter for en ressource.

Ressourcedistriktsposter:

Ressource Distrikt
Jorge Galt New York
Jorge Galt New Jersey
Abraham McCormick Seattle

og ressourceegenskabsobjektet til at gemme flere egenskaber for en ressource.

Ressourceegenskabsposter:

Ressource Egenskab
Jorge Galt Designer
Abraham McCormick Projektleder
Abraham McCormick Økonomianalytiker

På samme måde som ved Ressource henter en kravspost begrænsninger med én værdi, og underordnede poster gemmer begrænsninger med flere værdier.

Her er objektet Krav:

Krav Varighed Distrikt
Job 1 1 t New York
Job 2 1 t Seattle

Objektet Kravsegenskab:

Kravsegenskabsposter:

Krav Egenskab
Job 1 Designer
Job 2 Projektleder
Job 2 Økonomianalytiker

Nogle gange kan kravet have en begrænsning, der er udformet som en opslagsattribut, mens ressourcen kan gemme de tilsvarende attributter i N:N-tabellen. I forbindelse med Krav er Distrikt-begrænsningen f.eks. en opslagsattribut til objektet Distrikt. Et Krav indsamler et behov for arbejde og det distrikt, arbejdet skal udføres i. En ressourcepost, men kan dog knyttes til mange Distrikt-poster.

Egenskabsbeholdere til begrænsninger

Når brugeren vælger værdier i filterpanelet og vælger knappen Søg, sendes værdierne til ressourcematchnings-API'en. For begrænsninger med flere værdier viser filterpanelet data fra de overordnede objekter Distrikt og Egenskaber og medtager de valgte værdier i egenskabsposten for begrænsninger.

Her er et eksempel på egenskabbeholderbegrænsninger, der er sendt til ressourcematchnings-API'en:

Navn Value
ResourceType User
Territories New York
New Jersey

Dette giver Ressourcematchnings-API'en besked om at at søge efter ressourcer af typen Bruger, der er knyttet til New Yourk eller New Jersey-distrikter.

I Planlægningassistent hentes begrænsningerne først fra en post en kravspost via Hent kravsbegrænsnings-API. De hentede begrænsninger udfyldes derefter i filterpanelet og sendes til ressourcematchnings-API'en.

Hent kravsbegrænsnings-API'en sender en forespørgsel til kravsposten og alle relaterede underordnede begrænsninger (f.eks. kravsegenskaber). Den svarer med en egenskabsbeholder for begrænsninger og angiver alle de ressourcebegrænsninger, der er hentet i det valgte krav.

Her er et eksempel på et svar fra Hent kravsbegrænsnings-API:

Navn Value
Requirement Job 2
Duration 1 t
Territories Seattle
Characteristics Projektleder
Økonomianalytiker

Ressourcematchnings-API'en modtager som input begrænsningens egenskabsbeholder og forespørger efter matchende ressourcer. De matchende ressourcer vises derefter i planlægningsområdet eller planlægningsassistenten.

Kort beskrivelse af de objekter, der bruges til ressourcematchning

  • Eksempel på masterobjekter
    • Distrikt - Der refererer til Distrikt som en begrænsning
    • Egenskab - Der refererer til Egenskab som en begrænsning
    • Ressource - Tildeles til reservationer
    • Ressourcedistrikt - Knytter ressourcer til distrikter
    • Ressourceegenskab - Knytter ressourcer til egenskaber
  • Eksempel på transaktionsobjekter
    • Krav - Henter et arbejdsbehov og refererer til Distrikt
    • Kravsegenskab - Knytter krav til Egenskaber

Kort beskrivelse af ressourcematchningsstrømme

  • Manuel filtrering. Filtrerpanel > Ressourcematchnings-API

    1. En bruger tilføjer manuelt begrænsninger i filterpanelet
    2. Begrænsningerne sendes til ressourcematchnings-API'en
    3. Den filtrerede liste over ressourcer vises
  • Filtrering af krav. Hent kravsbegrænsnings-API > Filterpanel > Ressourcematchnings-API

    1. En bruger finder tilgængelighed for en kravspost (fra planlægningsområdet eller fra knappen Reservér på båndet).
    2. Begrænsningerne hentes via Hent kravsbegrænsnings-API'en og vises i filterpanelet.
    3. Begrænsningerne sendes til ressourcematchnings-API'en
    4. Den filtrerede liste over ressourcer vises

Udvide Universal Resource Scheduling med brugerdefinerede begrænsninger

Universal Resource Scheduling kan udvides med brugerdefinerede ressourcebegrænsninger. Udvidelse af begrænsninger fungerer på samme måde som dem, der er indbygget i Universal Resource Scheduling. De tilpasses som attributter og relationer i Dynamics 365.

En trinvis vejledning med kodeeksempler, der er nødvendige for de enkelte trin, findes i Udvidelse af Universal Resource Scheduling: Find ressourcer efter sprog – en trinvis vejledning

Brugerdefinerede begrænsninger

Vi bruger "sprog" som et eksempelscenario. En organisation ønsker at filtrere ressourcer efter det sprog, de taler. De vil også til at gerne kunne hente det sprog, der kræves til et job, i kravposten. Denne begrænsning følger et lignende mønster i den indbyggede Distrikt-begrænsning. Et nyt overordnet objekt Sprog gemmer de forskellige sprog, som en ressource kan tale. En ressourcepost kan knyttes til mange sprog via et relationsobjekt af typen mange-til-mange. I kravsobjektet opretter vi to nye opslagsattributter: Required Language og Secondary Language. Når der findes tilgængelige ressourcer for et krav, vises kun ressourcer, der er knyttet til enten Required Language eller Secondary Language.

Her beskriver vi begrænsningen ved brugerdefineret sprog. Først har vi vores nye sprogobjekt:

Language
Engelsk
Spansk

og vores nye ressourcesprogs underordnede mange til mange-objekt:

Ressource Language
Jorge Galt Engelsk
Abraham McCormick Engelsk
Abraham McCormick Spansk

Her er kravsobjektet med vores to nye attributter Krævet sprog og Sekundært sprog, der repræsenterer de sprog, som ressourcen skal tale, for at blive matchet med dette krav:

Krav Varighed Distrikt Krævet sprog Sekundært sprog
Job 1 1 t New York Engelsk ---
Job 2 1 t Seattle Spansk Engelsk

Punkter i udvidelsesmuligheder

Baseret på de ressourcematchningsstrømme, der er beskrevet ovenfor, er der følgende udvidelsesmulighedspunkter, som det er nødvendigt at redigere, hvis vores brugerdefinerede begrænsninger skal fungere:

  1. Hent kravsbegrænsnings-API

    API'en skal kunne læse vores nye Krævede sprog- og Sekundære sprog-attributter, så vores nye begrænsninger hentes, når en bruger søger efter tilgængelighed for et krav.

  2. Filterpanel

    En bruger skal kunne vælge på en liste over sprogposter i filterpanelet for at kunne filtreres efter matchende ressourcer. Når der findes tilgængelighed for et krav, skal filterpanelet vise det Krævede sprog og Sekundære sprog fra den kravspost, der allerede er valgt på listen over sprog.

  3. Ressourcematchnings-API

    API'en får som input de nye sprogbegrænsninger. Den skal kun returnere de ressourcer, der taler de valgte sprog.

Forespørgsler, der kan udvides

Internt bruger Hent kravsbegrænsnings-API'en (nr. 1 ovenfor) og Ressourcematchnings-API'en (nr. 3 ovenfor) FetchXML til at forespørge efter data fra Dynamics 365. Hent kravsbegrænsnings-API'en udsender flere forespørgsler for at hente kravsposten og dens underordnede begrænsninger (f.eks. kravsegenskaber osv.). Ressourcematchnings-API'en opretter dynamisk den korrekte FetchXML-forespørgsel, baseret på de ressourcebegrænsninger, der overføres til den som input, så kun ressourceposter, der opfylder de angivne FetchXML-kriterier, returneres fra Dynamics 365.

I juli 2017-opdateringen til Universal Resource Scheduling, der understøtter ressourcematchning med udvidelsesmuligheder, blev Universal FetchXML (UFX) introduceret. To vigtige funktioner, som UFX føjer til FetchXML er: 1) Flere resultatsæt, som en enkelt UFX-forespørgsel kan returnere fra flere objekter og 2) Dynamisk FetchXML, som en UFX forespørgsel dynamisk kan konstruere FetchXML baseret på inputdata.

Med UFX kan en enkelt forespørgsel oprettes for at forespørge om en kravspost og alle underordnede poster. Hent kravsbegrænsnings-API udfører UFX forespørgsel, som kan tilpasses, for at hente et krav og dets underordnede begrænsninger. Forespørgslen kan tilpasses til at hente brugerdefinerede begrænsningsposter også.

Begrænsningens egenskabsbeholder, der er returneret fra Hent kravsbegrænsnings-API'en, sendes som input til ressourcematchnings-API'en. API'en udfører en UFX-forespørgsel, der kan tilpasses. Med UFX bruger forespørgslen inputbegrænsninger til dynamisk at opbygge den korrekte FetchXML for at finde matchende ressourcer. Denne UFX-forespørgsel kan også ændres, så der oprettes den korrekte FetchXML, der kun returnerer de ressourcer, der svarer til de brugerdefinerede begrænsninger.

Layout for filter med udvidelsesmuligheder og ressourceskabelon

Filterpanelet (nr. 2 ovenfor) blev opdateret i juli 2017-opdateringen til Universal Resource Scheduling for at understøtte tilpasning via en definition af XML-layout. Det nye layout understøtter rullelistens kontrolelementer og viser en liste over masterposter og de typiske number, datetime og checkbox-kontrolelementer. Du kan ændre layoutet, så brugerne kan vælge poster fra en brugerdefinerede begrænsningsobjekter. De brugerdefinerede begrænsninger overføres ligesom dem, der leveres sammen med Universal Resource Scheduling, derefter som input til Ressourcematchnings-API.

En anden mulighed for udvidelse på klientsiden i juli 2017-opdateringen er ressourcecellen. Ressourcecellen gengives via en Handlebars.js-skabelon, der kan tilpasses. Resultaterne fra Ressourcematchnings-API gøres tilgængelige for skabelonen. Derfor ved at tilpasse forespørgslen, der er udført af Ressourcematchnings-API, kan brugerdefinerede data gengives i ressourcecellen.

En trinvis vejledning med kodeeksempler, der er nødvendige for de enkelte trin, findes i Udvidelse af Universal Resource Scheduling: Find ressourcer efter sprog – en trinvis vejledning

Yderligere bemærkninger

  • Filterlayoutet kan i øjeblikket ikke konfigureres, når et objekt, der kan planlægges, bruges en tilknyttet kravsgruppe i stedet for et ressourcekrav.

Se også

Universal Fetch XML

Produktbemærkninger til Mulighed for udvidelse af Universal Resource Scheduling