Error: Code execution timed out

Me sale el siguiente error en un código:
The following error occurred while executing script task ‘Días hábiles’: Code execution timed out

¿Cómo lo puedo solucionar?
Saludos.

@Pamelaaranibar cómo andas?

¡Muchas gracias por contactarte con nosotros!

Javier nos envió el código que armaron de ese paso e identificamos unos casos bordes que pueden hacer que el paso no termine, lo que termina causando un timeout.

Estamos trabajando en una versión corregida y apenas la tengamos te la enviamos.

Como buena práctica, es recomendable agregar un evento de borde de error para poder detectar y recuperarse de las potenciales fallas. Si ocurre un error al ejecutar el paso de código, va a seguir por el flujo que se haya definido para ese evento. Esto permite tomar acciones inmediatas, como notificar a un responsable o desencadenar una tarea manual para garantizar la continuidad del proceso mientras se resuelven los inconvenientes.

Por ejemplo, en la siguiente imagen se puede ver una configuración en la que se podría notificar por mail en caso de que ocurra una falla al ejecutar el paso de “Días hábiles”.

image

Nos comunicaremos contigo en la brevedad para brindarte una versión actualizada del paso de “Días hábiles”.

Muchas gracias!

@Pamelaaranibar , cómo andas?

Te quería consultar si la fecha hasta se debería considerar en la cantidad de días hábiles. Por ejemplo, si la fecha desde es el lunes 18 de diciembre y la fecha hasta es el viernes 22 de diciembre. ¿Debería de considerarse 4 o 5 días hábiles?

Saludos,
Maxi

@Pamelaaranibar cómo andas?

Te dejo el nuevo código para el paso de “Días hábiles”:

using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using System.Threading.Tasks;

namespace Qflow.Steps.Configuration.Scripting
{
    public class CodeScript : CodeScriptBase
    {
        public override void Execute()
        {
          User iniciador = Host.GetUser(Flow.StarterUserID);
          var fecha = (DateTime)GetData("Fecha de inicio").Value;
          fecha = Host.GetCalendarDateUTC(iniciador.CalendarID, fecha);
          var fechaFin = (DateTime)GetData("Fecha de Fin").Value;
          int diasHabiles = 0;
          if(fechaFin.AddDays(1) > Host.GetCalendarDateUTC(iniciador.CalendarID, fechaFin))
          {
              diasHabiles++;
          }
          while (fecha < fechaFin)
          {
              fecha = Host.GetCalendarDateUTC(iniciador.CalendarID, fecha, 1);
              diasHabiles++;
          }
          GetData("días habiles").Value = diasHabiles;
        }
    }
}

Este contempla como inclusive la fecha hasta.

Para modificarlo, debes:

  1. Ir al paso de días hábiles y presionar en configurar:
    image

  2. Reemplazar el código por el que te pasamos y presionar en el botón de compilar:

  3. Luego, guardar el paso utilizando el tick:

  4. Proteger la versión del proceso:
    image

De esa forma, ya quedará el proceso actualizado con el Script Task de “Días hábiles” corregido.

Aquellos procesos que se encuentren en error deben ser reintentados de forma manual desde Qflow Task. Para esto, debes:

  1. Ir al listado de procesos de Qflow Task:
    image
  2. Seleccionar el proceso que se encuentra en error y presionar en el botón de detalles:
  3. Ir a la solapa de “Hilos”, seleccionar el que se encuentra en error y presionar el botón de “Reintentar”.
  4. Se debería de reintentar la ejecución y ya debería de funcionar correctamente.

Cualquier consulta estamos a las órdenes.

Saludos!