====== Функциональные характеристики ПО “OdgAssist” ======
**Общая информация**
Программное обеспечение OdgAssist (EQMS) предназначено для автоматизации и управления документацией в области качества.
Под документацией понимаются:
* бумажные документы – заполняемые формы, бумажные журналы;
* электронные текстовые документы – инструкции, процедуры и т.д;
* электронные документы с функцией контроля – отклонения, изменения, CAPA и т.д.
*
Основная задача, которую решает odgAssist: контроль за правильной реализацией всех процессов, обеспечение актуальности информации и контроль за исполнением.
**Минимальный системные требования для программного комплекса odgAssist**
**Требования к аппаратному обеспечению сервера:**
|**Параметры сервера/количество пользователей**|**50-100**|**100 -200**|**250-350**|**500**|
|**Количество потоков**| 4 | 8 | 12 | 16 |
|**Тактовая частота процессора ( ГГц)**| От 2,2 | От 2,1 | От 2,4 | От 2,6 |
|**Платформа** | 64x разрядная | 64x разрядная | 64x разрядная | 64x разрядная |
|**Оперативная память (ГБ)**| 12 |16 | 24 | 32 |
|**Дисковое пространство** | 250Гб | 500Гб | 1Тб| 1Тб|
Рекомендовано использование RAID для обеспечения резервирования и повышения производительности базы данных.
**Требования к программному обеспечению сервера:**
* Операционная система: Linux Ubuntu 18.04 и выше
* Сервер базы данных: Postgresql 10 +
* Виртуальная машина: Open JDK 8
* WEB сервер: Nginx 1.14.0 +
* Менеджер управления процессами: SuperVisor
* Интерпретатор языка Python: Python 2.7.15+
**Минимальные требования к программно-аппаратному обеспечению рабочей станции пользователя:**
* Процессор: 4-х ядерный, 2ГГц
* Оперативная память 4ГБ
* Жесткий диск (SATA): 50Гб
* Операционная система: Windows 8/10
* Браузер: Google Chrome 87.0.4280.141 +
* Microsoft Office: Word, Excell 2010 +
+ допустима версия ПО выше указанной
Для обслуживания сервера сотрудниками исполнителя к нему необходим прямой доступ по ssh.
Сервер должен иметь доступ в интернет.
====== Установка odgassist 5.0 ======
Установить приложение можно вручную или автоматически.
===== Ручная установка приложения на UBUNTU 20.04: =====
Для работы приложения odgassist необходимы следующие программы: \\
-Postgres 12 \\
-Nginx \\
-Supervisor \\
-Open jdk 8 \\
Команды для установки требуемого программного обеспечения: \\
Обновить и установить пакеты программного обеспечения: \\
sudo apt-get update && sudo apt-get -y upgrade;
Установить openjdk: \\
sudo apt-get -y install openjdk-11-jdk;
Проверить наличие русской локали: \\
locale -a
В случае если русской локали нет, то установить:
sudo apt-get install language-pack-ru;
Сделать русскую по умолчанию:
dpkg-reconfigure locales
Выбрать: ru_RU.UTF-8 UTF-8
Скачать и установить Postgres :\\
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -;
RELEASE=$(lsb_release -cs) echo "deb http://apt.postgresql.org/pub/repos/apt/ ${RELEASE}"-pgdg main | sudo tee /etc/apt/sources.list.d/pgdg.list;
sudo apt -y install postgresql-12;
Добавить базу данных для odgassist: \\
sudo -u postgres psql -U postgres -d postgres -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 -U postgres -d postgres -c "ALTER USER postgres PASSWORD 'ваш_пароль'";
Установить nginx: \\
apt-get -y install nginx;
Установить supervisor: \\
sudo apt-get -y install supervisor;
Добавьте пользователя runner: \\
sudo useradd -m -p $(openssl rand -base64 12) runner
Добавьте необходимые директории для работы приложения odgassist: \\
sudo mkdir /srv/templates && chmod 777 /srv/templates;
sudo mkdir /srv/assist && chmod 777 /srv/assist;
sudo mkdir /srv/assist/export && chmod 777 /srv/assist/export;
sudo mkdir /srv/assist/html && chmod 777 /srv/assist/html;
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;
Скачайте необходимые файлы для работы приложения 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;
{{ :odg_assist_5.0: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 минут пока производится настройка базы данных.
Затем переходите к следующему [[https://wiki.odgassist.ru/doku.php/odg_assist_5.0:%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_odg#%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F|этапу]]. \\
===== Установка в автоматическом режиме. =====
\\
Будут установлены следующие пакеты: \\
-Postgres 12
-Nginx
-Supervisor
-Open jdk 8
Скачайте файл автоматической установки через терминал сервера:
wget https://wiki.odgassist.ru/lib/exe/fetch.php/odg_assist_5.0:install.sh.gz
\\
или по ссылке: {{ :odg_assist_5.0:install.sh.gz |}}
Разархивируйте документ и запустите его в терминале сервера: \\
''gunzip odg_assist_5.0\:install.sh.gz;'' \\
''chmod +x odg_assist_5.0\:install.sh;'' \\
''sudo ./odg_assist_5.0\:install.sh;'' \\
После выполнения скрипта подождите 5 минут пока производится настройка базы данных. \\
Затем переходите к следующему этапу.
====== Настройка приложения ======
После выполнения скрипта перейдите по ссылке: \\
http://ip_адрес_сервера:9090/app
Отобразится форма авторизации:
{{:odg_assist_5.0:pasted:20230302-143823.png}}
Войдите в систему. Логин admin, пароль: admin.
Для работы приложения требуется добавить лицензионный ключ. \\
Нажмите пункт меню "Администрирование", подпункт "Свойства приложения". \\
В фильтре поиска вставьте имя ru.licen.
{{:odg_assist_5.0:pasted:20230302-132816.png}}
Щелкните дважды по записи и введите ключ в открывшуюся форму:
KEN9fFDUMzufuFgpI2EzCCyHkjdwT93wMC1LXu7MYRAX5JeyZL6J08fNXVtLdM+pqefODyp5tO7wYo40oI7Ovp9cZ8IAOSbXquJl0QNV5XphS0F1IaFNV/8NFBpK9xOAW/Aye04okELab+cqZXP7Gkrc3wiCQ7NnlOtx6tIDiYU=
{{:odg_assist_5.0:pasted:20230302-133531.png}}
Добавить ключ, кол-во конкурентных пользователей: \\
{{:odg_assist_5.0:pasted:20230616-165026.png}}
B8yA7lLZQCcmg9dhqChbKM6LDlzzEuZQ/yVhARRXtyIRJG6WAWULfOCFjbzKRi5Vf4Fm1qR/46+shOw1F8UPJ8cGbwlj/dA6AHzD1+9yHnWlMIuUgBj+7MYuMZcNegCK4tdvto7WC54yiwnPhGlP574Le9joq10mSZifo/kbOII=
После добавления ключа необходимо перезапустить приложение через терминал сервера: \\
''sudo supervisorctl restart cuba''
Ознакомится с интерфейсом приложения можно перейдя по ссылке:
[[https://wiki.odgassist.ru/doku.php/odg_assist_5.0:%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0#%D0%BF%D1%83%D0%BD%D0%BA%D1%82_%D0%BC%D0%B5%D0%BD%D1%8E_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5|Описание приложения.]]
Ссылка на скачивание приложения и необходимых файлов: \\
{{:odg_assist_5.0:app.jar|odg5}} \\
{{:odg_assist_5.0:nofileonserver.docx|empty file}} \\
{{ :odg_assist_5.0:cubaodg1.zip |}}
{{ :odg_assist_5.0:install.sh.gz |}}
=== Настройка после установки ===
----
После установки проверить время сохраняемых и изменяемых сущностей. Например добавить папку и проверить время ее создания или изменения.
==== Назначенные задания ====
Пункт меню "Администрирование", подпункт "Назначенные задания". \\
Подпункт меню позволяет настраивать автоматическое выполнение рутинных задач. \\
Например обработка документов, рассылка оповещений пользователям и т.д.
//**Отправка оповещений о новых задачах.**//
Описание: \\
После активации каждой задачи на нее назначается исполнитель. Исполнитель добавляется в список для рассылки оповещений о новых задачах. Рассылка осуществляется всем пользователям из списка каждые 60 секунд.
Настройка: \\
Нажмите пункт меню "Администрирование", подпункт "Назначенные задания".
Заполните поля формы: \\
Defined By: ''Bean'' \\
Bean Name: ''cuba_Emailer'' \\
Method Nmae: ''processQueuedEmails()'' \\
Sheduling Type: ''Period'' \\
Cron Expression: ''60'' \\
Singleton: ''V''
{{:odg_assist_5.0:pasted:20230419-141932.png}}
Пример содержимого письма: \\
{{:odg_assist_5.0:pasted:20230419-142535.png}}
//**Отправка оповещений назначенным по задачам**//
Описание: \\
Если у пользователя нет просроченных задач, то ему отправляется весь список задач каждый понедельник. \\
Если есть просроченные задачи или задачи близкие к крайнему сроку, то оповещения отправляются каждое утро в 9:00.
Настройка: \\
Нажмите пункт меню "Администрирование", подпункт "Назначенные задания".
Заполните поля формы: \\
Defined By: ''Bean'' \\
Bean Name: ''odgassist5_TasksReportService'' \\
Method Nmae: ''sendTaskStatesToAllUsers'' \\
Sheduling Type: ''Cron'' \\
Cron Expression: ''0 0 9 * * *''
{{:odg_assist_5.0:pasted:20230419-134029.png}}
Пример содержимого письма: \\
{{:odg_assist_5.0:pasted:20230417-133423.png| отображение письма оповещения}}
**Отправка оповещений по действиям**
Описание: \\
В список на отправку попадают отчеты:
* крайний срок выполнения сегодня
* крайний срок выполнения наступит через ''ru.od.notify_before_days''
* просроченные действия
''ru.od.notify_before_days'' - параметр, который хранит количество дней. (Уведомить за n дней). \\
Настройка производится через пункт меню "Администрирование", подпункт "Свойства приложения". \\
В поле "Поиск по имени свойства" ввести: ''ru.od.notify_before_days'' \\
{{:odg_assist_5.0:pasted:20230419-140759.png}}
Настройка: \\
Нажмите пункт меню "Администрирование", подпункт "Назначенные задания".
Заполните поля формы: \\
Bean Name: ''odgassist5_TaskReportService'' \\
Method Nmae: ''notifyUserAboutOverdueActions''
{{:odg_assist_5.0:pasted:20230419-113823.png}}
**Описание полей формы настройки "Назначенное задание":**
* 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 - произвольное текстовое описание задания.
Задание также имеет признак активности, который устанавливается в экране списка заданий. Неактивные задания не запускаются.