Pavyzdys: „Universal Resource Scheduling“ išplėtimas pasirinktiniu kalbos apribojimu

Šis nuoseklus vadovas yra temos „Universal Resource Scheduling“ išteklių atitikimo supratimas ir tinkinimas pagalbinė priemonė.

Šiame nuosekliame vadove išplėsime „Universal Resource Scheduling“ išteklius naudodami apribojimą Language. Tarkime, kad organizacija nori filtruoti išteklius pagal kalbas, kuriomis jie kalba. Be to, ji nori užfiksuoti įrašą Requirement ta kalba, kuria reikia atlikti užduotį. Šis apribojimas vykdomas panašiu modeliu kaip integruotas apribojimas Territory. Naujas pagrindinis objektas Language saugos skirtingas kalbas, kuriomis išteklius kalba. Tada įrašą Resource galima susieti su daug objektų Languages naudojant tipo „daugelis su daugeliu“ objektą. Objekte Requirement tai modeliuosime sukurdami du naujus peržvalgos atributus: Primary Language ir Secondary Language. Ieškodami pasiekiamų reikalavimo išteklių, bus rodomi tik ištekliai, susiję su Primary Language arba Secondary Language.

Naujų objektų ir ryšių kūrimas

Šiame skyriuje sukursime naują schemą, skirtą pagrindiniam objektui Language, ir atnaujinsime objektus Resource bei Requirement nustatydami atitinkamus ryšius su naujuoju objektu Language.

Naujo leidėjo kūrimas

  1. „Dynamics 365“ dalyje Tinkinimai sukurkite naują leidėją

  2. Užpildykite formą Naujas leidėjas nurodydami tolesnę informaciją.

    Laukas Value
    Rodomas pavadinimas Language
    Pavadinimas kalba
    Priešdėlis kalba
  3. Spustelėkite Įrašyti ir uždaryti.

Naujo sprendimo kūrimas

  1. „Dynamics 365“ dalyje Tinkinimai sukurkite naują leidėją

  2. Užpildykite formą Naujas sprendimas nurodydami tolesnę informaciją.

    Laukas Value
    Rodomas pavadinimas Language
    Pavadinimas Language
    Leidėjas Language
    Versija 1.0.0.0
  3. Spustelėkite Įrašyti

Objekto Kalba kūrimas

  1. Sprendime Kalba sukurkite naują objektą

  2. Užpildykite formą Naujas objektas nurodydami tolesnę informaciją.

    Laukas Value
    Rodomas pavadinimas Language
    Pavadinimo daugiskaitos forma Kalbos
    Pavadinimas / vardas ir pavardė lang_language (prefiksas lang_ nurodomas automatiškai ir jį galima tik skaityti)
  3. Spustelėkite Įrašyti

Sukurkite objekto Išteklius tipo „daugelis su daugeliu“ ryšį su objektu Kalba

  1. Objekte Kalba sukurkite naują tipo „daugelis su daugeliu“ ryšį

  2. Užpildykite formą Naujas ryšys nurodydami tolesnę informaciją.

    Laukas Value
    Dabartinis objektas
    Rodyti parinktį Naudoti daugiskaitinį pavadinimą
    Kitas objektas
    Objekto pavadinimas Rezervuojami ištekliai
  3. Spustelėkite Įrašyti ir uždaryti.

  4. Objekto formos Kalba uždarymas

Sukurkite objekto Reikalavimas ryšius su objektu Kalba

  1. Sprendime Kalba įtraukite esamą objektą Išteklių reikalavimas į sprendimą (Jei rodomas dialogo langas Trūksta būtinų komponentų, pasirinkite Ne, būtinų komponentų neįtraukite.)

  2. Objekte Išteklių reikalavimas sukurkite naują lauką

  3. Užpildykite formą Naujas laukas nurodydami tolesnę informaciją.

    Laukas Value
    Rodomas pavadinimas Pagrindinė kalba
    Duomenų tipas Peržvalga
    Tikslinio įrašo tipas Language
  4. Spustelėkite Įrašyti ir uždaryti.

  5. Objekte Išteklių reikalavimas sukurkite naują lauką

  6. Užpildykite formą Naujas laukas nurodydami tolesnę informaciją.

    Laukas Value
    Rodomas pavadinimas Antrinė kalba
    Duomenų tipas Peržvalga
    Tikslinio įrašo tipas Language
  7. Spustelėkite Įrašyti ir uždaryti.

