Universal Resource Scheduling uitbreiden met aangepaste resourcebeperkingen
Universal Resource Scheduling, de planningsengine onder Dynamics 365 Field Service en Project Service Automation, wordt geleverd met uitgebreide vergelijkingsmogelijkheden om de juiste resources voor een taak te kunnen boeken. Hoewel de Universal Resource Scheduling-oplossing wordt geleverd met Field en Project Service, kunt u Universal Resource Scheduling ook gebruiken om workstreams in Dynamics 365 te plannen. In dit artikel bekijken we hoe de ingebouwde resourcebeperkingen worden geïmplementeerd en hoe u Universal Resource Scheduling aanpast met aangepaste resourcebeperkingen.
Resources, vereisten en beperkingen
Resources
In Universal Resource Scheduling staat de entiteit Resource (bookableresource
) centraal. Wanneer er records van het type Boeken (bookableresourcebooking
) worden gemaakt, worden deze gekoppeld aan een record Resource. Om ervoor te zorgen dat de juiste resource wordt geselecteerd, wordt Universal Resource Scheduling geleverd met veel ingebouwde filters en beperkingen waarop u resources kunt categoriseren. Voorbeelden zijn: Resourcetype, om aan te geven of de resource een gebruiker, contactpersoon, account, apparatuur of iets dergelijks is, Kenmerk, om resources te filteren op vaardigheden waarin ze bekwaam zijn, Rayon, om resources aan specifieke regio's toe te wijzen, Organisatie-eenheid om een organisatiehiërarchie te modelleren en nog veel meer.
Een record Resource en de daaraan gekoppelde beperkingen worden gemodelleerd op basis van kenmerken of relaties met andere entiteiten. Naam en Resourcetype zijn bijvoorbeeld kenmerken van de entiteit Resource. Resourcekenmerken en Resourcerayons zijn onderliggende relaties omdat een resource aan meerdere van deze relaties kan worden gekoppeld. Deze entiteiten zijn ondergeschikte relaties voor de entiteit Resource EN de entiteit Kenmerk/Rayon. Organisatie-eenheid is een opzoekkenmerk in de entiteit Resource voor de entiteit Organisatie-eenheid.
Vereisten
Een andere belangrijke entiteit in Universal Resource Scheduling is de entiteit Resourcevereiste (msdyn_resourcerequirement
). In de entiteit Vereiste wordt een vereiste voor uit te voeren werk vastgelegd. Hierin worden parameters over het vereiste werk vastgelegd, zoals de datumvelden Van en Tot, om de periode te beperken waarin het werk kan worden gedaan. Daarnaast wordt in het veld Duur aangegeven hoeveel tijd de taak naar verwachting in beslag neemt en wordt bij Werklocatie de locatie voor het vereiste werk aangegeven. In de entiteit Vereiste worden ook resourcebeperkingen vastgelegd om te beperken welke resources kunnen voldoen aan en worden geboekt voor deze vereiste. Net als de entiteit Resource worden resourcebeperkingen als kenmerken van de entiteit Vereiste of als relaties met andere entiteiten uitgedrukt. Rayon is een opzoekkenmerk vanuit de entiteit Vereiste naar de entiteit Rayon om aan te geven in welk rayon het werk moet worden gedaan. Daarom moeten we een resource uit hetzelfde rayon zoeken. Vereistekenmerk is een onderliggende relatie waarmee de entiteit Vereiste wordt gerelateerd aan de entiteit Kenmerk om de vaardigheden weer te geven die vereist zijn om de taak te voltooien. De vereiste kan daarom alleen worden afgestemd met resources met overeenkomende vaardigheden.
Beperkingen in Universal Resource Scheduling
Hieronder volgt een overzicht van beperkingen die standaard worden geleverd in Universal Resource Scheduling:
- Kenmerken - kunnen worden gebruikt om de vaardigheden van een resource te modelleren. Daarnaast worden optionele beoordelingswaarden ondersteund om de bekwaamheid van resources in vaardigheden te kunnen beoordelen
- Categorieën - Resources kunnen aan categorieën worden gekoppeld
- Rayons - Als u resources aan territoriale regio's wilt toewijzen
- Organisatie-eenheden - Als u een organisatiehiërarchie wilt modelleren
- Resourcetype - Definieert het type van de resource
- Teams - de teams waarvan een resource lid is
- Business Units - de Business Unit waarvan de resource deel uitmaakt
Filteren in het planbord
Op het planbord wordt een lijst met resources en de hieraan toegewezen boekingen weergegeven. In het deelvenster Filter in het planbord kunt u de lijst met resources filteren op hun beperkingen. U kunt bijvoorbeeld het resourcetype Gebruiker in de vervolgkeuzelijst Resourcetype selecteren om de lijst te filteren op recources van het type Gebruiker. Op dezelfde manier kunt u resources op overeenkomende kenmerken of rayons.
Dit is één manier om overeenkomende resources te zoeken. Deze methode wordt gebruikt als u handmatig een lijst met resources wilt weergeven die voldoen aan een specifieke reeks beperkingen.
Beschikbare resources zoeken met de planningsassistent
Onder in het planbord wordt een lijst met vereisterecords weergegeven. U kunt er één selecteren en kiezen om op beschikbaarheid te zoeken. Vervolgens wordt de planningsassistent geopend. In de planningsassistent worden de vastgelegde beperkingen voor de geselecteerde vereisterecord gebruikt om overeenkomende resources te vinden die beschikbaar zijn om te worden geboekt. Alleen resources die voldoen aan de beperkingen voor de vereiste en beschikbaar zijn in de periode die is opgegeven voor de resource, worden weergegeven in het planbord.
Een vergelijkbare ervaring is beschikbaar via een lintknop Boeken die beschikbaar is in de entiteit Vereiste entiteit en andere planbare entiteiten in lijstweergaven of -formulieren in Dynamics 365. Als op Boeken wordt geklikt, wordt Planningsasistent geopend met resources die voldoen aan de beperkingen van de geselecteerde vereisterecord.
In tegenstelling tot in de eerder genoemde modus Planbord, waar u het deelvenster Filter gebruikt om resources handmatig te filteren, worden in de modus Planbord in het deelvenster Filter de resourcebeperkingen uit de vereisterecord automatisch ingevuld en worden alleen overeenkomende resources weergegeven.
Hoe beperkingen worden vergeleken
Beperkingsentiteiten
Sommige beperkingen worden direct als kenmerken opgegeven in de entiteit Resource terwijl andere worden gedefinieerd via relaties. Relaties zijn nodig wanneer een beperking verwijst naar tweede entiteit (hoofdentiteit).
We bekijken een resourcerecord met de bijbehorende beperkingen Rayon en Kenmerk.
Eerst, de hoofdrecords. We hebben rayons opgeslagen in de entiteit Rayon:
Rayon |
---|
New York |
New Jersey |
Seattle |
Wij hebben ook kenmerken in de entiteit Kenmerk:
Kenmerk |
---|
Projectmanager |
Ontwerper |
Financieel analist |
Entiteit Organisatie-eenheid:
Organisatie-eenheid |
---|
Contoso US |
Contoso EU |
Ten slotte is er de entiteit Resource:
Resource | Resourcetype | Organisatie-eenheid |
---|---|---|
Jorge Galt | User | Contoso US |
Abraham McCormick | Contactpersoon | Contoso EU |
In één resourcerecord kunnen beperkingen met één waarde worden vastgelegd, zoals het resourcetype en de organisatie-eenheid hierboven. Als we een resource aan meerdere records van het type Rayon of Kenmerk willen koppelen, moeten we een derde entiteit, een veel-op-veel-relatie (N:N), gebruiken om deze koppelingen op te slaan.
We gebruiken de entiteit Resourcerayon om meerdere rayons voor een resource te koppelen.
Records van type Resourcerayon:
Resource | Rayon |
---|---|
Jorge Galt | New York |
Jorge Galt | New Jersey |
Abraham McCormick | Seattle |
En we gebruiken de entiteit Resourcekenmerk om meerdere kenmerken voor een resource op te slaan.
Records van het type Resourcekenmerk:
Resource | Kenmerk |
---|---|
Jorge Galt | Ontwerper |
Abraham McCormick | Projectmanager |
Abraham McCormick | Financieel analist |
Net als in resourcerecords worden in vereisterecords beperkingen met één waarde en in onderliggende beperkingen met meerdere waarden opgeslagen.
Bekijk de entiteit Vereisten:
Vereiste | Duur | Rayon |
---|---|---|
Taak 1 | 1 uur | New York |
Taak 2 | 1 uur | Seattle |
De entiteit Vereistekenmerk:
Records van het type Vereistekenmerk:
Vereiste | Kenmerk |
---|---|
Taak 1 | Ontwerper |
Taak 2 | Projectmanager |
Taak 2 | Financieel analist |
Soms kan de vereiste een beperking gemodelleerd als een opzoekkenmerk bevatten terwijl in de resource de vergelijkingskenmerken in de N:N-tabel kunnen worden opgeslagen. In het geval van Vereiste is de beperking Rayon bijvoorbeeld een opzoekkenmerk voor de entiteit Rayon. In een vereiste worden een vraag naar werk en het rayon waarin het werk wordt gedaan vastgelegd. Een record van het type Resource kan echter aan een groot aantal records van het type Rayon worden gekoppeld.
Eigenschappenverzamelingen voor beperkingen
Wanneer de gebruiker waarden in het deelvenster Filter selecteert en de knop Zoeken selecteert, worden de waarden verzonden naar de API voor het vergelijken van de resources. Voor beperkingen met meerdere waarden worden in het deelvenster Filter de gegevens uit de hoofdentiteiten Rayon en Kenmerk weergegeven. Dit zijn de geselecteerde waarden in de eigenschappenverzameling voor beperkingen.
Hier volgt een voorbeeld van een eigenschappenverzameling met beperkingen die is verzonden naar de API voor het vergelijken van de resources:
Naam | Value |
---|---|
ResourceType |
User |
Territories |
New York New Jersey |
Hiermee wordt de API voor het vergelijken van de resources geïnstrueerd om resources van het type Gebruiker te vinden die zijn gekoppeld aan het rayon New York of New Jersey.
In de planningsassistent worden de beperkingen eerst opgehaald uit een vereisterecord via de API voor het ophalen van vereistebeperkingen. De opgehaalde beperkingen worden vervolgens vooraf ingevuld in het deelvenster Filter en verzonden naar de API voor het vergelijken van resources.
De API voor het ophalen van vereistebeperkingen zoekt in de vereisterecord en alle relateerde onderliggende beperkingen (zoals Vereistekenmerk). Vervolgens wordt gereageerd met een eigenschappenverzameling voor beperkingen met alle resourcebeperkingen die zijn vastgelegd voor de geselecteerde vereiste.
Hier volgt een voorbeeldrespons van de API voor het ophalen van vereistebeperkingen:
Naam | Value |
---|---|
Requirement |
Taak 2 |
Duration |
1 uur |
Territories |
Seattle |
Characteristics |
Projectmanager Financieel analist |
De API voor het vergelijken van resources ontvangt als invoer de eigenschappenverzameling voor beperkingen en zoekt naar overeenkomende resources. De betreffende resources worden vervolgens weergegeven in het planbord of de planningsassistent.
Een overzicht van de gebruikte entiteiten voor het vergelijken van resources
- Voorbeeldhoofdentiteiten
- Rayon - Wordt naar verwezen als beperking
- Kenmerk - Wordt naar verwezen als beperking
- Resource - Toegewezen aan Boekingen
- Resourcerayon - Koppelt Resources aan Rayons
- Resourcekenmerk - Koppelt Resources aan Kenmerken
- Voorbeeldtransactie-entiteiten
- Vereiste - Legt een vraag naar werk vast en verwijst naar Rayon
- Vereistekenmerk - Koppelt Vereisten aan Kenmerken
Een overzicht van de stromen voor het vergelijken van resources
Handmatige filters. Deelvenster Filter > API voor vergelijken van resources
- Een gebruiker voegt handmatig beperkingen in het deelvenster Filter toe
- De beperkingen worden verzonden naar de API voor het vergelijken van resources
- De gefilterde lijst met resources wordt weergegeven
Vereisten filteren. API voor het ophalen van vereistebeperkingen > Deelvenster Filter > API voor het vergelijken van resources
- Een gebruiker vindt beschikbaarheid voor een vereisterecord (in het planbord of via de knop Boeken op het lint).
- De beperkingen worden opgehaald via de API voor het ophalen van vereistebeperkingen en weergegeven in het deelvenster Filter.
- De beperkingen worden verzonden naar de API voor het vergelijken van resources
- De gefilterde lijst met resources wordt weergegeven
Universal Resource Scheduling uitbreiden met aangepaste beperkingen
Universal Resource Scheduling kan worden uitgebreid met aangepaste resourcebeperkingen. Uitbreidingsbeperkingen werken op dezelfde manier als de ingebouwde beperkingen in Universal Resource Scheduling: ze worden gemodelleerd als kenmerken en relaties in Dynamics 365.
Stapsgewijze instructies met benodigde codevoorbeelden voor elke stap vindt u in Universal Resource Scheduling uitbreiden: resources op taal zoeken - stapsgewijze instructies.
Aangepaste beperkingen
We gebruik taal als een voorbeeldscenario. Een organisatie wil resources filteren op de taal die zij spreken. Daarnaast willen ze de vereiste taal voor een taak vastleggen in de record Vereiste. Deze beperking volgt ongeveer hetzelfde patroon als de ingebouwde beperking Rayon. In een nieuwe hoofdentiteit Taal worden de verschillende talen opgeslagen die een resource kan spreken. Vervolgens kan een record Resource aan vele talen worden gekoppeld via een entiteit voor veel-op-veel-relaties. Voor de entiteit Vereiste maken we twee twee nieuwe opzoekkenmerken: Required Language
en Secondary Language
. Wanneer er beschikbare resources voor een vereiste worden gezocht, worden alleen resources weergegeven die zijn gekoppeld aan de Required Language
of Secondary Language
.
Hier beschrijven we de aangepaste taalbeperking. Eerst hebben we onze nieuwe entiteit Taal:
Language |
---|
Engels |
Spaans |
en onze nieuwe onderliggende veel-op-veel-entiteit Resourcetaal:
Resource | Language |
---|---|
Jorge Galt | Engels |
Abraham McCormick | Engels |
Abraham McCormick | Spaans |
Dit is de entiteit Vereiste met onze twee nieuwe kenmerken Vereiste taal en Secundaire taal die staan voor de talen die de resource moet spreken om te worden gematcht met deze vereiste:
Vereiste | Duur | Rayon | Vereiste taal | Secundaire taal |
---|---|---|---|---|
Taak 1 | 1 uur | New York | Engels | --- |
Taak 2 | 1 uur | Seattle | Spaans | Engels |
Uitbreidbaarheidspunten
Op basis van de stromen voor het vergelijken van resources hierboven zit dit de uitbreidbaarheidspunten die we moeten wijzigen om onze aangepaste beperkingen te laten werken:
API voor het ophalen van vereistebeperkingen
De API moet onze nieuwe kenmerken Vereiste taal en Secundaire taal lezen, zodat onze nieuwe beperkingen worden opgehaald wanneer een gebruiker beschikbaarheid zoekt voor een vereiste.
Deelvenster Filter
Een gebruiker moet een keuze kunnen maken uit een lijst met taalrecords in het deelventer Filter om te filteren op overeenkomende resources. Bij het zoeken van beschikbaarheid voor een vereiste moeten in het deelvenster Filter de vereiste taal en secundaire taal uit de record Vereiste vooraf geselecteerd worden weergegeven in de lijst met talen.
API voor vergelijken van resources
De API krijgt als invoer de nieuwe taalbeperkingen en moet alleen resources retourneren die de geselecteerde talen spreken.
Uitbreidbare query's
Intern gebruiken de API voor het ophalen van vereistebeperkingen (nummer 1 hierboven) en de API voor het vergelijken van resources (nummer 3 hierboven) FetchXML om query's op gegevens uit Dynamics 365 uit te voeren. De API voor het ophalen van vereistebeperkingen geeft meerdere query's uit om de record Vereiste en de onderliggende beperkingen, zoals Vereistekenmerk, op te halen. Met de API voor het vergelijken van resources wordt op basis van de hieraan doorgegeven resourcebeperkingen dynamisch de juiste FetchXML-query gemaakt zodat alleen resourcerecords die overeenkomen met de opgegeven FetchXML-criteria worden geretourneerd uit Dynamics 365.
In de update van juli 2017 voor Universal Resource Scheduling is UFX (Universal FetchXML) geïntroduceerd om ondersteuning te bieden voor de uitgebreide vergelijking van resources. Twee belangrijke functies die UFX toevoegt aan FetchXML: 1) Meerdere resultatensets, één UFX-query kan resultaten uit meerdere entiteiten retourneren, en 2) Dynamische FetchXML, een UFX-query kan FetchXML dynamisch construeren op basis van invoergegevens.
Met UFX kan één query worden gebouwd om een query uit te voeren op een vereisterecord en alle onderliggende records. Met de API voor het ophalen van vereistebeperkingen wordt een aanpasbare UFX-query uitgevoerd om een vereiste en de onderliggende beperkingen op te halen. De query kan worden aangepast om ook records voor aangepaste beperkingen op te halen.
De eigenschappenverzameling voor beperkingen die wordt geretourneerd uit de API voor het ophalen van vereistebeperkingen wordt als invoer doorgegeven aan de API voor het vergelijken van resources. De API voert een aanpasbare UFX-query uit. Met UFX gebruikt de query de invoerbeperkingen om de juiste FetchXML dynamisch te bouwen en de juiste resources te vinden. Deze UFX-query kan ook worden aangepast om direct FetchXML te construeren om alleen resources te retourneren die overeenkomen met de aangepaste beperkingen.
Uitbreidbare sjabloon voor filterindeling en resources
In de update van juli 2017 voor Universal Resource Scheduling is het deelvenster Filter (nummer 2 hierboven) bijgewerkt om aanpassing via een XML-indelingsdefinitie te ondersteunen. De nieuwe indeling ondersteunt besturingselementen voor vervolgkeuzelijsten om een lijst met records uit hoofdentiteiten weer te geven en de standaardbesturingselementen number
, datetime
en checkbox
. De indeling kan worden gewijzigd om gebruikers in staat te stellen records uit aangepaste beperkingsentiteiten te selecteren. De aangepaste beperkingen, zoals die worden geleverd met Universal Resource Scheduling, worden vervolgens als invoer doorgegeven aan de API voor het vergelijken van resources.
Een ander uitbreidingspunt voor clients dat beschikbaar is gemaakt in de update van juli 2017 is de resourcecel. De resourcecel wordt weergegeven door middel van een aanpasbare Handlebars.js-sjabloon. De resultaten van de API voor het vergelijken van resources worden beschikbaar gesteld aan de sjabloon. Door de query aan te passen die wordt uitgevoerd door de API voor het vergelijken van resources, kunnen aangepaste gegevens dus in de resourcecel worden weergegeven.
Stapsgewijze instructies met benodigde codevoorbeelden voor elke stap vindt u in Universal Resource Scheduling uitbreiden: resources op taal zoeken - stapsgewijze instructies.
Aanvullende opmerkingen
- De filterlay-out is momenteel niet configureerbaar wanneer een planbare entiteit een gekoppelde vereistegroep gebruikt in plaats van een resourcevereiste.
Zie ook
Releaseopmerkingen voor Universal Resource Scheduling-uitbreidbaarheid