Compartir a través de


Buscar disponibilidad de recursos y crear reservas para grupos de requisitos

Use la API Buscar disponibilidad de recursos para el grupo de requisitos y la API Crear reservas de grupo de requisitos para reservar los recursos que satisfagan las necesidades que identifique en sus grupos de requisitos.

Usted pasa los detalles de un grupo de requisitos en sus llamadas a API y recupera una lista de recursos disponibles y sus intervalos de tiempo abiertos. Esta lista es útil para escenarios de autoprogramación, en los que un usuario quiere ver la disponibilidad de recursos, o para escenarios de programación de portales, en los que un cliente quiere ver la disponibilidad de recursos desde un sitio web o aplicación.

Requisitos previos

  • Dynamics 365 versión 9.0 o superior con Programación de recursos universal versión 3.12.x.x

API Buscar disponibilidad de recursos para el grupo de requisitos

Utilice los siguientes parámetros de entrada y salida para la API Buscar disponibilidad de recursos para el grupo de requisitos (msdyn_SearchResourceAvailabilityForRequirementGroup).

Parámetros

Nombre Escriba Requerido Descripción
Versión String El número de versión de la API. El número de versión identifica la versión de la API que debe invocarse. El número de versión es un número de versión semántico con el formato principal.menor.revisión. No es necesario que la solicitud contenga el número de versión completo.
RequirementGroup Una referencia de entidad a la entidad del grupo de requisitos.
RequirementSpecification Número entero No Si se deja en nulo, se respeta la duración del grupo de requisitos objetivo de forma predeterminada.
Configuración Entity<InputSettings> No Establece la configuración de la solicitud.

Inputsettings

Asignar nombre Tipo Necesario Descripción
ConsiderSlotsWithLessThanRequiredDuration Booleana No Especifica si se debe considerar un intervalo de tiempo con una duración restante inferior a la requerida al calcular los intervalos de tiempo potenciales. De forma predeterminada, es falso.
ConsiderSlotsWithOverlappingBooking Booleana No Especifica si se deben considerar los intervalos de tiempo con reservas superpuestas al calcular intervalos de tiempo potenciales. De forma predeterminada, es falso.
ConsiderSlotsWithProposedBooking Booleana No Especifica si las franjas horarias con las reservas propuestas deben tenerse en cuenta al calcular las franjas horarias potenciales. De forma predeterminada, es falso.
MaxResourceTravelRadius Distancia No Especifica el radio de viaje máximo para los recursos al calcular los intervalos de tiempo disponibles.
SortOrder Número entero No Especifica el orden del grupo de requisitos para la respuesta.
PageSize Número entero No Números de artículos devueltos en una página. Es 20 de forma predeterminada.
PagingCookie String No Cookie de paginación recuperada del resultado de búsqueda anterior.
OrganizationUnits Lista<Guid> No Una colección de id. de unidades organizativas. Un recurso calificado debe ser miembro de una de las unidades organizativas especificadas.
MustChooseFromResources List<Guid> No Evalúe y seleccione los resultados de los recursos de esta lista.
RequiredResources List<Guid> No Evalúe todos los recursos, filtre los resultados según esta lista. En general, utilice MustChooseFromResources en su lugar para mejorar el rendimiento.
IgnoreTimeSlots Booleana No Especifica si se deben ignorar los intervalos de tiempo devueltos. Cuando es verdadero, la lista de intervalos de tiempo devueltos está vacía. De forma predeterminada, es falso.
ConsiderAppointments Booleana Establezca en Verdadero para que la API de disponibilidad de recursos de búsqueda respete las citas Dataverse existentes como reservas en el recurso, siempre que la configuración del nivel de organización y recurso esté configurada. Citas con estatus Ocupado y Terminado se consideran como no disponibles para las operaciones de programación.

Salida

Devoluciones Nombre (tipo) Description
TimeSlots (List<OutputTimeSlot>) StartTime (DateTime) La hora de inicio.
EndTime (DateTime) La hora de finalización.
ArrivalTime (DateTime) Hora de llegada.
Travel(OutputTimeSlotTravel)

OutputTimeSlotTravel
  • Distance (Double)
  • TravelTime (Double)
  • DistanceFromStartLocation (Double)
  • TravelTimeToEndLocation (Double)