Reikalavimo pagrindinės formos naujinimas

  1. Objekte Išteklių reikalavimas įtraukite esamą informacijos formą į objekto pakomponenčius (Jei rodomas dialogo langas Trūksta būtinų komponentų, pasirinkite Ne, būtinų komponentų neįtraukite.)
  2. Informacijos formoje naudodami laukų naršyklę galite įtraukti du naujus atributus – Pagrindinė kalba ir Antrinė kalba į formą, kad vartotojai galėtų įvesti šią informaciją kurdami reikalavimus
  3. Spustelėkite Įrašyti
  4. Spustelėkite Publikuoti
  5. Galite uždaryti formų rengyklę

Suvestinė

Atlikę pirmiau nurodytus veiksmus sukūrėme objektą Kalba. Tada įtraukėme naujus ryšius su objektais Išteklius ir Reikalavimas. Išteklius galima susieti su keliomis kalbomis, kadangi įtraukėme tipo „daugelis su daugeliu“ ryšius tarp objektų Kalba ir Išteklius. Reikalavimus galima susieti su dviem kalbomis, kadangi į objektą Reikalavimas įtraukėme du peržvalgos atributus, nurodančius naują objektą Kalba.

Duomenų įtraukimas

Naudokite funkciją Išplėstinė ieška, kad įtrauktumėte naujus įrašus į objektą Kalba. Tada galite susieti išteklių įrašus su naujais kalbos įrašais atidarydami įrašą Išteklius ir naršymo juostoje pasirinkdami kalbos ryšį. Naudodami reikalavimo įrašus galite užpildyti naujus laukus Pagrindinė kalba ir Antrinė Kalba formoje Reikalavimas.

Grafiko lentos tinkinimas

Tam, kad galėtume filtruoti išteklius grafiko lentoje naudodami naują apribojimą Kalba, atnaujinsime konfigūravimo įrašus Išteklių gavimo užklausa ir Filtro maketas.

Filtro maketo konfigūracija

Tipp

Atliekant tolesnius veiksmus naudinga naudoti XML sintaksės paryškinimą palaikančią tekstų rengyklę, kad galėtumėte atlikti keitimus ir įklijuoti keitimus atgal į „Universal Resource Scheduling“ rengyklę.

Filtro maketo konfigūracija yra XML maketo aprašas, skirtas tinkinti skydo Filtras maketą.

Hinweis

Šiai užduočiai atlikti pašalinsime visus į „Universal Resource Scheduling“ įtrauktus numatytuosius filtrus iš skydo Filtras ir įtrauksime kalbas kaip vienintelį teikiamą filtrą.

<control type="combo" source="entity" key="Languages" inactive-state="1" label-id="Languages" entity="lang_language" multi="true" />

Elementas control į skydą Filtras įtraukia naują valdiklį. Toliau pateikiamas kiekvieno atributo aprašas.

Pavadinimas Aprašas
type Filtro valdiklio tipas. Valdiklis combo atvaizduoja išplečiamąjį sąrašą ir reikšmes, kurias galima pasirinkti
source Išplečiamojo valdiklio reikšmių šaltinis. Šaltinis entity rodo objekto įrašus išplečiamajame sąraše
key Raktas, skirtas saugoti pasirinktas reikšmes apribojimų ypatybių aibėje
inactive-state Šio objekto neaktyvus statecode. Skirtas pašalinti neaktyvius įrašus iš išplečiamojo sąrašo
label-id Lokalizuota etiketė, skirta šiam valdikliui
entity Šio objekto įrašai bus rodomi išplečiamajame sąraše
multi Sukonfigūruoja išplečiamąjį sąrašą, kad būtų galima pasirinkti vieną arba kelis įrašus

Filtro maketas:

<?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>

Naujos kalbų lentos kūrimas

