Функциональные характеристики ПО “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 | 20.04 | 22.04 | 24.04

Сервер базы данных: Postgresql 10 +

Виртуальная машина: Open JDK 8 +

WEB сервер: Nginx 1.14.0 +

Менеджер управления процессами: SuperVisor

Интерпретатор языка Python: Python 2.7.15+

Минимальные требования к программно-аппаратному обеспечению рабочей станции пользователя:

Процессор: 2ГГц

Оперативная память 4ГБ

Жесткий диск (SATA): 50Гб

Операционная система: Windows 8/10

Браузер: Google Chrome 87.0.4280.141 +

Microsoft Office: Word, Excell 2010 +

+ допустима версия ПО выше указанной

Для обслуживания сервера сотрудниками исполнителя к нему необходим прямой доступ по ssh. Сервер должен иметь доступ в интернет.

Установка odgassist 5.0

Установить приложение можно вручную или автоматически.

Ручная установка приложения:

Для работы приложения odgassist необходимы следующие программы:

Postgres 12 и выше

Nginx

Supervisor

Open jdk 8

LibreOffice

Команды для установки требуемого программного обеспечения

Обновить и установить пакеты программного обеспечения:

sudo apt-get update && sudo apt-get -y upgrade;

Установить openjdk:

sudo apt-get -y install openjdk-8-jdk;

Скачать и установить 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 '0000'";

Установить nginx:

apt-get -y install nginx;

Установить supervisor:

sudo apt-get -y install supervisor;

Установить LibreOffice:

apt-get install libreoffice

Добавьте пользователя 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 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 && 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 -Xms1G -Xmx3G -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 минут пока производится настройка базы данных. Затем переходите к следующему этапу.

Установка в автоматическом режиме.

Будут установлены следующие пакеты:
-Postgres 12 -Nginx -Supervisor -Open jdk 8

Скачайте файл автоматической установки через терминал сервера:

wget https://wiki.odgassist.ru/lib/exe/fetch.php/odg_assist_5.0:install.sh.gz

или по ссылке: install.sh.gz

Разархивируйте документ и запустите его в терминале сервера Ubuntu:

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

Отобразится форма авторизации:

Войдите в систему. Логин admin, пароль: admin.

Для работы приложения требуется добавить лицензионный ключ.
Нажмите пункт меню "Администрирование", подпункт "Свойства приложения".
В фильтре поиска вставьте имя ru.licen.

Щелкните дважды по записи и введите ключ в открывшуюся форму:

KEN9fFDUMzufuFgpI2EzCCyHkjdwT93wMC1LXu7MYRAX5JeyZL6J08fNXVtLdM+pqefODyp5tO7wYo40oI7Ovp9cZ8IAOSbXquJl0QNV5XphS0F1IaFNV/8NFBpK9xOAW/Aye04okELab+cqZXP7Gkrc3wiCQ7NnlOtx6tIDiYU=

Добавить ключ, кол-во конкурентных пользователей:

B8yA7lLZQCcmg9dhqChbKM6LDlzzEuZQ/yVhARRXtyIRJG6WAWULfOCFjbzKRi5Vf4Fm1qR/46+shOw1F8UPJ8cGbwlj/dA6AHzD1+9yHnWlMIuUgBj+7MYuMZcNegCK4tdvto7WC54yiwnPhGlP574Le9joq10mSZifo/kbOII=

После добавления ключа необходимо перезапустить приложение через терминал сервера:
sudo supervisorctl restart cuba

Ознакомится с интерфейсом приложения можно перейдя по ссылке: Описание приложения.

Ссылка на скачивание приложения и необходимых файлов:

odg5

empty file

cubaodg1.zip

install.sh.gz

Добавление ролей

В приложении доступны два типа ролей:
1. Системные роли

Создаются автоматически при инициализации системы (например, system-full-access, system-minimal).

2. Настраиваемые роли

Создаются администратором вручную.

Позволяют гибко настраивать права доступа для пользователей.

Включают стандартные роли (настраиваются через интерфейс).

Структура настройки роли

