Работа со временем в триггерах
  • 13 May 2024
  • 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: Нахождение времени между двумя частями приложения (производственное время)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Теперь пришло время проверки!

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

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

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

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

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

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

Этот оператор вычтет текущее время из предыдущей временной метки таблицы. Затем эта разница во времени будет сохранена как тип данных 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, чтобы задать свой вопрос или узнать, сталкивались ли другие с подобным вопросом!


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