Norėdami izoliuoti šiuos keitimus, sukursime naują atskirą grafiko lentą ir atlikti keitimus, tačiau jūs bet kada galite atlikti šiuos keitimus numatytojoje grafiko lentoje, kad jie automatiškai būtų įrašyti kitose grafikų lentose.

  1. „Dynamics 365“ viršutinėje naršymo juostoje pasirinkite Išteklių planavimas > Grafiko lenta
  2. Viršuje dešinėje spustelėkite ženklą +, kad sukurtumėte naują lentą
  3. Naujos lentos pavadinimas Kalba
  4. Dialogo lango apačioje spustelėkite Įtraukti. Bus sukurta nauja lenta.

Grafiko lentos filtro maketo naujinimas

Tada sukursime naują konfigūravimo įrašą, kuriame išsaugomi grafiko lentoje naudojami filtro maketai ir užklausos, o tada susiesime naujai sukurtą grafiko lentą su nauju konfigūravimo įrašu. Tai galima padaryti keliais būdais, o toliau pateiktas greičiausiasis iš jų.

  1. Viršuje dešinėje du kartus spustelėkite skirtuką Kalba
  2. Slinkite žemyn iki dalies Bendrieji parametrai > Kiti parametrai
  3. Raskite lauką Filtro maketas, spustelėkite dešinėje pateiktą mygtuką, kad atidarytumėte rengyklę
  4. Atnaujinkite lauką Reikšmė nurodydami pirmiau pateiktą filtro maketo kodą ir spustelėkite Įrašyti kaip.
  5. Lauke Pavadinimas įveskite Kalbos filtro maketas ir spustelėkite Įrašyti. Tokiu būdu sukuriamas naujas konfigūravimo įrašas ir ši grafiko lenta susiejama su įrašu.
  6. Dialogo lango apačioje spustelėkite Taikyti.

Lenta bus įkelta iš naujo ir kairėje bus rodomas naujo maketo skydas Filtras; bus galima naudoti tik kalbų filtrą. Filtravimas dar neveiks, nes reikia atnaujinti išteklių gavimo užklausą, tada bus galima naudoti naują filtrą.

Konfigūracija Išteklių gavimo užklausa

Tipp

Atliekant tolesnius veiksmus naudinga naudoti XML sintaksės paryškinimą palaikančią tekstų rengyklę, kad galėtumėte atlikti keitimus ir įklijuoti keitimus atgal į „Universal Resource Scheduling“ rengyklę.

Konfigūracija Išteklių gavimo užklausa yra UFX užklausa, kurią naudoja išteklių gretinimo API. Kaip įvestį ji nuskaito skyde Filtras įvestas reikšmes ir dinamiškai kuria tikslią FetchXML, kad būtų rasti atitinkantys ištekliai.

Toliau pateikiami nauji fragmentai, įtraukti į išteklių gavimo užklausą, kad gretinimas ir rikiavimas būtų vykdomi pagal išteklių kalbas.

Jungčių įtraukimas iš bookableresource į 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>

Skyde Filtras pasirinktos reikšmės perduodamos kaip įvestis į užklausą ir jos teikiamos „XPath“ kintamajame $input

Išteklių gavimo užklausa naudoja „FetchXML“, kad pateiktų objekto Resource (bookableresource) užklausą. Mes naudojame „FetchXML“ elementą link-entity, kad būtų pateikti tik ištekliai, susiję su skyde Filtras pasirinktais kalbų įrašais. Norėdami, kad atitinkančių kalbų rodymas ir rikiavimas pagal pagrindinę arba antrinę kalbą, kaip aprašyta toliau skyriuje Išteklių langelio šablonas, mes naudojame kelias tipo link-entity jungtis.

Toliau pateikiamas kiekvieno element ir attribute aprašas.