При открытии роли в интерфейсе отображаются 5 вкладок:

1. Экраны (Screens)
Управляет доступом к:

Экранам приложения (например, форма редактирования пользователя).

Пунктам основного меню.

Дочерним экранам, открываемым через кнопки ("Отобразить", "Обзор" и др.).

2. Сущности (Entities)
Определяет разрешения на операции с объектами системы (документы, пользователи, события и т. д.):

Создание (Create)

Чтение (Read)

Изменение (Update)

Удаление (Delete)

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

3. Атрибуты (Entity Attributes)
Управляет доступом к полям сущностей (например, дата создания, текстовое описание, статус):

Просмотр (Read) — разрешает просмотр поля.

Изменение (Modify) — разрешает редактирование.

4. Специальные права (Specific Permissions)
Настройка дополнительных разрешений, таких как:

Доступ к REST API.

Администрирование системных настроек.

Запуск произвольных SQL-запросов.

5 Интерфейс
Разрешения на этом экране позволяют ограничивать доступ к любому компоненту экрана, включая те, которые не связаны с какими-либо данными (например, контейнер). Идентификаторы компонентов должны быть известны для создания таких разрешений, поэтому требуется доступ к исходному коду экрана.

Редактирование существующих ролей

Для упрощения редактирования ролей доступны фильтры, которые позволяет произвести настройку экрана или сущности, которые уже настроены в роли.

На вкладке «Экран» установите отметку «Отобразить разрешенные». После фильтрации будут отображены экраны, разрешенные для этой роли.

На вкладке «Сущности» установите отметку «Только назначенные», чтобы отобразить только те сущности, для которых настроены права.

На вкладке «Атрибуты» установите отметку «Только назначенные», чтобы отобразить только те атрибуты, для которых имеются настройки прав.

После фильтрации выберите необходимое и произведите настройку.

Добавление ролей

Для добавления роли нажмите пункт меню «Администрирование», подпункт «Роли».
Вы можете скопировать системную роль, если она содержит все права для необходимого вам модуля, а затем произвести редактирование скопированной роли.
Скопированная роль добавляется с тем же именем, но в конце указывается номер копии (например: Базовая роль (1)).

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

Введите название роли.

Добавьте локальное наименование роли

Укажите назначение роли в поле "Описание". Кратко опишите назначение роли.

Вкладка "Экран"

Далее перейдите к настройке экранов на вкладке "Экраны".

Вкладка содержит два корневых раздела:

Главное меню - раздел позволяет открыть доступ к пунктам меню. Доступ только на чтение. Содержит список экранов типа "browse"

Все экраны - раздел позволяет расширить доступ к экранам для редактирования. Доступ на редактирование. Содержит список экранов типа "edit"

Настройте непосредственно доступ к пунктам меню.

Разверните раздел "Главные экраны".

Выберите пункт меню и установите отметку "разрешено"

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

Если требуется редактирование для открытого ранее пункта меню, то введите название экрана в фильтр "Экран" (поиск осуществляется по частичному совпадению имени)
В отсортированном поставьте отметку "разрешено" напротив найденного экрана. Сохраните изменения.

Вкладка "Сущности"

Настройка разрешений для сущностей.

На вкладке выберите сущность из списка.

В поле "Изменение разрешений" установите отметку для требуемого типа разрешения:

Создание (Create)

Чтение (Read)

Изменение (Update)

Удаление (Delete)

Сохраните изменение кнопкой "Сохранить"

Вкладка "Атрибуты"

Настройка атрибутов сущности:

На вкладке "Атрибуты" выберите сущность

В поле "Изменение разрешений" установите требуемое разрешение для атрибута. На выбор два варианта:

Просмотр (Read) — разрешает просмотр поля.

Изменение (Modify) — разрешает редактирование.

Сохраните изменение кнопкой "Сохранить"

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

Описание системных ролей

email-templates-can-send-tem –

Экраны: Администрирование: «Email шаблоны».

