Работа со временем в триггерах
  • 31 Oct 2023
  • 5 Минуты для чтения
  • Авторы

Работа со временем в триггерах


Article Summary

Обзор

Многие аспекты работы зависят от проверки времени, прошедшего между двумя событиями. Вот как найти это время.

Проверка времени, прошедшего между двумя временными метками, часто является важнейшим аспектом любого процесса.

Две временные метки могут определять:

  • заданное время производства
  • время, прошедшее с момента запуска партии
  • время, прошедшее с момента очистки реактора.

Добавление логики для определения времени между двумя временными метками может быть очень полезным как для сбора данных, так и для работы приложений.

Несколько примеров использования данной функциональности:

  • Проверка времени между проверками
  • определение времени, прошедшего с момента запуска данного продукта
  • Обеспечение графика технического обслуживания.
  • Поиск времени между двумя точками в приложении

В этом руководстве мы покажем вам, как реализовать несколько таких сценариев в вашем приложении, используя комбинацию триггеров, таблиц и редактора выражений.

Рассматриваются следующие три примера:

  1. Вычисление времени между этапами в двух разных частях приложения
  2. Проверка того, проводился ли осмотр машины за последнюю неделю
  3. Установка целевой даты для заказа на выполнение работ при его первоначальном сканировании в приложении.

Полезные интервалы, которые необходимо знать:

1 минута: 60 секунд

1 час: 3600 секунд

1 день: 86 400 секунд

1 неделя: 604 800 секунд

1 месяц (30 дней): 2 592 000 секунд

1 год: 31 557 600 секунд

Пример 1: Нахождение времени между двумя частями приложения (производственное время)

В этом примере мы покажем, как вычислить разницу между двумя временными метками в рамках одного использования приложения.

Уровень: Промежуточный

Для выполнения этого примера необходимо иметь представление о:

В желаемой точке "Начало" этого процесса добавьте оператор "Затем" в редакторе триггеров для захвата текущей даты и времени.

Манипулирование данными - Магазин - Информация о приложении - Текущая дата и время - местоположение: .

В желаемой точке "Конец" измерения времени в приложении добавьте еще один триггер для захвата текущей даты и времени**.**

В дополнение к захвату времени можно добавить триггер, который будет находить разницу между двумя временными метками и сохранять ее в переменной.

В данном примере оба времени фиксируются при нажатии кнопки, но можно также фиксировать время закрытия и открытия шагов или срабатывания устройств.

Разница во времени хранится в переменной "Interval" в виде общего количества секунд между двумя временными метками.

Пример 2: Проверка времени между проверками

Уровень: Продвинутый

Для этого примера необходимо иметь представление о:

В следующем примере задача приложения - проверить таблицу "Инспекция станка" и определить, когда была проведена последняя инспекция. Далее, если частота проверок превышает требуемую, приложение направит пользователя на выполнение проверки.

Связывание таблицы:

На первом этапе работы с этим приложением потребуется загрузить в него запись таблицы. Поэтому таблица должна уже существовать. Таблица может выглядеть следующим образом:

  • ID (текст)
  • Последняя проверка (временная метка)
  • Частота проверок (интервал)

Таким образом, таблица содержит как данные о последнем осмотре станка, так и требуемую частоту осмотров для каждого станка.

Теперь в приложении для проверки инспекции необходимо присвоить этой таблице Record Placeholder. Для этого в приложении добавляется запись-местодержатель таблицы. Можно назвать его примерно так:

Создать переменную:

Теперь, когда вы связали соответствующую таблицу с приложением, необходимо создать переменную для хранения разницы между двумя временными метками. Создание типа данных "Interval" позволит выполнить эту манипуляцию. Для этого перейдите в контекстную панель редактора приложений и выберите app.

В контекстной панели выберите символ сигмы, чтобы создать новую переменную.

В панели переменных создайте новую переменную с любым именем и выберите из выпадающего меню тип "интервал". Обратите внимание, что в этой переменной будет храниться результат вычитания двух временных меток, с которыми будут производиться манипуляции.

Обязательно выберите "Добавить" и убедитесь, что переменная добавляется в список перед закрытием.

Выше переменная названа "ResultantTime" и будет отмечать разницу между временами. В данном примере она будет отмечать время между последней проверкой и текущим временем приложения.

