Dela via


Utöka Universal Resource Scheduling med anpassade resursbegränsningar

Universal Resource Scheduling, schemaläggningsmotorn underliggande Dynamics 365 Field Service och Project Service Automation, med omfattande resursmatchande funktioner för att schemalägga rätt resurser för ett projekt. Medan Universal Resource Scheduling-lösningen levereras med Field Service och Project Service, kan Universal Resource Scheduling även schemalägga ett arbetsflöde i Dynamics 365. I den här artikeln ska vi ta en titt på hur de inbyggda resursbegränsningarna implementeras och hur du anpassar Universal Resource Scheduling med anpassade begränsningar.

Resurser, krav och begränsningar

Resurser

Grundläggande för Universal Resource Scheduling är (bookableresource)-resursentiteten. När bokningsposter (bookableresourcebooking) skapas associeras med en resurspost. För att säkerställa att rätt resurser har markerats, levereras Universal Resource Scheduling med många inbyggda filter och villkor att kategorisera resurserna efter. Exempel är: resurstyp som anger om resursen är en användare, kontakt, konto, utrustning, osv egenskap för att filtrera resurser efter egenskaper som de har kunskap i, område för att tilldela resurser till specifika områden, organisationsenhet för att modellera en organisationens hierarki och mycket mer.

En resurspost och associerade begränsningar modelleras via attribut eller relationer till andra entiteter. Till exempel namn och typ för resursen är attribut för entiteten Resurs. Resursegenskaper och resursområden är underordnade relationer eftersom en resurs kan kopplas ihop med mer än ett. De här enheterna är underordnade relationer till både resursen och egenskap/områdesentiteten. Organisationsenheten är ett uppslagsattribut för resursentiteten till organisationsenhetens entitet.

Krav

En annan viktig entitet i Universal Resource Scheduling är entiteten resurskrav (msdyn_resourcerequirement). Entiteten resurskrav registrerar ett krav för arbete som ska utföras. Den överför parametrar om det begärda arbetet, till exempel från- och datumfält som begränsar hur lång tid som arbetet som kan utföras, samt fältet varaktighet för hur länge projektet förväntas ta; arbetsplatsen anger placeringen av arbetet som krävs. Entiteten krav samlar även in resursbegränsningar för att bestämma vilka resurser som kan uppfylla och bokas för detta krav. Liksom resursentiteten uttrycksbegränsningar som attribut för kraventiteten eller relationer till andra entiteter. Område är ett uppslagsattribut från kraventiteten för områdesentiteten som anger arbetet som göras i området och därför måste vi hitta en resurs från samma område. Kravegenskap är en relation mellan underordnade som hör till egenskapsentiteten som anger de kunskaper som krävs för att slutföra projektet och därför kan kravet endast kopplas till resurser med matchande kunskaper.

Begränsningar som levererats i Universal Resource Scheduling

Följande är en lista med begränsningar som medföljer Universal Resource Scheduling:

  • Egenskaper – kan användas för att modellera kunskaper en resurs har. Det stöder också klassificering av valfria värden för att bedöma hur kompetent en resurs är för varje färdighet
  • Kategorier – resurser kan associeras med kategorier
  • Områden – för att tilldela resurser till geografiska regioner
  • Organisationsenheter – för att modellera en organisationshierarki
  • Resurstyp – definierar vilken typ av resursen
  • Team – team som en resurs är medlem i
  • Affärsenheter – vilken affärsenhet som resursen tillhör

Filtrering i schemaläggningstavlor

Schemaläggningstavlan visar en lista med resurser och bokningar som tilldelats. Filterpanelen i schemaläggningstavlan låter dig filtrera resurslistan efter deras villkor, t.ex. att välja en resurstyp för användare i listrutan resurstyp kommer att filtrera resurslistan som är av typen användare. På samma sätt kan du filtrera resurser genom att matcha egenskaper eller områden.

Med hjälp av filterpanelen för att filtrera resurser är ett sätt att söka efter matchande resurser. Den här metoden används när du vill visa en lista över resurser som matchar en viss uppsättning begränsningar manuellt.