Сущности: RU: «Email шаблон» R: "Email шаблон основанный на отчете", "JsonEmailTemplate", "Группа шаблонов","Значение параметра","Шаблон отчета"

Руководитель в области качества –

Экраны: Документы: «Отчетность», «Утвержденные документы».

Сущности: нет

Руководитель

Экраны: Odgassist: «Все ознакомления и тестирования», «Настройка групп документов», «Управление документами», «Разработка и согласования», «Проверка тестов».

Сущности: нет

Разрешена смена пароля -

Экран: Помощь: «Параметры».

Сущности: нет

Работник

Экраны: «my-acknowledgement-and-examination-browse.xml», « my-documents-browse.xml», « parent-acknowledgement-and-examination-browse.xml», « examination-edit.xml», « examination-question-edit.xml», « test-question-edit.xml», « test-question-view.xml»

Сущности: CRU: « Ознакомление и проверка знаний», « Экзаменационный вопрос», «odgassist5_Examination_1»

ChangeRequestProcessor – пустая роль

LearningBasicRole –

Экраны: «Документы», «Отчетность». Настройки обучения: «Группы тем обучения», «Места обучения», «Раздела обучения», «Типы обучения». Обучение: «Архив программ обучения», «Архив тем», «Матрица обучения», «Матрица данных по обучению», «Мои обучения», «Мои практики», «Назначенные обучения», «Планы обучения», «Проверка тестов», «Программы обучения», «Разработка тестов», «Темы обучения», «Экзамены».

Сущности:

R: "Ознакомление и проверка знаний", «Отдел», «Документ», «Версия документа», «Экзаменационный вопрос», «Examination comeete user», «Проверка знаний», «External acknowledgement», «External acknowledgement binding», «Image material», «Проверка тестов», «Должность», «Стадии», «Производственная площадка», «Элемент плана обучения», «Экзамен», «Раздел обучения», «План обучения», «Задача на изменение плана обучения», «Шаблон плана обучения», «Привязка программы обучения», «Группа тем обучения», «Тип обучения», «Назначение обучения», «Teaching place», «Teaching study plan template», «Отчет по обучению одного пользователя», «Шаблон ответа», «Шаблон вопроса», «Шаблон теста», «Тема обучения», «Пользователь с описанием причины почему может обучать», «Video material»

Подтверждение запроса на перепечать

Экраны: Документы: «Запросы на печать».

Сущности:

RU: «Версия документа», Документ.

CRU: «Информация о печатях». Позволяет обрабатывать запросы на перепечать документов. (подтверждать свои запросы нельзя)

Специалист -

Экраны: OdgAssist: «Настройка групп документов», «Управление документами» Документы: «Разработка и согласование» Обучение: «Проверка тестов»

Сущности: нет

Печать учтенных копий – позволяет печатать контролируемые копии документов.

Экраны: odgAssist: «Настройка групп документов», «Управление документами». Документы: «Мои документы», «Мои запросы», «Утвержденные документы».

Сущности:

CRU: «Файл», «Ознакомление и проверка знаний», «Документ», «Настройка выпуска», «Document type»(тип документа), «Экзаменационный вопрос», «Проверка знаний», «Информация о печати».

R: «Группа документов».

RU: «Версия документа».

U: «Проверка тестов»

Печать временных копий - позволяет печатать временные копии документов.

Экраны: нет.

Сущности: нет

Печать во внешние организации - позволяет печать документы в сторонние организации.

Экраны: нет.

Сущности: нет

Оценщик отклонения из ООК - пустая роль

Инженер по документации – добавление документов, версий документов, групп документов. Редактирование справочников odgAssist.

Экраны: odgAssist: «Виды упаковки», «Все ознакомления и тестирования», «Должности», «Настройка групп документов», «Настройки выпуска», «Нормативные документы», «Подразделения», «Продукты», «Производственные площадки», «Регистрационные документы», «Типы документов», «Управление документами». Администрирование: «Пользователи». Документы: «Информация о печатях», «Мои запросы», «Отчетность», «Разработка и согласования», «Утвержденные документы». Обучение: «Проверка тестов», «Разработка тестов».