Загрузка записи таблицы

Для того чтобы проверить соответствующую запись таблицы, необходимо загрузить таблицу по правильному идентификатору таблицы. В данном примере мы загрузим запись, основанную на значении выпадающего виджета.

Обратите внимание, что текст должен точно соответствовать идентификатору таблицы, чтобы загрузилась нужная запись.

На шаге формы выше пользователь может выбрать, какая машина будет проверяться. Очень важно добавить в это поле переменную, в данном случае MachineType, чтобы добавить логику в результат.

Проверка логики

Теперь настало время проверки!

Эта форма при отправке должна проверить время между текущим временем в приложении и предыдущей временной меткой из таблицы.

Для этого необходимо добавить несколько триггеров "пользовательского действия" к кнопке отправки.

Во-первых, кнопка должна загружать нужную запись таблицы:

Table Records - Load Record - by ID: Переменная - Тип машины - в: Inspection

Эта таблица загружается динамически в зависимости от выбранной машины на шаге формы, а не создается несколько действий для загрузки определенных таблиц.

Далее, при нажатии кнопки submit будет найдено время между now и timestamp в загруженной записи таблицы. В тот же триггер можно добавить что-то вроде этого:

Этот оператор вычтет текущее время из предыдущей временной метки таблицы. Затем эта разница во времени будет сохранена как тип данных Interval в переменной, созданной в начале.

В новом триггере разница между двумя временными метками будет определять действие приложения.

Например, если время между текущим и последним осмотром превышает необходимую периодичность, оператор должен осмотреть машину. Если нет, то машина в порядке и никаких действий предпринимать не нужно. Это может выглядеть примерно так:

ЕСЛИ

Переменная - ResultantTime - > - Запись в таблице - Инспекция - Частота инспекции

ТО

Перейти к шагу - Проверка

Здесь проверка гарантирует, что если время было слишком большим, то необходимо выполнить проверку еще раз.

Если это не так, то приложение может быть завершено, поскольку это приложение используется для проверки и выполнения инспекций.

Этот оператор Else в рамках того же триггера может выглядеть следующим образом:

ELSE IF

Приложение - Отменить приложение

Показать сообщение - статическое значение - текст - ваше сообщение

Обновление таблицы

После завершения проверки необходимо обновить запись в таблице, чтобы отразить факт выполнения проверки. Для этого лучше всего добавить триггер на закрытие шагов проверки. Таким образом, запись будет обновлена только после того, как проверка будет полностью завершена.

Добавьте триггер для сохранения нового времени, например, так:

Манипуляция данными - Магазин - Информация о приложении - Текущая дата и время - Запись таблицы - Инспекция - Последняя инспекция

Пример 3 - Установка целевой даты завершения для рабочего задания

Предположим, что до завершения работ заказ должен пройти через 10 отдельных операций.

Когда выполнение заказа начинается с первой из 10 операций, необходимо создать "Дату выполнения", чтобы она соответствовала ожиданиям заказчика. Допустим, срок выполнения составляет 1 неделю после начала первой операции.

Для этого в Tulip необходимо добавить Интервал к текущему времени, чтобы определить время на неделю вперед.

Затем следует сохранить эту "Дату выполнения" в таблице "Заказы на выполнение работ". Вот как это сделать.

Сначала необходимо создать переменную, которая будет хранить значение для 1 недели в будущем в виде интервала.

Перейдите в диалог "Переменные" на контекстной панели и создайте новую переменную "next_7_days" с типом interval.

Затем установите ее значение по умолчанию равным 604800 секунд, как показано ниже. Это количество секунд в одной неделе:

Далее необходимо создать запись-заместитель для текущего наряда и загрузить его в приложение.

После загрузки записи можно установить поле "Дата выполнения" с помощью выражения:

  • "Манипуляция данными" "Хранить" данные: "Выражение" "App Info-Current Date and Time + Variable.next_7_days" location: "Table Record" "Current Work Order" "Due Date"

В приведенном выше триггерном операторе мы добавляем 7 дней к текущей дате и времени, чтобы создать дату исполнения.


Нашли ли вы то, что искали?

Вы также можете зайти на community.tulip.co, чтобы задать свой вопрос или узнать, сталкивались ли другие с подобным вопросом!


Была ли эта статья полезной?