Söka efter tillgängliga resurser med schemaläggningsassistenten

Längst ned i schemaläggningstavlan hittar du en lista över kravposter. Du kan välja en av dem och välja att söka efter tillgänglighet. Den här åtgärden öppnar schematassistenten. Schemaläggningsassistenten använder de begränsningar som har hämtats till den valda kravposten för att matcha resurser som är tillgängliga att boka. Endast resurser som matchar begränsningarna för kravet och som är tillgängliga i den begärda tidsperioden som anges på kravet visas på tavlan.

En liknande upplevelse finns via menyfliksknappen ”boka” i kraventiteten och andra schemaläggningsbara entiteter i listvyer eller formulär i Dynamics 365. När du klickar på ”boka” öppnas schematassistenten med resurser som matchar de begränsningar för den valda kravposten.

Till skillnad från tidigare nämnda läget för schemaläggningstavlan där du kan använda filterpanelen för att manuellt filtrera resurser i läget för schemaläggningsassistenten fylls filterpanelen i automatiskt från kravposten och endast matchande resurser visas.

Hur matchning av begränsningar fungerar

Begränsningsentiteter

Vissa begränsningar anges som attribut direkt på resursentiteten medan andra definieras via relationer. Relationer behövs när en begränsning refererar till en 2:a huvudentitet.

Låt oss tänka på en resurspost och dess associerade områdes- och egenskapsbegränsningar.

Första huvudposterna. Vi har områden i områdesentiteten:

Område
New York
New Jersey
Seattle

Vi har även egenskaper i egenskapsentiteten:

Egenskap
Projektledare
Designer
Finansiell analytiker

Entiteten organisationsenhet:

Organisationsenhet
Contoso US
Contoso EU

Slutligen har vi resursentiteten:

Resurs Resurstyp Organisationsenhet
Jorge Galt User Contoso US
Abraham McCormick Kontaktperson Contoso EU

När en enda resurspost fungerar för att samla in begränsningar med enkelt värde såsom resurstyp och organisationsenheten ovan. Om vi vill associera en resurs till flera områdes- eller egenskapsposter måste vi använda en tredje entitet en flera-till-flera-relation (N:N) för lagring av dessa kopplingar.

Vi använder resursområdesentiteten för att associera flera områden för en resurs.

Resursområdesposter:

Resurs Område
Jorge Galt New York
Jorge Galt New Jersey
Abraham McCormick Seattle

Och resursegenskapsentiteten för att lagra flera egenskaper för en resurs.

Resursegenskapspost:

Resurs Egenskap
Jorge Galt Designer
Abraham McCormick Projektledare
Abraham McCormick Finansiell analytiker

Ungefär som resursen kan en kravpost samla i begränsningar med enkelt värde och underordnade poster lagra begränsningar med flera värden.

Här är kraventiteten:

Krav Varaktighet Område
Jobb 1 1 tim New York
Jobb 2 1 tim Seattle

Kravegenskapsentiteten:

Kravegenskapsposterna:

Krav Egenskap
Jobb 1 Designer
Jobb 2 Projektledare
Jobb 2 Finansiell analytiker

Ibland kanske krav måste ha en begränsning modellerad som ett uppslagsattribut när resursen kan lagra matchande attribut i N till N-tabellen. När det till exempel gäller krav är områdesbegränsningen ett uppslagsattribut för områdesentiteten. Ett krav samlar in en begäran av arbete och området arbetet ska utföras i. En resurspost kan emellertid kopplas till många områdesposter.

Egenskapssamling för begränsningar

När användaren väljer värden i filterpanelen och klickar på knappen Sök, skickas värdena till resursmatchnings-API. För begränsningar med flera värden visar filterpanelen data från huvudentiteterna område och egenskaper och innehåller markerade värden i egenskapssamling för begränsningar.

Här följer ett exempel på egenskapssamling med begränsningar som skickas till resursmatchnings-API:

Namn Value
ResourceType User
Territories New York
New Jersey

Detta visar den resursmatchnings-API för att hitta resurser av typen användare som tillhör områdena New York eller New Jersey.

I schemaläggningsassistenten hämtas först begränsningarna från en kravpost via hämta kravbegränsnings-API. Sedan förifylls begränsningarna i filterpanelen och skickas till resursmatchnings-API.

Hämta kravbegränsnings-API kräver kravposten och alla relaterade underordnade begränsningar (t.ex. kravegenskaper). Den svarar med en egenskapssamling för begränsningar som anger alla resursbegränsningar på det valda kravet.

Här följer ett exempelsvar från hämta kravbegränsnings-API:

Namn Value
Requirement Jobb 2
Duration 1 tim
Territories Seattle
Characteristics Projektledare
Finansiell analytiker

Resursmatchnings-API tar emot som indata egenskapssamling för begränsningar och frågor för att matcha resurser. Matchande resurser visas sedan i schemaläggningstavlan eller schemaläggningsassistent.

Summera de entiteter som används för resursmatchningen

  • Exempel på huvudentiteter
    • Område – refererar till en begränsning
    • Egenskap – refererar till en begränsning
    • Resurs – Tilldelas bokningar
    • Resursområde – Associerar resurser till områden
    • Resursegenskaper – Associerar resurser till egenskaper
  • Exempel på transaktionsentiteter
    • Krav – samlar in en begäran för arbete och refererar till område
    • Kravegenskaper – Associerar krav till egenskaper

Sammanfattar resursens matchande flöden

  • Manuell filtrering. Filterpanel > resursmatchnings-API

    1. En användare lägger manuellt till villkor i filterpanelen
    2. Begränsningarna skickas till resursmatchnings-API
    3. Den filtrerade listan med resurser visas
  • Kravfiltrering. Hämta kravbegränsnings-API > filterpanel > resursmatchnings-API

    1. En användare söker efter tillgänglighet för en kravpost (inifrån schemaläggningstavlan eller från bok-knappen i menyfliksområdet).
    2. Begränsningarna som hämtas via Hämta kravbegränsnings-API och visas på filterpanelen.
    3. Begränsningarna skickas till resursmatchnings-API
    4. Den filtrerade listan med resurser visas

Utöka Universal Resource Scheduling med anpassade begränsningar

Universal Resource Scheduling kan utökas med anpassade begränsningar. Utöka begränsningar fungerar på samma sätt som de som skapas i Universal Resource Scheduling, de utformas som attribut och relationer i Dynamics 365.

En steg-för-steg-guide med kodexempel som behövs för varje steg beskrivs i Utöka Universal Resource Scheduling: hitta resurser efter språk – en steg-för-steg-guide

Anpassade begränsningar

Vi ska använda ”språk” som ett exempel. En organisation vill filtrera resurser efter de språk de talar. De vill också registrera den kravpost för språket som krävs för ett jobb. Den här begränsningen följer ett liknande mönster för den inbyggda områdesbegränsningen. En ny överordnad entitet Språk lagrar de olika språk som en resurs kan tala. En resurspost kan sedan kopplas till många språk via en N:N-relationsentitet. På entiteten Krav kan vi skapa två nya uppslagsattribut: Required Language och Secondary Language. När du söker efter tillgängliga resurser för ett visst krav, visas endast resurser som är associerade med antingen Required Language eller Secondary Language.

Här ska vi beskriva begränsningen för anpassat språk. Först har vi vår nya språkentitet:

Language
Engelska
Spanska

Och vår nya språkresurs N till N underordnade entiteten:

Resurs Language
Jorge Galt Engelska
Abraham McCormick Engelska
Abraham McCormick Spanska

Här är den kraventitet med två nya attribut, språk som krävs och sekundärt språk som motsvarar de språk som resursen behöver prata så att de kan matchas med detta krav:

Krav Varaktighet Område Språk som krävs. Sekundärt språk
Jobb 1 1 tim New York Engelska ---
Jobb 2 1 tim Seattle Spanska Engelska