Сущности:

CRUD: «Отдел», «Ручная проверка вопроса», «Должность», «Информация о печати», «Шаблон ответа», «Шаблон вопроса», «Шаблон теста».

CRU: «Файл», «Ознакомление и проверка знаний», «Документ», «Задача на разработку документа», «Группа документов», «Настройка выпуска», «Document type» (тип документа), «Версия документа», «Экзаменационный вопрос», «Проверка знаний», «Проверка тестов», «Mixture packing», «Нормативная документация», «Стадии», «Стадия производства», «Производственная площадка».

RU: «Resume document development».

R: «Пользователь»

Инженер ООК – пустая роль

WebDAV migration role –

Экраны: Администрирование: «WebDAV»:«Migration screen».

WebDAV documents role –

Экраны: Администрирование: Webdav: Document browser

Сущности: нет

WebDAV basic role -

Экраны: «ext-webdav-show-document-version-edit.xml», « webdav-show-document-version-browse.xml» Сущности: CRUD: «Файл», «Webdav credentials», «Webdav document», «Webdav document version», «Webdav link», «WebDAV lock descriptor».

system-search-folders

Экраны: нет.

Сущности: CRUD: «Папка поиска»

system-reports-minimal –

Экраны: Отчеты: «Показать таблицу», «Показать cводную таблицу», «Отображение диаграмм», «Запуск отчётов». com.haulmont: reports.gui: report: run: «show-report-table.xml», «show-pivot-table.xml», «show-chart.xml», «report-run.xml», «input-parameters.xml», «common-lookup.xml».

Сущности:

R: «Отчёт», «Группа отчётов», «Шаблон отчёта»

system-minimal – роль минимальных настроек, обязательна к выдаче всем пользователям.

Экраны: "license-window.xml", "layout-analyzer.xml", "runtime-properties-frame.xml", "file-upload-dialog.xml","multiupload.xml", "inputdialog.xml","background-work-progress-window.xml", "background-work-window.xml".

Сущности: R:"Фильтр", "KeyValueEntity"

system-full-access – полный доступ ко всем сущностям и экранам.

system-fts-minimal –

Экраны: «search-results.xml», «hit-info-details-screen.xml»

Сущности: нет

system-folders-panel –

Экраны: нет

Сущности:

CRUD: « Папка поиска», «AppFolder»

system-filter – system-filter – роль позволяет настраивать динамический фильтр в реестрах.

Экраны: нет,

Сущности:

CRUD: «Фильтр»

system-file-storage-read-only -

Экраны: Администрирование: « Внешние файлы». «file-edit.xml», «file-browse.xml».

Сущности:

R: «Файл»

system-file-storage-read-only – роль предоставляет доступ к внешним файлам на чтение.

Экраны: Администрирование: « Внешние файлы». «file-edit.xml», «file-browse.xml».

Сущности:

R: Файл

system-file-storage – роль предоставляет полный доступ к внешним файлам.

Экран: Администрирование: «Внешние файлы». «file-edit.xml», «file-browse.xml»

Сущность:

CRUD: «Файл»

system-entity-log – роль предоставляет доступ для просмотра «Журнала изменений сущностей», но без возможности фильтрации по экземпляру сущности. Фильтрация только по интервалу дат

Экран: Администрирование: «Журнал изменений сущностей», «ext-entity-log-browse.xml», «common-lookup.xml» сущность: CRUD: «Журнал изменений сущностей», «Атрибут журнала изменений сущностей», «Журналируемый атрибут», «Журналируемая

Сущность»

R: «odgassist5_OdgAssistUser»

system-email-history – роль предоставляет доступ к email сообщениям приложения.

Экран: Администрирование: «История сообщений». «sending-message-browse.xml», «resend-message.xml».

Сущность:

R: «Сообщение»

system-dynamic-attributes-read-only – роль предоставляет доступ на чтение динамических атрибутов.

Экраны: Администрирование: «Динамические атрибуты», «runtime-properties-frame.xml», «category-edit.xml», «category-browse.xml», «attribute-edit.xml».

