Partajați prin


Extindeți Universal Resource Scheduling cu constrângeri de resurse particularizate

Universal Resource Scheduling, motorul de planificare care stă la baza Dynamics 365 Field Service și Project Service Automation, este livrat cu capacități vaste de potrivire resurse pentru rezervarea resurselor corecte pentru o operațiune. În timp ce soluția Universal Resource Scheduling este livrată cu Field și Project service, Universal Resource Scheduling poate fi utilizată și pentru a planifica orice flux de lucru în Dynamics 365. În acest articol vom arunca o privire la modul în care sunt implementate constrângerile de resurse încorporate și cum să particularizați Universal Resource Scheduling cu constrângeri de resurse particularizate.

Resurse, cerințe și constrângeri

Resurse

La baza Universal Resource Scheduling este entitatea Resursă (bookableresource). În momentul rezervării (bookableresourcebooking) înregistrările sunt create, ele sunt asociate cu o înregistrare resursă. Pentru a asigura selectarea resursei corecte, Universal Resource Scheduling este furnizat cu mai multe filtre și constrângeri încorporate pentru a clasifica resursele. Exemplele sunt: tip de resursă, indicând dacă resursa este un utilizator, persoană de contact, cont, echipament, etc., Caracteristică, pentru filtrarea resurselor în funcție de competențele deținute, Teritoriu, pentru a aloca resursele către regiuni specifice, Unitate organizațională pentru a modela o ierarhie organizațională, și multe altele.

O înregistrare de resursă și constrângerile asociate sunt modelate prin atribute sau relații cu alte entități. De exemplu, numele și tipul resursei sunt atributele din entitatea resursă. Caracteristicile resursei și teritoriile resursei sunt relații fiu deoarece o resursă poate fi asociată cu mai mult de una dintre ele. Aceste entități sunt relațiile fiu atât pentru entitatea resursă cât ȘI pentru entitatea caracteristică/teritoriu. Unitate organizațională este un atribut de căutare de pe entitatea resursă pentru entitatea unitate organizațională.

Cerințe

O altă entitate importantă în Universal Resource Scheduling este entitatea de Cerință de resurse (msdyn_resourcerequirement). Entitatea cerință înregistrează o cerință pentru lucrările de executat. Prezintă parametrii lucrării cerute, cum ar fi câmpurile De la data și La data, limitând intervalul de timp în care activitatea poate fi realizată; câmpul Durată arată cât timp este de așteptat să dureze lucrarea; Locația lucrării indică locul activității necesare. Entitatea Cerință prezintă, de asemenea, constrângerile legate de resurse pentru a limita ce resurse se pot folosi și pot fi rezervate pentru această cerință. Ca și entitate resursă, constrângerile de resurse sunt exprimate ca atribute pe entitatea Cerință sau ca relații cu alte entități. Teritoriul este un atribut de căutare din entitatea Cerință către entitatea teritoriu care indică teritoriul realizării activității și, prin urmare, trebuie să găsim o resursă din același teritoriu. Caracteristica Cerință este o relație fiu asociată cu entitatea caracteristică exprimând abilitățile necesare pentru a finaliza activitatea și, prin urmare, cerința poate fi potrivită numai cu resursele cu abilitățile potrivite.

Constrângerile furnizate în Universal Resource Scheduling

În continuare este prezentată lista cu constrângerile furnizate cu Universal Resource Scheduling:

  • Caracteristici - pot fi folosite pentru a modela aptitudinile resursei. Acceptă de asemenea valori opționale de evaluare pentru a evalua cât de specializată este o resursă pentru fiecare abilitate
  • Categorii - resursele pot fi asociate în categorii
  • Teritorii - pentru a aloca resurse la regiuni teritoriale
  • Unități organizaționale - pentru a modela o ierarhie de organizare
  • Tip de resursă - definește tipul resursei
  • Echipe - Echipa în care o resursă este membru
  • Unități de business - unitatea de business din care face parte resursa

Filtrare în tabloul de planificare

Tabloul de planificare afișează o listă de resurse și rezervările ce le sunt atribuite. Panoul de filtrare din Tabloul de planificare vă permite să filtrați lista de resurse în funcție de constrângerile lor - de exemplu, selectarea unui tip de resursă pentru utilizator din lista verticală tip de resursă va filtra lista de resurse pentru cei care sunt de tip utilizator. În mod similar, aveți posibilitatea să filtrați resursele prin potrivire a caracteristicilor sau teritoriilor.