Pavadinimas Aprašas
link-entity Sukurkite jungtį su tipo „daugelis su daugeliu“ ryšiu tarp objekto Išteklius ir objekto Kalba
ufx:if Generuokite šį „FetchXML“ elementą (link-entity), jei „XPath“ išraiška šiame atribute pateikia reikšmę
attribute Pagrindinės arba antrinės atitikusios kalbos pateikimas
filter ir condition Filtruokite tipo „daugelis su daugeliu“ ryšių įrašus, kad būtų rodomi tik nurodytus kalbos ID atitinkantys įrašai
ufx:value ir select Pateikia „XPath“ išraiškos rezultatą atribute select
ufx:apply ir select Generuokite antrinius „FetchXML“ elementus, skirtus kiekvienam rezultatui, kurį pateikia „XPath“ išraiška atribute select
value Apriboja įrašo Kalba ID

Ištekliaus rikiavimo tvarkos nustatymas

Nuskaitę atitinkančius išteklius, priklausomai nuo kiekvieno ištekliaus priskirtų kalbų, priskiriame naują ypatybę lang_order, kad nustatytume jo rikiavimo tvarką.

<bag>
  <lang_order ufx:select="iif(lang_primary and lang_secondary, 1, iif(lang_primary, 2, iif(lang_secondary, 3, 4)))" />
</bag>

Toliau pateikiamas kiekvieno element ir attribute aprašas.

Pavadinimas Aprašas
lang_order Sukurkite naują ypatybę, skirtą kiekvienam „FetchXML“ užklausos pateiktam ištekliui, pavadinimu lang_order
ufx:select Priskirkite „XPath“ išraiškos rezultatą šiame atribute ypatybei lang_order. Pirmiau užklausos pateiktos ypatybės lang_primary ir lang_secondary, naudojamos kartu su „XPath“ funkcija iif, kad būtų nustatyta išteklių gretinimo tvarka.

Rezultatų pateikimo tvarka

<Resources ufx:select="order(Resources, 'lang_order')" />

UFX užklausos apdorojamos eilės tvarka. Kai „FetchXML“ nuskaito išteklius, rezultatai priskiriami ypatybei Resources. Mes rikiuojame rezultatus atsižvelgdami į pirmiau įtrauktą ypatybę lang_order ir iš naujo priskiriame rikiuojamus rezultatus ypatybei Resources.

Toliau pateikiamas kiekvieno element ir attribute aprašas.

Pavadinimas / vardas ir pavardė Aprašymas
Resources Pakartotinas ypatybės Resources priskyrimas
ufx:select Priskirkite „XPath“ išraiškos rezultatą šiame atribute ypatybei Resources. „XPath“ funkcija order naudojama norint užsakyti sąrašą Resources ypatybėje lang_order.

Hinweis

Numatytoji išteklių gavimo užklausa, įtraukta į „Universal Resource Scheduling“, yra didelė užklausa, palaikanti visus į „Universal Resource Scheduling“ įtrauktus išteklių apribojimus. Šiai užduočiai atlikti naudosime tik antrinį numatytosios užklausos rinkinį ir įtrauksime kalbas kaip vienintelį filtrą.

<?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>

Grafiko lentos išteklių gavimo užklausos naujinimas

  1. Viršuje dešinėje du kartus spustelėkite skirtuką Kalba
  2. Slinkite žemyn iki dalies Bendrieji parametrai > Kiti parametrai
  3. Raskite lauką Išteklių gavimo užklausa, spustelėkite dešinėje pateiktą mygtuką, kad atidarytumėte rengyklę
  4. Atnaujinkite lauką Reikšmė nurodydami pirmiau pateiktą išteklių gavimo užklausos kodą ir spustelėkite Įrašyti kaip
  5. Lauke Pavadinimas įveskite Kalbos išteklių užklausa ir spustelėkite Įrašyti. Tokiu būdu sukuriamas naujas konfigūravimo įrašas ir ši grafiko lenta susiejama su įrašu.
  6. Dialogo lango apačioje spustelėkite Taikyti.

Lenta bus iš naujo įkelta nustačius atnaujintą konfigūraciją. Dabar filtravimas veiks. Jei sukūrėte kalbų įrašus ir susiejote juos su išteklių įrašais, dabar galėsite filtruoti išteklius pagal jų susietas kalbas.

Santrauka