Utökningsbarhetspunkter

Baserat på de resursmatchningsflöden som beskrivs ovan är dessa de utökningsbarhetspunkter vi vill ändra för att våra egna begränsningar ska fungera:

  1. Hämta kravbegränsnings-API

    API måste läsa våra nya attribut Språk som krävs och Sekundärt språk så att när en användare söker efter tillgänglighet för ett krav hämtas vår nya begränsning.

  2. Filterpanel

    En användare bör kunna välja från en lista med språkposter i filterpanelen för att filtrera matchande resurser. När du söker efter tillgänglighet för ett krav, ska filterpanelen visa språk som krävs och sekundära språk från den kravpost som väljs i listan över språk.

  3. Resursmatchnings-API

    API får som indata den nya begränsningen Språk. Den behöver endast returnera resurser som talar det valda språket.

Utökningsbara frågor

Internt används Hämta kravbegränsnings-API (#1 ovan) och Resursmatchnings-API (#3 ovan) FetchXML för att fråga data från Dynamics 365. Hämta kravbegränsnings-API ställer flera frågor för att hämta kravposten och dess underordnade begränsningar (som kravegenskap). Resursmatchnings-API, beroende på resursbegränsningarna som skickas till den som indata, kommer dynamiskt att skapa korrekt FetchXML-fråga så att endast resursposter som matchar angivna kriterier i FetchXML returneras från Dynamics 365.

I uppdateringen från juli 2017 för Universal Resource Scheduling, för att ge stöd för utökningsbar resursmatchning introducerades Universal FetchXML (UFX). Två viktiga funktioner som UFX lägger till i FetchXML är: 1) flera resultatuppsättningar, en enskild UFX-fråga kan returnera många resultat från flera entiteter och 2) dynamiska FetchXML, en UFX-fråga kan dynamiskt konstruera FetchXML baserat på indata.

Med UFX kan det skapas en enda fråga för att hämta information om en kravpost och dess underordnade poster. Hämta kravbegränsnings-API kör en anpassningsbar UFX-fråga för att hämta ett krav och dess underordnade begränsningar. Frågan kan anpassas för att hämta anpassade begränsningsposter också.

Egenskapssamling för begränsningar som returneras från Hämta kravbegränsnings-API skickas som indata till Resursmatchnings-API. API kör en anpassningsbar UFX-fråga. Med UFX använder frågan indatabegränsningar för att dynamiskt skapa rätt FetchXML för att hitta matchande resurser. Denna UFX-fråga kan ändras för att skapa rätt FetchXML för att endast returnera resurser som matchar de anpassade begränsningarna.

Utökningsbar filterlayout och resursmall

I uppdateringen från juli 2017 för Universal Resource Scheduling uppdaterades filterpanelen (#2 ovan) för att stödja anpassning via en XML-layoutdefinition. Den nya layouten stöder listrutekontroller om du vill visa en lista med poster från huvudpostentiteter och vanliga numberdatetime och checkbox kontroller. Layouten kan ändras så att användare kan välja poster från anpassade begränsningsentiteter. De anpassade begränsningarna, såsom de i Universal Resource Scheduling, skickas sedan som indata till Resursmatchnings-API.

En annan utökningsbarhetspunkt som var tillgänglig i uppdateringen från juli 2017 är resurscell. Resurscell återges via en anpassningsbar mall för Handlebars.js. Resultaten från resursmatchnings-API görs tillgängliga för mallen. Därför kan anpassade data göras i resurscellen genom anpassning av frågan som utförs av resursmatchnings-API.

En steg-för-steg-guide med kodexempel som behövs för varje steg beskrivs i Utöka Universal Resource Scheduling: hitta resurser efter språk – en steg-för-steg-guide

Ytterligare kommentarer

  • Det går inte att konfigurera filter mallen för närvarande när en schemalagda entitet använder en associerad kravgrupp i stället för ett resurskrav.

Se även

Universal Fetch XML

Universal Resource Scheduling utökningsbarhet – Viktig information