Utilizarea Panoului de filtrare pentru a filtra resurse este o metodă de a găsi resursele potrivite. Această metodă este utilizată atunci când doriți să afișați manual o listă de resurse potrivite unui set specific de constrângeri.

Găsirea resurselor disponibile cu Asistentul de planificare

În partea de jos a Tabloului de planificare veți găsi o listă de înregistrări cerință. Puteți selecta una dintre ele și alege să găsiți disponibilitatea. Această acțiune deschide asistentul de planificare. Asistentul de planificare utilizează constrângerile colectate din înregistrarea Cerință selectată pentru a potrivi resursele ce sunt disponibile pentru rezervare. Doar resursele care satisfac constrângerile privind cerința și care sunt disponibile în perioada solicitată, interval specificat în regulament sunt prezentate pe talou.

O experiență similară este disponibilă printr-un buton panglică „Rezervare”, disponibil pe entitatea Cerință și alte entități planificabile lista de vizualizări și formulare Dynamics 365. Când faceți clic pe „Carte”, asistentul de planificare este deschis arătând resursele potrivite cu constrângerile de înregistrarea selectată cerința de potrivire.

Spre deosebire de modul menționat anterior tablou de planificare, în care puteți utiliza panoul Filtru pentru filtra manual resurse, în modul asistent de planificare, panoul Filtru completează automat constrângerile legate de resurse din Cerința de înregistrare și sunt afișate doar resursele potrivite.

Cum funcționează potrivirea constrângerilor

Entități constrângeri

Unele constrângeri sunt specificate ca atribute direct pe entitate de resurse, în timp ce altele sunt definite prin relații. Relațiile sunt necesare atunci când o constrângere face referire la o a doua, entitate master.

Să luăm în considerare o înregistrare resursă și constrângerile sale teritoriu și caracteristică.

În primul rând, înregistrările master. Avem teritoriile stocate în entitatea Teritoriului:

Teritoriu
New York
New Jersey
Seattle

Avem, de asemenea, caracteristici în entitatea caracteristică:

Caracteristică
Manager de proiect
Proiectant
Analist financiar

Entitate unitate organizațională

Unitate organizațională
Contoso US
Contoso EU

În cele din urmă, avem entitatea resursă:

Resursă Tip de resursă Unitate organizațională
Jorge Galt User Contoso US
Abraham McCormick Persoană de contact Contoso EU

În timp ce înregistrarea unei singure resurse funcționează pentru constrângerile cu o valoare, ca tipul de resursă și unitatea organizațională. Dacă vrem să asociem o resursă cu multiple înregistrări teritoriu sau caracteristică, trebuie sa folosim o a treia entitate, o relație mulți-la-mulți (N:N), pentru a stoca aceste asociații.

Folosim resursa entitate teritoriu pentru a asocia mai multe teritorii pentru o resursă.

Înregistrări resursă teritoriu:

Resursă Teritoriu
Jorge Galt New York
Jorge Galt New Jersey
Abraham McCormick Seattle

și entitatea caracteristică resursă pentru a stoca mai multe caracteristici pentru o resursă.

Înregistrare caracteristică resursă:

Resursă Caracteristică
Jorge Galt Proiectant
Abraham McCormick Manager de proiect
Abraham McCormick Analist financiar

Similar cu resursa, o înregistrare cerință surprinde constrângeri cu o singură valoare și înregistrările fiu stochează constrângerile multi-valoare.

Iată entitatea Cerință:

Cerință Durată Teritoriu
Operațiunea 1 1 h New York
Operațiunea 2 1 h Seattle

Entitatea caracteristică cerință:

Înregistrări caracteristică cerință

Cerință Caracteristică
Operațiunea 1 Proiectant
Operațiunea 2 Manager de proiect
Operațiunea 2 Analist financiar

Uneori, cerința poate avea o constrângere modelată ca un atribut de căutare, în timp ce resursa poate stoca atribute potrivite pe masa de N:N. De exemplu, pentru cerință, constrângerea teritoriu este un atribut de căutare către entitatea teritoriu. O cerință surprinde o cerere de lucru și teritoriul în care se vor face lucrările. Totuși, o înregistrare de resursă poate fi asociată cu mai multe înregistrări teritoriu.

Saci proprietate constrângeri

Atunci când utilizatorul selectează valori în panoul filtru și selectează butonul căutare, valorile sunt trimise la API potrivire resurse. Pentru constrângeri multi-valoare, panoul Filtru afișează datele din entitățile primare teritoriu și caracteristică și include valorile selectate în sacul de proprietăți constrângeri.