Сущности:

R: «Категория», «Атрибут категории», «ScreenAndComponent».

system-dynamic-attributes – роль предоставляем возможность добавлять динамические атрибуты.

Экран: Администрирование: «Динамические атрибуты». Categories: «attribute-edit.xml», «category-browse.xml», «category-edit.xml». dynamicattributes: « runtime-properties-frame.xml» commonlookup: « common-lookup.xml»

Сущности:

CRUD: « Категория», «Атрибут категории», « ScreenAndComponent»

QualityEventRole

Экраны: odgAssist: «Подразделения», «Производственные площадки», «Управление документами», «Оборудование», «Производимые продукты», «Протоколы OOS» Администрирование: «Пользователи», «Отклонения и события качества», «Отклонения и ск», «Расследования». CAPA и планы действий: «Действия к выполнению», «Действия» dynamic-task-process-form.xml file-upload-dialog.xml multiupload.xml login-screen.xml loginwindow.xml main-screen.xml mainwindow.xml action-browse.xml action-edit.xml

Сущности:

CRU: « Файл», «Связка изменения действия», «Задача на изменение плана», «Элемент пять почему», «Отчет о расследовании», «Элемент Ишикавы», «Пользовательская часть расследования», «Событие качества», «Объекты и люди вовлеченные в отклонение». RU: «Пользователь», «Решение по серии», «Расследование»

QmsUserRole –

Экраны: odgAssist: «Должности», «Подразделения», «Настройка групп документов», «Управление документами», «Все ознакомления и тестирования» и т.д.

Сущности: нет

Commenting – роль позволяет добавлять комментарии, ознакамливаться с комментариями.

Добавление пользователя

Добавление пользователей осуществляется через пункт меню "Администрирование", подпункт "Пользователи".

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

"Логин" — поле содержит имя пользователя для аутентификации
"Новый пароль" — поле ввода пароля
"Подтверждение пароля" — поле подтверждения пароля
"Полное имя" — поле автоматически заполнится, если заполнены части полного имени: Имя, Отчество, Фамилия
"email" - поле для ввода адреса электронной почты. Обязательно, если установлен флаг в поле "Отправлять уведомления". Если поле "email" не будет заполнено, то следует убрать галочку в поле "Отправлять уведомления".
"Часовой пояс" - в соответствии с которым будут отображаться и вводиться значения типа timestamp "Группа" — группа доступа, по умолчанию Company
"Должность"
"Язык" — язык интерфейса, устанавливаемый для пользователя
"Маска разрешенных IP"- маска разрешенных IP-адресов, с которых возможен вход в систему.
Маска представляет собой список адресов через запятую. Поддерживаются как адреса формата IPv4, так и адреса формата IPv6. В первом случае адрес должен состоять из четырех чисел, разделенных точками, при этом любая часть вместо числа может содержать знак "*", что означает "любое число".
Адрес в формате IPv6 представляет собой восемь групп по четыре шестнадцатеричные цифры, разделенных двоеточием. Любая группа также может быть заменена знаком "*".
Маска может содержать адреса только одного формата. Наличие адресов формата IPv4 и IPv6 одновременно недопустимо. Пример: 192.168.*.*
"Активен" - если данный флаг не установлен, то пользователь не может войти в систему. Пользователь не отображается в списке пользователей для выбора исполнителя задачи.
"Отправлять уведомления" - если флаг установлен, то отправка сообщений пользователю производится.

"Подразделение" - подразделение пользователя.

Для корректной работы приложения поле "Подразделение" обязательно для заполнения.

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

"Должности" - список дополнительных должностей

"Роли" - Список ролей пользователя

"Замещаемые пользователи" — список замещаемых пользователей.

--

Электронная простая подпись

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

Подпись - это ID пользователя. Формируется автоматически.

Посмотреть ID можно в модуле Администрирование, подмодуле Пользователи.

Выбрать Пользователя и нажать правую кнопку мыши. Выбрать Системная информация

В окне Системная информация найти параметр ID

Замещение пользователей

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

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

