- Распечатать
Эта статья предоставит вам базовые знания для создания приложений в средах GxP.
Эта статья предполагает предварительное знание основных концепций Tulip, таких как переменные, таблицы и записи завершения.
Язык
Стиль и язык приложений должны соответствовать их назначению. Стандартные операционные процедуры, рабочие инструкции и методы должны быть написаны в императивно-обязательном стиле.
Версионирование
При публикации приложения рекомендуется описать характер изменений, например, обновление пользовательского интерфейса, исправление ошибок или другое, в сравнении с ранее опубликованным приложением в разделе комментариев.
Стандартная информация, которая должна отображаться на каждом шаге
Следующие элементы должны отображаться на каждом шаге, чтобы предоставить пользователю соответствующий контекст:
- Название или уникальный идентификатор основного элемента, для обработки которого используется приложение. "Элемент", например, партия, заказ, оборудование или инструмент, который используется или обрабатывается. В некоторых случаях может быть несколько элементов. В большинстве случаев для этого необходимо создать или загрузить запись таблицы с этой информацией в начале приложения.
- Вошедший в систему пользователь
- Версия приложения
- Название шага приложения
Также рекомендуется на всех шагах иметь кнопку Log-Off, запускающую действие "Выход текущего пользователя".
Временные метки и формат даты
Временные метки в записи завершения фиксируются в UTC со смещением на часовой пояс. Форматирование даты и времени может быть установлено на уровне экземпляра для всех приложений. Это делается в разделе "Дата и время" меню "Настройки" экземпляра и должно быть настроено владельцем учетной записи.
Захват электронной подписи с помощью виджета E-Signature Widget
Для того чтобы соответствовать нормам ER/ES (электронные записи/электронные подписи), подпись должна давать контекст подписывающему лицу:
- "Что"
Контекст подписи, например, партия, заказ, оборудование и т. д.
- "Почему"
Причина подписи, например, выпуск технологического заказа.
Для подписей рекомендуется следующая структура:
- Сгруппируйте шаги, требующие электронной подписи, и включите виджет электронной подписи на последнем шаге в группе.
- Перед виджетом создайте, если применимо, итоговый шаг, показывающий все необходимые данные, чтобы предоставить подписавшему контекст подписи ("Что").
- Используйте заголовок формы, например "Подпись для перепечатки этикетки", и метку имени пользователя, например "Руководитель", чтобы определить причину подписи ("Зачем").
Когда подпись отправлена, Tulip автоматически регистрирует дополнительную информацию:
- "Кто" подписал форму
- "Когда" была поставлена подпись
- Любые добавленные комментарии
Обязательно нужно зафиксировать текущие данные App в неизменяемой записи завершения. Этого можно добиться двумя способами:
- С помощью действия "Сохранить все данные приложения" в триггере "Пользовательское действие" на кнопке отправки виджета подписи.
- Завершив приложение, либо используя стандартную настройку "Завершить приложение" для кнопки отправки, либо используя действие "Завершить приложение" в триггере "Пользовательское действие".
Действие "Сохранить все данные приложения
Действие "Сохранить все данные приложения" сохраняет текущие значения всех переменных приложения, а также текущие значения полей всех загруженных записей таблицы в записи завершения приложения. Записи завершения неизменяемы и не могут быть удалены.
Завершение приложения
Завершение приложения сохраняет данные так же, как и действие "Сохранить все данные приложения". Кроме того, при завершении приложения все переменные сбрасываются к значениям по умолчанию, а у тех, что есть, деактивируется опция "очистить при завершении". Кроме того, очищаются все заполнители записей таблицы. После завершения приложения можно перезапустить то же приложение с самого начала или перейти к определенному шагу в том же или другом приложении. Это можно настроить в "переходе", используемом для завершения.
Отмена приложения
Отмена приложения идентична завершению приложения, однако все переменные будут сброшены до значения по умолчанию.
Автоматическая инициализация приложения
Для приложения, которое должно быть завершено несколько раз во время выполнения, т.е. из-за нескольких подписей, рекомендуется хранить его контекст перед каждым завершением, поэтому приложение может быть настроено на автоматическое восстановление его контекста после перезапуска. Контекст может представлять собой идентификатор записей таблицы, например, текущей партии, и/или переменных, например, счетчика. Рекомендуется хранить контекст приложения в таблице, используя "App Info: Имя станции" в качестве идентификатора записи. Эта запись может быть загружена при (повторном) запуске приложения с помощью триггера "App Started". Тот же подход можно использовать для обеспечения плавного перехода к другому приложению.
Аналогичные принципы можно применить для возобновления выполнения приложения после его отмены, например, из-за автоматического выхода из системы или выбора пункта "Перезапустить" в меню проигрывателя. Для таких случаев рекомендуется сохранять имя шага в качестве дополнительной контекстной информации для приложения, открываемого после перезапуска. Это может быть либо имя последнего показанного шага, либо конкретный шаг, который следует открыть для восстановления.
Исключения и включение просмотра по исключениям
Рекомендуется использовать одну таблицу Tulip Table для сбора всех исключений, возникающих во время выполнения приложения. Каждое исключение (дефект, замечание и т. д.) должно храниться в виде отдельной записи в этой таблице Tulip Table, включая всю необходимую информацию об исключении, т. е. тип, описание, дату/время, приложение, оператора и т. д. Кроме того, эта запись должна быть связана с помощью функции "Связанные записи" с записями всех артефактов, связанных с исключением, т. е. партия, заказ, материал, оборудование, помещение и т. д.
Записи, исправление записей, история записей
Рекомендуется хранить данные, относящиеся к GxP, в виде записей в таблицах Tulip со ссылками на соответствующие артефакты, т. е. партию, заказ, материал, оборудование, помещение и т. д.
Рекомендуется исправлять данные, относящиеся к GxP, в пределах исходной записи, поскольку любые изменения будут отражены в истории записи. Исправление должно быть представлено в форме с подписью.
Для облегчения поиска записей рекомендуется присваивать всем записям однозначный и систематический идентификатор, например, "-".
История записей
Как было описано выше, значения переменных сохраняются в записи завершения в момент завершения или отмены приложения. В отличие от этого, манипуляции с данными в таблице происходят в реальном времени. Любое изменение в любом поле записи таблицы автоматически регистрируется Tulip с контекстной информацией (пользователь, приложение, версия приложения, станция, временная метка).
Каждая запись таблицы Tulip имеет историю записей. В истории записей отображаются все зарегистрированные изменения, включая контекстную информацию (пользователь, приложение, версия приложения, станция, временная метка).
Кроме того, в истории записей будут отображаться данные о завершении или отмене любого приложения, в которое включена запись, т. е. была загружена при завершении/отмене. Сюда входят любые электронные подписи, зарегистрированные в этих завершениях/отменах. Подписи будут отображаться на временной шкале истории записей в соответствии с меткой времени, когда они были выполнены. Все остальные данные о завершении будут отображаться в соответствии с временной меткой завершения/отмены.