Pirmiau nurodytuose veiksmuose modifikavome skydą Filtras, kad būtų rodomas objekto Kalba filtro valdiklis. Mes taip pat modifikavome išteklių gavimo užklausą, kad būtų sugretinti ištekliai, susiję su pasirinktais kalbų įrašais. Kai vartotojas pasirenka reikšmes filtro valdiklyje ir spusteli Ieška, reikšmės pateikiamos į užklausą ir „FetchXML“ užklausa pateikia tik atitinkančius išteklius.

Planavimo pagalbinės priemonės tinkinimas

Turime tinkinti planavimo pagalbinės priemonės filtro maketo ir apribojimų gavimo užklausos konfigūracijas, kad galėtume naujus kalbų apribojimus planavimo pagalbinėje priemonėje.

Skirtingai nuo grafiko lentos tinkinimų, kai kiekvieną lentą galima tinkinti atskirai, planavimo pagalbinės priemonės tinkinimai paveikia visas lentas, kuriose naudojama planavimo pagalbinė priemonė. Planavimo pagalbinės priemonės tinkinimai gali būti konkretaus arba planavimo tipo arba visų tipų. Šiame pavyzdyje tinkinsime visų tipų planavimo pagalbinę priemonę.

Planavimo pagalbinės priemonės filtro maketo konfigūracija

Tipp

Atliekant tolesnius veiksmus naudinga naudoti XML sintaksės paryškinimą palaikančią tekstų rengyklę, kad galėtumėte atlikti keitimus ir įklijuoti keitimus atgal į „Universal Resource Scheduling“ rengyklę.

Kaip ir grafiko lentos filtro maketo konfigūracija, planavimo pagalbinės priemonės filtro maketo konfigūracija apibrėžia skydo Filtras valdiklių maketą. Kadangi planavimo pagalbinė priemonė naudoja daugiau filtrų nei grafiko lenta, pvz., Pradžios laikas, Pabaigos laikas, Trukmė ir t. t., naudojamas kitoks maketas.

Hinweis

Atlikdami šią užduotį iš naujo panaudosime tik tam tikrus numatytuosius filtrus, įtrauktus į „Universal Resource Scheduling“ iš planavimo pagalbinės priemonės filtro maketo konfigūracijos, ir įtrauksime kalbų išplečiamąjį sąrašą kaip vienintelį filtrą.

Į maketą įtraukiamas filtras yra toks pats kaip filtro maketo konfigūracijoje. Kiti valdikliai reikalingi norint keisti planavimo pagalbinės priemonės ieškos parametrus.

Išsamus planavimo pagalbinės priemonės filtro maketas

<?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>

Planavimo pagalbinės priemonės filtro maketo naujinimas

  1. Viršuje dešinėje du kartus spustelėkite skirtuką Kalba
  2. Viršuje dešinėje spustelėkite Atidaryti numatytuosius parametrus
  3. Slinkite iki skilties Planavimo tipai ir kairiajame sąraše pasirinkite Nėra
  4. Raskite lauką Planavimo pagalbinės priemonės filtro maketas, spustelėkite dešinėje pateiktą mygtuką, kad atidarytumėte rengyklę
  5. Atnaujinkite lauką Reikšmė nurodydami pirmiau pateiktą planavimo pagalbinės priemonės filtro maketo kodą ir spustelėkite Įrašyti kaip
  6. Lauke Pavadinimas įveskite Kalbos planavimo pagalbinės priemonės filtro maketas ir spustelėkite Įrašyti. Tokiu būdu sukuriamas naujas konfigūravimo įrašas ir ši grafiko lenta susiejama su įrašu.
  7. Dialogo lango apačioje spustelėkite Taikyti.

Lenta bus įkelta iš naujo. Tada reikia pakeisti apribojimų gavimo užklausą prieš naudojant planavimo pagalbinę priemonę ir naujus kalbų apribojimus, kad reikalavimo kalbų rinkinys priklausytų planavimo pagalbinės priemonės ieškai.

Apribojimų gavimo užklausos konfigūracija

Tipp

Atliekant tolesnius veiksmus naudinga naudoti XML sintaksės paryškinimą palaikančią tekstų rengyklę, kad galėtumėte atlikti keitimus ir įklijuoti keitimus atgal į „Universal Resource Scheduling“ rengyklę.