La información de viaje de la franja horaria. Solo está presente si el requisito de recurso contiene valores de latitud y longitud.
Effort (doble) Esfuerzo/capacidad.
IsDuplicate (booleano) Un valor booleano que indica si el intervalo de tiempo es un duplicado.
Resource(OutputResource)

OutputResource
  • Resource (BookableResource)
  • TotalAvailableTime (Double)
La entidad de recurso que se explica en este artículo.
Location(OutputTimeSlotLocation)

OutputTimeSlotLocation:
  • WorkLocation (Enum):
    • In situ (0)
    • Instalaciones (1)
    • Independiente de la ubicación (2)

  • LocationSourceSlot (Enum):
    • Común (1)
    • Entidad de GPS personalizada (2)
    • Auditoría móvil (3)
La entidad contiene detalles sobre la ubicación de un intervalo de tiempo. Para más información, consulte TimeSlotLocation en este artículo.
TimeGroup(TimeSlotTimeGroup)

OutputTimeSlotTimeGroup:
  • TimeGroupId (Guid)
  • TimeGroupDetail (EntityReference)
  • TimeGroupDetailStartTime (DateTime)
  • TimeGroupDetailEndTime (DateTime)
La entidad contiene detalles sobre un grupo de tiempo. Para más información, consulte TimeSlotTimeGroup en este artículo.
AvailableIntervals (List<<Guide>OutputTimeSlot>) Una colección de intervalos disponibles.
Recursos (List<OutputResource>) Resource (EntityReference) Una referencia de entidad al recurso reservable.
BusinessUnit (EntityReference) Una referencia de entidad al grupo de recursos que se pueden reservar.
Unidad organizativa (EntityReference) Una referencia de entidad a la unidad organizativa.
ResourceType (Int) Tipo de recurso. Consulte el atributo resourcetype en la entidad BookableResource para ver los posibles valores.
PoolId (Guid) El Id. del grupo del que es miembro el recurso durante la duración del intervalo de tiempo.
CrewId (Guid) El Id. del equipo del que es miembro el recurso durante la duración del intervalo de tiempo.
Email (cadena) La dirección de correo electrónico del recurso.
Phone (cadena) El número de teléfono del recurso.
ImagePath (cadena) Ruta de acceso a la imagen del recurso.
Requisitos (List<OutputRequirements>) Requirement (EntityReference) Una referencia de entidad al recurso de requisito de recursos.
ConstraintBag (String) Restricción de requisitos en contenedor ufx (interno)
Recursos (List<<EntityReference>EntityReference>) Lista de referencia de entidad del recurso que está disponible para los requisitos.
ProposalResourceAssignmentSets (List<OutputProposalResourceAssignmentSet>) IntervalStart (DateTime) Hora de inicio para cada conjunto de asignaciones de recursos de propuesta.
ProposalResourceAssignments (List<OutputProposalResourceAssignments>

OutputProposalResourceAssignments:
  • RequirementId (Guid)
  • ResourceId (Guid)
Lista de recursos asignados a Requisito.
PagingInfos (OutputPagingInfo) MoreResults (booleano) Si hay más resultados o no.
PagingCookie (cadena) Cookie de paginación que se puede utilizar en la búsqueda futura.

Ejemplo

{
  "RequestName": "msdyn_SearchResourceAvailabilityForRequirementGroup",
  "Parameters": [
    {
      "Key": "Version",
      "Value": "1"
    },
    {
      "Key": "RequirementGroup",
      "Value": {
        "Id": "6927721a-0137-42be-8092-26995625a9d9",
        "LogicalName": "msdyn_requirementgroup",
        "Name": null,
        "KeyAttributes": [],
        "RowVersion": null
      }
    }
  ],
  "RequestId": null
}

Response

{
  "ResponseName": "msdyn_SearchResourceAvailabilityForRequirementGroup",
  "Results": [
    {
      "Key": "TimeSlots",
      "Value": {....}
    },
    {
      "Key": "Requirements",
      "Value": {....}
    },
    {
      "Key": "ProposalResourceAssignmentSets",
      "Value": {....}
    },
    {
      "Key": "PagingInfos",
      "Value": {....}
    }]
}

API Crear reservas de grupo de requisitos

Utilice los siguientes parámetros de entrada y salida para la API Crear reservas de grupo de requisitos (msdyn_CreateRequirementGroupBookings).

Parámetros

Nombre Escriba Requerido Descripción
Versión String El número de versión de la API. El número de versión identifica la versión de la API que debe invocarse. El número de versión es un número de versión semántico con el formato principal.menor.revisión. No es necesario que la solicitud contenga el número de versión completo.
RequirementGroup EntityReference Una referencia de entidad a la entidad del grupo de requisitos, generalmente es un GUID, como se muestra en el ejemplo siguiente.
Principio Fecha y hora Hora de inicio del intervalo de tiempo.
Duration Entero Duración de la reserva que se creará.
ResourceAssignments EntityCollection Es una colección de entidades de las Asignaciones de recursos que se deberán realizará para las Reservas que se crearán. Consulte la tabla de entidades Asignación de recursos para obtener más detalles.

Asignaciones de recursos

Asignar nombre Tipo Necesario Description
RequirementId GUID El id. de requisito de recurso del Requisito para el que se creará el registro de reserva.
ResourceId GUID El id. del recurso que se puede reservar del Recurso para el que desea crear la reserva.
BookingStatusId GUID Id. de estado de reserva de la reserva que se creará.
Esfuerzo Número entero No La capacidad del recurso que se puede reservar que consume esta reserva.
TravelTime Número entero No El tiempo de viaje en minutos.

Salida

Devuelve el valor HandlerExecuted que es de tipo booleano.

Utilizar la API Grupo de requisitos

En el siguiente escenario, programe un grupo de requisitos a través de la API. Necesitará un servicio creado con recursos antes de poder programar una reserva. Siga estos pasos para crear una actividad de servicio.

Configuración de servicio

Configuración del servicio.

  1. En el mapa del sitio, en Programación, seleccione Servicio.
  2. Vaya a Requisitos de recursos.
  3. Cree una actividad de servicio. Para este ejemplo, hemos creado Grupo de requisitos de prueba.

Configuración de actividad de servicio

Configuración de actividad de servicio.

  1. En el mapa del sitio, en Programación, seleccione Actividades de servicio.
  2. Vaya a Actividades de servicio.
  3. Para Asunto, Seleccione Grupo de requisitos de prueba.
  4. Para Servicio, Seleccione Grupo de requisitos de prueba.

Nota

Esta configuración crea automáticamente un grupo de requisitos de recursos que tiene el mismo nombre que la actividad de servicio.

Ahora tiene un grupo de requisitos creado automáticamente que tiene un técnico (recurso) que se debe programar para realizar el servicio en la ubicación de su cliente.

Cuadrícula Grupo de requisitos de recursos

La imagen siguiente es un ejemplo de configuración de la página Grupo de requisitos de recursos.

Grupo de requisitos activos.

Nota

Para acceder a la página Grupo de requisitos desde la aplicación Centro de servicio al cliente, debe navegar a través de una URL.

Importante

Utilice la siguiente URL para llegar a la página Grupo de requisitos de recursos: <<YourOrgURL>YourOrgURL>?appid=guid&pagetype=entitylist&etn=msdyn_requirementgroupr.

Grupo de requisitos de prueba.

  1. Vaya a General.
  2. Campo de nombre Grupo de requisitos de prueba.
  3. Escriba un nombre en el campo Propietario.
  4. Campo de plantilla.
  5. Plantilla requerida, seleccione No.

Busca su organización

En el siguiente escenario, mostramos cómo pasar valores para un grupo de requisitos específico (referencia de la entidad - GUID), recursos necesarios para completar el trabajo y hacer coincidir el recurso con la unidad organizativa.     

Importante

  • Para ejecutar la API Grupo de requisitos, necesita GUID para:
    • Grupo de requisitos
    • Recursos que se pueden reservar
    • Unidad organizativa (que se puede recuperar utilizando la API web)
  • Si se llama a la API desde un cliente (navegador o aplicación de lienzo) basado en JavaScript, debe tener el SDK de SOAP extendido. El SDK de SOAP extendido no es una versión oficial de Microsoft, pero se proporciona en los archivos de ejemplo descargables para orientación.
  • Recomendamos que pruebe esta búsqueda en sus entornos de desarrollo o prueba para validar sus escenarios y resultados antes de ejecutarla en su entorno de producción.
  • Esta API utiliza el tipo de objeto complejo de entrada y salida, por lo que solo admite el punto de conexión SOAP. No es compatible con el punto de conexión OData.

Para ejecutar esta búsqueda en su organización, debe descargar los archivos de ejemplo, y luego completar los siguientes pasos.  

  1. Modifique los parámetros de entrada codificados de forma rígida en el archivo msdyn_SearchResourceAvailabilityForRequirementGroupSample.js para reflejar los GUID de los registros en su organización. (Ejemplo: grupo de requisitos, recursos, unidad organizativa).   

Modificar los parámetros de entrada codificados de forma rígida para reflejar los GUID de registro.

Grupo de requisitos de búsqueda de ejemplo

  1. Agregar los archivos en la carpeta de ejemplo como recursos web en su organización

Modifique los parámetros de entrada codificados de forma rígida para agregar los archivos en la carpeta de ejemplo.

Modifique los parámetros de entrada codificados de forma rígida para la carpeta de ejemplo.

  1. Navegue a la página recién agregada new_msdyn_SearchResourceAvailabilityForRequirementGroupSample.htm. Ejemplo: <<YourOrgURL>>//WebResources/new_msdyn_SearchResourceAvailabilityForRequirementGroupSample.htm  

Navegue a la página recién agregada.

  1. Abra las herramientas de desarrollo del navegador utilizando la tecla de función F12. Establezca puntos de interrupción según sea necesario e inspeccione la solicitud/respuestas en la consola de la herramienta para desarrolladores.  

Abra las herramientas del desarrollador del explorador.

Podemos ver que hay varios conjuntos de intervalos de tiempo que se devuelven con cada conjunto correspondiente a un recurso disponible coincidente asignado al requisito subyacente del Grupo de requisitos.   

Después de que la API devuelva los conjuntos de intervalos de tiempo, puede mostrarlos en el portal web personalizado, una aplicación o una Power App (modelo/lienzo).   

  1. Después de elegir un conjunto de intervalos de tiempo específico (Número de conjunto 1 en este ejemplo), actualice su recurso web new_msdyn_CreateRequirementGroupBookingsSample.js en su organización para pasar las asignaciones de recursos (guid de requisitos, guid de recursos) y el Grupo de requisitos como se muestra en el siguiente ejemplo:   

Actualizar el recurso web para pasar asignaciones de recursos.

Importante

Busque el código de ejemplo completo aquí: Crear grupo de requisitos.

Buscar el código de ejemplo.

  1. Navegue a la página recién agregada new_ msdyn_CreateRequirementGroupBookingsSample.htm. (Ejemplo: <<YourOrgURL>>//WebResources/new_msdyn_CreateRequirementGroupBookingsSample.htm) para invocar una llamada a la API de reservas y crear la reserva.

Invocar una llamada a la API de reservas.

  1. Abra las herramientas de desarrollo del navegador utilizando la tecla de función F12. Aquí verá que el valor ejecutado del controlador se establece en true, lo que indica que las reservas se crearon correctamente.   

Valor ejecutado por el controlador establecido en True.

También podemos verificar este valor volviendo a la organización y verificando las reservas asociadas del grupo de Servicio/Requisito que creamos, como se muestra en las siguientes imágenes.   

Consultar las reservas asociadas.

Verificar que las reservas se hayan creado correctamente.

Otros posibles escenarios que podrían usar estas API son:

  • Cree una aplicación web personalizada o un portal de Dynamics 365 para proporcionar programación de citas para usuarios. La aplicación muestra los intervalos de tiempo disponibles para el servicio o producto que se ofrece mediante el uso de requisitos de varios recursos (grupos de requisitos).
  • Cree una aplicación de lienzo Power Apps para admitir escenarios de autoprogramación para aplicaciones de línea de negocio.   

Vea la sección Recursos adicionales para enlaces más recursos de ayuda.

Código de ejemplo

El siguiente código de ejemplo muestra cómo implementar el mensaje msdyn_SearchResourceAvailabilityForRequirementGroup.

        { 
            // Authentication  
            String machineName = "contoso?????"; 
            String orgName = "?????"; 
            String domain = $"{machineName}dom.extest.microsoft.com"; 
            String uri = $"http://{machineName}.{domain}/{orgName}/XRMServices/2011/Organization.svc"; 
            String username = "?????"; 
            String password = "?????"; 

            OrganizationServiceManager osm = new 
            OrganizationServiceManager(new Uri(@uri), username, password, domain); 
            _serviceProxy = osm.GetProxy(); 
            _service = (IOrganizationService)_serviceProxy; 
            searchResourceAvailabilityForRequirementGroup(); 
            createRequirementGroupBookings(); 
        } 

        static void searchResourceAvailabilityForRequirementGroup() 
        { 
            var req = new OrganizationRequest() 
            { 
                RequestName = "msdyn_SearchResourceAvailabilityForRequirementGroup" 
            }; 

            //Version  
            req["Version"] = "1"; 
            req["RequirementGroup"] = new EntityReference("msdyn_requirementgroup", Guid.Parse("e5e4f033-150d-eb11-a822-000d3aaf102a")); 

            Entity requirementSpecification = new Entity(); 
            requirementSpecification.Attributes.Add("msdyn_fromdate", DateTime.Today.AddDays(1)); 
            requirementSpecification.Attributes.Add("msdyn_todate", DateTime.Today.AddDays(3)); 
            req["RequirementSpecification"] = requirementSpecification; 

            try 
            { 
                var response = _service.Execute(req); 
                Console.WriteLine("Response from search: {0}", JsonConvert.SerializeObject(response)); 
            } 
            catch (Exception e) 
            { 

                Console.WriteLine("msdyn_SearchResourceAvailabilityForRequirementGroup failed with the following error: {0}", e.Message); 
            } 
        } 

        static void createRequirementGroupBookings() 
        { 
            var req = new OrganizationRequest() 
            { 
                RequestName = "msdyn_createRequirementGroupBookings" 
            }; 

            req["Version"] = "1"; 
            req["RequirementGroup"] = new EntityReference("msdyn_requirementgroup", 
            Guid.Parse("d74260ee-180d-eb11-a822-000d3aaf102a")); 
            req["Start"] = DateTime.Today.AddDays(1); 
            req["Duration"] = 60; 
            EntityCollection resourceAssignment = new EntityCollection(); 
            var entity = new Entity(); 
            entity["RequirementId"] = Guid.Parse("df4260ee-180d-eb11-a822-000d3aaf102a"); 
            entity["ResourceId"] = Guid.Parse("268e3d0d-5e0c-eb11-a822-000d3aaf102a"); 
            entity["BookingStatusId"] = Guid.Parse("10de5842-cf5e-4092-9006-d0aa9f9c1f74"); 
            resourceAssignment.Entities.Add(entity); 
            req["ResourceAssignments"] = resourceAssignment; 

            try 
            { 
                var response = _service.Execute(req); 
                Console.WriteLine("Response JSON : " + JsonConvert.SerializeObject(response)); 
            } 
            catch (Exception e) 
            { 
                Console.WriteLine("msdyn_createRequirementGroupBookings request failed with the following exception: {0}", e.Message); 
            } 
            Console.ReadKey(); 
        }  

Cómo migrar de la API heredada a Programación de recursos universal

Para migrar desde la API de búsqueda heredada y la API de reserva a la API a la API de Programación de recursos universal, use los siguientes campos de entrada y salida requeridos para asignar las API.

Datos de asignación de entrada para la API de búsqueda

Entrada heredada Entrada de Programación de recursos universal Description
ServiceId Grupo de requisitos GUID de grupo de servicios/requisitos
SearchWindowStart Fecha inicial Fecha de inicio para la búsqueda de cita
SearchWindowEnd Fecha final Fecha de finalización para la búsqueda de cita
Duración Duración Duración de la cita
Número de resultados Tamaño de página Número total de propuestas o número de citas en una página.
Ubicaciones OrganizationUnits GUID de sitio/OU
RequiredResource Recursos preferidos Recursos que el cliente prefiere programar
Restricciones Restricciones Entidad de cliente (ufx)
RecurrenceDuration En una búsqueda de cita periódica, la duración de la cita
RecurrenceTimeZoneCode Zona horaria para una solicitud periódica
SearchDirection Búsqueda hacia adelante o hacia atrás de intervalos, según las fechas indicadas
AnchorOffSet Desplazamiento en horas desde la medianoche
UserTimeZoneCode Zona horaria establecida para el usuario
SearchRecurrenceRule Frecuencia, intervalo, recuento, etc.
Tipos de recursos Tipo de recurso
Recursos restringidos Restringido para programar la cita

Asignación de salida para la API de búsqueda

Salida heredada Salida de Programación de recursos universal
Propuestas de cita ProposalsResourceAssignmentSet
TraceInfo
ExtensionDataObject
Intervalos de tiempo
Requirements(constraintbag)
PagingInfos

Escenarios de ejemplo para migrar desde la API de programación heredada a Programación de recursos universal

Los ejemplos basados en escenarios de esta sección agregan más detalles sobre la asignación de la API heredada a la nueva API de Programación de recursos universal.

Escenario 1: Obtenga dos recursos para cada propuesta de programación

La siguiente captura de pantalla de la API heredada se proporciona como referencia en este escenario.

Captura de pantalla de configuración heredada para referencia para escenario 1.

  1. Cree un sitio (Site1), un usuario (User1) y un recurso de equipamiento (pestaña Instalaciones/equipamiento), con el nombre Eq1, con el sitio establecido en Site1.

  2. Cree las horas de cierre y trabajo de la empresa para el usuario (8:00 a.m. a 6:00 p.m.) y el equipamiento (8:00 a.m. a 6:00 p.m.).

  3. Cree un nuevo servicio (Service1) y luego agregue recursos necesarios como Elegir 2 del User1, Eq1. Guarde y cierre el servicio.

Captura de pantalla de Programar actividad de servicio para escenario 1.

  1. Vaya a la página de inicio y programe una actividad de servicio y luego seleccione Service1 y luego seleccione Programar>Buscar intervalos disponibles.

  2. Verifique que cada propuesta devuelva los dos recursos de acuerdo con los criterios que establezca.

Código de API de Programación de recursos universal para el escenario 1

void searchRequirementgroup(Microsoft.Pfe.Xrm.OrganizationServiceManager osm)
{ 
var req = new Microsoft.Xrm.Sdk.OrganizationRequest() 
{ 
RequestName = "msdyn_SearchResourceAvailabilityForRequirementGroup"
};

  req["Version"] = "1"; 
  Entity requirementSpecification = new Entity();

  //Setting from date 

  requirementSpecification.Attributes.Add("msdyn_fromdate", DateTime.Parse("2019-12-  
  26T18:30:00.000Z"));

  //Setting to date 

  requirementSpecification.Attributes.Add("msdyn_todate", DateTime.Parse("2019-12- 
  27T18:29:00.000Z"));

  //Requirement group GUID 
  req["RequirementSpecification"] = requirementSpecification; 
  req["RequirementGroup"] = new   
  Microsoft.Xrm.Sdk.EntityReference("msdyn_requirementgroup", Guid.Parse("XXXXXXXX"));

  //Executing the request and getting response
  var response = osm.GetProxy().Execute(req); 
  response.ToString(); 
  response.Dump();
} 	 

Escenario 2: verificar que los resultados de búsqueda son correctos para la programación

La siguiente captura de pantalla de la API heredada se proporciona como referencia en este escenario.

Captura de pantalla de configuración heredada para referencia para escenario 2

  1. Cree los siguientes sitios y usuarios:
  • Dos sitios: Micr0s0ftSite1 y Site2
  • Dos usuarios: User1 y User2 (Site2)
  • Vaya a la pestaña Configuración>Administración de servicios y cree un sitio (con el nombre Site1), dos recursos en la pestaña Instalaciones/equipamiento (a saber, Eq1 y Eq2) y vaya a configuración> Seguridad y cree un usuario (User1). Dos recursos de equipo en la pestaña Instalación/Equipo (Eq1, Eq2), donde Eq1 pertenece al Site1 y Eq2 pertenece al Site2
  1. Cree las horas de cierre y trabajo de la empresa para el usuario (8:00 a.m. a 6:00 p.m.) y el equipamiento (8:00 a.m. a 6:00 p.m.).

  2. Crea un nuevo servicio con estado Reservado y recursos necesarios como Elegir 2 desde el mismo sitio de User1, User2, Eq1, Eq2. Guarde y cierre el servicio.

Captura de pantalla de Programar actividad de servicio para escenario 2.

  1. Vaya a la página principal >Actividad de servicio>Programar y luego seleccione el servicio que creó en el paso 3. Seleccione el sitio como Site1 y luego haga clic en Buscar horas disponibles.

  2. Verifique que los resultados de búsqueda que se devuelven sean correctos para el sitio seleccionado en los criterios de búsqueda.

Código de API de Programación de recursos universal para el escenario 2

void searchRequirementgroup(Microsoft.Pfe.Xrm.OrganizationServiceManager osm)
{
  var req = new Microsoft.Xrm.Sdk.OrganizationRequest()
  {
  RequestName = "msdyn_SearchResourceAvailabilityForRequirementGroup"
  };
req["Version"] = "1"; 
Entity requirementSpecification = new Entity();

//Setting from date
requirementSpecification.Attributes.Add("msdyn_fromdate", DateTime.Parse("2019-12-26T18:30:00.000Z"));

//Setting to date
requirementSpecification.Attributes.Add("msdyn_todate", DateTime.Parse("2019-12-27T18:29:00.000Z")); 

req["RequirementSpecification"] = requirementSpecification;

//Requirement group GUID      
req["RequirementGroup"] = new EntityReference("msdyn_requirementgroup", Guid.Parse("XXXXXX"));

var response = osm.GetProxy().Execute(req);
response.ToString();
response.Dump();

}

Escenario 3: Obtener programaciones propuestas que se producen en las horas de trabajo para un recurso de equipamiento

Captura de pantalla de configuración heredada para referencia para escenario 3

  1. Cree dos sitios (Site1, Site2) y luego cree tres recursos de equipamiento (Eq1, Eq2, Eq3).

  2. Cree las horas de cierre y trabajo de la empresa para todos los equipamientos (3:00 p.m. a 6:00 p.m.).

  3. Cree un nuevo servicio (Service1) Elija 1 de (Aleatorio) Eq1, Eq2, #q3.

Captura de pantalla de Programar actividad de servicio para escenario 3.

  1. En el cuadro de diálogo Programar actividad de servicio, busque propuestas para Service1 agregando un recurso requerido como Eq1 para un intervalo de fechas específico.

  2. Verifique que los horarios propuestos que se devuelven se encuentran en las horas de trabajo del equipamiento para esa fecha.

Código de API de Programación de recursos universal para el escenario 3

void searchRequirementgroup(Microsoft.Pfe.Xrm.OrganizationServiceManager osm)
{
var req = new Microsoft.Xrm.Sdk.OrganizationRequest() 
{
RequestName = "msdyn_SearchResourceAvailabilityForRequirementGroup"
};
req["Version"] = "1"; 
Entity requirementSpecification = new Entity();

//Setting start date          
requirementSpecification.Attributes.Add("msdyn_fromdate", DateTime.Parse("2019-12-26T18:30:00.000Z"));
//Setting end date
requirementSpecification.Attributes.Add("msdyn_todate", DateTime.Parse("2019-12-27T18:29:00.000Z"));

//Setting the eq1 as required resource	 	

requirementSpecification.Attributes.Add("msdyn_resourcerequirementid",Guid.Parse("XXXXXX")); 
req["RequirementSpecification"] = requirementSpecification; 

//Setting the requirement group GUID
req["RequirementGroup"] = new EntityReference("msdyn_requirementgroup", Guid.Parse("XXXXX"));

//Executing the request and getting response. 
var response = osm.GetProxy().Execute(req); 
response.ToString(); 
response.Dump(); 
} 

Más recursos

Recurso Description
Guía de programación básica de servicios Lea cómo puede planificar y programar actividades de servicio para sus clientes.
Preguntas más frecuentes de programación de servicios Preguntas frecuentes sobre la programación de servicios
Programación de múltiples recursos con grupos de requisitos Use grupos de requisitos para mezclar y combinar diferentes tipos de recursos.
API Buscar disponibilidad de recursos para requisitos de un solo recurso Blog sobre cómo usar la API Buscar disponibilidad de recursos
Documentación para programación de recursos Introducción al uso de Programación de recursos universal.
Ruta de aprendizaje para programación de recursos Aprenda a utilizar Programación de recursos universal en Microsoft Dynamics 365 for Field Service
Ideas para la aplicación Dynamics 365 Use este portal para aportar comentarios e ideas sobre el producto para la programación de recursos.
Foro de la comunidad Utilice el foro de la comunidad para realizar preguntas, encontrar respuestas y ver los próximos eventos.
Blog de Dynamics 365 Lea el blog de Dynamics 365 para ver las notas de la versión y publicaciones del equipo del producto.