Iată un eșantion de sac cu proprietăți cu constrângerile trimise la API potrivire resurse:

Nume Value
ResourceType User
Territories New York
New Jersey

Acesta spune API potrivire resurse să găsească resurse de tip utilizator care sunt asociate cu teritoriile New York sau New Jersey.

Atunci când în Asistentul de planificare, constrângerile sunt aduse mai întâi dintr-o înregistrare de cerință prin API regăsire cerință constrângeri. Constrângerile regăsite sunt apoi sunt pre-completate în panoul filtru și trimise în API potrivire resurse.

API regăsire cerință constrângeri interoghează înregistrarea cerință și toate constrângerile fiu asociate (de exemplu, Caracteristica cerință). Aceasta răspunde cu un sac de proprietăți constrângeri exprimând toate constrângerile de resurse capturate pe cerința selectată.

Iată este un răspuns eșantion de la API regăsire cerință constrângeri:

Nume Value
Requirement Operațiunea 2
Duration 1 h
Territories Seattle
Characteristics Manager de proiect
Analist financiar

API de potrivire resurse primește ca intrare sacul de proprietăți constrângeri și interogările pentru resurse potrivite. Resursele potrivite sunt apoi prezentate în tabloul de planificare sau Asistentul de planificare.

Rezumarea entităților utilizate pentru potrivire de resurse

  • Exemplu de entități master
    • Teritoriu - reprezentat ca o constrângere
    • Caracteristică - reprezentată ca o constrângere
    • Resursă - Alocată la rezervări
    • Teritoriu resursă - asociază resursele la teritorii
    • Caracteristică resursă - asociază resursele la caracteristici
  • Exemplu de entități tranzacționale
    • Cerință - capturează o cerere pentru lucrare și face referire la teritoriu
    • Caracteristică cerință - asociază cerințele la caracteristici

Rezumarea fluxurilor potrivite de resurse

  • Filtrare manuală Panou filtru > API potrivire resurse

    1. Un utilizator adaugă manual constrângeri în panoul Filtru
    2. Constrângerile sunt trimise la API potrivire resurse
    3. Este afișată listă filtrată de resurse
  • Filtrare cerințe. API regăsire cerință constrângeri > Panou filtru > API potrivire resurse

    1. Un utilizator găsește disponibilitatea pentru o înregistrare cerință (din tabloul de planificare sau din butonul Rezervare din panglică).
    2. Constrângerile sunt regăsite prin intermediul API regăsire cerință constrângeri și sunt prezentate în panoul filtru.
    3. Constrângerile sunt trimise la API potrivire resurse
    4. Este afișată listă filtrată de resurse

Extinderea Universal Resource Scheduling cu contrângeri particularizate

Universal Resource Scheduling poate fi extins cu constrângeri de resurse particularizate. Extinderea constrângerilor funcționează la fel ca cele integrate în Universal Resource Scheduling, acestea sunt modelate ca atribute și relații în Dynamics 365.

Un ghid pas cu pas cu eșantioane de cod pentru fiecare pas este descris în Extinderea Universal Resource Scheduling: Găsirea resurselor după limbă - ghid pas cu pas

Constrângeri personalizate

Vom folosi „limba” ca un scenariu de exemplu. O organizație vrea să filtrați resursele în funcție de limba pe care o vorbesc. Dorește, de asemenea, să captureze pe înregistrarea cerință limba necesară pentru operațiune. Această constrângere urmează un model similar cu constrângerea teritoriu integrată. O nouă entitate primară Limbă stochează diferitele limbi vorbite de o resursă. O înregistrare de resursă poate fi asociată la mai multe limbi prin o entitate relație mulți-la-mulți. Pe entitatea cerință, vom crea două noi atribute de căutare: Required Language și Secondary Language. Când găsim resurse disponibile pentru o cerință, doar resursele asociate cu Required Language sau Secondary Language vor fi indicate.

Aici, vom descrie constrângerea particularizată limbă. În primul rând, ave noua entitate Limbă:

Language
Engleză
Spaniolă

și noua noastră entitate fiu Limbă mulți-la-mulți:

Resursă Language
Jorge Galt Engleză
Abraham McCormick Engleză
Abraham McCormick Spaniolă

Iată entitatea cerință cu cele două atribute noi, limba necesară și limbă secundară reprezentând limbile pe care resursa trebuie să le vorbească pentru a fi potrivită cu această cerință:

Cerință Durată Teritoriu Limbă necesară Limbă secundară
Operațiunea 1 1 h New York Engleză ---
Operațiunea 2 1 h Seattle Spaniolă Engleză