Konfigūracija Apribojimų gavimo užklausa yra UFX užklausa, kurią naudoja Reikalavimo apribojimų gavimo API. Kaip įvestį jis nuskaito reikalavimo įrašo (pasirinkto vartotojo sąsajoje) ID ir pateikia reikalavimo įrašą bei visus jo antrinius įrašus.

Hinweis

Numatytoji apribojimų gavimo užklausa, įtraukta į „Universal Resource Scheduling“, yra didelė užklausa, palaikanti visus į „Universal Resource Scheduling“ įtrauktus reikalavimo apribojimus. Šiai užduočiai atlikti naudosime tik antrinį numatytosios užklausos rinkinį ir įtrauksime kalbas kaip vienintelį filtrą.

<Languages ufx:select="lookup-to-list(Requirement/lang_primarylanguage, Requirement/lang_secondarylanguage)" />

UFX užklausos apdorojamos eilės tvarka. Apribojimų gavimo užklausa naudoja „FetchXML“, kad pateiktų objekto Requirement (msdyn_resourcerequirement) užklausą ir priskiria rezultatą, reikalavimo įrašą, ypatybei Requirement. Į apribojimų ypatybių aibę mes įtraukiame naują ypatybę Languages, kuri sujungia abu atributus, Pagrindinė kalba ir Antrinė kalba, į vieną objektų sąrašą, (EntityCollection). Tai būtina, nes skyde Filtras valdiklis Kalbos rodomas kaip įrašų sąrašas. Kaip alternatyvą galima sukurti dvi atskirus valdiklius skyde Filtras, skirtus dviem atributams.

Toliau pateikiamas kiekvieno element ir attribute aprašas.

Pavadinimas Aprašas
Languages Sukurkite naują ypatybę rezultatų apribojimų ypatybių aibėje pavadinimu Languages
ufx:select Priskirkite „XPath“ išraiškos rezultatą šiame atribute ypatybei Languages. Ypatybės lang_primarylanguage ir lang_secondarylanguage, kurias pirmiau pateikė užklausa ir kurios saugomos ypatybėje Requirement, pateikiamos „XPath“ funkcijai lookup-to-list, kuri konvertuoja kelias ypatybes lookup į vieną list (EntityCollection)

Apribojimų gavimo užklausa:

<?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>

Apribojimų gavimo užklausos naujinimas

  1. Viršuje dešinėje du kartus spustelėkite skirtuką Kalba
  2. Viršuje dešinėje spustelėkite Atidaryti numatytuosius parametrus
  3. Slinkite iki skilties Planavimo tipai ir kairiajame sąraše pasirinkite Nėra
  4. Raskite lauką Planavimo pagalbinės priemonės apribojimų gavimo užklausa, spustelėkite dešinėje pateiktą mygtuką, kad atidarytumėte rengyklę
  5. Atnaujinkite lauką Reikšmė nurodydami pirmiau pateiktą išteklių gavimo užklausos kodą ir spustelėkite Įrašyti kaip
  6. Lauke Pavadinimas įveskite Kalbos apribojimų užklausa ir spustelėkite Įrašyti. Tokiu būdu sukuriamas naujas konfigūravimo įrašas ir ši grafiko lenta susiejama su įrašu.
  7. Raskite lauką Planavimo pagalbinės priemonės išteklių gavimo užklausa ir pasirinkite pirmiau mūsų sukurtą kalbų išteklių užklausą, skirtą grafiko lentos tinkinimams
  8. Dialogo lango apačioje spustelėkite Taikyti.

Lenta bus iš naujo įkelta nustačius atnaujintą konfigūraciją. Dabar planavimo pagalbinės priemonės filtravimas veiks. Jei sukūrėte kalbos įrašus ir susiejote juos su reikalavimo įrašais, dabar galėsite pasirinkti grafiko lentos apačioje esantį reikalavimo įrašą, spustelėti Rasti pasiekiamumą, paleisti planavimo pagalbinę priemonę ir peržiūrėti tik išteklius, atitinkančius tik reikalavime išsaugotas kalbas.

