Eksempel: Utvid Universal Resource Scheduling med en egendefinert språkbegrensning
Denne veiledningen er et tillegg til Forstå og tilpasse ressurssamsvar i Universal Resource Scheduling
I denne trinnvise veiledningen skal vi utvide Universal Resource Scheduling-ressursene med en Language
-betingelse. Tenk deg en organisasjon som ønsker å filtrere ressurser etter språkene de snakker. De vil også registrere på Requirement
-oppføringen språket som kreves for jobben. Denne begrensningen følger et lignende mønster til den innebygde Territory
-betingelsen. Et nytt hovedenhets-Language
lagrer de ulike språkene en ressurs kan snakke. En Resource
-oppføring kan knyttes til mange Languages
via en mange-til-mange-relasjonsenhet. På Requirement
-enheten skal vi modellere dette ved å opprette to nye oppslagsattributter: Primary Language
og Secondary Language
. Når du søker etter tilgjengelige ressurser for et krav, vil bare ressurser som er knyttet til enten Primary Language
eller Secondary Language
, vises.
Opprette de nye enhetene og relasjonene
I denne delen skal vi opprette det nye skjemaet for hovedenheten for Language
og oppdatere Resource
- og Requirement
- enhetene med de tilsvarende relasjonene til den nye Language
-enheten.
Opprette en ny utgiver
Opprette en ny utgiver under Tilpassinger i Dynamics 365
Fyll ut skjemaet for ny utgiver med følgende detaljer:
Felt Value Visningsnavn Language Navn språk Prefiks lang Klikk Lagre og lukk
Opprett en ny løsning
Opprette en ny løsning under Tilpassinger i Dynamics 365
Fyll ut skjemaet for ny løsning med følgende detaljer:
Felt Value Visningsnavn Language Navn Language Utgiver Language Versjon 1.0.0.0 Klikk Lagre
Opprette språkenheten
I opprett en ny enhet i språkløsningen.
Fyll ut Ny enhet-skjemaet med følgende detaljer:
Felt Value Visningsnavn Language Flertallsnavn Språk Navn lang_language ( lang_
-prefikset fylles ut automatisk og er skrivebeskyttet)Klikk Lagre
Opprette mange-til-mange-relasjonen fra ressursenheten til språkenheten
Opprette en ny mange-til-mange-relasjon i språkenheten
Fyll ut skjemaet for ny relasjon med følgende detaljer:
Felt Value Gjeldende entitet Visningsalternativ Bruk flertallsnavn Annen entitet Entitetsnavn Ressurs som kan reserveres Klikk Lagre og lukk
Lukk skjemaet for språkenhet
Opprette relasjonene fra kravenheten til språkenheten
I språkløsningen legger du til eksisterende ressurskravenhet i løsningen (Hvis det vises en dialogboks med Mangler obligatoriske komponenter, velg Nei, ikke ta med nødvendige komponenter.)
Opprett et nytt felt i ressurskravenheten
Fyll ut Nytt felt-skjemaet med følgende detaljer:
Felt Value Visningsnavn Primært språk Datatype Oppslag Måloppføringstype Language Klikk Lagre og lukk
Opprett et nytt felt i ressurskravenheten
Fyll ut Nytt felt-skjemaet med følgende detaljer:
Felt Value Visningsnavn Sekundært språk Datatype Oppslag Måloppføringstype Language Klikk Lagre og lukk
Oppdatere hovedskjemaet for krav
- I ressurskravenheten legger du til eksisterende informasjonsskjema i enhetens underkomponenter (Hvis det vises en dialogboks med Mangler obligatoriske komponenter, velg Nei, ikke ta med nødvendige komponenter.)
- I informasjonsskjemaet bruker du Feltutforsker til å legge til to nye attributter, Primært språk og Sekundær språk i skjemaet, slik at brukere kan angi denne informasjon når de oppretter krav
- Klikk Lagre
- Klikk Publiser
- Du kan lukke skjemaredigeringsprogrammet
Sammendrag
I trinnene over opprettet vi den nye språkenheten. Deretter la vi til nye relasjoner med ressurs- og kravenhetene. Ressurser kan være relatert til flere språk, ettersom vi la til en mange-til-mange-relasjon mellom språket og ressursen. Krav kan relateres til to språk, ettersom vi la til to oppslagsattributter på kravenheten som peker på den nye språkenheten.
Legge til data
Bruk Avansert søk for å legge til nye oppføringer i språkentiteten. Du kan deretter knytte ressursoppføringer til de nye språkoppføringene ved å åpne en ressursoppføring og navigere relasjonen språk i navigasjonsfeltet. For kravoppføringer kan du fylle ut de nye primærspråk- og sekundærspråkfeltene på kravskjemaet.
Tilpasse planleggingstavlen
For å filtrere på ressurser på planleggingstavlen med den nye språkbegrensningen oppdaterer vi spørringen Hent ressurser og filteroppsettkonfigurasjonsoppføringene.
Filteroppsettkonfigurasjon
Tips
For trinnene nedenfor er det nyttig å bruke et tekstredigeringsprogram som støtter XML-syntaksutheving for å utføre endringene, og deretter lime inn endringene i redigeringsprogrammet Universal Resource Scheduling.
Filteroppsettkonfigurasjonen er en XML-oppsettdefinisjon for å tilpasse oppsettet i filterpanelet.
Merk
I denne øvelsen skal vi fjerne alle standardfiltrene som følger med Universal Resource Scheduling, fra panelet Filter og legge til språk som det eneste tilgjengelige filteret.
<control type="combo" source="entity" key="Languages" inactive-state="1" label-id="Languages" entity="lang_language" multi="true" />
control
-element legger til en ny kontroll i panelet Filter. Her er beskrivelsen for hvert attributt:
Navn | Beskrivelse |
---|---|
type |
Typen filterkontroll. En combo -kontroll viser en rullegardinliste med verdier som du kan velge blant |
source |
Kilden til verdiene for rullegardinkontrollen. entity -kilden viser enhetsoppføringene i rullegardinlisten |
key |
Nøkkelen som brukes til å lagre de valgte verdiene i egenskapssamlingen for begrensninger |
inactive-state |
Den inaktive statecode for denne enheten. Denne brukes til å utelate inaktive oppføringer fra rullegardinlisten |
label-id |
Den lokaliserte etikett som skal brukes for denne kontrollen |
entity |
Enhetens oppføringer vises i rullegardinlisten |
multi |
Konfigurerer rullegardinlisten for å tillate å velge en enkelt oppføring eller flere oppføringer |
Filteroppsett:
<?xml version="1.0" encoding="utf-8" ?>
<filter>
<controls>
<control type="combo" source="entity" key="Languages" inactive-state="1" label-id="Languages" entity="lang_language" multi="true" />
</controls>
</filter>
Opprette en ny språktavle
For å holde disse endringene isolert vi vil opprette en helt ny separat planleggingstavle og implementere endringene, men du kan alltid gjøre disse endringene på standard planleggingstavle, slik at andre planleggingstavler automatisk kan arve disse endringene.
- I Dynamics 365 i det øverste navigasjonsfeltet går du til Ressursplanlegging > Planleggingstavle
- Øverst til høyre klikker du +-tegnet for å opprette en ny planleggingstavle
- Gi navn til det nye tavlespråket
- Nederst i dialogboksen klikker du Legg til. Den nye tavlen opprettes.
Oppdater filteroppsettet for planleggingstavlen
Deretter skal vi opprette en ny konfigurasjonsoppføring som lagrer filteroppsett og spørringer som brukes av planleggingstavlen, og deretter kobler vi den nylig opprettede planleggingstavlen til den nye konfigurasjonsoppføringen. Det finnes flere måter å gjøre dette på, men dette er den raskeste:
- I øvre høyre hjørne dobbeltklikker du på språkkategorien
- Bla ned til Generelle innstillinger > Andre innstillinger
- Finn Filteroppsett-feltet, klikk på knappen til høyre for å åpne redigeringsverktøyet
- Oppdater Verdi-feltet med Filteroppsett-koden over, og klikk på Lagre som.
- Skriv inn "Språkfilteroppsett" i Navn-feltet, og klikk på Lagre. Dette oppretter en ny konfigurasjonsoppføring og kobler denne planleggingstavlen til oppføringen.
- Nederst i dialogboksen klikker du Bruk.
Tavlen lastes på nytt, og du vil se filterpanelet til venstre med nytt oppsett. Bare språkfilteret vil være tilgjengelig. Filtrering fungerer ikke ennå, fordi vi må oppdatere spørringen Hent ressurser for å dra nytte av det nye filteret.
Konfigurasjon av spørringen Hent ressurser
Tips
For trinnene nedenfor er det nyttig å bruke et tekstredigeringsprogram som støtter XML-syntaksutheving for å utføre endringene, og deretter lime inn endringene i redigeringsprogrammet Universal Resource Scheduling.
Konfigurasjon av spørringen Hent ressurser er en UFX-spørring som brukes av ressurssamsvars-API-en. Den tar som inndata verdiene som angis i filterpanelet, og konstruerer riktig FetchXML dynamisk for å finne samsvarende ressurser.
Under er de nye snuttene som legges til spørringen Hent ressurser for å samsvare og sortere etter ressursspråkene.
Legger til koblinger fra bookableresource
til lang_language
<link-entity name="lang_lang_language_bookableresource" from="bookableresourceid" to="bookableresourceid" alias="lang_primary" link-type="outer" ufx:if="$input/Languages/bag[1]">
<attribute name="lang_languageid" alias="lang_primary" groupby="true" />
<filter>
<condition attribute="lang_languageid" operator="eq">
<ufx:value select="$input/Languages/bag[1]/@ufx-id" attribute="value" />
</condition>
</filter>
</link-entity>
<link-entity name="lang_lang_language_bookableresource" from="bookableresourceid" to="bookableresourceid" alias="lang_secondary" link-type="outer" ufx:if="$input/Languages/bag[2]">
<attribute name="lang_languageid" alias="lang_secondary" groupby="true" />
<filter>
<condition attribute="lang_languageid" operator="eq">
<ufx:value select="$input/Languages/bag[2]/@ufx-id" attribute="value" />
</condition>
</filter>
</link-entity>
<link-entity name="lang_lang_language_bookableresource" from="bookableresourceid" to="bookableresourceid" alias="lang_others" link-type="outer" ufx:if="$input/Languages/bag[position() > 2]">
<filter>
<condition attribute="lang_languageid" operator="in">
<ufx:apply select="$input/Languages/bag[position() > 2]">
<value>
<ufx:value select="@ufx-id" />
</value>
</ufx:apply>
</condition>
</filter>
</link-entity>
<filter type="or">
<condition entityname="lang_primary" attribute="lang_languageid" operator="not-null" ufx:if="$input/Languages/bag[1]" />
<condition entityname="lang_secondary" attribute="lang_languageid" operator="not-null" ufx:if="$input/Languages/bag[2]" />
<condition entityname="lang_others" attribute="lang_languageid" operator="not-null" ufx:if="$input/Languages/bag[position() > 2]" />
</filter>
Verdiene som velges i Filter-panelet, overføres som inndata til spørringen og er tilgjengelige i XPath
$input
-variabelen
Spørringen Hent ressurser bruker FetchXML til å spørre Resource (bookableresource)
-enheten. Vi bruker FetchXML link-entity
-elementet til å returnere bare ressurser som er knyttet til språkoppføringer som er valgt i filterpanelet. For å støtte visning av de samsvarende språkene og sortere etter primær- eller sekundærspråk, som beskrives senere i delen Ressurscellemal, bruker vi flere link-entity
-koblinger.
Her er beskrivelsen for hvert element
og attribute
:
Navn | Beskrivelse |
---|---|
link-entity |
Opprette en kobling til mange-til-mange-relasjonen mellom ressurs- og språkenhetene |
ufx:if |
Eksporter bare dette FetchXML-elementet (link-entity ) hvis XPath-uttrykket i dette attributtet returnere en verdi |
attribute |
Returnerer det samsvarende primær- eller sekundærspråket |
filter og condition |
Filtrerer mange-til-mange-relasjonsoppføringene til bare de som samsvarer med de angitte språk-ID-ene |
ufx:value og select |
Genererer utdataresultater for XPath-uttrykket i select -attributtet |
ufx:apply og select |
Sender ut de underordnede FetchXML-elementene for hvert resultatet som returneres fra XPath-uttrykket i select -attributtet |
value |
Inneholder IDen for en språkoppføring |
Fastsetter sorteringsrekkefølgen for en ressurs
Når vi har hentet samsvarende ressurser, tilordner vi en ny lang_order
-egenskap for å fastsette sorteringsrekkefølgen basert på de tilordnede språkene for hver ressurs.
<bag>
<lang_order ufx:select="iif(lang_primary and lang_secondary, 1, iif(lang_primary, 2, iif(lang_secondary, 3, 4)))" />
</bag>
Her er beskrivelsen for hvert element
og attribute
:
Navn | Beskrivelse |
---|---|
lang_order |
Oppretter en ny egenskap i hver ressurs returnert fra FetchXML-spørringen lang_order |
ufx:select |
Tilorder resultater for XPath-uttrykket i dette attributtet til lang_order -egenskapen. Egenskapene lang_primary og lang_secondary som ble hentet tidligere i spørringen, brukes sammen med XPath iif -funksjonen til å fastsette ressurssamsvarsrekkefølgen. |
Ordne resultatene
<Resources ufx:select="order(Resources, 'lang_order')" />
UFX-spørringer behandles i rekkefølge. Når ressursene hentes via FetchXML, tilordnes resultatene til Resources
-egenskapen. Vi sorterer resultatene basert på lang_order
-egenskapen som vi la til tidligere, og tilordner de sorterte resultatene for Resources
-egenskapen.
Her er beskrivelsen for hvert element
og attribute
:
Navn | Beskrivelse |
---|---|
Resources |
Tilordne Resources -egenskapen på nytt |
ufx:select |
Tilorder resultater for XPath-uttrykket i dette attributtet til Resources -egenskapen. XPath order -funksjonen brukes til å ordne Resources -listen etter lang_order -egenskapen. |
Merk
Standardspørringen Hent ressurser som følger med Universal Resource Scheduling, er en stor spørring som støtter alle ressursbegrensninger som er inkludert i Universal Resource Scheduling. I denne øvelsen bruker vi bare et delsett av standardspørringen og legger til språk som det eneste filteret.
<?xml version="1.0" encoding="utf-8" ?>
<bag xmlns:ufx="https://schemas.microsoft.com/dynamics/2017/universalfetchxml">
<Resources ufx:source="fetch">
<fetch mapping="logical" aggregate="true">
<entity name="bookableresource">
<attribute name="bookableresourceid" alias="bookableresourceid" groupby="true"/>
<attribute name="name" alias="name" groupby="true"/>
<attribute name="calendarid" alias="calendarid" groupby="true"/>
<attribute name="resourcetype" alias="resourcetype" groupby="true"/>
<attribute name="msdyn_startlocation" alias="startlocation" groupby="true"/>
<!-- Language join -->
<link-entity name="lang_lang_language_bookableresource" from="bookableresourceid" to="bookableresourceid" alias="lang_primary" link-type="outer" ufx:if="$input/Languages/bag[1]">
<attribute name="lang_languageid" alias="lang_primary" groupby="true" />
<filter>
<condition attribute="lang_languageid" operator="eq">
<ufx:value select="$input/Languages/bag[1]/@ufx-id" attribute="value" />
</condition>
</filter>
</link-entity>
<link-entity name="lang_lang_language_bookableresource" from="bookableresourceid" to="bookableresourceid" alias="lang_secondary" link-type="outer" ufx:if="$input/Languages/bag[2]">
<attribute name="lang_languageid" alias="lang_secondary" groupby="true" />
<filter>
<condition attribute="lang_languageid" operator="eq">
<ufx:value select="$input/Languages/bag[2]/@ufx-id" attribute="value" />
</condition>
</filter>
</link-entity>
<link-entity name="lang_lang_language_bookableresource" from="bookableresourceid" to="bookableresourceid" alias="lang_others" link-type="outer" ufx:if="$input/Languages/bag[position() > 2]">
<filter>
<condition attribute="lang_languageid" operator="in">
<ufx:apply select="$input/Languages/bag[position() > 2]">
<value>
<ufx:value select="@ufx-id" />
</value>
</ufx:apply>
</condition>
</filter>
</link-entity>
<filter type="or">
<condition entityname="lang_primary" attribute="lang_languageid" operator="not-null" ufx:if="$input/Languages/bag[1]" />
<condition entityname="lang_secondary" attribute="lang_languageid" operator="not-null" ufx:if="$input/Languages/bag[2]" />
<condition entityname="lang_others" attribute="lang_languageid" operator="not-null" ufx:if="$input/Languages/bag[position() > 2]" />
</filter>
<link-entity name="systemuser" from="systemuserid" to="userid" link-type="outer">
<attribute name="systemuserid" alias="systemuserid" groupby="true" />
<attribute name="entityimage_url" alias="userimagepath" groupby="true"/>
</link-entity>
<link-entity name="contact" from="contactid" to="contactid" link-type="outer">
<attribute name="contactid" alias="contactid" groupby="true"/>
<attribute name="entityimage_url" alias="contactimagepath" groupby="true"/>
</link-entity>
<link-entity name="account" from="accountid" to="accountid" link-type="outer">
<attribute name="accountid" alias="accountid" groupby="true"/>
<attribute name="entityimage_url" alias="accountimagepath" groupby="true"/>
</link-entity>
</entity>
</fetch>
<bag>
<imagepath ufx:select="accountimagepath | contactimagepath | userimagepath" />
<accountimagepath ufx:select="$null" />
<contactimagepath ufx:select="$null" />
<userimagepath ufx:select="$null" />
<lang_order ufx:select="iif(lang_primary and lang_secondary, 1, iif(lang_primary, 2, iif(lang_secondary, 3, 4)))" />
</bag>
</Resources>
<Resources ufx:select="order(Resources, 'lang_order')" />
</bag>
Oppdatere spørringen Hent ressurser på planleggingstavlen
- I øvre høyre hjørne dobbeltklikker du på språkkategorien
- Bla ned til Generelle innstillinger > Andre innstillinger
- Finn feltet med spørringen Hent ressurser, og klikk på knappen til høyre for å åpne redigeringsverktøyet
- Oppdater Verdi-feltet med spørringen Hent ressurser-koden over, og klikk på Lagre som
- Skriv inn "Språkressursspørring" i Navn-feltet, og klikk på Lagre. Dette oppretter en ny konfigurasjonsoppføring og kobler denne planleggingstavlen til oppføringen.
- Nederst i dialogboksen klikker du Bruk.
Tavlen laster inn den oppdaterte konfigurasjonen på nytt. Filtrering fungerer nå. Hvis du har opprettet språkoppføringer og tilknyttet dem til ressursoppføringer, vil du nå kunne filtrere ressurser etter de tilhørende språkene.
Sammendrag
I trinnene over endret vi Filter-panelet for å vise en filterkontroll for språkenheten. Vi endret også spørringen Hent ressurser, slik at den samsvarer med ressurser som er tilknyttet de valgte språkoppføringene. Når en bruker velger verdier i filterkontrollen og klikker Søk, sendes verdiene i spørringen, og FetchXML spørringen returnerer bare tilsvarende ressurser.
Tilpasse planleggingsassistenten
Vi må tilpasse konfigurasjonene for oppsettet for filter for planleggingsassistent og spørringen Hent begrensninger for å bruke de nye språkbegrensningene i planleggingsassistenten.
I motsetning til planleggingstavletilpassingene, der hver tavle kan tilpasses individuelt, påvirker planleggingsassistenttilpassingene alle tavler der planleggingsassistenten brukes. Planleggingsassistenttilpassingene kan være spesifikke for en planleggbar type eller for alle typer. I dette eksemplet skal vi tilpasse planleggingsassistenten til alle typer.
Konfigurasjon av oppsettet for filter for planleggingsassistent
Tips
For trinnene nedenfor er det nyttig å bruke et tekstredigeringsprogram som støtter XML-syntaksutheving for å utføre endringene, og deretter lime inn endringene i redigeringsprogrammet Universal Resource Scheduling.
Konfigurasjonen av oppsettet for filter for planleggingsassistent, som filteroppsettet for planleggingstavlen, definerer oppsettet for kontrollene i filterpanelet. Siden planleggingsassistenten bruker flere filtre enn planleggingstavlen, som starttidspunkt, sluttidspunkt, varighet osv., brukes et annet oppsett.
Merk
For denne øvelsen bruker vi bare et delsett av standardfiltrene som leveres i Universal Resource Scheduling fra konfigurasjonen av oppsettet for filter for planleggingsassistent og legger til språkrullegardinlisten som det eneste tilgjengelige filteret.
Filteret vi legger til i oppsettet, er det samme som ovenfor i Filteroppsettkonfigurasjon. De andre kontrollene er nødvendige for å endre søkeparameterne i planleggingsassistenten.
Hele filteroppsettet for planleggingsassistent
<?xml version="1.0" encoding="utf-8" ?>
<filter>
<controls>
<control type="twocolumn">
<control type="combo" source="optionset" key="Requirement/msdyn_worklocation" label-id="ScheduleAssistant.West.settingsform.WorkLocation" entity="msdyn_resourcerequirement" attribute="msdyn_worklocation">
<bind property="disabled" to="Requirement/InitialWorkLocation" operator="eq" value="690970002" />
<data>
<value id="690970000" />
<value id="690970001" />
<value id="690970002" />
</data>
</control>
<control type="duration" key="Requirement/msdyn_remainingduration" label-id="ScheduleAssistant.West.settingsform.AvailableDuration" />
</control>
<control type="distance" key="Requirement/Radius" label-id="ScheduleAssistant.West.settingsform.Radius" min="1">
<bind property="disabled" to="Requirement/msdyn_worklocation" operator="eq" value="690970002" />
</control>
<control type="datetime" key="Requirement/msdyn_fromdate" label-id="ScheduleAssistant.West.settingsform.StartDay">
<bind property="disabled" to="Requirement/RealTimeMode" operator="eq" value="true" />
<bind property="max" to="Requirement/msdyn_todate" operator="eq" />
</control>
<control type="datetime" key="Requirement/msdyn_todate" label-id="ScheduleAssistant.West.settingsform.EndDay">
<bind property="min" to="Requirement/msdyn_fromdate" operator="eq" />
</control>
<control type="combo" source="entity" key="Languages" inactive-state="1" label-id="Languages" entity="lang_language" multi="true" />
</controls>
</filter>
Oppdatere filteroppsettet for planleggingsassistenten
- I øvre høyre hjørne dobbeltklikker du på språkkategorien
- Klikk på Åpne standardinnstillinger øverst til høyre
- Bla til delen Planleggingstyper og velg Ingen i listen til venstre
- Finn feltet Oppsett for filter for planleggingsassistent, og klikk på knappen til høyre for å åpne redigeringsverktøyet
- Oppdater Verdi-feltet med Oppsett for filter for planleggingsassistent-koden over, og klikk på Lagre som.
- Skriv inn "Filteroppsett for planleggingsassistent for språk" i Navn-feltet, og klikk på Lagre. Dette oppretter en ny konfigurasjonsoppføring og kobler denne planleggingstavlen til oppføringen.
- Nederst i dialogboksen klikker du Bruk.
Tavlen lastes på nytt. Deretter skal vi endre spørringen Hent begrensninger før vi kan bruke tidsplanassistenten med de nye språkbegrensningene, slik at språkene som er angitt i kravet, er en del av planleggingsassistentsøket.
Konfigurasjon av spørringen Hent begrensninger
Tips
For trinnene nedenfor er det nyttig å bruke et tekstredigeringsprogram som støtter XML-syntaksutheving for å utføre endringene, og deretter lime inn endringene i redigeringsprogrammet Universal Resource Scheduling.
Konfigurasjon av spørringen Hent begrensninger er en UFX-spørring som brukes av API for henting av kravbegrensninger. Den bruker som inndata ID-en til en kravoppføring (valgt i brukergrensesnittet) og returnerer kravoppføringen og alle underordnede oppføringer.
Merk
Standardspørringen Hent begrensninger som følger med Universal Resource Scheduling, er en stor spørring som støtter alle kravbegrensningene som er inkludert i Universal Resource Scheduling. I denne øvelsen bruker vi bare et delsett av standardspørringen og legger til språk som det eneste filteret.
<Languages ufx:select="lookup-to-list(Requirement/lang_primarylanguage, Requirement/lang_secondarylanguage)" />
UFX-spørringer behandles i rekkefølge. Spørringen Hent begrensninger bruker FetchXML til å spørre Requirement (msdyn_resourcerequirement)
-enheten, og tilordner resultatet, en kravoppføring, til Requirement
-egenskapen. Vi legger til en ny egenskap, Languages
, i egenskapssamlingen for begrensninger som kombinerer begge attributtene, Primærspråk og Sekundærspråk, i en enkeltliste over enheter (EntityCollection). Dette er nødvendig siden vi viser språkkontrollen i filterpanelet som en liste over oppføringer. Et alternativ er å opprette to separate kontroller i filterpanelet for to attributter.
Her er beskrivelsen for hvert element
og attribute
:
Navn | Beskrivelse |
---|---|
Languages |
Opprette en ny egenskap i egenskapssamlingen Languages for resultatbegrensninger |
ufx:select |
Tilorder resultater for XPath-uttrykket i dette attributtet til Languages -egenskapen. lang_primarylanguage - og lang_secondarylanguage -egenskapene, som ble hentet tidligere i spørringen og er tilgjengelige i Requirement -egenskapen, sendes til lookup-to-list XPath-funksjonen som konverterer flere lookup -egenskaper til én enkelt list (EntityCollection) |
Spørringen Hent begrensninger:
<?xml version="1.0" encoding="utf-8" ?>
<bag xmlns:ufx="https://schemas.microsoft.com/dynamics/2017/universalfetchxml">
<Requirement ufx:source="fetch" ufx:select="bag[1]">
<fetch top="1">
<entity name="msdyn_resourcerequirement">
<all-attributes />
<filter>
<condition attribute="statecode" operator="eq" value="0" />
<condition attribute="msdyn_resourcerequirementid" operator="eq">
<ufx:value select="$input/@ufx-id" attribute="value" />
</condition>
</filter>
</entity>
</fetch>
<bag>
<InitialWorkLocation ufx:select="msdyn_worklocation" />
</bag>
</Requirement>
<Languages ufx:select="lookup-to-list(Requirement/lang_primarylanguage, Requirement/lang_secondarylanguage)" />
</bag>
Oppdatere spørringen Hent begrensninger
- I øvre høyre hjørne dobbeltklikker du på språkkategorien
- Klikk på Åpne standardinnstillinger øverst til høyre
- Bla til delen Planleggingstyper og velg Ingen i listen til venstre
- Finn feltet for spørringen Hent begrensninger for planleggingsassistent, og klikk på knappen til høyre for å åpne redigeringsverktøyet
- Oppdater Verdi-feltet med spørringen Hent ressurser-koden over, og klikk på Lagre som
- Skriv inn "Språkbegrensningsspørring" i Navn-feltet, og klikk på Lagre. Dette oppretter en ny konfigurasjonsoppføring og kobler denne planleggingstavlen til oppføringen.
- Finn feltet for spørringen Hent ressurser for planleggingsassistenten, og velg språkbegrensningsspørringen vi opprettet tidligere for planleggingstavletilpassingene
- Nederst i dialogboksen klikker du Bruk.
Tavlen laster inn den oppdaterte konfigurasjonen på nytt. Planleggingsassistentfiltrering vil nå fungere. Hvis du har opprettet språkoppføringer og tilknyttet dem til kravoppføringer, vil du nå kunne velge en kravoppføring nederst på planleggingstavlen. Klikk på Søk etter tilgjengelighet for å starte planleggingsassistenten, og se bare ressurser som samsvarer med språkene som er lagret på kravet.
Konfigurasjon av ressurscellemal
Tips
For trinnene nedenfor er det nyttig å bruke et tekstredigeringsprogram som støtter HTML-syntaksutheving for å utføre endringene, og deretter lime inn endringene i redigeringsprogrammet Universal Resource Scheduling.
Konfigurasjon av ressurscellemal er en håndtak-mal som brukes til å gjengi innhold i ressurscellen. Utdataene fra spørringen Hent ressurser er tilgjengelig for malen.
Vi endrer standardressursmalen for å vise en grønn ✔✱-indikator hvis ressursen samsvarte med primær- og sekundærspråkene, og en grønn ✔-indikator hvis ressursen bare samsvarte med primærspråket, og en gul ✔-indikator hvis ressursen bare samsvarte med sekundærspråket.
{{#if lang_primary}}
<span style='color:green;'>✔{{#if lang_secondary}} ✱{{/if}}</span>
{{else if lang_secondary}}
<span style='color:#ffe700;'>✔</span>
{{/if}}
lang_primary
- og lang_secondary
-egenskapene returneres fra vår egendefinerte spørring Hent ressurser som vi satte opp ovenfor. Se håndtak-nettstedet for dokumentasjon om malsyntaksen.
Ressurscellemal:
<div class='resource-card-wrapper {{iif ResourceCellSelected "resource-cell-selected" ""}} {{iif ResourceUnavailable "resource-unavailable" ""}} {{iif IsMatchingAvailability "availability-match" ""}}'>
{{#if imagepath}}
<img class='resource-image' src='{{client-url}}{{imagepath}}' />
{{else}}
<div class='resource-image unknown-resource'></div>
{{/if}}
<div class='resource-info'>
<div class='resource-name primary-text ellipsis' title='{{name}}'>{{name}}</div>
<div class='secondary-text ellipsis'>
{{#if (eq (is-sa-grid-view) false) }}
<div class='booked-duration'>{{BookedDuration}}</div>
<div class='booked-percentage'>
{{BookedPercentage}}%
{{#if lang_primary}}
<span style='color:green;'>✔{{#if lang_secondary}} ✱{{/if}}</span>
{{else if lang_secondary}}
<span style='color:#ffe700;'>✔</span>
{{/if}}
</div>
{{/if}}
</div>
{{#if (eq (is-sa-grid-view) false) }}
<div class='matching-indicator'></div>
{{/if}}
</div>
{{#if (eq (is-sa-grid-view) false) }}
{{> resource-map-pin-template this }}
{{/if}}
</div>
Oppdatere ressurscellemalen
- I øvre høyre hjørne dobbeltklikker du på språkkategorien
- Klikk på Åpne standardinnstillinger øverst til høyre
- Bla til delen Planleggingstyper og velg Ingen i listen til venstre
- Finn feltet Ressurscellemal for planleggingsassistenten, og klikk på knappen til høyre for å åpne redigeringsverktøyet
- Oppdater Verdi-feltet med Ressurscellemal-koden over, og klikk på Lagre som
- Skriv inn "Språkressurscellemalen" i Navn-feltet, og klikk på Lagre. Dette oppretter en ny konfigurasjonsoppføring og kobler denne planleggingstavlen til oppføringen.
- Nederst i dialogboksen klikker du Bruk.
Tavlen laster inn den oppdaterte konfigurasjonen på nytt. Ressurscellen viser nå hvordan en ressurs samsvarer med språkbegrensningen i filterpanelet.
Sammendrag
I trinnene over endret vi Filter-panelet i planleggingsassistenten for å vise en filterkontroll for språkenheten. Vi endret også hentebegrensningsspørringen for å spørre de nye språkattributtene relatert til kravenheten og forme dem til en liste. Når en bruker velger å finne tilgjengelighet for en kravoppføring, viser filterpanelet de lagrede språkbegrensningene. Verdiene fra filterpanelet videresendes til spørringen Hent ressurser, og FetchXML-spørringen returnerer bare samsvarende ressurser.
Se også
Produktmerknader om Universal Resource Scheduling-utvidbarhet