MENU
    Trabajar con el tiempo en los desencadenadores
    • 23 Jan 2025
    • 7 Minutos para leer
    • Colaboradores

    Trabajar con el tiempo en los desencadenadores


    Resumen del artículo

    Visión general

    Muchos aspectos de las operaciones dependen de la comprobación del tiempo transcurrido entre dos eventos. He aquí cómo encontrar ese tiempo.

    Comprobar el tiempo transcurrido entre dos marcas de tiempo suele ser un aspecto crucial de cualquier proceso.

    Dos marcas de tiempo pueden determinar

    • Una hora de producción determinada
    • El tiempo transcurrido desde la ejecución de un lote
    • El tiempo transcurrido desde la limpieza de un reactor.

    Agregar lógica al tiempo entre dos Datetime puede ser muy poderoso tanto para la recolección de datos, como para las Acciones de la aplicación.

    Algunos casos de uso para esta funcionalidad:

    • Comprobación del tiempo entre inspecciones
    • Averiguar cuánto tiempo ha pasado desde que se puso en marcha un producto determinado
    • Asegurar un programa de mantenimiento.
    • Encontrar el tiempo entre dos puntos en una aplicación

    Esta guía le mostrará cómo construir algunos de estos escenarios en su aplicación utilizando una combinación de triggers, tablas y el Editor de Expresiones.

    Los tres ejemplos cubiertos son:

    1. Calcular el tiempo entre pasos en dos partes diferentes de una aplicación
    2. Comprobación de si se ha realizado una inspección de una máquina en la última semana
    3. Establecer una fecha objetivo para una orden de trabajo cuando se escanea inicialmente en una aplicación.

    Intervalos útiles

    1 minuto: 60 segundos
    1 hora 3600 segundos
    1 día 86.400 segundos
    1 semana 604.800 segundos
    1 mes (30 días) 2.592.000 segundos
    1 año 31.557.600 segundos

    Ejemplo 1: Encontrar el tiempo entre dos partes de una aplicación (tiempo de producción)

    En este ejemplo, mostraremos cómo calcular la diferencia entre dos marcas de tiempo dentro de un mismo uso de una app.

    Nivel: Intermedio

    Para este ejemplo, usted debe tener una comprensión de:

    En el punto "Starting" deseado para este proceso, añada una sentencia "Then" en el Editor de Triggers para capturar la fecha y hora actuales.

    Data Manipulation - Store - App Info - Current Date and Time - location: .

    En el punto "Fin" deseado de esta medición de tiempo dentro de la app, añada otro Trigger para capturar la fecha y hora actuales**.**

    Además de capturar la hora, ahora también puede añadir el trigger para encontrar la diferencia entre las dos marcas de tiempo, y almacenarla en una Variable.

    En este ejemplo, ambos tiempos se toman cuando se pulsa un botón, pero también sería posible capturar tiempos para cuando los Pasos se cierran o se abren, o cuando los dispositivos se disparan.

    La diferencia de tiempo se almacena en una variable "Intervalo" en términos de número total de segundos entre las dos marcas de tiempo.

    Ejemplo 2 : Comprobación del tiempo entre inspecciones

    Nivel: Avanzado

    Para este ejemplo, usted debe tener una comprensión de:

    En el siguiente ejemplo, el objetivo de la aplicación es revisar una Tabla de "Inspección de Máquinas", y determinar cuando ocurrió la última inspección. Además, si la inspección es mayor a la frecuencia requerida, la aplicación le indicará al usuario que complete una inspección.

    Vinculación de la tabla:

    El primer paso en esta aplicación requerirá que un Registro de Tabla sea cargado en la aplicación. Por lo tanto, la tabla ya debe existir. La tabla podría tener el siguiente aspecto

    • ID (texto)
    • Última inspección (marca de tiempo)
    • Frecuencia de inspección (intervalo)

    Arriba, la tabla contiene tanto la última vez que se inspeccionó la máquina, como la frecuencia de inspección requerida para cada máquina.

    Ahora, hay que dar a la tabla un Marcador de Posición de Registro en la aplicación para comprobar la inspección. Para ello, añada un marcador de posición de registro de la tabla en la app. Puede nombrarlo de esta manera

    Crea la Variable:

    Ahora que ha vinculado la tabla adecuada a la aplicación, tendrá que crear una variable para almacenar la diferencia de las dos marcas de tiempo. Crear un tipo de dato "Intervalo" permitirá esta manipulación. Para ello, vaya al panel contextual del Editor de aplicaciones y seleccione la aplicación.

    En el panel lateral, seleccione el símbolo sigma para crear una nueva variable.

    En el panel de variables, cree una nueva Variable con el nombre que desee, y seleccione el tipo "intervalo" en el menú desplegable. Tenga en cuenta que esta variable contendrá el resultado de la resta de las dos marcas de tiempo que serán manipuladas.

    Asegúrese de seleccionar "Añadir", y asegúrese de que la variable se añade a la lista antes de cerrar.

    Arriba, la variable se llama "ResultantTime", y marcará la diferencia entre los tiempos. En este ejemplo, esto anotará el tiempo entre la última inspección, y el tiempo actual de la aplicación.

    Cargar el registro de la tabla

    Para comprobar el registro de tabla apropiado, la tabla debe cargarse con el ID de tabla correcto. En este ejemplo, cargaremos un registro basado en el valor de un widget desplegable.

    Tenga en cuenta que el texto tendrá que coincidir exactamente con el ID de la tabla para cargar el registro correcto.

    El paso del formulario anterior permite al usuario seleccionar qué máquina se comprobará. Es muy importante asegurarse de agregar una variable a este campo, en este caso MachineType, para agregar lógica al resultado.

    Comprobación de la lógica

    Ahora es el momento de la comprobación.

    Este formulario, cuando se envía, debe comprobar el tiempo entre la hora actual de la aplicación, y la marca de tiempo anterior de la tabla.

    Para ello, tendrá que añadir algunos disparadores de "acción personalizada" al botón de envío.

    En primer lugar, el botón debe cargar el registro correcto de la tabla:

    Tabla Registros - Cargar Registro - por ID: Variable - MachineType - into: Inspección

    Esta Tabla es cargada dinámicamente basada en la máquina seleccionada en el Paso de Forma, en lugar de crear varias acciones para cargar ciertas tablas.

    Luego, el botón de enviar encontrará el tiempo entre ahora, y la marca de tiempo en el registro de la tabla cargada. En el mismo trigger, podría añadir algo como esto

    Esta sentencia restará la hora actual de la marca de tiempo anterior de la tabla. Luego guardará esta diferencia de tiempo como un tipo de dato Intervalo, en la Variable creada al principio.

    En un nuevo Trigger, la diferencia entre las dos marcas de tiempo determinará una acción para la aplicación.

    Por ejemplo, si el tiempo entre ahora y la última inspección es mayor que la frecuencia necesaria, el operario debe inspeccionar la máquina. En caso contrario, la máquina está bien y no es necesaria ninguna acción. Esto podría parecerse a esto

    SI
    Variable - ResultantTime - > - Registro de tabla - Inspección - Frecuencia de inspección

    ENTONCES
    Ir al paso - Inspección

    Aquí, la comprobación asegura que si el tiempo ha sido demasiado grande, entonces la inspección debe realizarse de nuevo.

    Si no es así, la aplicación puede finalizar, ya que esta aplicación se utiliza para comprobar y realizar inspecciones.

    Esta sentencia Else, dentro del mismo Trigger, podría tener este aspecto

    ELSE IF
    App - Cancelar App
    Mostrar Mensaje - Valor Estático - texto - su mensaje

    Actualización de la tabla

    Una vez que la inspección ha sido completada, el Registro de la Tabla debe ser actualizado para reflejar que la inspección ha sido realizada. Para ello, lo mejor es añadir un Trigger al cierre de los Pasos de la inspección. De esta forma, el registro sólo se actualizará una vez que la inspección se haya realizado por completo.

    Añada un Trigger para guardar el nuevo tiempo, como este

    Data Manipulation - Store - App Info - Current Date and Time - Table Record - Inspection - Last Inspected

    Ejemplo 3- Establecer la fecha objetivo de finalización de una orden de trabajo

    Supongamos que una orden de trabajo debe pasar por 10 operaciones distintas antes de ser completada.

    Cuando la orden de trabajo comienza en la primera de las 10 operaciones, es necesario crear una "Fecha de vencimiento" que se ajuste a las expectativas del cliente. Digamos que la fecha de vencimiento es 1 semana después del inicio de la primera operación.

    Para lograr esto en Tulip, necesitará agregar un Intervalo a la hora actual para determinar la hora de una semana en el futuro.

    Luego, deberá guardar esa "Fecha de vencimiento" en su tabla "Órdenes de trabajo". He aquí cómo hacerlo.

    Primero, necesita crear una Variable que almacene el valor para 1 semana en el futuro en un intervalo.

    Vaya al diálogo Variables en el Panel Contextual, y cree una nueva variable llamada "next_7_days" con tipo intervalo.

    A continuación, establezca su valor por defecto en 604800 segundos, así. Ese es el número de segundos en una semana:

    A continuación, creará un marcador de posición de registro para la orden de trabajo actual, y cargará esa orden de trabajo en la aplicación.

    Una vez cargado el registro, puede establecer el campo "Fecha de Vencimiento" utilizando una Expresión:

    • "Manipulación de Datos" "Almacenar" datos: "Expresión" "App Info-Fecha y Hora Actual + Variable.next_7_days" ubicación: "Registro de tabla" "Orden de trabajo actual" "Fecha de vencimiento"

    En la sentencia trigger anterior, añadimos 7 días a la fecha y hora actuales para crear la fecha de vencimiento.


    ¿Ha encontrado lo que buscaba?

    También puede dirigirse a community.tulip.co para publicar su pregunta o ver si otras personas se han enfrentado a una pregunta similar.


    ¿Te ha sido útil este artículo?