Esimerkki: Universal Resource Schedulingin laajentaminen mukautetun kielen rajoitteen avulla
Tämä vaiheittainen ohje täydentää kohtaa Resurssien vastaavuushaun ymmärtäminen ja mukauttaminen Universal Resource Schedulingissa
Näissä vaiheittaisissa ohjeissa laajennetaan Universal Resource Scheduling -resursseja Language
-rajoituksen kanssa. Oletetaan, että organisaatio haluaa suodattaa resurssit resurssien käyttämän kielen perusteella. Lisäksi halutaan taltioida työpaikassa vaadittavan kielen Requirement
-tietue. Tämä rajoitus on samankaltainen kuin sisäinen Territory
-rajoitus. Uusi pääentiteetti, Language
, tallentaa resurssin osaamat kielet. Resource
-tietue voidaan sitten liittää useisiin Languages
-tietueisiin monta moneen -suhde-entiteetin kautta. Requirement
-entiteetissä mallinnus tapahtuu käyttämällä kahta uutta valintamääritettä: Primary Language
ja Secondary Language
. Kun tarvetta vastaavaa entiteettiä etsitään, vain resurssit, joihin on liitetty joko Primary Language
tai Secondary Language
, näytetään.
Uusien entiteettien ja suhteiden luominen
Tässä osassa luodaan uusi Language
-pääentiteetin rakenne sekä päivitetään Resource
- ja Requirement
-entiteetit vastaavilla suhteilla uuteen Language
-entiteettiin.
Uuden julkaisijan luominen
Uuden julkaisijan luominen valitsemalla Dynamics 365:ssä Mukautukset
Täytä Uusi julkaisija -lomakkeeseen seuraavat tiedot:
Kenttä Value Näyttönimi Language Nimi language Etuliite lang Valitse Tallenna ja sulje.
Uuden ratkaisun luominen
Uuden ratkaisun luominen valitsemalla Dynamics 365:ssä Mukautukset
Täytä Uusi ratkaisu -lomakkeeseen seuraavat tiedot:
Kenttä Value Näyttönimi Language Nimi Language Julkaisija Language Versio 1.0.0.0 Valitse Tallenna.
Kielientiteetin luominen
Luo uusi entiteetti kieliratkaisussa.
Täytä Uusi entiteetti -lomakkeeseen seuraavat tiedot:
Kenttä Value Näyttönimi Language Monikkonimi Kielivaihtoehdot Nimi lang_language ( lang_
-etuliite täytetään automaattisesti ja on vain luku -muotoinen)Valitse Tallenna.
Monta moneen -suhteen luominen resurssientiteetistä kielientiteettiin
Luo uusi monta moneen -suhde kielientiteetissä.
Täytä Uusi suhde -lomakkeeseen seuraavat tiedot:
Kenttä Value Nykyinen kohde Näyttöasetus Käytä monikollista nimeä Muu kohde Kohteen nimi Varattava resurssi Valitse Tallenna ja sulje.
Sulje kielientiteetin lomake.
Suhteiden luominen tarve-entiteetistä kielientiteettiin
Lisää aiemmin luotu tarve-entiteetti ratkaisuun kieliratkaisussa. (Jos Pakollisia osia puuttuu -valintaikkuna avautuu, valitse Ei, älä lisää pakollisia osia.)
Luo uusi kenttä resurssitarve-entiteetissä.
Täytä Uusi kenttä -lomakkeeseen seuraavat tiedot:
Kenttä Value Näyttönimi Primary Language Tietotyyppi Valinta Kohdetietuelaji Language Valitse Tallenna ja sulje.
Luo uusi kenttä resurssitarve-entiteetissä.
Täytä Uusi kenttä -lomakkeeseen seuraavat tiedot:
Kenttä Value Näyttönimi Secondary Language Tietotyyppi Valinta Kohdetietuelaji Language Valitse Tallenna ja sulje.
Tarpeen päälomakkeen päivittäminen
- Lisää aiemmin luotu tietolomake entiteetin alikomponentteihin resurssitarve-entiteetissä. (Jos Pakollisia osia puuttuu -valintaikkuna avautuu, valitse Ei, älä lisää pakollisia osia.)
- Lisää tietolomakkeessa kaksi uutta määritettä, Primary Language ja Secondary Language, lomakkeeseen kenttien hallinnan avulla, jotta käyttäjät voivat antaa nämä tiedot tarpeiden luonnin yhteydessä.
- Valitse Tallenna.
- Valitse Julkaise.
- Voit sulkea lomake-editorin.
Yhteenveto
Edellä olevissa vaiheissa luotiin uusi kielientiteetti. Seuraavaksi lisättiin uusi suhde resurssi- ja tarve-entiteettien avulla. Resurssit voivat liittyä useisiin kieliin, sillä kielen ja resurssin välille lisättiin monta moneen -suhde. Tarpeet voivat liittyä kahteen kieleen, sillä tarve-entiteettiin lisättiin kaksi uuteen kielientiteettiin osoittavaa valintamääritettä.
Tietojen lisääminen
Lisää uusia tietueita kielientiteettiin erikoishaun avulla. Voit sitten liittää resurssitietueet uusiin kielitietueisiin avaamalla resurssitietueen ja siirtymällä siirtymispalkissa kielisuhteeseen. Voit täyttää tarvetietueissa tarvelomakkeen uudet Ensisijainen kieli- ja Toissijainen kieli -kentät.
Aikataulutaulukon mukauttaminen
Jotta uutta kielirajoitusta voisi käyttää resurssien suodattaminen aikataulutaulukossa, Resurssin noutokysely- ja Suodattimen asettelu -määritystietueet on päivitetty.
Suodattimen asettelu -määritys
Tippi
Seuraavissa vaiheissa muutosten tekemiseen kannattaa käyttää tekstieditoria, joka tukee XML-syntaksin korostusta, ja liittää sitten muutokset takaisin Universal Resource Scheduling -editoriin.
Suodattimen asettelu -määritys on XML-asettelumääritys, jolla voidaan mukauttaa suodatinpaneelin asettelua.
Muistiinpano
Tässä harjoituksessa suodatinpaneelista poistetaan kaikki Universal Resource Scheduling-ratkaisun mukana toimitetut oletussuodattimet ja kielet lisätään ainoaksi valittavaksi suodattimeksi.
<control type="combo" source="entity" key="Languages" inactive-state="1" label-id="Languages" entity="lang_language" multi="true" />
control
-elementti lisää uuden ohjausobjektin suodatinpaneeliin. Määritteiden kuvaukset:
Nimi | Kuvaus |
---|---|
type |
Suodattimen ohjausobjektin tyyppi. combo -ohjausobjekti hahmontaa avattavan luettelon, josta arvot voidaan valita. |
source |
Avattavan ohjausobjektiluettelon arvojen lähde. entity -lähde näyttää entiteettitietueet avattavassa luettelossa. |
key |
Avain, jolla voidaan tallentaa valitut arvo rajoitusten ominaisuusvarantoon. |
inactive-state |
Tämän entiteetin passiivinen statecode . Tällä määritteellä passiiviset tietueet jätetään pois avattavasta luettelosta. |
label-id |
Tässä ohjausobjektissa käytettävä lokalisoitu selite. |
entity |
Tämän entiteetin tietueet näytetään avattavassa luettelossa. |
multi |
Määrittää avattavan luettelon, jolla voi valita yhden tietueen tai useita tietueita. |
Suodattimen asettelu:
<?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>
Uuden kielitaulukon luominen
Nämä muutokset voidaan pitää eristettyinä luomalla täysin uusi erillisen aikataulutaulukko ja toteuttamalla sitten muutokset. Nämä muutokset voidaan tehdä myös oletusaikataulutaulukossa, jolloin muut aikataulutaulukot perivät nämä muutokset automaattisesti.
- Valitse Dynamics 365:n yläsiirtymispalkissa Resurssin aikataulutus > Aikataulutaulukko
- Luo uusi taulukko valitsemalla oikeassa yläkulmassa +-merkki.
- Anna uudelle aikataulutaulukon kielelle nimi.
- Valitse valintaikkunan alaosassa Lisää. Uusi taulukko luodaan.
Aikataulutaulukon suodattimen asettelun päivittäminen
Seuraavaksi luodaan uusi määritystietue, johon aikataulutaulukon käyttämät suodattimen asettelut ja kyselyt tallennetaan. Tämän jälkeen juuri luotu aikataulutaulukko linkitetään uuteen määritystietueeseen. Se on mahdollista tehdä monella eri tavalla, mutta seuraava tapa on niistä nopein:
- Kaksoisnapsauta oikeassa yläkulmassa Kieli-välilehteä
- Vieritä alas ja valitse Yleiset asetukset > Muut asetukset.
- Paikanna Suodattimen asettelu -kenttä ja avaa editori oikealla olevaa painiketta napsauttamalla.
- Päivitä Arvo-kenttään edellä oleva Suodattimen asettelun -koodi ja valitse Tallenna nimellä.
- Kirjoita Nimi-kenttään Kielisuodattimen asettelu ja valitse Tallenna. Uusi määritystietue luodaan ja tämä aikataulutaulukko linkitetään tietueeseen.
- Valitse valintaikkunan alaosassa Käytä.
Taulukko latautuu uudelleen. Vasemmalla olevassa suodatinpaneelissa näkyy nyt uusi asettelu, jossa on kielten suodatin on käytettävissä. Suodatus ei toimi vielä, sillä myös resurssien noutokysely on päivitettävä, ennen kuin uutta suodatinta voi käyttää.
Resurssien noutokyselyn määritys
Tippi
Seuraavissa vaiheissa muutosten tekemiseen kannattaa käyttää tekstieditoria, joka tukee XML-syntaksin korostusta, ja liittää sitten muutokset takaisin Universal Resource Scheduling -editoriin.
Resurssien noutokyselyn määritys UFX-kysely, jota resurssien vastaavuushaun ohjelmointirajapinta käyttää. Se käyttää syötteenä suodatinpaneelissa annettuja arvoja ja etsii vastaavat resurssit muodostamalla dynaamisesti oikean FetchXML-kielen.
Jäljempänä on uusia resurssien noutokyselyyn lisättyjä koodikatkelmia. Resurssien kielet käyttävät näitä koodikatkelmia vastaavuuksien hakemiseen ja järjestämiseen.
Liitosmääritysten lisääminen bookableresource
-arvosta lang_language
-arvoon
<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>
Suodatinpaneelissa valitut arvot välitetään syötteenä kyselyyn, ja ne ovat käytettävissä XPath
$input
-muuttujina.
Resurssien noutokysely käyttää FetchXML-kieltä Resource (bookableresource)
-entiteetin kyselyihin. FetchXML-kielen link-entity
-elementtiä käytetään palauttamaan vain resurssit, jotka on liitetty suodatinpaneelissa valittuihin kielitietueisiin. Jotta kielten vastaavuuksien hakeminen ja niiden järjestäminen ensi- tai toissijaisen kielen mukaan myöhemmin kohdassa Resurssin solumalli kuvattavalla tavalla olisi mahdollista, käytössä on useita link-entity
-liitosmäärityksiä.
element
- ja attribute
-kuvaukset:
Nimi | Kuvaus |
---|---|
link-entity |
Luo monta moneen -suhde resurssi- ja kielientiteettien välistä liitosta varten. |
ufx:if |
Lähetä tämä FetchXML-elementti (link-entity ) vain, jos tämän määritteen XPath-lauseke palauttaa arvon. |
attribute |
Palauta vastaava ensi- tai toissijainen kieli. |
filter ja condition |
Suodata monta moneen -suhdetietueet vain tietueiksi, jotka vastaavat määritettyjä kielitunnuksia. |
ufx:value ja select |
Tuloksena select -määritteen XPath-lausekkeen tulos. |
ufx:apply ja select |
Lähettää kunkin select -määritteen XPath-elementistä palautetun tuloksen FetchXML-alielementit. |
value |
Sisältää kielitietueen tunnuksen. |
Resurssin lajittelujärjestyksen määrittäminen
Kun vastaavat resurssit on noudettu, uusi lang_order
-ominaisuus määritetään kunkin resurssien määritettyjen kielten perusteella määrittämään lajittelujärjestys.
<bag>
<lang_order ufx:select="iif(lang_primary and lang_secondary, 1, iif(lang_primary, 2, iif(lang_secondary, 3, 4)))" />
</bag>
element
- ja attribute
-kuvaukset:
Nimi | Kuvaus |
---|---|
lang_order |
Luo uusi ominaisuus kussakin lang_order -nimisestä FetchXML-kyselystä palautetussa resurssissa. |
ufx:select |
Määritä tämän määritteen XPath-lausekkeen tulos lang_order -ominaisuuteen. Kyselyn aiemmin noudettuja lang_primary - ja lang_secondary -ominaisuuksia käytetään yhdessä XPathin iif -toiminnon kanssa määrittämään resurssin vastaavuusjärjestys. |
Tulosten järjestäminen
<Resources ufx:select="order(Resources, 'lang_order')" />
UFX-kyselyt käsitellään järjestyksessä. Kun resurssit on noudettu FetchXML-kielen avulla, tulokset määritetään Resources
-ominaisuuteen. Tulokset lajitellaan aiemmin lisätyn lang_order
-ominaisuuden perusteella ja lajitellut tulokset määritetään uudelleen Resources
-ominaisuuteen.
element
- ja attribute
-kuvaukset:
Nimi | Kuvaus |
---|---|
Resources |
Järjestä Resources -ominaisuus uudelleen |
ufx:select |
Määritä tämän määritteen XPath-lausekkeen tulos Resources -ominaisuuteen. XPathin order -funktiolla järjestetään Resources -luettelo lang_order -ominaisuudessa. |
Muistiinpano
Universal Resource Schedulingiin sisältyvä resurssien oletusnoutokysely on suurikokoinen kysely, joka tukee kaikkia Universal Resource Schedulingiin sisältyviä resurssirajoituksia. Tässä harjoituksessa käytetään oletuskyselyn alijoukkoa. Lisäksi kielet lisätään ainoaksi suodattimeksi.
<?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>
Aikataulutaulukon resurssien noutokyselyn päivittäminen
- Kaksoisnapsauta oikeassa yläkulmassa Kieli-välilehteä
- Vieritä alas ja valitse Yleiset asetukset > Muut asetukset.
- Paikanna Resurssien noutokysely -kenttä ja avaa editori oikealla olevaa painiketta napsauttamalla.
- Päivitä Arvo-kenttään edellä oleva Resurssien noutokysely -koodi ja valitse Tallenna nimellä.
- Kirjoita Nimi-kenttään Kielen resurssikysely ja valitse Tallenna. Uusi määritystietue luodaan ja tämä aikataulutaulukko linkitetään tietueeseen.
- Valitse valintaikkunan alaosassa Käytä.
Taulukko lataa päivitetyn määrityksen. Suodatusta voi nyt käyttää. Jos loit kielitietueita ja liitit ne resurssitietueisiin, voit nyt suodattaa tietoja liitettyjen kielten perusteella.
Yhteenveto
Suodatinpaneeli muokattiin edellä olevissa vaiheissa näyttämään kielientiteetin suodatuksen ohjausobjekti. Lisäksi resurssien noutokysely muokattiin vastaamaan valittuihin kielitietueisiin liitettyjä resursseja. Kun käyttäjä valitsee arvoja suodatuksen ohjausobjektissa ja valitsee Haku, arvot välitetään kyselyyn ja FetchXML-kysely palauttaa vain hakua vastaavat resurssit.
Ajoitusavustajan mukauttaminen
Ajoitusavustajan suodattimen asettelun ja rajoitusten noutokyselyn määritykset on mukautettava käyttämään ajoitusavustajan uusia kielirajoituksia.
Toisin kuin aikataulutaulukon mukautuksissa, joissa jokainen taulukko voidaan mukauttaa itsenäisesti, ajoitusavustajan mukautukset vaikuttavat kaikkiin ajoitusavustajaa käyttäviin taulukoihin. Ajoitusavustajan mukautukset voivat koskea tiettyä aikataulutettavaa tyyppiä tai kaikkia tyyppejä. Tässä esimerkissä mukautetaan kaikkien tyyppien ajoitusavustaja.
Ajoitusavustajan suodattimen asettelun määritys
Tippi
Seuraavissa vaiheissa muutosten tekemiseen kannattaa käyttää tekstieditoria, joka tukee XML-syntaksin korostusta, ja liittää sitten muutokset takaisin Universal Resource Scheduling -editoriin.
Ajoitusavustajan suodattimen asettelun määritys määrittää suodatinpaneelin ohjausobjektin asettelun samalla tavoin kuin aikataulutaulukon suodattimen asettelussa. Ajoitusavustaja käyttää enemmän suodattimia kuin aikataulutaulukko, joten käytössä on erilainen asettelu. Käytettäviä suodattimia ovat esimerkiksi aloitusaika, päättymisaika ja kesto.
Muistiinpano
Tässä harjoituksessa käytetään vain ajoitusavustajan suodattimen asettelun määrityksen Universal Resource Schedulingiin sisältyvien oletussuodattimien alijoukkoa. Lisäksi avattava kielivalikko lisätään ainoaksi käytössä olevaksi suodattimeksi.
Asetteluun lisättävä suodatin on sama, jota käytettiin edellä kohdassa Suodattimen asettelu -määritys. Muita ohjausobjekteja tarvitaan muokkaamaan ajoitusavustajan hakuparametreja.
Täydellinen ajoitusavustan suodattimen asettelu
<?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>
Ajoitusavustajan suodattimen asettelun päivittäminen
- Kaksoisnapsauta oikeassa yläkulmassa Kieli-välilehteä
- Valitse oikeassa yläkulmassa Avaa oletusasetukset.
- Vieritä Aikataulutyypit-osaan ja valitse vasemmassa luettelossa Ei mitään.
- Paikanna Ajoitusavustimen suodattimen asettelu -kenttä ja avaa editori oikealla olevaa painiketta napsauttamalla.
- Päivitä Arvo-kenttään edellä oleva Ajoitusavustajan suodattimen asettelun -koodi ja valitse Tallenna nimellä.
- Kirjoita Nimi-kenttään Kielen ajoitusavustajan suodattimen asettelu ja valitse Tallenna. Uusi määritystietue luodaan ja tämä aikataulutaulukko linkitetään tietueeseen.
- Valitse valintaikkunan alaosassa Käytä.
Taulukko latautuu uudelleen. Seuraavaksi on muutettava rajoituskysely nouto, sillä uudet kielirajoitukset sisältävän ajoitusavustajan käyttö ei ole mahdollista ennen tätä. Tarve-osan kielijoukko tulee näin osaksi ajoitusavustajan hakua.
Rajoitekyselyn noudon määritys
Tippi
Seuraavissa vaiheissa muutosten tekemiseen kannattaa käyttää tekstieditoria, joka tukee XML-syntaksin korostusta, ja liittää sitten muutokset takaisin Universal Resource Scheduling -editoriin.
Rajoitusten noutokyselyn määritys UFX-kysely, jota tarverajoitusten noudon ohjelmointirajapinta käyttää. Se käyttää syötteenä (käyttöliittymässä valitun) tarvetietueen tunnusta ja palauttaa tarvetietueen kaikkine alitietueineen.
Muistiinpano
Universal Resource Schedulingiin sisältyvä rajoitusten oletusnoutokysely on suurikokoinen kysely, joka tukee kaikkia Universal Resource Schedulingiin sisältyviä tarverajoituksia. Tässä harjoituksessa käytetään oletuskyselyn alijoukkoa. Lisäksi kielet lisätään ainoaksi suodattimeksi.
<Languages ufx:select="lookup-to-list(Requirement/lang_primarylanguage, Requirement/lang_secondarylanguage)" />
UFX-kyselyt käsitellään järjestyksessä. Rajoitusten noutokysely käyttää FetchXML-kieltä Requirement (msdyn_resourcerequirement)
-entiteetin kyselyssä ja määrittää tuloksen, tarvetietueen, Requirement
-ominaisuuteen. Rajoitusten ominaisuusvarantoon lisätään uusi Languages
-ominaisuus, joka yhdistää molemmat määritteet, eli ensi- ja toissijaisen kielen, yhdeksi entiteettiluetteloksi (EntityCollection). Tämä on välttämätöntä, sillä kielten ohjausobjekti näytetään suodatinpaneelissa tietueluettelona. Vaihtoehtoisesti kahdelle määritteelle voitaisiin luoda suodatinpaneeliin kaksi erillistä ohjausobjektia.
element
- ja attribute
-kuvaukset:
Nimi | Kuvaus |
---|---|
Languages |
Luo uusi ominaisuus rajoitusten Languages -nimisessä ominaisuusvarannossa. |
ufx:select |
Määritä tämän määritteen XPath-lausekkeen tulos Languages -ominaisuuteen. Aiemmin kyselyssä noudetut ja Requirement -ominaisuudessa olevat lang_primarylanguage - ja lang_secondarylanguage -ominaisuudet välitetään lookup-to-list -XPath-funktioon, joka muuntaa useat lookup -ominaisuudet yhdeksi list (EntityCollection) -luetteloksi |
Rajoitekyselyn nouto:
<?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>
Rajoitekyselyn noudon päivittäminen
- Kaksoisnapsauta oikeassa yläkulmassa Kieli-välilehteä
- Valitse oikeassa yläkulmassa Avaa oletusasetukset.
- Vieritä Aikataulutyypit-osaan ja valitse vasemmassa luettelossa Ei mitään.
- Paikanna Ajoitusavustimen rajoitekyselyn nouto -kenttä ja avaa editori oikealla olevaa painiketta napsauttamalla.
- Päivitä Arvo-kenttään edellä oleva Resurssien noutokysely -koodi ja valitse Tallenna nimellä.
- Kirjoita Nimi-kenttään Kielen rajoitekysely ja valitse Tallenna. Uusi määritystietue luodaan ja tämä aikataulutaulukko linkitetään tietueeseen.
- Paikanna Ajoitusavustajan rajoitekyselyn nouto -kenttä ja valitse aiemmin aikataulutaulukon mukautuksissa luotu kielten resurssikysely.
- Valitse valintaikkunan alaosassa Käytä.
Taulukko lataa päivitetyn määrityksen. Ajoitusavustajan suodatus on nyt käytössä. Jos loit kielitietueita ja liitit ne tarvetietueisiin, voit nyt valita tarvetietueen ajoitusavustajan alareunassa ja käynnistää ajoitusavustajan valitsemalla Etsi saatavuus. Näkyviin tulee vain resurssit, jotka vastaavat tarpeeseen tallennettuja kieliä.
Resurssin solumallin määritys
Tippi
Seuraavissa vaiheissa muutosten tekemiseen kannattaa käyttää tekstieditoria, joka tukee HTML-syntaksin korostusta, ja liittää sitten muutokset takaisin Universal Resource Scheduling -editoriin.
Resurssisolun mallin määritys on Handlebars-malli, jolla sisältö hahmonnetaan resurssisolussa. Resurssikyselyn noudon tulos on mallin käytössä.
Oletusresurssimalli muokataan näyttämään vihreä ✔✱ -ilmaisin, jos resurssi vastaa ensi- ja toissijaista kieltä, vihreän ✔-ilmaisimen, jos resurssi vastaa vain ensisijaista kieltä, ja keltaisen ✔-ilmaisimen, jos resurssi vastaa vain toissijaista kieltä.
{{#if lang_primary}}
<span style='color:green;'>✔{{#if lang_secondary}} ✱{{/if}}</span>
{{else if lang_secondary}}
<span style='color:#ffe700;'>✔</span>
{{/if}}
lang_primary
- ja lang_secondary
-ominaisuudet palautetaan edellä määritetystä mukautetusta resurssikyselyn noudosta. Lisätietoja mallien syntaksista on Handlebars-sivustossa.
Resurssin solumalli:
<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>
Resurssin solumallin päivittäminen
- Kaksoisnapsauta oikeassa yläkulmassa Kieli-välilehteä
- Valitse oikeassa yläkulmassa Avaa oletusasetukset.
- Vieritä Aikataulutyypit-osaan ja valitse vasemmassa luettelossa Ei mitään.
- Paikanna ajoitusavustimen Resurssin solumalli -kenttä ja avaa editori oikealla olevaa painiketta napsauttamalla.
- Päivitä Arvo-kenttään edellä oleva Resurssisolun malli -koodi ja valitse Tallenna nimellä.
- Kirjoita Nimi-kenttään Kielen resurssisolun malli ja valitse Tallenna. Uusi määritystietue luodaan ja tämä aikataulutaulukko linkitetään tietueeseen.
- Valitse valintaikkunan alaosassa Käytä.
Taulukko lataa päivitetyn määrityksen. Resurssisolu ilmaisee nyt, miten resurssi vastaa suodatinpaneelin kielirajoitusta.
Yhteenveto
Ajoitusavustajan suodatinpaneeli muokattiin edellä olevissa vaiheissa näyttämään kielientiteetin suodatuksen ohjausobjekti. Lisäksi rajoituskyselyn nouto muokattiin tekemään tarve-entiteettiin liittyvien uusien kielimääritteiden kysely ja muokkaamaan ne luetteloksi. Kun käyttäjä valitse tarvetietueen saatavuuden etsimisen, suodatinpaneeli näyttää taltioidut kielirajoitukset. Suodatinpaneelin arvot välitetään resurssien noutokyselyyn ja FetchXML-kysely palauttaa vain hakua vastaavat resurssit.
Katso myös
Universal Resource Schedulingin laajennettavuuden julkaisutiedot