Окно настройки "Замещение пользователей".

"Пользователь" - текущий редактируемый пользователь. Он будет замещать другого пользователя.

"Замещаемый пользователь" - замещаемый пользователь.

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

--

Назначенные задания

Пункт меню "Администрирование", подпункт "Назначенные задания".
Подпункт меню позволяет настраивать автоматическое выполнение рутинных задач.
Например, обработка документов, рассылка оповещений пользователям и т.д.

Отправка оповещений о новых задачах.

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

Настройка:

Нажмите пункт меню "Администрирование", подпункт "Назначенные задания". Заполните поля формы:
Defined By: Bean
Bean Name: cuba_Emailer
Method Nmae: processQueuedEmails()
Sheduling Type: Period
Cron Expression: 60
Singleton: V

Пример содержимого письма:

Отправка оповещений назначенным по задачам

Описание:
Если у пользователя нет просроченных задач, то ему отправляется весь список задач каждый понедельник.
Если есть просроченные задачи или задачи близкие к крайнему сроку, то оповещения отправляются каждое утро в 9:00.

Настройка:
Нажмите пункт меню "Администрирование", подпункт "Назначенные задания". Заполните поля формы:
Defined By: Bean
Bean Name: odgassist5_TasksReportService
Method Nmae: sendTaskStatesToAllUsers
Sheduling Type: Cron
Cron Expression: 0 0 9 * * *

Пример содержимого письма:

отображение письма оповещения

Отправка оповещений по действиям

Описание:
В список на отправку попадают отчеты:

крайний срок выполнения сегодня

крайний срок выполнения наступит через ru.od.notify_before_days

просроченные действия

ru.od.notify_before_days - параметр, который хранит количество дней. (Уведомить за n дней).
Настройка производится через пункт меню "Администрирование", подпункт "Свойства приложения".
В поле "Поиск по имени свойства" ввести: ru.od.notify_before_days

Настройка:
Нажмите пункт меню "Администрирование", подпункт "Назначенные задания". Заполните поля формы:
Bean Name: odgassist5_TaskReportService
Method Nmae: notifyUserAboutOverdueActions

Отправка оповещений "Уведомление руководителя об ознакомлениях с документами сотрудников"

Описание:

Рутина, которая работает по крону.

Рутина отправляет почтовые уведомления "Начальнику подразделения" через заданный интервал времени.

Почтовые уведомления содержат список сотрудников и список документов, с которыми они должны ознакомится.

Настройка оповещения

Нажмите пункт пеню "Администрирование" -> "Назначенные задания" -> кнопка "Создать"

Defined By - Bean

Bean Name - odgassist5_TasksReportService

Method Name - notifyHeadAboutAcknowledgements(String nDays)

Method parameters - 7

Scheduling Typr - Cron

Cron Expression - 0 0 9 * * *

Description - уведомление о документах, с которыми сотрудники не были ознакомлены, из списка назначенных на ознакомление. Уведомление приходит начальнику подразделения. В уведомлении содержаться: список сотрудников и список документов, с которыми каждый из сотрудников не был ознакомлен.

После добавления задания необходимо не забыть его активировать.

Настройка подразделений для оповещений

Руководители отмеченных подразделений будут получать рассылку.

"odgAssist" -> "Подразделения" -> кнопка "Изменить"

Установить отметку в чекбоксе "Получать уведомления об ознакомлениях"

Описание полей формы настройки "Назначенное задание"

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 - произвольное текстовое описание задания.

Задание также имеет признак активности, который устанавливается в экране списка заданий. Неактивные задания не запускаются.

Настройка времени жизни пользовательской сессии

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

Настройка:
Откройте файл конфигурации приложения local.web-app.properties
Добавьте свойство "cuba.httpSessionExpirationTimeoutSec = 30"
Укажите требуемое количество секунд. Добавьте свойство "cuba.web.uiHeartbeatIntervalSec"

0 - включено

1 - отключено

Блокировка пользователя, неудачные попытки авторизации

