Exemplo: Estender Universal Resource Scheduling cunha restrición de idioma personalizada
Esta guía paso a paso acompaña a Nocións e personalización de recursos coincidentes en Universal Resource Scheduling
Nesta guía paso a paso, estenderemos recursos Universal Resource Scheduling cunha restrición de Language
. Considere unha organización que quere filtrar recursos en función dos idiomas que falan. Tamén queren capturar no rexistro Requirement
o idioma necesario para a tarefa. Esta restrición segue un padrón semellante á restrición de Territory
incorporada. Unha nova entidade principal Language
almacenará os idiomas diferentes que pode falar un recurso. Un rexistro de Resource
pode asociarse a varios Languages
mediante unha entidade de relación de varios a varios. Na entidade Requirement
, modelaremos isto creando dous atributos de busca novos: Primary Language
e Secondary Language
. Ao buscar recursos dispoñibles para un requisito, só se mostrarán os recursos asociados ao Primary Language
ou ao Secondary Language
.
Crear as novas entdades e relacións
Nesta sección, crearemos o esquema novo para a entidade principal Language
e actualizaremos as entidades Resource
e Requirement
coas relacións correspondente coa nova entidade Language
.
Crear un publicador novo
En Dynamics 365, en Personalizacións, cree un novo Publicador
Encha o formulario do novo Publicador cos seguintes detalles:
Campo Value Nome para mostrar Language Nome idioma Prefixo lang Prema Gardar e pechar
Crear unha solución nova
En Dynamics 365, en Personalizacións, cree unha nova solución
Encha o formulario da nova solución cos seguintes detalles:
Campo Value Nome para mostrar Language Nome Language Publicador Language Versión 1.0.0.0 Prema en Gardar
Crear a entidade de idioma
Na solución Idioma, cree unha nova entidade
Encha o formulario da nova entidade cos seguintes detalles:
Campo Value Nome para mostrar Language Nome plural Idiomas Nome lang_language (O prefixo lang_
encherase automaticamente e será só de lectura)Prema en Gardar
Crear a relación de varios a varios desde a entidade de Recursos na entidade de Idioma
Na entidade de Idioma, cree unha nova rellación de Varios a Varios
Encha o formulario da nova relación cos seguintes detalles:
Campo Value Entidade actual Opción de visualización Utilizar nome en plural Outra entidade Nome da entidade Recurso reservable Prema Gardar e pechar
Pechar o formulario de entidade de Idioma
Crear as relacións desde a entidade de Requisito na entidade de Idioma
Na solución Idioma, engada a entidade de Requisito de Recursos existente á solución (Se aparece co diálogo Faltan Compoñentes Necesarios, seleccione Non, non incluír compoñentes necesarios.)
Crear un novo Campo na entidade de Requisito de Recursos
Encha o formulario do novo campo cos seguintes detalles:
Campo Value Nome para mostrar Idioma principal Tipo de datos Buscar Tipo de rexistro de destino Language Prema Gardar e pechar
Crear un novo Campo na entidade de Requisito de Recursos
Encha o formulario do novo campo cos seguintes detalles:
Campo Value Nome para mostrar Idioma secundario Tipo de datos Buscar Tipo de rexistro de destino Language Prema Gardar e pechar
Actualizar o formulario principal de requisito
- Na entidade de requisito do recurso, engada o formulario de información aos subcompoñentes da entidade (Se aparece co diálogo Faltan Compoñentes Necesarios, seleccione Non, non incluír compoñentes necesarios.)
- No formulario de Información, utilice o Explorador de Campos para engadir os dous novos atributos, Idioma Principal e Idioma Secundario, ao formulario para que os usuarios poidan introducir esta información cando creen requisitos
- Prema en Gardar
- Prema Publicar
- Pode pechar o editor de formularios
Resumo
Nos pasos anteriores, creamos a nova entidade de Idioma. Despois, engadimos novas relacións coas entidades de Recurso e Requisito. Recursos pode estar relacionado con varios idiomas porque engadimos unha relación de varios a varios entre Idioma e Recurso. Requisitos poden estar relacionado con dous idiomas porque engadimos dous atributos de busca na entidade Requisito que apunta á nova entidade de Idioma.
Engadir datos
Utilicea Localización Avanzada para engadir novos rexistros á entidade de Idioma. Despois, poderá asociar rexistros de Recursos aos novos rexistros de Idioma abrindo un rexistro de Recursos e navegando á relación de Idioma na barra de navegación. Para os rexistros de Requisitos pode encher os novos campos de Idioma Principal e Idioma Secundario no formulario de Requisitos.
Personalizar o panel de programación
Para filtrar recursos no panel de Programación coa nova restrición de Idioma, actualizaremos os rexistros de configuración da consulta de Recuperar Recursos Consulta e Deseño do Filtro.
Configuración de deseño do filtro
Tipp
Para os pasos que se mostran a continuación, é útil utilizar un editor de texto que admite o realce da sintaxe XML para realizar modificacións e despois pegar os cambios no editor de Universal Resource Scheduling.
A configuración do Deseño do Filtro é unha definición de deseño XML para personalizar o deseño do panel de Filtro.
Hinweis
Para este exercicio, eliminaremos todos os filtros predefinidos enviados con Universal Resource Scheduling desde o panel de Filtro e engadiremos Idiomas como o único filtro dispoñible.
<control type="combo" source="entity" key="Languages" inactive-state="1" label-id="Languages" entity="lang_language" multi="true" />
O elemento control
engade un control novo ao panel de Filtro. Esta é a descrición de cada atributo:
Nome | Descrición |
---|---|
type |
Tipo de control de filtro. Un control combo representa unha lista despregable con valores para escoller |
source |
Orixe de valores para o control despregable. Unha orixe entity mostra os rexistros de entidade do control despregable |
key |
A clave utilizada para almacenar os valores seleccionados na bolsa de propiedades das restricións |
inactive-state |
O statecode inactivo para esta entidade. Isto úsase para excluír rexistros inactivos desde o control despregable |
label-id |
A etiqueta localizada que se utiliza para este control |
entity |
Os rexistros desta entidade mostraranse no control despregable |
multi |
Configura o control despregable para permitir a selección dun rexistro individual ou varios rexistros |
Deseño do filtro:
<?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>
Crear un novo panel de Idiomas
Para manter estas modificacións illadas, crearemos un panel de Programación independente novo e aplicaremos as modificacións, mais sempre pode realizar estas modificacións no panel de Programación predefinido para que outros paneis de Programación poidan herdar automaticamente estas modificacións.
- En Dynamics 365, na barra de navegación, vaia a Programación de recursos > Panel de programación
- Na parte superior dereita, prema o signo + para crear un novo panel
- Nome do novo Idioma do panel
- Na parte inferior do diálogo, prema Engadir. Crearase o panel novo.
Actualizar o deseño do filtro do panel de programación
A seguir, crearemos un novo rexistro de configuración, que almacena deseños de filtro e consultas utilizadas polo panel de Programación e despois ligaremos o panel de programación creado ao novo rexistro de configuración. Hai varias formas de facer isto, pero esta é a máis rápida:
- Na parte superior dereita, prema dúas veces o separador de Idioma
- Desprácese cara a abaixo até a Configuración Xeral > Outras Configuracións
- Localice o campo de Deseño de Filtro, prema no botón á dereita para abrir o editor
- Actualice o campo Valor co código de Deseño de Filtro enriba e prema Gardar Como.
- Introduza "Deseño do Filtro de idioma" no campo Nome e prema Gardar. Isto crea un novo rexistro de configuración e liga este panel de Programación ao rexistro.
- Na parte inferior do diálogo, prema Aplicar.
Volverase a cargar o panel e verá o panel de Filtro na esquerda co novo deseño; só o filtro de Idiomas estará dispoñible. A filtraxe aínda non funcionará xa que precisamos actualizar a consulta de Recuperar Recursos para aproveitar o filtro novo.
Configuración da consulta Recuperar recursos
Tipp
Para os pasos que se mostran a continuación, é útil utilizar un editor de texto que admite o realce da sintaxe XML para realizar modificacións e despois pegar os cambios no editor de Universal Resource Scheduling.
A configuración da Consulta Recuperar Recursos é unha Consulta UFX utilizada pola API Coincidencia de Recursos. Colle como entrada os valores introducidos no panel de Filtro e crea dinamicamente o FetchXML correcto para localizar os recursos correspondentes.
A continuación móstranse os fragmentos de contido novos engadidos á consulta de Recuperar Recursos para que coincidan e se ordenen en función dos Idiomas dos Recursos.
Engadir as asociacións de bookableresource
a 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>
Os valores seleccionado no panel de Filtro pásanse como entrada para a consulta e están dispoñibles no XPath
$input
variable
A Consulta de Recuperar recursos utiliza FetchXML para a consulta da entidade Resource (bookableresource)
. Estamos a utilizar o elemento de FetchXML link-entity
para devolver só recursos asociados aos rexistros de Idioma seleccionados no panel de Filtro. Para que se mostren os idiomas coincidentes e ordenar por idioma principal ou secundario, que se describe máis adiante na sección Modelo de Cela de recurso, estamos a utilizar varias asociacións de link-entity
.
Esta é a descrición de cada element
e attribute
:
Nome | Descrición |
---|---|
link-entity |
Crear unha asociación á relación de varios a varios entre as entidades Recurso e Idioma |
ufx:if |
Unicamente emita este elemento FetchXML (link-entity ) se a expresión XPath neste atributo devolve un valor |
attribute |
Devolver o idioma principal ou secundario que coincida |
filter e condition |
Filtrar os rexistros de relacións de varios a varios só para están os que coincidan cos ID de idioma especificados |
ufx:value e select |
Móstrase o resultado da expresión XPath no atributo select |
ufx:apply e select |
Emita os elementos de FetchXML secundarios para cada resultado devolto da expresión XPath no atributo select |
value |
Contén o ID dun rexistro de Idioma |
Determinar ordenación dun Recurso
Despois de recuperar os recursos coincidentes, baseado nos idiomas atribuídos de cada recurso, atribuímos unha nova propiedade de lang_order
para determinar a ordenación.
<bag>
<lang_order ufx:select="iif(lang_primary and lang_secondary, 1, iif(lang_primary, 2, iif(lang_secondary, 3, 4)))" />
</bag>
Esta é a descrición de cada element
e attribute
:
Nome | Descrición |
---|---|
lang_order |
Crear unha nova propiedade en cada Recurso devolto da consulta de FetchXML chamada lang_order |
ufx:select |
Atribúa o resultado da expresión XPath neste atributo á propiedade lang_order . As propiedades lang_primary e lang_secondary , recuperadas antes na consulta, utilízanse xunto coa función iif de XPath para determinar a orde da coincidencia de recursos. |
Ordenar os resultados
<Resources ufx:select="order(Resources, 'lang_order')" />
As Consultas UFX procésanse en orde secuencial. Despois de recuperar os recursos mediante FetchXML, os resultados atribúense á propiedade Resources
. Estamos a ordenar os resultados segundo a propiedade lang_order
engadidos antes e a volver atribuír os resultados ordenados para a propiedade Resources
.
Esta é a descrición de cada element
e attribute
:
Nome | Descripción |
---|---|
Resources |
Volver atribuír a propiedade Resources |
ufx:select |
Atribúa o resultado da expresión XPath neste atributo á propiedade Resources . A función order de XPath úsase para ordenar a lista Resources na súa propiedade lang_order . |
Hinweis
A Consulta de Recuperar recursos que se envía con Universal Resource Scheduling é unha consulta grande compatible con todas as restricións do recurso incluídas con Universal Resource Scheduling. Para este exercicio, utilizaremos só un subconxunto da consulta predefinida e engadiremos Idiomas como o único filtro.
<?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>
Actualizar a consulta do panel de programación para recuperar recursos
- Na parte superior dereita, prema dúas veces o separador de Idioma
- Desprácese cara a abaixo até a Configuración Xeral > Outras Configuracións
- Localice o campo de consulta de recuperar recursos, prema no botón á dereita para abrir o editor
- Actualice o campo Valor co código de consulta de recuperar recursos enriba e prema Gardar Como
- Introduza "Consulta de recursos de idioma" no campo Nome e prema Gardar. Isto crea un novo rexistro de configuración e liga este panel de Programación ao rexistro.
- Na parte inferior do diálogo, prema Aplicar.
O panel cargarase de novo coa configuración actualizada. A filtraxe non funcionará. Se creou rexistros de Idioma e os asociou aos rexistros de Recursos, agora poderá filtrar recursos segundo os seus idiomas asociados.
Resumo
Nos pasos indicados arriba, modificamos o panel de Filtro para mostrar un control de filtro para a entidade de Idioma. Tamén modificamos a consulta de Recuperar Recursos para que os recursos asociados coincidan cos rexistros de Idioma seleccionados. Cando un usuario selecciona valores no control do filtro e preme Buscar, os valores pasanse á consulta e a consulta de FetchXML devolve só os recursos que coinciden.
Personalizar o asistente de programación
Temos que personalizar as configuracións Deseño de Filtro do asistente de Programación e Recuperar restricións para utilizar as novas restricións de Idioma no asistente de Programación.
A diferenza das personalizacións do panel de Programación, onde cada panel se pode personalizar individualmente, as personalizacións do Asistente de Programación afecta todos os paneis onde se usa o Asistente de programación. As personalizacións do Asistente de Programación poden ser específicas para un tipo programables ou para todos os tipos. Neste exemplo, personalizaremos o Asistente de programación para todos os tipos.
Configuración do deseño do filtro do asistente de programación
Tipp
Para os pasos que se mostran a continuación, é útil utilizar un editor de texto que admite o realce da sintaxe XML para realizar modificacións e despois pegar os cambios no editor de Universal Resource Scheduling.
A configuración do deseño do filtro do asistente de Programación, como deseño do filtro do panel de Programación, define o deseño dos controis no panel de Filtro. Como o asistente de Programación utiliza máis filtros que o panel de Programación, como Hora de Inicio, Hora de Fin, Duración, etc., utilízase un deseño diferente.
Hinweis
Para este exercicio, reutilizaremos só un subconxunto dos filtros predefinidos enviados en Universal Resource Scheduling desde a configuración do deseño do filtro do asistente de Programación e engadiremos a lista despregable de Idiomas como o único filtro dispoñible.
O filtro que estamos a engadir ao deseño é o mesmo que antes en Configuración do Deseño do Filtro. Os outros controis son necesarios para modificar os parámetros de busca do Asistente de Programación.
O deseño do filtro do asistente de programación completo
<?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>
Actualizar o deseño do filtro do asistente de programación
- Na parte superior dereita, prema dúas veces o separador de Idioma
- Na parte superior dereita, prema Abrir configuración predefinida
- Desprácese até a sección Tipos de Programación e seleccione Ningún na lista da esquerda
- Localice o campo de Deseño de Filtro do asistente de programación, prema no botón á dereita para abrir o editor
- Actualice o campo Valor co código de Deseño do filtro do asistente de programación enriba e prema Gardar Como
- Introduza "Deseño do Filtro do asistente de programación" no campo Nome e prema Gardar. Isto crea un novo rexistro de configuración e liga este panel de Programación ao rexistro.
- Na parte inferior do diálogo, prema Aplicar.
O panel cargarase de novo A seguir, temos que cambiar a Consulta de Recuperar restricións antes de poder utilizar a o Asistente de programación coas novas restricións de Idioma, de forma que os Idiomas definidos no Requisito forman parte da busca do Asistente de Programación.
Configuración da consulta Recuperar restricións
Tipp
Para os pasos que se mostran a continuación, é útil utilizar un editor de texto que admite o realce da sintaxe XML para realizar modificacións e despois pegar os cambios no editor de Universal Resource Scheduling.
A configuración da Consulta Recuperar restricións é unha Consulta UFX utilizada pola API Recuperar restricións do requisito. Colle como entrada o ID dun rexistro de Requisito (seleccionado na IU) e devolve o rexistro de Requisito e todos os rexistros secundarios.
Hinweis
A Consulta de Recuperar restricións que se envía con Universal Resource Scheduling é unha consulta grande compatible con todas as restricións do requisito incluídas con Universal Resource Scheduling. Para este exercicio, utilizaremos só un subconxunto da consulta predefinida e engadiremos Idiomas como o único filtro.
<Languages ufx:select="lookup-to-list(Requirement/lang_primarylanguage, Requirement/lang_secondarylanguage)" />
As Consultas UFX procésanse en orde secuencial. A Consulta de Recuperar restricións utiliza FetchXML para a consulta da entidade Requirement (msdyn_resourcerequirement)
e atribúe o resultado, un rexistro de Requisito, á propiedade Requirement
. Estamos a engadir á bolsa de propiedades de restricións unha propiedade nova Languages
que combina ambos atributos, Idioma Principal e Idioma Secundario, nunha única lista de entidades (EntityCollection). Isto é necesario porque estamos a mostrar o control de Idiomas no panel de Filtro como unha lista de rexistros. Tamén se poden crear dous controis independentes no panel de Filtro para os dous atributos.
Esta é a descrición de cada element
e attribute
:
Nome | Descrición |
---|---|
Languages |
Crear unha nova propiedade na bosa de propiedades das restricións chamada Languages |
ufx:select |
Atribúa o resultado da expresión XPath neste atributo á propiedade Languages . As propiedades lang_primarylanguage e lang_secondarylanguage , recuperadas antes na consulta e dispoñibles na propiedade Requirement , pásase á función lookup-to-list de XPath, que converte varias propiedades de lookup nunha única list (EntityCollection) |
Recuperar consulta de restricións:
<?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>
Actualizar a consulta Recuperar restricións
- Na parte superior dereita, prema dúas veces o separador de Idioma
- Na parte superior dereita, prema Abrir configuración predefinida
- Desprácese até a sección Tipos de Programación e seleccione Ningún na lista da esquerda
- Localice o campo de consulta de recuperar restricións do asistente de programación, prema no botón á dereita para abrir o editor
- Actualice o campo Valor co código de consulta de recuperar recursos enriba e prema Gardar Como
- Introduza "Consulta de restricións de idioma" no campo Nome e prema Gardar. Isto crea un novo rexistro de configuración e liga este panel de Programación ao rexistro.
- Localice o campo de consulta de resuperar recursos do asistente de Programación e seleccione a Consulta de Recursos de Idiomas que creamos antes para as Personalizacións do panel de Programación
- Na parte inferior do diálogo, prema Aplicar.
O panel cargarase de novo coa configuración actualizada. A filtraxe do asistente de programación funcionará agora. Se creou rexistros de Idioma e os asociou aos rexistros de Requisitos, agora poderá seleccionar un rexistro de Requisito na parte inferior do panel de Programación, premer Buscar Dispoñibilidade para iniciar o Asistente de programación e ver só os recursos que coinciden cos idiomas gardados no requisito.
Configuracióndo modelo de cela do recurso
Tipp
Para os pasos que se mostran a continuación, é útil utilizar un editor de texto que admite o realce da sintaxe HTML para realizar modificacións e despois pegar os cambios no editor de Universal Resource Scheduling.
A configuración do Modelo de Cela do recurso é un modelo Barra de agarradoira usado para procesar o contido na cela do recurso. O resultado da consulta Recuperar Recursos está dispoñible para o modelo.
Estamos a modificar o modelo de recurso predefinido para mostrar un indicador ✔✱ verde se o recurso concide cos idiomas principal e secundario, un indicador ✔ verde se o recurso coincide só co idioma primario e un indicador ✔ amarelo se o recurso coincide só co idioma secundario.
{{#if lang_primary}}
<span style='color:green;'>✔{{#if lang_secondary}} ✱{{/if}}</span>
{{else if lang_secondary}}
<span style='color:#ffe700;'>✔</span>
{{/if}}
As propiedades lang_primary
e lang_secondary
devólvense desde a Consulta Recuperar recursos personalizada que configuramos antes. Consulte o sitio web Barras de agarradoira para ver a documentación sobre a sintaxe dos modelos.
Modelo de cela do recurso:
<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>
Actualizar o modelo de cela do recurso
- Na parte superior dereita, prema dúas veces o separador de Idioma
- Na parte superior dereita, prema Abrir configuración predefinida
- Desprácese até a sección Tipos de Programación e seleccione Ningún na lista da esquerda
- Localice o campo do modelo de cela do recurso do asistente de programación, prema no botón á dereita para abrir o editor
- Actualice o campo Valor co código do modelo de cela do recurso enriba e prema Gardar Como
- Introduza "modelo de cela do recurso de idioma" no campo Nome e prema Gardar. Isto crea un novo rexistro de configuración e liga este panel de Programación ao rexistro.
- Na parte inferior do diálogo, prema Aplicar.
O panel cargarase de novo coa configuración actualizada. A cela do recurso agora indicará como un recurso coincide coa restrición de idioma no panel de Filtro.
Resumo
Nos pasos indicados arriba, modificamos o panel de Filtro no asistente de programación para mostrar un control de filtro para a entidade de Idioma. Tamén cambiamos a consulta de Recuperar Restricións para consultar os novos atributos de Idioma relacionados coa entidade Requisito e creamos unha lista. Cando un usuario selecciona localizar a dispoñibilidade dun rexistro de Requisito, o panel de Filtro mostrará as restricións do Idioma capturado. Os valores do panel de Filtro pásanse á consulta Recuperar Recursos e a consulta FetchXML devolve só os recursos que coinciden.
Consulte tamén
Notas da versión de extensibilidade de Universal Resource Scheduling
Hinweis
Pode indicarnos as súas preferencias para o idioma da documentación? Realice unha enquisa breve. (teña en conta que esa enquisa está en inglés)
Esta enquisa durará sete minutos aproximadamente. Non se recompilarán datos persoais (declaración de privacidade).
Comentarios
https://aka.ms/ContentUserFeedback.
Proximamente: Ao longo de 2024, retiraremos gradualmente GitHub Issues como mecanismo de comentarios sobre o contido e substituirémolo por un novo sistema de comentarios. Para obter máis información, consulte:Enviar e ver os comentarios