Puncte extensibilitate

Pe baza fluxurilor de potrivire resurse descrise mai sus, acestea sunt punctele de extensibilitate pe care trebuie să le modificăm pentru a asigura funcționarea constrângerilor personalizate:

  1. API regăsire cerință constrângeri

    API trebuie să citească noile atribute Limbă necesară și Limbă secundară, astfel încât atunci când un utilizator găsește disponibilitatea pentru o cerință noile noastre constrângeri sunt regăsite.

  2. Panou filtrare

    Un utilizator ar trebui să fie capabil să selecteze dintr-o listă de înregistrări de limbă din panoul Filtru pentru a filtra pentru resurse potrivite. Atunci când a găsit disponibilitatea pentru o cerință, panoul Filtru ar trebui să arate limba necesară și limba secundară din dosarul de cerințe pre-selectat în lista de limbi.

  3. API potrivire resurse

    API va primi ca intrare constrângerile pentru noua limbă; trebuie să returneze numai resursele vorbind limbile selectate.

Interogări extensibile

Pe plan intern, API regăsire cerință constrângeri (#1 de mai sus) și API potrivire resurse (#3 de mai sus) utilizează FetchXML pentru interogarea datelor din Dynamics 365. API regăsire cerință constrângeri emite mai multe interogări pentru a regăsi înregistrarea cerinței și constrângerile fiu ale acesteia (de exemplu, Caracteristica de cerințe). API potrivire resurse, pe baza constrângerilor de resurse primite ca intrare, va construi dinamic interogarea FetchXML corectă astfel încât numai înregistrările de resurse ce corespund criteriilor specificate de FetchXML să fie returnate de Dynamics 365.

În actualizarea din iulie 2017 pentru Universal Resource Scheduling, pentru a accepta potrivirea extensibilă de resurse, a fost introdus Universal FetchXML (UFX). Cele două caracteristici importante adăugate de UFX la FetchXML sunt: 1) mai multe seturi de rezultate, o singură interogare UFX poate returna rezultate din mai multe entități, și 2) FetchXML dinamic, o interogare UFX poate construi dinamic FetchXML pe baza datelor de intrare.

Cu UFX, o singură interogare poate fi construită pentru a interoga pentru o înregistrare de cerință și înregistrările sale fiu. API regăsire cerință constrângeri execută o interogare UFX personalizată pentru a prelua o cerință și constrângerile fiu ale acesteia. Interogarea poate fi personalizată pentru a regăsi și înregistrări particularizate de constrângere.

Sacul de proprietăți constrângeri returnat de API regăsire cerință constrângeri este trecut ca intrare pentru API potrivire de resurse. API execută o interogare UFX personalizabilă. Cu UFX, interogarea utilizează constrângerile de intrare pentru a construi dinamic FetchXML corect pentru a găsi resursele potrivite. Și această interogare UFX poate fi modificată pentru a construi FetchXML corespunzătoare pentru doar a returna resurse potrivite constrângerilor personalizate.

Aspect filtru extensibil și șablonul de resurse

În actualizarea din iulie 2017 pentru Universal Resource Scheduling, panoul filtru (#2 de mai sus) a fost actualizat pentru a accepta personalizarea printr-o definire de aspect XML. Noul aspect susține controalele verticale pentru a afișa o listă de înregistrări de la entitățile maestru, și controalele tipice number, datetime și checkbox . Aspectul poate fi modificat pentru a permite utilizatorilor să selecteze înregistrările din entitățile constrângere particularizate. Constrângerile personalizate, cum ar fi cele livrate cu Universal Resource Scheduling, sunt apoi trecute ca date de intrare pentru potrivire resurse API.

Un alt client cu un punct de extensibilitate pus la dispoziție din iulie 2017 actualizarea este o celulă de resurse. Celula de resurse este redată printr-un șablon de Handlebars.js. Rezultatele de la API potrivire rezultate sunt puse la dispoziție în șablon. Prin urmare, prin particularizarea interogării executate are o mulțime de API potrivire resurse, datele particularizate pot fi prestate în celula de resurse.

Un ghid pas cu pas cu eșantioane de cod pentru fiecare pas este descris în Extinderea Universal Resource Scheduling: Găsirea resurselor după limbă - ghid pas cu pas

Note suplimentare

  • Aspectul filtrului nu este configurabil în prezent atunci când o entitate care se poate planifica folosește un grup de cerințe asociat în locul unei cerințe de resurse.

Consultați și

FetchXML universal

Universal Resource Scheduling note de lansare privind extensibilitatea