Описание:
Приложение позволяет настроить блокировку учетной записи пользователя после нескольких неудачных попыток ввода логина и пароля.
Защите от брутфорс-атак.

Настройка:
Нажмите пункт меню "Администрирование", подпункт "Свойства приложения".
В поле "Поиск по имени свойства" введите "brute"
Отобразятся три свойства:

bruteForceProtection.maxLoginAttemptsNumber - в свойстве указывается количество попыток

cuba.bruteForceProtection.blockIntervalSec - здесь указывается время в секундах, на которое блокируется пользователь, в случае нескольких неудачных попыток ввода логина/пароля

cuba.bruteForceProtection.enabled - это свойство для включения или отключения защиты от перебора паролей.

Настройки требований сложности пароля, временного интервала смены пароля

Описание
Приложение позволяет настроить требования для сложности пароля (запретить использовать простые пароли), а также настроить временной интервал смены пароля.

Настройка
Нажмите пункт меню "Администрирование", подпункт "Свойства приложения".

Для настройки сложности пароля используется свойство "cuba.passwordPolicyEnabled"
В поле "Поиск по имени свойства" введите его.
Откройте запись двойным кликом и измените значение.

true - включено

false - выключено

Для настройки времени интервала смены пароля используется свойство "ru.od.number_of_days_to_change_password"
В поле "Поиск по имени свойства" введите его.
Откройте запись двойным кликом и измените значение. По умолчанию 90 дней.

End article

Проверка сроков актуальности документов

Рутина по проверке сроков актуальности версий документов.
Выполняется по крону каждый день в 1:30. (время можно изменить).

Действия рутины:
Формируется список всех версий документов у которых дата "Актуален до" закончилась вчерашним днем.
Изменяется статус этих версий на "Архив", сами версии перемещается в архив.
Затем в каждом документе ищется версия документа у которой дата актуальности "сегодня" и если такая есть, то ставит ее как "Текущая версия" документа.
Если у документа срок начала актуальности уже прошел, то рутина его не обработает и потребуется вручную изменить статус такого документа на "Согласован". А предыдущую версию отправить в "Архив".

Если у документа не было текущей версии. Рутина установит "Текущей версией" первую версию документа.

Настройка:

Нажмите пункт меню «Администрирование», подпункт «Назначенные задания». Нажмите кнопку "Создать".
В окне "Назначенное задание" заполните поля согласно таблице:

Название поля	Значение	Название поля	Значение
Defined by	Bean	User Name
Bean Name	odgassist5_DocumentService	Singleton
Method Name	checkActualDocumentVersion()	Permited Servers
Scheduling Type	Cron	Log Start
Cron Expression	0 30 1 * * *	Log finis
Timeout, sec	Description
Time Frame, sec
Start Delay, sec

Сверьте и отредактируйте при необходимости заполненные параметры согласно изображению выше. Если запись отсутствует, то нажмите кнопку «Добавить» и заполните форму как на изображении выше. После сохранения проверьте, что задание активировано. Если отметка не установлена, то выделите запись и нажмите «Активировать».

Просмотр пользовательских сессий

Нажмите пункт меню "Администрирование", подпункт "Журнал пользовательских сессий". В поле динамических фильтров нажмите "Добавить условие поиска".

После добавления фильтра выберите тип:

Реестр отобразит все сессии. Далее для отображения только активных добавьте фильтр "Завершена"

Также измените тип фильтра "Установлен" и выберите "Нет".

Создание системного пользователя

Логин системного пользователя указывается в local.app.properties Ключ cuba.jmxUserLogin. По умолчанию значение admin

Порядок действий

В запущенном приложении перейти в меню Администрирование - Консоль JMX

В поле Поиск по ObjectName ввести demo и нажать просмотреть MBean

Найти метод createSystemUser()

Нажать запустить

Перейти в Администрирование - Пользователи

Убедиться, что был создан пользователь system

Сбросить пользователю пароль на 00000, чтобы создалась запись WebDavCridentials

Теперь необходимо изменить свойство cuba.jmxUserLogin в файле который находится на сервере. Установит значение system.

