Örnek: Universal Resource Scheduling'i özel dil kısıtlamasıyla genişletme
Bu adım adım kılavuz, Universal Resource Scheduling'de kaynak eşleştirmeyi anlama ve özelleştirme için bir tamamlayıcıdır
Bu adım adım kılavuzda bir Language
kısıtlaması ile Universal Resource Scheduling kaynaklarını genişleteceğiz. Konuştukları dile göre kaynakları filtrelemek isteyen bir kuruluşu düşünün. İş için gerekli dili Requirement
kaydında da yakalamak istiyorlar. Bu kısıtlama, yerleşik Territory
kısıtlamasına benzer bir düzen izler. Yeni bir Language
ana varlığı, bir kaynağın konuşabildiği farklı dilleri saklar. Resource
kaydı, bir çok-çok ilişkisi varlığı üzerinden birçok Languages
ile ilişkilendirilebilir. Requirement
varlığında bunu bu iki yeni arama özniteliğini oluşturarak modelleyeceğiz: Primary Language
ve Secondary Language
. Gereksinim için kullanılabilir kaynakları bulurken yalnızca Primary Language
veya Secondary Language
ile ilişkili kaynaklar gösterilir.
Yeni varlıklar ve ilişkiler oluşturma
Bu bölümde, Language
ana varlığı için yeni şema oluşturacağız ve karşılık gelen ilişkiye sahip Resource
ve Requirement
varlıklarını yeni Language
varlığıyla güncelleştireceğiz.
Yeni bir Yayımcı oluşturma
Dynamics 365'te, Özelleştirmeler altında yeni bir Yayımcı oluşturma
Yeni Yayımcı formunu aşağıdaki ayrıntılarla doldurun:
Alan Value Görünen Ad Language Ad dil Önek dil Kaydet ve Kapat'a tıklayın
Yeni bir Çözüm oluşturma
Dynamics 365'te, Özelleştirmeler altında yeni bir Çözüm oluşturma
Yeni Çözüm formunu aşağıdaki ayrıntılarla doldurun:
Alan Value Görünen Ad Language Ad Language Yayımcı Language Sürüm 1.0.0.0 Kaydet'e tıklayın
Dil varlığı oluşturma
Dil çözümünde yeni bir Varlık oluşturun
Yeni Varlık formunu aşağıdaki ayrıntılarla doldurun:
Alan Value Görünen Ad Language Çoğul Ad Diller Adı lang_language ( lang_
ön eki otomatik olarak doldurulur ve salt okunurdur)Kaydet'e tıklayın
Kaynak varlığından Dil varlığına çok-çok ilişkisi oluşturma
Dil varlığında yeni bir Çok-Çok İlişkisi oluşturun
Yeni İlişki formunu aşağıdaki ayrıntılarla doldurun:
Alan Value Geçerli Varlık Seçeneği Görüntüle Çoğul Adı Kullan Diğer Varlık Varlık Adı Ayrılabilir Kaynak Kaydet ve Kapat'a tıklayın
Dil varlığı formunu kapatın
Gereksinim varlığından Dil varlığına ilişkiler oluşturma
Dil çözümünde, var olan Kaynak Gereksinimi varlığını çözüme ekleyin (Gerekli Bileşenler Eksik iletişim kutusu gösterilirse Hayır'ı seçin, gerekli bileşenleri eklemeyin.)
Kaynak Gereksinimi varlığında yeni bir Alan oluşturun
Yeni Alan formunu aşağıdaki ayrıntılarla doldurun:
Alan Value Görünen Ad Birincil Dil Veri Türü Ara Hedef Kayıt Türü Language Kaydet ve Kapat'a tıklayın
Kaynak Gereksinimi varlığında yeni bir Alan oluşturun
Yeni Alan formunu aşağıdaki ayrıntılarla doldurun:
Alan Value Görünen Ad İkincil Dil Veri Türü Ara Hedef Kayıt Türü Language Kaydet ve Kapat'a tıklayın
Gereksinim ana formunu güncelleştirme
- Kaynak Gereksinimi varlığında, var olan Bilgi formunu varlığın alt bileşenlerine ekleyin (Gerekli Bileşenler Eksik iletişim kutusu gösterilirse Hayır'ı seçin, gerekli bileşenleri eklemeyin.)
- Bilgi formunda, kullanıcıların gereksinimleri oluştururken bu bilgileri girebilmesi için iki yeni öznitelik olan Birincil Dil ve İkincil Dil'i eklemek üzere Alan Gezgini'ni kullanın
- Kaydet'e tıklayın
- Yayımla'ya tıklayın
- Form düzenleyicisini kapatabilirsiniz
Özet
Yukarıdaki adımlarda, yeni Dil varlığı oluşturduk. Daha sonra Kaynak ve Gereksinim varlıklarına sahip yeni ilişkiler ekledik. Dil ve Kaynak arasına bir çok-çok ilişkisi eklediğimizden kaynaklar birden fazla dil ile ilişkilendirilebilir. Gereksinim varlığına yeni Dil varlığını işaret eden iki arama özniteliği eklediğimizden gereksinimler, iki Dil ile ilişkilendirilebilir.
Veri ekleme
Dil varlığına yeni kayıtlar eklemek için Gelişmiş Bul'u kullanın. Daha sonra bir Kaynak kaydı açarak ve gezinti çubuğunda Dil ilişkisine giderek Kaynak kayıtlarını yeni Dil kayıtları ile ilişkilendirebilirsiniz. Gereksinim kayıtları için Gereksinim formunda yeni Birincil Dil ve İkincil Dil alanlarını doldurabilirsiniz.
Zamanlama Panosu'nu özelleştirme
Zamanlama Panosu'nda kaynakları yeni Dil kısıtlamasıyla filtrelemek için Kaynakları Al Sorgusu ile Filtre Düzeni yapılandırma kayıtlarını güncelleştireceğiz.
Filtre Düzeni Yapılandırması
Bahşiş
Aşağıdaki adımlar için değişikliklerinizi yapmak üzere XML söz dizimi vurgulamasını destekleyen bir metin düzenleyicisi kullanmak ve ardından değişikliklerinizi Universal Resource Scheduling düzenleyicisine geri yapıştırmak yararlıdır.
Filtre Düzeni yapılandırması, Filtre paneli düzenini özelleştirmek için bir XML düzen tanımıdır.
Not
Bu alıştırmada, Filtre panelinden Universal Resource Scheduling ile gelen tüm varsayılan filtreleri kaldıracağız ve kullanılabilir tek filtre olarak Diller'i ekleyeceğiz.
<control type="combo" source="entity" key="Languages" inactive-state="1" label-id="Languages" entity="lang_language" multi="true" />
control
öğesi, Filtre paneline yeni bir denetim ekler. Her özniteliğin açıklaması burada verilmiştir:
Ad | Açıklama |
---|---|
type |
Filtre denetiminin türü. combo denetimi, seçim yapabileceğiniz değerlerin bulunduğu bir açılan menüyü işler |
source |
Açılan menü denetimi için değerlerin kaynağı. entity kaynağı, açılan menüdeki varlık kayıtlarını gösterir |
key |
Seçili değerleri kısıtlamalar özellik paketinde depolamak için kullanılan anahtar |
inactive-state |
Bu varlık için etkin olmayan statecode . Bu, etkin olmayan kayıtları açılan menünün dışında tutmak için kullanılır |
label-id |
Bu denetim için kullanılacak yerelleştirilmiş etiket |
entity |
Bu varlığın kayıtları, açılan menüde gösterilir |
multi |
Açılan menüyü tek bir kaydı veya birden çok kaydı seçmeye izin verecek şekilde yapılandırır |
Filtre Düzeni:
<?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>
Yeni bir Diller panosu oluşturma
Bu değişiklikleri yalıtılmış tutmak için tamamen yeni ve ayrı bir Zamanlama Panosu oluşturacak ve değişiklikleri uygulayacağız ancak diğer Zamanlama Panolarının değişiklikleri otomatik olarak devralabilmesi için her zaman varsayılan Zamanlama Panosu'nda bu değişiklikleri yapabilirsiniz.
- Dynamics 365'te, üst gezinti çubuğunda Kaynak Zamanlaması > Zamanlama Panosu'na gidin
- Yeni bir pano oluşturmak için sağ üstteki + işaretine tıklayın
- Yeni pano Dilini adlandırın
- İletişim kutusunun alt kısmında Ekle'ye tıklayın. Yeni pano oluşturulur.
Zamanlama Panosu Filtre Düzeni'ni güncelleştirme
Daha sonra, Zamanlama Panosu tarafından kullanılan filtre düzenlerini ve sorgularını depolayan yeni bir yapılandırma kaydı oluşturacağız ve yeni oluşturulan Zamanlama Panosu'nu yeni yapılandırma kaydına bağlayacağız. Bunu yapmanın birden çok yolu vardır ancak bunlardan en hızlısı şudur:
- Sağ üstte, Dil sekmesine çift tıklayın
- Genel Ayarlar > Diğer Ayarlar'a kadar aşağı kaydırın
- Filtre Düzeni alanını bulun, düzenleyiciyi açmak için sağdaki düğmeye tıklayın
- Değer alanını yukarıdaki Filtre Düzeni koduyla güncelleştirin ve Farklı Kaydet'e tıklayın.
- Ad alanına "Dil Filtre Düzeni" girin ve Kaydet'e tıklayın. Bu, yeni bir yapılandırma kaydı oluşturur ve bu Zamanlama Panosu'nu kayda bağlar.
- İletişim kutusunun alt kısmında Uygula'ya tıklayın.
Pano yeniden yüklenir ve yeni düzen ile birlikte solda Filtre panelini görürsünüz. Yalnızca Diller filtresi kullanılabilir. Yeni filtrenin özelliklerinden yararlanmak için Kaynakları Al Sorgusu'nu güncelleştirmemiz gerektiğinden filtreleme henüz çalışmaz.
Kaynakları Al Sorgusu Yapılandırması
Bahşiş
Aşağıdaki adımlar için değişikliklerinizi yapmak üzere XML söz dizimi vurgulamasını destekleyen bir metin düzenleyicisi kullanmak ve ardından değişikliklerinizi Universal Resource Scheduling düzenleyicisine geri yapıştırmak yararlıdır.
Kaynakları Al Sorgusu yapılandırması, Kaynak Eşleştirme API'si tarafından kullanılan bir UFX Sorgusudur. Filtre paneline girilen değerleri giriş olarak alır ve eşleşen kaynaklar bulmak için doğru FetchXML'i dinamik olarak oluşturur.
Aşağıda Kaynakların Dillerine göre eşleştirmek ve sıralamak için Kaynakları Al Sorgusu'na eklenen yeni kod parçacıkları gösterilmektedir.
Katılımları bookableresource
'tan lang_language
'e ekleme
<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>
Filtre panelinde seçilen değerler, giriş olarak sorguya aktarılır ve XPath
$input
değişkeninde kullanılabilir
Kaynakları Al Sorgusu, Resource (bookableresource)
varlığını sorgulamak için FetchXML'i kullanır. FetchXML link-entity
öğesini yalnızca Filtre panelinde seçilen Dil kayıtlarıyla ilişkili kaynakları geri döndürmek için kullanıyoruz. Kaynak Hücre Şablonu bölümünde daha sonra açıklandığı gibi, eşleşen dilleri göstermeyi ve birincil veya ikincil dile göre sıralamayı desteklemek için birden fazla link-entity
katılımı kullanıyoruz.
element
ve attribute
açıklamaları burada verilmiştir:
Ad | Açıklama |
---|---|
link-entity |
Kaynak ve Dil varlıkları arasındaki çok-çok ilişkisi için bir katılım oluşturma |
ufx:if |
Bu öznitelikteki XPath ifadesi bir değer geri döndürürse yalnızca bu FetchXML öğesini (link-entity ) gönderir |
attribute |
Eşleşen birincil veya ikincil dili döndürür |
filter ve condition |
Çok-çok ilişkisi kayıtlarını yalnızca belirli Dil kimlikleriyle eşleşenler için filtreler |
ufx:value ve select |
select özniteliğindeki XPath ifadesinin sonucunu gönderir |
ufx:apply ve select |
select özniteliğindeki XPath ifadesinden döndürülen her sonuç için alt FetchXML öğelerini gönderir |
value |
Dil kaydının kimliğini içerir |
Kaynağın sıralama düzenini belirleme
Her kaynağa atanan dillere göre eşleşen kaynakları aldıktan sonra sıralama düzenini belirlemek için yeni bir lang_order
özelliği atarız.
<bag>
<lang_order ufx:select="iif(lang_primary and lang_secondary, 1, iif(lang_primary, 2, iif(lang_secondary, 3, 4)))" />
</bag>
element
ve attribute
açıklamaları burada verilmiştir:
Ad | Açıklama |
---|---|
lang_order |
lang_order adlı FetchXML sorgusundan döndürülen her Kaynak'ta yeni bir özellik oluşturma |
ufx:select |
Bu öznitelikteki XPath ifadesinin sonucunu lang_order özelliğine atar. Sorguda daha önce alınan lang_primary ve lang_secondary özellikleri, kaynak eşleştirme sırasını belirlemek için XPath iif işleviyle birlikte kullanılır. |
Sonuçları sıralama
<Resources ufx:select="order(Resources, 'lang_order')" />
UFX Sorguları, sıralı düzende işlenir. Kaynaklar FetchXML üzerinden alındıktan sonra sonuçlar, Resources
özelliğine atanır. Sonuçları daha önce eklenen lang_order
özelliğine göre sıralarız ve sıralanan sonuçları Resources
özelliğine yeniden atarız.
element
ve attribute
açıklamaları burada verilmiştir:
Adı | Açıklama |
---|---|
Resources |
Resources özelliğini yeniden atama |
ufx:select |
Bu öznitelikteki XPath ifadesinin sonucunu Resources özelliğine atar. XPath order işlevi, lang_order özelliğinde Resources listesini sıralamak için kullanılır. |
Not
Universal Resource Scheduling ile birlikte sağlanan varsayılan Kaynakları Al Sorgusu, Universal Resource Scheduling'e eklenmiş tüm kaynak kısıtlamalarını destekleyen büyük bir sorgudur. Bu alıştırmada, varsayılan sorgunun yalnızca bir alt kümesini kullanacağız ve tek filtre olarak Dilleri ekleyeceğiz.
<?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>
Zamanlama Panosu Kaynakları Al Sorgusu'nu güncelleştirme
- Sağ üstte, Dil sekmesine çift tıklayın
- Genel Ayarlar > Diğer Ayarlar'a kadar aşağı kaydırın
- Kaynakları Al Sorgusu alanını bulun, düzenleyiciyi açmak için sağdaki düğmeye tıklayın
- Değer alanını yukarıdaki Kaynakları Al Sorgusu koduyla güncelleştirin ve Farklı Kaydet'e tıklayın
- Ad alanına "Dil Kaynakları Sorgusu" girin ve Kaydet'e tıklayın. Bu, yeni bir yapılandırma kaydı oluşturur ve bu Zamanlama Panosu'nu kayda bağlar.
- İletişim kutusunun alt kısmında Uygula'ya tıklayın.
Pano, güncelleştirilmiş yapılandırılmayla yeniden yüklenir. Filtreleme artık çalışmaz. Dil kayıtları oluşturup Kaynak kayıtlarıyla ilişkilendirdiyseniz kaynakları artık ilişkili dillere göre filtreleyebilirsiniz.
Özet
Yukarıdaki adımlarda Filtre panelini Dil varlığı için bir filtre denetimi gösterecek şekilde değiştirdik. Ayrıca Kaynakları Al Sorgusu'nu da seçili Dil kayıtlarıyla ilişkili kaynakları eşleştirecek şekilde değiştirdik. Kullanıcı, filtre denetiminde değerler seçip Ara'ya tıkladığında değerler sorguya aktarılır ve FetchXML sorgusu yalnızca eşleşen kaynakları geri döndürür.
Zamanlama Yardımcısı'nı özelleştirme
Zamanlama Yardımcısı'nda yeni Dil kısıtlamalarını kullanmak için Zamanlama Yardımcısı Filtre Düzeni'ni ve Kısıtlamaları Al Sorgusu yapılandırmalarını özelleştirmemiz gerekir.
Her panonun tek tek özelleştirilebildiği Zamanlama Panosu özelleştirmelerinden farklı olarak Zamanlama Yardımcısı özelleştirmeleri Zamanlama Yardımcısı'nın kullanıldığı tüm panoları etkiler. Zamanlama Yardımcısı özelleştirmeleri, zamanlanabilir bir tür veya tüm türler için özel olabilir. Bu örnekte, Zamanlama Yardımcısı'nı tüm türler için özelleştireceğiz.
Zamanlama Yardımcısı Filtre Düzeni Yapılandırması
Bahşiş
Aşağıdaki adımlar için değişikliklerinizi yapmak üzere XML söz dizimi vurgulamasını destekleyen bir metin düzenleyicisi kullanmak ve ardından değişikliklerinizi Universal Resource Scheduling düzenleyicisine geri yapıştırmak yararlıdır.
Zamanlama Yardımcısı Filtre Düzeni yapılandırması, Zamanlama Panosu Filtre Düzeni gibi Filtre panelindeki denetimlerin düzenini tanımlar. Zamanlama Yardımcısı, Başlangıç Saati, Bitiş Saati, Süre vb. gibi Zamanlama Panosu'ndan daha fazla filtre kullandığından burada farklı bir düzen kullanılır.
Not
Bu alıştırmada yalnızca Universal Resource Scheduling'de Zamanlama Yardımcısı Filtre Düzeni yapılandırmasıyla birlikte sağlanan varsayılan filtrelerin bir alt kümesini yeniden kullanacağız ve kullanılabilir tek filtre olarak Diller açılan menüsünü ekleyeceğiz.
Düzene eklediğimiz filtre, yukarıdaki Filtre Düzeni Yapılandırması bölümündekiyle aynıdır. Diğer denetimler, Zamanlama Yardımcısı arama parametrelerini değiştirmek için gereklidir.
Tüm Zamanlama Yardımcısı Filtre Düzeni
<?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>
Zamanlama Yardımcısı Filtre Düzeni'ni güncelleştirme
- Sağ üstte, Dil sekmesine çift tıklayın
- Sağ üstte Varsayılan Ayarları Aç'a tıklayın
- Zamanlama Türleri bölümüne gidin ve soldaki listede Yok seçeneğini belirleyin
- Zamanlama Yardımcısı Filtre Düzeni alanını bulun, düzenleyiciyi açmak için sağdaki düğmeye tıklayın
- Değer alanını yukarıdaki Zamanlama Yardımcısı Filtre Düzeni koduyla güncelleştirin ve Farklı Kaydet'e tıklayın
- Ad alanına "Dil Zamanlama Yardımcısı Filtre Düzeni" girin ve Kaydet'e tıklayın. Bu, yeni bir yapılandırma kaydı oluşturur ve bu Zamanlama Panosu'nu kayda bağlar.
- İletişim kutusunun alt kısmında Uygula'ya tıklayın.
Pano yeniden yüklenir. Daha sonra, Gereksinim'de ayarlanan Diller, Zamanlama Yardımcısı aramasının parçası olacak şekilde Zamanlama Yardımcısı'nı yeni Diller kısıtlamalarımızla kullanabilmemiz için Kısıtlamaları Al Sorgusu'nu değiştirmemiz gerekir.
Kısıtlamaları Al Sorgusu Yapılandırması
Bahşiş
Aşağıdaki adımlar için değişikliklerinizi yapmak üzere XML söz dizimi vurgulamasını destekleyen bir metin düzenleyicisi kullanmak ve ardından değişikliklerinizi Universal Resource Scheduling düzenleyicisine geri yapıştırmak yararlıdır.
Kısıtlamaları Al Sorgusu yapılandırması, Gereksinim Kısıtlamalarını Al API'si tarafından kullanılan bir UFX Sorgusudur. Bu yapılandırma, (kullanıcı arabiriminde seçili) bir Gereksinim kaydının kimliğini giriş olarak alır ve Gereksinim kaydını ve tüm alt kayıtlarını geri döndürür.
Not
Universal Resource Scheduling ile birlikte sağlanan varsayılan Kısıtlamaları Al Sorgusu, Universal Resource Scheduling'e eklenmiş tüm gereksinim kısıtlamalarını destekleyen büyük bir sorgudur. Bu alıştırmada, varsayılan sorgunun yalnızca bir alt kümesini kullanacağız ve tek filtre olarak Dilleri ekleyeceğiz.
<Languages ufx:select="lookup-to-list(Requirement/lang_primarylanguage, Requirement/lang_secondarylanguage)" />
UFX Sorguları, sıralı düzende işlenir. Kısıtlamaları Al Sorgusu, Requirement (msdyn_resourcerequirement)
varlığını sorgulamak ve sonucu olan Gereksinim kaydını Requirement
özelliğine atamak için FetchXML'i kullanır. Kısıtlamalar özellik paketine Birincil Dil ve İkincil Dil özniteliklerini varlıkların tek bir listesinde (EntityCollection) birleştiren yeni bir Languages
özelliği ekliyoruz. Diller denetimini Filtre panelinde kayıtların bir listesi olarak gösterdiğimiz için bu gereklidir. İki öznitelik için Filtre panelinde iki ayrı denetim oluşturmak alternatif bir yol olabilir.
element
ve attribute
açıklamaları burada verilmiştir:
Ad | Açıklama |
---|---|
Languages |
Languages adı verilen sonuç kısıtlamaları özellik paketinde yeni bir özellik oluşturma |
ufx:select |
Bu öznitelikteki XPath ifadesinin sonucunu Languages özelliğine atar. Daha önce sorguda alınan ve Requirement özelliğinde kullanılabilen lang_primarylanguage ve lang_secondarylanguage özellikleri, birden çok lookup özelliğini tek bir list (EntityCollection) özelliğine dönüştüren lookup-to-list XPath işlevine aktarılır |
Kısıtlamaları Al Sorgusu:
<?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>
Kısıtlamaları Al Sorgusu'nu güncelleştirme
- Sağ üstte, Dil sekmesine çift tıklayın
- Sağ üstte Varsayılan Ayarları Aç'a tıklayın
- Zamanlama Türleri bölümüne gidin ve soldaki listede Yok seçeneğini belirleyin
- Zamanlama Yardımcısı Kısıtlamaları Al Sorgusu alanını bulun, düzenleyiciyi açmak için sağdaki düğmeye tıklayın
- Değer alanını yukarıdaki Kaynakları Al Sorgusu koduyla güncelleştirin ve Farklı Kaydet'e tıklayın
- Ad alanına "Dil Kısıtlamaları Sorgusu" girin ve Kaydet'e tıklayın. Bu, yeni bir yapılandırma kaydı oluşturur ve bu Zamanlama Panosu'nu kayda bağlar.
- Zamanlama Yardımcısı Kaynakları Al Sorgusu alanını bulun ve daha önce Zamanlama Panosu Özelleştirmeleri'nde oluşturduğumuz Diller Kaynaklar Sorgusu'nu seçin
- İletişim kutusunun alt kısmında Uygula'ya tıklayın.
Pano, güncelleştirilmiş yapılandırılmayla yeniden yüklenir. Zamanlama Yardımcısı filtrelemesi artık çalışacaktır. Dil kayıtları oluşturduysanız ve bunları Gereksinim kayıtlarıyla ilişkilendirdiyseniz artık Zamanlama Panosu'nun alt kısmında bir Gereksinim kaydı seçebilir, Zamanlama Yardımcısı'nı başlatmak için Kullanılabilirliği Bul'a tıklayabilir ve yalnızca gereksinimde kaydedilmiş dillerle eşleşen kaynakları görebilirsiniz.
Kaynak Hücre Şablonu Yapılandırması
Bahşiş
Aşağıdaki adımlar için değişikliklerinizi yapmak üzere HTML söz dizimi vurgulamasını destekleyen bir metin düzenleyicisi kullanmak ve ardından değişikliklerinizi Universal Resource Scheduling düzenleyicisine geri yapıştırmak yararlıdır.
Kaynak Hücre Şablonu yapılandırması, kaynak hücredeki içeriği işlemek için kullanılan bir Handlebars şablonudur. Kaynakları Al Sorgusu'ndan gelen çıktı, şablon için kullanılabilir.
Varsayılan kaynak şablonunu kaynak, birincil ve ikincil dillerle eşleşirse yeşil ✔✱ göstergesini, yalnızca birincil dil ile eşleşirse yeşil ✔ göstergesini ve yalnızca ikincil dil ile eşleşirse sarı ✔ göstergesini gösterecek şekilde değiştiriyoruz.
{{#if lang_primary}}
<span style='color:green;'>✔{{#if lang_secondary}} ✱{{/if}}</span>
{{else if lang_secondary}}
<span style='color:#ffe700;'>✔</span>
{{/if}}
lang_primary
ve lang_secondary
özellikleri, yukarıda ayarladığımız özel Kaynakları Al Sorgumuzdan geri döndürülür. Şablon oluşturma sözdizimi belgeleri için Handlebars web sitesine başvurun.
Kaynak Hücre Şablonu:
<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>
Kaynak Hücre Şablonu'nu güncelleştirme
- Sağ üstte, Dil sekmesine çift tıklayın
- Sağ üstte Varsayılan Ayarları Aç'a tıklayın
- Zamanlama Türleri bölümüne gidin ve soldaki listede Yok seçeneğini belirleyin
- Zamanlama Yardımcısı Kaynak Hücre Şablonu alanını bulun, düzenleyiciyi açmak için sağdaki düğmeye tıklayın
- Değer alanını yukarıdaki Kaynak Hücre Şablonu koduyla güncelleştirin ve Farklı Kaydet'e tıklayın
- Ad alanına "Dil Kaynak Hücre Şablonu" girin ve Kaydet'e tıklayın. Bu, yeni bir yapılandırma kaydı oluşturur ve bu Zamanlama Panosu'nu kayda bağlar.
- İletişim kutusunun alt kısmında Uygula'ya tıklayın.
Pano, güncelleştirilmiş yapılandırılmayla yeniden yüklenir. Kaynak hücresi artık bir kaynağın Filtre panelindeki dil kısıtlamasıyla nasıl eşleştiğini gösterir.
Özet
Yukarıdaki adımlarda Zamanlama Yardımcısı'nda Filtre panelini Dil varlığı için bir filtre denetimini gösterecek şekilde değiştirdik. Ayrıca Kısıtlamaları Al Sorgusunu Gereksinim varlığıyla ilgili yeni Dil özniteliklerini sorgulayacak ve bunları bir listeye dönüştürecek şekilde değiştirdik. Kullanıcı Gereksinim kaydı için kullanılabilirliği bulmayı seçtiğinde Filtre paneli, yakalanan Dil kısıtlamalarını gösterir. Filtre panelinden gelen değerler, Kaynakları Al Sorgusu'na aktarılır ve FetchXML sorgusu yalnızca eşleşen kaynakları geri döndürür.
Ayrıca bkz.
Universal Resource Scheduling genişletilebilirliği sürüm notları