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.
- La API Buscar disponibilidad de recursos para el grupo de requisitos devuelve los intervalos de tiempo disponibles para los recursos cuando realiza una búsqueda utilizando grupos de requisitos.
- La API Crear reservas de grupo de requisitos utiliza los intervalos de tiempo disponibles para recursos para generar registros de reserva para 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 | Sí | 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 | Sí | 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
|
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
|
La entidad de recurso que se explica en este artículo. | |
Location(OutputTimeSlotLocation) OutputTimeSlotLocation:
|
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:
|
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:
|
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 | Sí | 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 | Sí | 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 | Sí | Hora de inicio del intervalo de tiempo. |
Duration | Entero | Sí | Duración de la reserva que se creará. |
ResourceAssignments | EntityCollection | Sí | 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 | Sí | El id. de requisito de recurso del Requisito para el que se creará el registro de reserva. |
ResourceId | GUID | Sí | El id. del recurso que se puede reservar del Recurso para el que desea crear la reserva. |
BookingStatusId | GUID | Sí | 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
- En el mapa del sitio, en Programación, seleccione Servicio.
- Vaya a Requisitos de recursos.
- Cree una actividad de servicio. Para este ejemplo, hemos creado Grupo de requisitos de prueba.
Configuración de actividad de servicio
- En el mapa del sitio, en Programación, seleccione Actividades de servicio.
- Vaya a Actividades de servicio.
- Para Asunto, Seleccione Grupo de requisitos de prueba.
- 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.
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
.
- Vaya a General.
- Campo de nombre Grupo de requisitos de prueba.
- Escriba un nombre en el campo Propietario.
- Campo de plantilla.
- 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.
- 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).
Grupo de requisitos de búsqueda de ejemplo
- Agregar los archivos en la carpeta de ejemplo como recursos web en su organización
- Navegue a la página recién agregada new_msdyn_SearchResourceAvailabilityForRequirementGroupSample.htm. Ejemplo:
<<YourOrgURL>>//WebResources/new_msdyn_SearchResourceAvailabilityForRequirementGroupSample.htm
- 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.
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).
- 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:
Importante
Busque el código de ejemplo completo aquí: Crear grupo de requisitos.
- 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.
- 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.
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.
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.
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.
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.).
Cree un nuevo servicio (Service1) y luego agregue recursos necesarios como Elegir 2 del User1, Eq1. Guarde y cierre el servicio.
Vaya a la página de inicio y programe una actividad de servicio y luego seleccione Service1 y luego seleccione Programar>Buscar intervalos disponibles.
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.
- 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
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.).
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.
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.
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
Cree dos sitios (Site1, Site2) y luego cree tres recursos de equipamiento (Eq1, Eq2, Eq3).
Cree las horas de cierre y trabajo de la empresa para todos los equipamientos (3:00 p.m. a 6:00 p.m.).
Cree un nuevo servicio (Service1) Elija 1 de (Aleatorio) Eq1, Eq2, #q3.
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.
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. |
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de