Перезапустить приложение.

Чтобы проверить достаточно, например, зарегистрировать тему обучения, и после ее утверждения в журнале изменения сущности убедится, что при изменение объектов на стороне сервера, пользователь указан system

cuba.jmxUserLogin = system

Проверка времени приложения

Создайте тестовую группу, проверьте в свойствах время ее создания.
Если оно отлично от требуемого, но время на сервере настроено верно, то добавьте ключ временной зона в файл конфигурации supervisor.confd/файл_настройки.
Пример:

command=java -Xms3G -Xmx3G -jar -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./ -XX:+ExitOnOutOfMemoryError -Duser.timezone=Europe/Moscow app.jar -port 9090

Блокировки карточек

Блокировка в UI проверялась только в "Задача на разработку документа" и "Расследование".
Также нужно помнить, что блокировка не снимается автоматически, если пользователь, например, закрыл браузер с открытым редактором записи.
В таком случае она снимется только по окончании таймаута сессии, т.к.
Необходимо правильно завершать работу, нажать "Сохранить без завершения задачи процесса" или "Завершить", только после закрывать браузер.

Настройка блокировки на запись Ссылка на документацию cuba:https://doc.cuba-platform.com/manual-latest-ru/pessimistic_locking.html

Рассмотрим блокировку на примере разработки документов.

Перейти в меню "Администрирование" - "Блокировки"
Чтобы добавить блокировку нужно перейти во вкладку "Настройка"

Нажать кнопку "Создать"

Заполнить поля

Тип блокировки - Сущности

Наименование - Задача на разработку документа (odgassist5_DocumentDevelopmentTask) - поле поддерживает поиск

Таймаут. сек - время которое сущность будет недоступна для редактирование через UI.

Пример заполнения:

Нажать кнопку "ОК".
Для применения изменений нужно нажать "Перезагрузить конфигурацию"

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

Делегирование

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

Задачи пользователей

Мои задачи

Доступность функционала определяется свойством ru.od.enable_reassignation.
Так же необходимо открыть доступ к экрану в нужной роли:
- Odgassist5_AssignationDraft.edit

Как работает:

Выбираем запись в реестре

Нажимаем на кнопку "Делегирование"

Отобразится редактор переназначение

Формируется список из пользователей которые есть в карточке

Заполняем поле С пользователя

Заполняем поле На пользователя

Заполняем поле Причина

Пример заполнения

Нажимаем кнопку Переназначить

Система выполнит поиск всех полей с типами Пользователь
Если значение поля равно "С пользователя", то поменяет "На пользователя"

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

Документ пользователя

Меню: Документы-Документы пользователей
Содержит в себе ссылку на пользователя и документ, а также 2 признака: создавать ознакомление, создать уведомление.

Теперь при любом сохранении версии документа со статусом Согласован:
Будет выполнена попытка создать ознакомление по распределению, указанному в версии документа. Если для пользователя нет записи в *, то она будет создана, ознакомление будет создана, уведомление будет отправлено.
Если для пользователя есть запись в *, то Ознакомление будет создано, если установлен соответствующий признак.
Если ознакомление создано, то Уведомление будет создано, если установлен соответствующий признак.
Будет выполнен поиск в * для соответствующего документа

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

При создании ознакомления, будет выполнена проверка признака на отправку уведомления.

В любом случае, при создании ознакомления будет выполняться поиск плана обучения сотрудника, если такой имеется, то к нему будет привязан документ и ознакомление.
Записи в * можно массово редактировать (признаки: создавать ознакомление, создать уведомление)

Редактирование переменных процесса

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

Решение
1. Выберите запись в реестре и нажмите кнопку "Где задача?".

2. Перейдите на вкладку "Статус".

3. На вкладке статус в закладке Variables выберите переменную для корректировки. В примере это исполнитель задач начальника ООК.
Выберите запись и нажмите "Изменить"

4. Откроется окно редактирования значений. Нажмите на иконку "Многоточие". Выберите нового пользователя и реестре пользователей. Старого пользователя удалите.