Condividi tramite


Estendere Universal Resource Scheduling con vincoli di risorsa personalizzati

Universal Resource Scheduling, il motore di pianificazione di Dynamics 365 Field Service e Project Service Automation, include funzionalità estese di corrispondenza delle risorse per prenotare le risorse appropriate per una mansione. Sebbene la soluzione Universal Resource Scheduling sia inclusa in Field Service e Project Service, Universal Resource Scheduling può anche essere utilizzata per pianificare il flusso di lavoro in Dynamics 365. In questo articolo viene descritto il modo in cui i vincoli di risorsa incorporati vengono implementati e come personalizzare Universal Resource Scheduling con vincoli di risorsa personalizzati.

Risorse, requisiti e vincoli

risorse

Il componente principale di Universal Resource Scheduling è l'entità Risorsa (bookableresource). Quando si creano record Prenotazione (bookableresourcebooking), questi vengono associati al record Risorsa. Per garantire la selezione della risorsa corretta, Universal Resource Scheduling include molti filtri e vincoli incorporati in base ai quali categorizzare le risorse. Alcuni esempi: Tipo di risorsa (indica se la risorsa è un utente, un contatto, un account, un'attrezzatura e così via), Caratteristica (per filtrare le risorse in base alle competenze), Area (per assegnare le risorse a specifiche aree geografiche), Unità organizzativa (per definire la gerarchia di un'organizzazione) e molti altri.

Un record Risorsa e i relativi vincoli associati vengono modellati mediante attributi o relazioni con altre entità. Ad esempio, Nome e Tipo di risorsa sono attributi dell'entità Risorsa. Caratteristiche di risorse e Aree risorsa sono relazioni figlio poiché una risorsa può avere più associazioni. Queste entità sono relazioni figlio con l'entità Risorsa E l'entità Caratteristica/Area. Unità organizzativa è un attributo di tipo lookup dell'entità Risorsa per l'entità Unità organizzativa.

Requisiti

Un'altra importante entità in Universal Resource Scheduling è l'entità Requisito di risorsa (msdyn_resourcerequirement). L'entità Requisito registra un requisito per il lavoro da svolgere. Acquisisce parametri sul lavoro richiesto, ad esempio i campi data Da e A, che determinano il periodo di tempo in cui il lavoro può essere svolto: il campo Durata, che indica la durata prevista della mansione; il campo Ubicazione lavoro, che indica l'ubicazione del lavoro richiesto. L'entità Requisito acquisisce anche i vincoli di risorsa per determinare quali risorse possono essere appropriate e prenotate per il requisito. Come l'entità Risorsa, i vincoli di risorsa sono espressi come attributi nell'entità Requisito o come relazioni con altre entità. Area è un attributo di tipo lookup dall'entità Requisito all'entità Area che indica l'area in cui il lavoro deve essere eseguito e, pertanto, è necessario trovare una risorsa nella stessa area. Caratteristica requisito è una relazione figlio che mette in relazione il requisito all'entità Caratteristica e che esprime le competenze necessarie per completare la mansione e, pertanto, il requisito può essere associato solo alle risorse con competenze corrispondenti.

Vincoli di Universal Resource Scheduling

Di seguito vengono elencati i vincoli inclusi in Universal Resource Scheduling:

  • Caratteristiche - Può essere utilizzato per modellare le competenze di una risorsa. Supporta inoltre valori di valutazione facoltativi per valutare le competenze di una risorsa
  • Categorie - Le risorse possono essere associate a categorie
  • Aree - Per assegnare le risorse ad aree geografiche
  • Unità organizzative - Per definire la gerarchia di un'organizzazione
  • Tipo di risorse - Definisce il tipo di risorsa
  • Team - I team di cui una risorsa è membro
  • Business Unit - La Business Unit a cui la risorsa appartiene

Filtrare nella scheda di pianificazione

La scheda di pianificazione visualizza un elenco di risorse e le prenotazioni assegnate a tali risorse. Il pannello Filtro nella scheda di pianificazione consente di filtrare l'elenco delle risorse in base ai relativi vincoli. Ad esempio, selezionando un tipo di risorse Utente nell'elenco a discesa Tipo di risorse l'elenco delle risorse verrà filtrato per visualizzare solo le risorse Utente. Analogamente, puoi filtrare le risorse in base alle caratteristiche o alle aree corrispondenti.

L'utilizzo del pannello Filtro per filtrare le risorse è un metodo per trovare le risorse corrispondenti. Questo metodo è utilizzato quando si desidera visualizzare manualmente un elenco di risorse corrispondenti a uno specifico set di vincoli.

Trovare risorse disponibili con l'assistente di pianificazione

Nella parte inferiore della scheda di pianificazione è disponibile un elenco di record Requisito. Puoi selezionarne uno e scegliere di trovare la disponibilità. Questa azione apre l'assistente di pianificazione. L'assistente di pianificazione utilizza i vincoli acquisiti nel record Requisito selezionato per trovare risorse corrispondenti disponibili e prenotabili. Solo le risorse corrispondenti ai vincoli nel requisito e quelle disponibili nel periodo di tempo specificato nel requisito sono visualizzate nella scheda.

Un'esperienza simile è disponibile mediante il pulsante "Prenota" della barra multifunzione e altre entità pianificabili nelle visualizzazioni o moduli elenco di Dynamics 365. Quando fai clic su "Prenota", si apre l'assistente di pianificazione che visualizza le risorse corrispondenti ai vincoli del record Requisito selezionato.

A differenza della modalità Scheda di pianificazione menzionata in precedenza, in cui si utilizza il pannello Filtro per filtrare manualmente le risorse, nella modalità Assistente di pianificazione, il pannello Filtro fornisce automaticamente i vincoli di risorsa dal record Requisito e visualizza solo le risorse corrispondenti.

Funzionamento della corrispondenza dei vincoli

Entità Vincoli

Alcuni vincoli sono specificati come attributi direttamente nell'entità Risorsa mentre altri sono definiti mediante relazioni. Le relazioni sono necessarie quando un vincolo fa riferimento a un seconda entità master.

Consideriamo un record Risorsa e i relativi vincoli Area e Caratteristica associati.

Innanzitutto, i record master. Abbiamo aree archiviate nell'entità Area:

Area
New York
New Jersey
Seattle

Abbiamo inoltre caratteristiche: nell'entità Caratteristica:

Caratteristica
Responsabile di progetto
Progettazione
Analista finanziario

Entità Unità organizzativa:

Unità organizzativa
Contoso US
Contoso EU

Infine, abbiamo l'entità Risorsa:

Risorsa Tipo di risorsa Unità organizzativa
Jorge Galt User Contoso US
Abraham McCormick Contatto Contoso EU

La funzione di un singolo record Risorsa è acquisire vincoli a valore singolo, ad esempio Tipo di risorsa e Unità organizzativa. Se intendiamo associare una risorsa a più record Area o Caratteristica, dobbiamo utilizzare una terza entità, un relazione molti-a-molti (N:N), per archiviare queste associazioni.

Utilizziamo l'entità Area risorsa per associare più aree per una risorsa.

Record Area risorsa:

Risorsa Area
Jorge Galt New York
Jorge Galt New Jersey
Abraham McCormick Seattle

Per archiviare più caratteristiche per una risorsa, utilizziamo l'entità Caratteristica risorsa.

Record Caratteristica risorsa:

Risorsa Caratteristica
Jorge Galt Progettazione
Abraham McCormick Responsabile di progetto
Abraham McCormick Analista finanziario

Come un record Risorsa, un record Requisito acquisisce vincoli a valore singolo e i record figlio archiviano vincoli multivalore.

Questa è l'entità Requisito:

Requisito Durata Area
Mansione 1 1 ora New York
Mansione 2 1 ora Seattle

L'entità Caratteristica requisito:

Record Caratteristica requisito:

Requisito Caratteristica
Mansione 1 Progettazione
Mansione 2 Responsabile di progetto
Mansione 2 Analista finanziario

Talvolta, il requisito può avere un vincolo modellato come attributo di tipo lookup, mentre la risorsa può archiviare attributi corrispondenti nella tabella N:N. Ad esempio, per Requisito, il vincolo Area è un attributo di tipo lookup dell'entità Area. Un record Requisito acquisisce una richiesta di lavoro e l'area in cui il lavoro verrà svolto. Un record Risorse, tuttavia, può essere associato a molti record Area.

Contenitore delle proprietà Vincoli

Quando l'utente seleziona valori nel pannello Filtro e quindi il pulsante Cerca, i valori vengono inviati all'API di corrispondenza delle risorse. Per i vincoli multivalore, il pannello Filtro visualizza i dati delle entità master Area e Caratteristica e include i valori selezionati nel contenitore delle proprietà Vincoli.

Di seguito è riportato un contenitore di proprietà di esempio con vincoli inviati all'API di corrispondenza delle risorse:

Nome Value
ResourceType User
Territories New York
New Jersey

Ciò indica all'API di corrispondenza delle risorse di trovare le risorse di tipo Utente associate alle aree New York o New Jersey.

Nell'assistente di pianificazione, i vincoli vengono recuperati dapprima da un record Requisito mediante l'API di recupero dei vincoli di requisito. I vincoli recuperati vengono quindi precompilati nel pannello Filtro e inviati all'API di corrispondenza delle risorse.

L'API di recupero dei vincoli di requisito esegue una query sul record Requisito e tutti i vincoli figlio correlati (ad esempio, Caratteristica requisito). L'API genera un contenitore delle proprietà Vincoli che include tutti i vincoli di risorsa acquisiti nel requisito selezionato.

Di seguito è riportata una risposta di esempio dall'API di recupero dei vincoli di requisito:

Nome Value
Requirement Mansione 2
Duration 1 ora
Territories Seattle
Characteristics Responsabile di progetto
Analista finanziario

L'API di corrispondenza delle risorse riceve come input il contenitore delle proprietà Vincoli ed esegue una query sulle risorse corrispondenti. Le risorse corrispondenti sono quindi visualizzate nella scheda di pianificazione o nell'assistente di pianificazione.

Riepilogo delle entità utilizzate per la corrispondenza delle risorse

  • Entità master di esempio
    • Area - Utilizzata come vincolo
    • Caratteristica - Utilizzata come vincolo
    • Risorsa - Assegnata a prenotazioni
    • Area risorsa - Associa risorse ad aree
    • Caratteristica risorsa - Associa risorse a caratteristiche
  • Entità transazionali di esempio
    • Requisito - Acquisisce una richiesta di lavoro e fa riferimento ad Area
    • Caratteristica requisito - Associa requisiti a caratteristiche

Riepilogo dei flussi di corrispondenza delle risorse

  • Filtro manuale. Pannello Filtro > API di corrispondenza delle risorse

    1. Un utente aggiunge manualmente i vincoli nel pannello Filtro
    2. I vincoli sono inviati all'API di corrispondenza delle risorse
    3. Viene visualizzato l'elenco filtrato delle risorse
  • Filtro dei requisiti. API di recupero dei vincoli di requisito > Pannello Filtro > API di corrispondenza delle risorse

    1. Un utente trova la disponibilità di un record Requisito (nella scheda di pianificazione o mediante il pulsante Prenota nella barra multifunzione).
    2. I vincoli vengono recuperati mediante l'API di recupero dei vincoli di requisito e visualizzati nel pannello Filtro.
    3. I vincoli sono inviati all'API di corrispondenza delle risorse
    4. Viene visualizzato l'elenco filtrato delle risorse

Estensione di Universal Resource Scheduling con vincoli personalizzati

Universal Resource Scheduling può essere esteso con vincoli di risorsa personalizzati. L'estensione dei vincoli è simile a quella dei vincoli incorporati in Universal Resource Scheduling, modellati come attributi e relazioni in Dynamics 365.

Una guida dettagliata con esempi di codice necessari per ogni passaggio è descritta in Estensione di Universal Resource Scheduling - Ricerca di risorse per lingua - Una guida dettagliata

Vincoli personalizzati

Come esempio di scenario utilizzeremo "lingua". Un'organizzazione intende filtrare le risorse per lingua parlata dalle stesse. L'organizzazione intende inoltre acquisire nel record Requisito la lingua necessaria per una mansione. Questo vincolo segue un modello simile al vincolo Area incorporato. Una nuova entità master Lingua archivia le differenti lingue che una risorsa può parlare. Un record Risorsa può essere associato a numerose entità Lingua mediante un'entità di relazione molti-a-molti. Nell'entità Requisito, creeremo due nuovi attributi di tipo lookup: Required Language e Secondary Language. Durante la ricerca di risorse disponibili per un requisito, solo le risorse associate a Required Language o Secondary Language verranno visualizzate.

Qui descriveremo il vincolo Lingua personalizzato. Innanzitutto, abbiamo una nuova entità Lingua:

Language
Inglese
Spagnolo

Abbiamo inoltre una nuova entità figlio molti-a-molti Lingua risorsa:

Risorsa Language
Jorge Galt Inglese
Abraham McCormick Inglese
Abraham McCormick Spagnolo

Di seguito è riportata l'entità Requisito con i due nuovi attributi, Lingua necessaria e Lingua secondaria, che rappresentano le lingue che la risorsa deve parlare per essere associata a questo requisito:

Requisito Durata Area Lingua necessaria Lingua secondaria
Mansione 1 1 ora New York Inglese ---
Mansione 2 1 ora Seattle Spagnolo Inglese

Punti di estendibilità

In base ai flussi di corrispondenza delle risorse descritti in precedenza, questi sono i punti di estendibilità che dobbiamo modificare affinché i vincoli personalizzati funzionino:

  1. API di recupero dei vincoli di requisito

    L'API deve leggere i nostri nuovi attributi Lingua necessaria e Lingua secondaria pertanto quando un utente trova la disponibilità per un requisito i nuovi vincoli vengono recuperati.

  2. Pannello Filtro

    Un utente deve essere in grado di selezionare da un elenco di record Lingua nel pannello Filtro per filtrare per le risorse corrispondenti. Durante la ricerca di disponibilità per un requisito, il pannello Filtro visualizza la lingua necessaria e la lingua secondaria del record Requisito preselezionato nell'elenco delle lingue.

  3. API di corrispondenza delle risorse

    L'API otterrà come input i nuovi vincoli Lingua; deve restituire solo le risorse che parlano le lingue selezionate.

Query estendibili

Internamente, l'API di recupero dei vincoli di requisito (n. 1 sopra) e l'API di corrispondenza delle risorse (n. 3 sopra) utilizzano FetchXML per eseguire query sui dati da Dynamics 365. L'API di recupero dei vincoli di requisito invia più query per recuperare il record Requisito e i relativi vincoli figlio (ad esempio, Caratteristica requisito e così via). L'API di corrispondenza delle risorse, basata sui vincoli di risorsa passati come input, creerà dinamicamente la query FetchXML corretta di modo che solo i record Risorsa corrispondenti ai criteri FetchXML specificati siano restituiti da Dynamics 365.

Nell'aggiornamento per Universal Resource Scheduling di luglio 2017, per supportare la corrispondenza delle risorse estendibile, è stato introdotto FetchXML universale (UFX). Due importanti funzionalità che UFX aggiunge a FetchXML sono: 1) Molteplici set di risultati - Una singola query UFX può restituire risultati da più entità e 2) FetchXML dinamico - Una query UFX può creare dinamicamente FetchXML in base ai dati di input.

Con UFX, una singola query può essere creata per eseguire query su un record Requisito e su tutti i relativi record figlio. L'API di recupero dei vincoli di requisito esegue una query UFX personalizzabile per recuperare un requisito e i relativi vincoli figlio. La query può essere personalizzata per recuperare anche record vincolo personalizzati.

Il contenitore delle proprietà Vincoli restituito dall'API di recupero dei vincoli di requisito è passato come input all'API di corrispondenza delle risorse. L'API esegue una query UFX personalizzabile. Con UFX, la query utilizza i vincoli di input per creare dinamicamente il FetchXML corretto e trovare le risorse corrispondenti. Anche questa query UFX può essere modificata per creare il FetchXML appropriato e restituire solo le risorse corrispondenti ai vincoli personalizzati.

Layout filtro estendibile e modello risorsa

Nell'aggiornamento per Universal Resource Scheduling di luglio 2017, il pannello Filtro (n. 2 sopra) è stato aggiornato per supportare la personalizzazione mediante una definizione di layout XML. Il nuovo layout supporta controlli di elenco a discesa per visualizzare un elenco di record di entità matrici e i controlli number, datetime e checkbox tipici. Il layout può essere modificato per consentire agli utenti di selezionare record in entità vincolo personalizzate. I vincoli personalizzati, come quelli inclusi in Universal Resource Scheduling, sono quindi passati come input all'API di corrispondenza delle risorse.

Un altro punto di estendibilità lato client reso disponibile nell'aggiornamento di luglio 2017 è la cella risorse. Il rendering della cella risorse viene eseguito tramite un modello Handlebars.js personalizzabile. Il risultato dell'API di corrispondenza delle risorse diventa disponibile per il modello. Pertanto, personalizzando la query eseguita dall'API di corrispondenza delle risorse, è possibile eseguire il rendering dei dati personalizzati nella cella risorse.

Una guida dettagliata con esempi di codice necessari per ogni passaggio è descritta in Estensione di Universal Resource Scheduling - Ricerca di risorse per lingua - Una guida dettagliata

Note aggiuntive

  • Il layout del filtro non è attualmente configurabile quando un'entità pianificabile utilizza un gruppo di requisiti associato anziché un requisito di risorsa.

Vedi anche

FetchXML universale

Note sulla versione dell'estendibilità di Universal Resource Scheduling