Išteklių langelio šablono funkcija

Tipp

Atliekant tolesnius veiksmus naudinga naudoti HTML sintaksės paryškinimą palaikančią tekstų rengyklę, kad galėtumėte atlikti keitimus ir įklijuoti keitimus atgal į „Universal Resource Scheduling“ rengyklę.

Išteklių langelio šablono konfigūracija yra Handlebars šablonas, naudojamas turiniui išteklių langelyje atvaizduoti. Išteklių gavimo užklausos rezultatus galima pateikti šablone.

Mes pakeisime numatytąjį išteklių šabloną, kad būtų rodomas žalias indikatorius ✔✱, jei išteklius atitiko pagrindinės ir antrinės kalbų reikalavimus, žalias indikatorius ✔, jei išteklius atitiko tik pagrindinės kalbos reikalavimą, arba geltonas indikatorius ✔, jei išteklius atitiko tik antrinės kalbos reikalavimą.

{{#if lang_primary}}
<span style='color:green;'>&#10004;{{#if lang_secondary}} &#10033;{{/if}}</span>
{{else if lang_secondary}}
<span style='color:#ffe700;'>&#10004;</span>
{{/if}} 

Ypatybės lang_primary ir lang_secondary pateikiamos iš mūsų pasirinktinės išteklių gavimo užklausos, nustatytos pirmiau. Informacijos apie šablonų sintaksę ieškokite Handlebars svetainėje.

Išteklių langelio šablonas:

<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;'>&#10004;{{#if lang_secondary}} &#10033;{{/if}}</span>
        {{else if lang_secondary}}
        <span style='color:#ffe700;'>&#10004;</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>

Išteklių langelio šablono naujinimas

  1. Viršuje dešinėje du kartus spustelėkite skirtuką Kalba
  2. Viršuje dešinėje spustelėkite Atidaryti numatytuosius parametrus
  3. Slinkite iki skilties Planavimo tipai ir kairiajame sąraše pasirinkite Nėra
  4. Raskite lauką Planavimo pagalbinės priemonės išteklių langelio šablonas, spustelėkite dešinėje pateiktą mygtuką, kad atidarytumėte rengyklę
  5. Atnaujinkite lauką Reikšmė nurodydami pirmiau pateiktą išteklių langelio šablono kodą ir spustelėkite Įrašyti kaip
  6. Lauke Pavadinimas įveskite Kalbos išteklių langelio šablonas ir spustelėkite Įrašyti. Tokiu būdu sukuriamas naujas konfigūravimo įrašas ir ši grafiko lenta susiejama su įrašu.
  7. Dialogo lango apačioje spustelėkite Taikyti.

Lenta bus iš naujo įkelta nustačius atnaujintą konfigūraciją. Dabar išteklių langelyje bus rodoma, kaip išteklius atitinka kalbos apribojimą skyde Filtras.

Santrauka

Pirmiau nurodytuose veiksmuose modifikavome skydą Filtras planavimo pagalbinėje priemonėje, kad būtų rodomas objekto Kalba filtro valdiklis. Taip pat mes pakeitėme apribojimų gavimo užklausą, kad būtų teikiama su objektu Reikalavimas susijusių naujų kalbų atributų užklausa ir tie atributai būtų sujungiami į sąrašą. Kai vartotojas pasirenka rasti reikalavimo įrašo pasiekiamumą, skyde Filtras bus rodomi užfiksuoti kalbų apribojimai. Skydo Filtras reikšmės yra pateikiamos išteklių gavimo užklausai ir „FetchXML“ užklausa pateikia tik atitinkančius išteklius.

Taip pat žr.

Universalioji „FetchXML“

„Universal Resource Scheduling“ išplečiamumo leidimo pastabos

Hinweis

Ar galite mums pranešti apie dokumentacijos kalbos nuostatas? Atlikite trumpą apklausą. (atkreipkite dėmesį, kad ši apklausa yra anglų kalba)

Apklausą atliksite per maždaug septynias minutes. Asmeniniai duomenys nėra renkami (privatumo nuostatos).