Это старая версия документа!
Содержание
Функциональные характеристики ПО “OdgAssist”
Общая информация
Программное обеспечение OdgAssist (EQMS) предназначено для автоматизации и управления документацией в области качества. Под документацией понимаются:
- бумажные документы – заполняемые формы, бумажные журналы;
- электронные текстовые документы – инструкции, процедуры и т.д;
- электронные документы с функцией контроля – отклонения, изменения, CAPA и т.д.
Основная задача, которую решает odgAssist: контроль за правильной реализацией всех процессов, обеспечение актуальности информации и контроль за исполнением.
Рекомендуемые системные требования для программного комплекса odgAssist
Требования к аппаратному обеспечению сервера:
| Конкурентных пользователей | CPU, vCPU | RAM, ГБ (DDR4) | SSD, ГБ |
|---|---|---|---|
| 10 | 10 | 20 | 300 |
| 25 | 12 | 20 | 300 |
| 50 | 20 | 32 | 300 |
| 75 | 24 | 48 | 320 |
| 100 | 30 | 60 | 450 |
| 150 | 44 | 84 | 500 |
| 200 | 54 | 112 | 800 |
| 250 | 68 | 136 | 1000 |
Рекомендовано использование RAID для обеспечения резервирования и повышения производительности базы данных.
Требования к программному обеспечению сервера:
- Операционная система: Linux Ubuntu 24.04 и выше
- Сервер базы данных: Postgresql 16 +
- Виртуальная машина: OpenJDK 8u502 +
- WEB сервер: Nginx 1.24.0 +
- Менеджер управления процессами: Supervisor 4.2.5 +
- Интерпретатор языка Python: Python 3.12.3
Минимальные требования к программно-аппаратному обеспечению рабочей станции пользователя:
- Процессор: 4-х ядерный, 2ГГц
- Оперативная память 4ГБ
- Жесткий диск (SATA): 50Гб
- Операционная система: Windows 8/10/11
- Браузер: Google Chrome 154.0.8037.97 +
- Microsoft Office: Word, Excell 2016 +
+ допустима версия ПО выше указанной
Для обслуживания сервера сотрудниками исполнителя к нему необходим прямой доступ по ssh. Сервер должен иметь доступ в интернет.
Установка odgassist 5.0
Установить приложение можно вручную или автоматически.
Ручная установка приложения на UBUNTU 24.04:
Для работы приложения odgassist необходимы следующие программы:
-Postgres 16
-Nginx
-Supervisor
-Open jdk 8
Команды для установки требуемого программного обеспечения:
Обновить и установить пакеты программного обеспечения:
sudo apt-get update && sudo apt-get -y upgrade;
Установка Java
Установить openjdk:
sudo apt-get install -y openjdk-8-jdk
Проверить
java -version
Настройка русской локали
Проверить наличие русской локали:
locale -a | grep ru_RU
Если локали нет — установить языковой пакет
sudo apt-get install language-pack-ru;
Сгенерировать локаль:
sudo locale-gen ru_RU.UTF-8
Перезапустить сервер для обновления локали.
Установка Postgres 16
sudo apt install -y postgresql-16 postgresql-client-16
Проверить статус
sudo systemctl status postgresql
Добавить базу данных для odgassist:
sudo -u postgres psql -c "CREATE DATABASE \"odgassist\" WITH OWNER \"postgres\" ENCODING 'UTF8' LC_COLLATE = 'ru_RU.UTF-8' LC_CTYPE = 'ru_RU.UTF-8' TEMPLATE template0;" sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'ваш_пароль';"
Установка NGINX
Установить nginx:
sudo apt install -y nginx
Проверить:
sudo systemctl status nginx
Установка supervisor
Установить supervisor:
sudo apt -y install supervisor;
Проверить статус:
sudo systemctl status supervisor
Добавьте пользователя runner:
sudo useradd -m -p $(openssl rand -base64 12) runner
Добавьте необходимые директории для работы приложения odgassist:
sudo mkdir /home/dumps && chmod 777 /home/dumps; sudo mkdir /etc/ssl/cuba && mkdir /etc/ssl/odg; sudo mkdir /home/runner/cuba && chown runner:runner /home/runner/cuba; sudo mkdir /home/cuba_jar && chmod 777 /home/cuba_jar;
Скачайте необходимые файлы для работы приложения odgassist:
wget https://wiki.odgassist.ru/lib/exe/fetch.php/odg_assist_5.0:app.jar ; mv odg_assist_5.0:app.jar /home/runner/cuba/app.jar && chown runner:runner /home/runner/cuba/app.jar && chmod +x /home/runner/cuba/app.jar; wget https://wiki.odgassist.ru/lib/exe/fetch.php/odg_assist_5.0:nofileonserver.docx && mv odg_assist_5.0:nofileonserver.docx /srv/assist/nofileonserver.docx && sudo chown runner:runner /srv/assist/nofileonserver.docx ; chown runner:runner /srv/assist/nofileonserver.docx;
Добавьте в конфигурацию supervisor файл /etc/supervisor/conf.d/cubaodg.conf:
[program:cuba] command=java -Xms5G -Xmx5G -jar app.jar -port 9090 directory=/home/runner/cuba stdout_logfile=/var/log/supervisor/cuba.log stderr_logfile=/var/log/supervisor/cuba.log autostart=true user=runner
Обновите конфигурацию supervisor:
sudo supervisorctl reread && sudo supervisorctl update; sudo supervisorctl status;
Статус приложения cuba должно быть RUNNING
После запуска приложения подождите 5 минут пока производится настройка базы данных.
Затем переходите к следующему этапу.
Настройка приложения
После выполнения скрипта перейдите по ссылке:
http://ip_адрес_сервера:9090/app
Отобразится форма авторизации:
Войдите в систему. Логин admin, пароль: admin.
Для работы приложения требуется добавить лицензионный ключ.
Нажмите пункт меню "Администрирование", подпункт "Свойства приложения".
В фильтре поиска вставьте имя ru.licen.
Щелкните дважды по записи и введите ключ в открывшуюся форму:
KEN9fFDUMzufuFgpI2EzCCyHkjdwT93wMC1LXu7MYRAX5JeyZL6J08fNXVtLdM+pqefODyp5tO7wYo40oI7Ovp9cZ8IAOSbXquJl0QNV5XphS0F1IaFNV/8NFBpK9xOAW/Aye04okELab+cqZXP7Gkrc3wiCQ7NnlOtx6tIDiYU=
Добавить ключ, кол-во конкурентных пользователей:
B8yA7lLZQCcmg9dhqChbKM6LDlzzEuZQ/yVhARRXtyIRJG6WAWULfOCFjbzKRi5Vf4Fm1qR/46+shOw1F8UPJ8cGbwlj/dA6AHzD1+9yHnWlMIuUgBj+7MYuMZcNegCK4tdvto7WC54yiwnPhGlP574Le9joq10mSZifo/kbOII=
После добавления ключа необходимо перезапустить приложение через терминал сервера:
sudo supervisorctl restart cuba
Ознакомится с интерфейсом приложения можно перейдя по ссылке: Описание приложения.
Ссылка на скачивание приложения и необходимых файлов:
Настройка после установки
После установки проверить время сохраняемых и изменяемых сущностей. Например добавить папку и проверить время ее создания или изменения.
Назначенные задания
Пункт меню "Администрирование", подпункт "Назначенные задания".
Подпункт меню позволяет настраивать автоматическое выполнение рутинных задач.
Например обработка документов, рассылка оповещений пользователям и т.д.
Отправка оповещений о новых задачах.
<color brown> Описание: </color>
После активации каждой задачи на нее назначается исполнитель. Исполнитель добавляется в список для рассылки оповещений о новых задачах. Рассылка осуществляется всем пользователям из списка каждые 60 секунд.
<color brown>Настройка: </color>
Нажмите пункт меню "Администрирование", подпункт "Назначенные задания". Заполните поля формы:
Defined By: Bean
Bean Name: cuba_Emailer
Method Nmae: processQueuedEmails()
Sheduling Type: Period
Cron Expression: 60
Singleton: V
Отправка оповещений назначенным по задачам
<color brown> Описание: </color>
Если у пользователя нет просроченных задач, то ему отправляется весь список задач каждый понедельник.
Если есть просроченные задачи или задачи близкие к крайнему сроку, то оповещения отправляются каждое утро в 9:00.
<color brown>Настройка: </color>
Нажмите пункт меню "Администрирование", подпункт "Назначенные задания". Заполните поля формы:
Defined By: Bean
Bean Name: odgassist5_TasksReportService
Method Nmae: sendTaskStatesToAllUsers
Sheduling Type: Cron
Cron Expression: 0 0 9 * * *
Пример содержимого письма:
Отправка оповещений по действиям
<color brown> Описание: </color>
В список на отправку попадают отчеты:
- крайний срок выполнения сегодня
- крайний срок выполнения наступит через
ru.od.notify_before_days - просроченные действия
ru.od.notify_before_days - параметр, который хранит количество дней. (Уведомить за n дней).
Настройка производится через пункт меню "Администрирование", подпункт "Свойства приложения".
В поле "Поиск по имени свойства" ввести: ru.od.notify_before_days
<color brown>Настройка: </color>
Нажмите пункт меню "Администрирование", подпункт "Назначенные задания". Заполните поля формы:
Bean Name: odgassist5_TaskReportService
Method Nmae: notifyUserAboutOverdueActions
Описание полей формы настройки "Назначенное задание":
- Defined by - каким программным объектом реализуется задание. Возможные значения:
- Bean - задание реализуется методом бина Spring. Дополнительные атрибуты:
- Bean name - имя бина. Бин отображается в списке и доступен для выбора, только если он объявлен в модуле core и у него есть интерфейс, содержащий подходящие для вызова из задания методы. Бины без интерфейса не поддерживаются.
- Method name - метод интерфейса бина для выполнения. Метод должен либо не иметь параметров, либо иметь все параметры типа String. Тип результата должен быть либо void, либо String. В последнем случае результат выполнения будет сохранен в таблице выполнений (см. Log finish ниже).
- Method parameters - параметры выбранного метода. Поддерживаются только параметры типа String.
- Class - задание представляет собой класс, реализующий интерфейс java.util.concurrent.Callable. Класс должен иметь открытый конструктор без параметров. Дополнительные атрибуты:
- Class name - имя класса
- Script - задание представляет собой скрипт Groovy. Скрипт выполняется через Scripting.runGroovyScript(). Дополнительные атрибуты:
- Script name - имя скрипта.
- User name - имя пользователя, от имени которого будет выполняться задание. Если не задано, то задание будет выполнено от имени пользователя, указанного в свойстве приложения cuba.jmxUserLogin.
- Singleton - признак, является ли задание синглтоном, т.е. выполняющимся только на одном сервере системы.
- Scheduling type - способ планирования задачи:
- Cron - с помощью Cron-выражения, представляющего собой последовательность из шести полей, разделенных пробелами:
- секунда, минута, час, день, месяц, день недели. Месяц и день недели могут быть представлены первыми тремя буквами английского названия. Примеры выражений:
0 0 * * * * - начало каждого часа каждого дня. */10 * * * * * - каждые 10 секунд. 0 0 8-10 * * * - в 8, 9 и 10 часов каждого дня. 0 0/30 8-10 * * * - 8:00, 8:30, 9:00, 9:30 и 10 часов каждого дня. 0 0 9-17 * * MON-FRI - каждый час с 9 до 17 по рабочим дням. 0 0 0 7 1 ? - каждое Рождество в полночь.
- Period - с помощью интервала между выполнениями.
- Fixed Delay - задача будет запускаться с указанной в Period задержкой после окончания предыдущего выполнения.
- Period - период или задержка запуска задания в секундах если Scheduling type установлен в Period или Fixed Delay.
- Start date - дата/время первого запуска для Scheduling type = Period. Если не установлено, то задание запускается сразу при старте сервера. Если установлено, то задание запускается в момент startDate + period * N, где N - целое число.
Start date имеет смысл указывать только для "нечастых" заданий - раз в 1 час, 1 сутки и т.п.
- Timeout - время в секундах, по истечении которого считается, что задание закончило выполнение, независимо от того, есть ли информация о завершении задания, или нет. Если timeout не задан явно, он принимается равным 3 часам.
Для Singleton-задач в кластерном деплойменте рекомендуется всегда устанавливать таймаут в реалистичное значение. Если останавливается узел кластера, выполняющий задачу, то при стандартном значении другие узлы кластера будут ждать 3 часа перед тем, как запустить задачу снова.
- Time frame - в случае заданного Start date или Cron expression определяет временное окно в секундах, в течение которого будет запущено задание, если время startDate + period * N прошло. Если Time frame не задано явно, оно принимается равным period / 2.
Если Start date не указано, то Time frame не принимается во внимание, т.е. задание будет запущено в любое время после прохождения промежутка времени Period после предыдущего выполнения задания.
- Start delay - задержка выполнения в секундах после запуска сервера и активации выполнения задач. Используйте данный параметр для тяжелых задач, если вы считаете что они тормозят запуск сервера.
- Permitted servers - список перечисленных через запятую идентификаторов серверов, на которых возможен запуск данного задания. Если список не задан, то задание может выполняться на любом сервере.
Для синглтон-заданий порядок перечисления серверов указывает их приоритет - первый имеет больший приоритет чем последний. Сервер с большим приоритетом перехватит выполнение синглтона следующим образом: если сервер с большим приоритетом обнаруживает, что предыдущий раз задание было выполнено сервером с меньшим приоритетом, то он запускает задание независимо от того, пройден ли Period или нет. Приоритет серверов работает только в случае Scheduling type равного Period и не указанного атрибута Start date. В противном случае, старт происходит в одно и то же время, и перехват невозможен.
- Log start - признак регистрации факта запуска задания в таблице SYS_SCHEDULED_EXECUTION, соответствующей сущности ScheduledExecution.
Если задание является синглтоном, то в текущей реализации регистрация факта запуска производится в любом случае, независимо от данного признака.
- Log finish - признак регистрации факта завершения задания в таблице SYS_SCHEDULED_EXECUTION, соответствующей сущности ScheduledExecution.
Если задание является синглтоном, то в текущей реализации регистрация факта завершения производится в любом случае, независимо от данного признака.
- Description - произвольное текстовое описание задания.
Задание также имеет признак активности, который устанавливается в экране списка заданий. Неактивные задания не запускаются.










