Инструменты пользователя

Инструменты сайта


odg_assist_5.0:администрирование_odg

Содержание

Функциональные характеристики ПО “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 – роль позволяет добавлять комментарии, ознакамливаться с комментариями.

Описание и доступы роли "Инженер по документации"

Эта роль даёт особые возможности, недоступные через обычные настройки прав, так как она вписана в код.

1. Реестр «Информация о печатях» — кнопка «Отметить»

Где: раздел «Информация о печатях»

Без роли: кнопка «Отметить» полностью скрыта. Пользователь видит только таблицу в режиме просмотра.

С ролью: в панели кнопок появляется выпадающая кнопка «Отметить» с тремя действиями:

  • Отметить утерянным — меняет статус записи на Утерян
  • Отметить возвращённым — меняет статус на Полностью возвращено
  • Отметить распечатанным — меняет статус на Распечатано(активна только если у записи заполнена дата печати и статус Утерян или Полностью возвращено)

При попытке нажать эти кнопки без роли (если кнопка всё же доступна через другой путь) — система показывает уведомление: «Доступ запрещён — У Вас нет роли Инженер по документации».


2. Реестр «Задания на разработку» — фильтр и видимость всех заданий

Где: раздел «Задания на разработку документов»

Без роли: Пользователь без такой роли в реестре видит только те задания на разработку, в которых он указан как разработчик, согласующий, QA или утверждающий и у которых статус НЕ "Отклонен", "Остановлен вручную" или "Разработка завершена". Пользователь без роли видит задания на разработку документа в процессе разработке если он назначен на задачу по диаграмме

С ролью: инженер по документации видит все задания системы без фильтрации по участнику и без исключения завершённых/отклонённых статусов — полный реестр всех задний на разработку.


3. Реестр «Задания на разработку» — кнопка «Отменить разработку документа»

Где: та же таблица заданий на разработку, красная кнопка в панели

Без роли: кнопка «Отменить разработку документа» скрыта.

С ролью: кнопка «Отменить разработку документа» доступна


4. Редактор задания — файл разработки на финальном этапе

Где: редактор задания на разработку, этап «Проверка данных и выпуск»

Без роли: поле загрузки разработанного файла (WebDAV) недоступно — пользователь видит файл только в режиме просмотра.

С ролью: инженер по документации видит активное поле загрузки и может заменить файл разработки на этом финальном этапе.


5. Редактор задания — кнопка «Возобновить разработку»

Где: редактор задания в статусе Остановлен вручную (процесс был принудительно остановлен)

Без роли: кнопка внизу редактора называется «Сохранить» и просто сохраняет данные без каких-либо действий с процессом.

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


6. Редактор версии документа — поле файла

Где: редактор версии документа

Без роли: поле загрузки файла документа скрыто, вместо него отображается поле только для чтения — документ можно открыть, но не заменить. Поле PDF также недоступно для редактирования.

С ролью: поле Файл становится активным — инженер может загрузить новый файл версии документа. PDF-поле также доступно для редактирования.

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


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

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

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

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

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

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

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

!В карточке пользователя есть два разных реквизита, связанных с должностью:

  1. Поле «Должность» — текстовое поле, одно значение;
  2. Таблица «Должности» — справочный список, в котором пользователю можно сопоставить одну или несколько должностей из общего справочника.

При формировании итоговой таблицы на последнем листе документа (колонка «Должность» рядом с ФИО, действием, датой и подписью) система использует текстовое поле «Должность». Табличная часть в этом сценарии не задействована.

Если поле «Должность» у пользователя не заполнено, в соответствующей ячейке листа согласования выводится значение-заглушка («Не указана»).

Как работают остальные процессы системы

Остальные функциональные блоки — назначение и распределение обучения и ознакомлений, планы обучения, распределение документов по должностям, матрица версий документов, отчётные формы по задачам — используют таблицу «Должности» в карточке пользователя, а не текстовое поле.

Таким образом, два реквизита заполняются и используются независимо друг от друга. Заполненная таблица «Должности» не влияет на лист согласования, и наоборот — заполненное текстовое поле «Должность» не влияет на распределение обучения и документов. Для корректной работы системы в целом должны быть заполнены оба реквизита.

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

"Замещаемые пользователи" — список замещаемых пользователей. Используется только для настройки приложения и демонстрации.

–

Подразделения и должности

Подразделение и должность пользователя влияют на работу системы:

  • распределение документов по подразделениям и должностям;
  • назначение программ обучения (программы обучения привязываются к должности);
  • определение руководителя подразделения;
  • рассылку уведомлений об ознакомлениях.

Поэтому справочники «Подразделения» и «Должности» должны быть заполнены до создания пользователей.

Справочник «Подразделения»

Расположение: пункт меню «odgAssist» → «Подразделения».

Для создания подразделения нажмите кнопку «Создать» и заполните поля:

Поле Описание
Название Наименование подразделения. Обязательное поле
Входит в подразделение Вышестоящее подразделение. Позволяет выстроить иерархию. Для подразделения верхнего уровня поле оставляется пустым
Руководитель подразделения Пользователь, который будет получать задачи и уведомления как руководитель
Сотрудники подразделения Список сотрудников. Заполняется автоматически при указании подразделения в карточке пользователя
Получать уведомления об ознакомлениях Если отметка установлена, руководитель подразделения получает уведомления об ознакомлениях сотрудников

Сохраните изменения кнопкой «ОК».

Для изменения существующего подразделения выделите его в списке и нажмите «Изменить».

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

Справочник «Должности»

Расположение: пункт меню «odgAssist» → «Должности».

Для создания должности нажмите кнопку «Создать» и заполните поля:

Вкладка Описание
Главная (поле Название) Наименование должности. Обязательное поле
Сотрудники (добавление сорудников происходит через кнопку Добавить) Список сотрудников с данной должностью. Заполняется автоматически из карточек пользователей

Сохраните изменения кнопкой «ОК».

Добавление пользователю подразделения и должности

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

  1. Откройте пункт меню «Администрирование» → «Пользователи».
  2. Найдите нужного пользователя в списке. Для поиска воспользуйтесь фильтром.
  3. Выделите пользователя и нажмите кнопку «Изменить».
  4. В поле «Подразделение» нажмите кнопку выбора и укажите подразделение из справочника.
  5. В таблице «Должности» нажмите кнопку «Добавить», выберите должность из справочника и подтвердите выбор.
  6. Нажмите кнопку «ОК» для сохранения карточки.
Подразделение у пользователя может быть только одно, а должностей — несколько. Если сотрудник совмещает должности, добавьте в таблицу все должности: программы обучения будут назначены по каждой из них.

Изменение и исключение должности

Чтобы убрать должность у пользователя, выделите её в таблице «Должности» и нажмите «Исключить».

Кнопка

«Исключить» убирает должность только у данного пользователя — сама должность в справочнике сохраняется. Не используйте для этой цели удаление записи из справочника «Должности».

Чтобы сменить должность, добавьте новую и исключите прежнюю.

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

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

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

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

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

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

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


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

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

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

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

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

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

–

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


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

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


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

Настройка:

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

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

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


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

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

  • Всего задач – все активные задачи из бизнес-процессов, где пользователь является исполнителем.
  • Близкие к крайнему сроку – отбираются задачи, у которых:
    • крайний срок (dueDate) ≥ сегодня (не просрочен)
    • и крайний срок ≤ сегодня + N дней (N = ru.od.notify_before_days - свойство приложения).
  • Просроченные – задачи, у которых крайний срок уже наступил (строго раньше сегодня), либо срок не задан.
  • Всего действий – берутся все отчёты о выполнении действий (не Действия!), у которых:
    • статус «В работе»,
    • текущий пользователь – ответственный в действии (Action).
  • Близкие к крайнему сроку – отбираются из "Всего действий", у которых одновременно:
    • крайний срок у действия (Action) не раньше сегодня (то есть будущий или сегодняшний),
    • и сегодня > крайний срок у действия (Action) − N (то есть дедлайн наступит раньше, чем через N дней, если считать от сегодня).
  • Просроченные – отбираются из "Всего действий", у которых:
    • крайний срок у действия (Action) не задан (dueDate == null), либо
    • крайний срок у действия (Action) уже прошёл (строго раньше сегодня).

Как настроить крайний срок задачи (TaskData):

  1. В диаграмме процесса (BProc - Process Definition) нажать на пользовательскую задачу
  2. В поле "Due date" справа указать значение

Крайний срок будет рассчитываться как дата и время создания этой задачи (когда она назначается пользователю) + значение, указанное в "Due date"

Доступные значения для поля "Due date":

  1. PT5M — 5 минут.
  2. PT3H — 3 часа.
  3. P2D — 2 дня.
  4. P1W — 1 неделя.
  5. P1M — 1 месяц.
  6. P1DT12H — 1 день и 12 часов.

Каждый символ имеет строгое значение:

  • P (Period / Период) — обязательный символ в самом начале строки. Он сообщает движку, что дальше идет описание периода (дни, месяцы, годы).
  • T (Time / Время) — обязательный символ-разделитель в середине строки. Он отделяет даты от часов, минут и секунд. Все, что идет после T, относится ко времени суток.

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

В секции даты (до буквы T):

  • Y (Year) — Годы
  • M (Month) — Месяцы
  • W (Week) — Недели
  • D (Day) — Дни

В секции времени (после буквы T):

  • H (Hour) — Часы
  • M (Minute) — Минуты (обратите внимание: буква M до T — это месяцы, а после T — минуты)
  • S (Second) — Секунды

Настройка:
Нажмите пункт меню "Администрирование", подпункт "Назначенные задания". Заполните поля формы:
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

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

  1. В запущенном приложении перейти в меню Администрирование - Консоль JMX
  2. В поле Поиск по ObjectName ввести demo и нажать просмотреть MBean
  3. Найти метод createSystemUser()
  4. Нажать запустить
  5. Перейти в Администрирование - Пользователи
  6. Убедиться, что был создан пользователь system
  7. Сбросить пользователю пароль на 00000, чтобы создалась запись WebDavCridentials
  8. Теперь необходимо изменить свойство cuba.jmxUserLogin в файле который находится на сервере. Установит значение system.
  9. Перезапустить приложение.
  10. Чтобы проверить достаточно, например, зарегистрировать тему обучения, и после ее утверждения в журнале изменения сущности убедится, что при изменение объектов на стороне сервера, пользователь указан system
  11. 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

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

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

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

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

  1. Тип блокировки - Сущности
  2. Наименование - Задача на разработку документа (odgassist5_DocumentDevelopmentTask) - поле поддерживает поиск
  3. Таймаут. сек - время которое сущность будет недоступна для редактирование через UI.

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

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

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

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


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

  1. Задачи пользователей
  2. Мои задачи

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

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

  1. Выбираем запись в реестре
  2. Нажимаем на кнопку "Делегирование"
  3. Отобразится редактор переназначение
  4. Формируется список из пользователей которые есть в карточке
  5. Заполняем поле С пользователя
  6. Заполняем поле На пользователя
  7. Заполняем поле Причина
  8. Пример заполнения
  9. Нажимаем кнопку Переназначить

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

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

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


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

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

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

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

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


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

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

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

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

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

WebDAV → Просмотр документов

1. Назначение Экран «Просмотрщик документов WebDAV» — служебный (администраторский) реестр всех файлов, которые хранятся в системе через механизм WebDAV: файлы разрабатываемых версий документов, вложения и прочие файлы, редактируемые пользователями напрямую из офисных приложений.

Экран позволяет:

найти любой WebDAV-документ в системе; посмотреть, кем и когда файл заблокирован (открыт на редактирование), и снять блокировку; скачать файл или загрузить вместо него новый; посмотреть и восстановить предыдущие версии файла; включить или отключить ведение версий для конкретного файла; удалить файл. Важно. Экран работает с файлами напрямую, минуя бизнес-логику разработки, согласования и утверждения документов. Обычная работа с документами ведётся в разделе Документы. Просмотрщик WebDAV используется для разбора нештатных ситуаций (например, «документ висит заблокированным») и только сотрудниками, имеющими соответствующие права.

2. Как открыть

Администирование → WebDAV → Просмотр документов.

Откроется вкладка «Просмотрщик документов WebDAV».

Если пункт меню не отображается — у вашей роли нет прав на этот экран.

3. Из чего состоит экран

3.1. Панель фильтра Верхний блок «Фильтр» — стандартный поисковый фильтр системы:

3.2. Панель кнопок

Загрузить — загрузить файл с компьютера;

Скачать — скачать выбранный файл;

Управление версиями — открыть окно версий выбранного документа;

Удалить — удалить выбранный WebDAV-документ;

Разблокировать — снять блокировку с выбранного документа;

Включить версионность / Отключить версионность — управление ведением версий файла.

3.3. Колонки таблицы

Колонка Что показывает
Документ Имя файла (ссылка). Рядом полужирным может стоять метка версии — v1, v2 и т. д. — текущая версия файла, если для него включена версионность
Состояние блокировки Заполняется, если файл открыт кем-то на редактирование: Заблокировано пользователем «логин» с «дата и время». Пустое значение — файл свободен
Версионность Флажок: отмечен — для файла ведутся версии; снят — хранится только текущее содержимое

Имена вида Thu Jan 22 152509 MSK 20262983059757704781504.docx — файлы, созданные системой автоматически (например, при создании разрабатываемой версии документа). Имена вида СОП ОД-001_2.docx — файлы, загруженные пользователем под собственным именем.

4. Типовые операции

4.1. Найти документ

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

4.2. Скачать файл

Выделите строку в таблице.

Нажмите Скачать. Файл сохранится средствами браузера.

Открыть файл на просмотр можно также щелчком по его имени в колонке Документ.

4.3. Загрузить файл

Нажмите Загрузить.

Выберите файл на компьютере.

Если для документа ведутся версии, система спросит, что сделать с загружаемым файлом: Создать новую версию — прежнее содержимое сохранится в истории версий; Заменить документ — содержимое будет заменено.

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

Файл, загруженный кнопкой Загрузить на этом экране, становится самостоятельным WebDAV-документом: система создаёт новую запись в реестре и первую версию файла. Ни с каким объектом системы (документом, задачей на разработку, версией документа) он при этом не связывается.

С таким файлом доступны только операции самого просмотрщика

Загрузка через этот экран предназначена для проверки и отладки работы WebDAV (открывается ли файл в Office, работают ли блокировка и версионирование) и для разовых служебных задач. Рабочие документы загружайте из карточки задачи на разработку документа — только так файл попадёт в бизнес-процесс.

4.4. Посмотреть и восстановить версии

  1. Выделите строку.
  2. Нажмите Управление версиями — откроется окно «Управление версиями документов».
  3. В окне доступны:
    • список версий с колонками Имя, Версия, Дата и время создания, Автор;
    • Открыть документ — открыть выбранную версию;
    • Скачать — скачать выбранную версию; Скачать как ZIP — выгрузить архивом;
    • Копировать в текущую версию — сделать содержимое выбранной старой версии актуальным (история версий при этом сохраняется);
    • Загрузить — добавить новую версию из файла;
    • Обновить, Сохранить, Закрыть.
  4. Индикатор блокировки в окне показывает состояние: Документ заблокирован / Документ разблокирован.

4.5. Снять блокировку

Файл блокируется, когда пользователь открывает его на редактирование через WebDAV. Блокировка снимается автоматически при корректном закрытии файла. Если сеанс редактирования завершился некорректно (закрыт браузер, пропала сеть, аварийно закрыт Word), блокировка может остаться, и другие пользователи получат сообщение «Этот документ заблокирован. Сохранение изменений сейчас невозможно».

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

  1. Найдите документ и посмотрите в колонке Состояние блокировки, кем и с какого времени он заблокирован.
  2. Свяжитесь с этим пользователем и убедитесь, что он не редактирует файл в данный момент.
  3. Выделите строку и нажмите Разблокировать.
Внимание. Принудительное снятие блокировки во время реального редактирования приведёт к потере несохранённых правок: при попытке сохранения пользователь получит сообщение «Документ был изменён во время редактирования». Снимайте блокировку только после подтверждения от владельца блокировки.

Кнопка Разблокировать доступна только пользователям с правом WebDav → Разблокировать документы.

4.6. Включить или отключить версионность

  1. Выделите строку.
  2. Нажмите Включить версионность или Отключить версионность.
  3. Результат отразится флажком в колонке Версионность.

При включённой версионности каждое сохранение файла создаёт новую версию, доступную через Управление версиями. При отключённой — хранится только текущее содержимое.

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

4.7. Удалить документ

  1. Выделите строку.
  2. Нажмите Удалить и подтвердите действие.
Внимание. Удаление выполняется на уровне файлового хранилища и не проверяет, используется ли файл версией документа, задачей или иным объектом системы. После удаления связанный объект может остаться без файла (в реестре появится «Файл не найден»). Удаляйте записи только по согласованию с администратором системы.

5. Права доступа

  • Доступ к пункту меню и экрану выдаётся ролью; по умолчанию экран предназначен для администраторов и ответственных за систему.

Свойства приложения

1. Назначение

Экран «Свойства приложения» — единая точка настройки поведения системы. Свойство (параметр) — это именованная настройка вида ru.od.print.canPrintBeforeStartOrderDate, значение которой система читает во время работы: она включает и выключает функции, задаёт шаблоны, адреса, ключи процессов и т. п.

На экране можно:

  • найти нужное свойство по имени, описанию или модулю системы;
  • посмотреть его текущее значение, значение по умолчанию и описание;
  • изменить значение — изменения вступают в силу без перезапуска приложения;
  • увидеть, кто и когда менял свойство в последний раз;
  • выгрузить выбранные свойства в виде SQL-скрипта для переноса на другой стенд.
Важно. Экран показывает только те свойства, которые хранятся в базе данных. Свойства, заданные на уровне сервера приложения (в файле app.properties или системным свойством запуска), отображаются, но недоступны для изменения — их меняет администратор в конфигурации сервера с последующим перезапуском.
Важно. Изменение свойства действует на всю систему и всех пользователей сразу. В валидируемой системе меняйте настройки только в рамках принятой процедуры управления изменениями.

2. Как открыть

Главное меню → Администрирование → Свойства приложения.

Если пункт меню не отображается — у вашей роли нет прав на экран.

3. Из чего состоит экран

Панель поиска
Элемент Назначение
Поиск по имени свойства Отбор по части имени, например print или documentDevelopment
Поиск по описанию Отбор по части текста описания, например печат или уведомлен
Модуль Отбор по функциональному блоку системы (см. п. 6)
Кнопка обновления Перечитать значения свойств
Кнопка редактирования Открыть окно изменения выбранного свойства
Кнопка выгрузки (значок со стрелкой вниз) Выгрузить выбранные свойства SQL-скриптом

Поиск срабатывает по мере ввода, дерево при этом раскрывается автоматически. Условия можно комбинировать: например, модуль Контроль печати + описание архив.

Отбор по описанию и по модулю работает только для свойств самой системы odgAssist — у платформенных свойств (cuba.* и подобных) описание и модуль не заданы.

Таблица свойств

Свойства показаны деревом: имя разбивается по точкам, и каждая часть становится веткой. Например, ru.od.print.printAddress попадёт в ветку ru → od → print. Разверните ветку, чтобы увидеть сами свойства.

Колонка Что показывает
Имя Часть имени свойства (для ветки) или имя свойства (для строки-значения)
Текущее значение Значение, с которым система работает сейчас
Когда обновлено Дата и время последнего изменения через этот экран
Кем обновлено Логин пользователя, изменившего значение
Описание Назначение свойства (в таблице текст обрезан, полностью виден в окне редактирования)

Кнопки редактирования и выгрузки становятся активными, только когда выделена строка со свойством, а не ветка дерева.

4. Как изменить значение свойства

  1. Найдите свойство поиском.
  2. Выделите строку и нажмите кнопку редактирования (или дважды щёлкните по строке) — откроется окно «Свойство приложения».
  3. В окне отображаются:
    • Имя — только для чтения;
    • Значение по умолчанию — заводское значение, с которым система работает, если ничего не задано;
    • Текущее значение — редактируемое поле. Вид поля зависит от типа свойства: для логических значений и перечислений — выпадающий список, для секретных значений (паролей, ключей) — поле со скрытым вводом, для остальных — обычное текстовое поле;
    • Описание — полный текст назначения свойства.
  4. Введите новое значение и нажмите ОК (или Ctrl+Enter).

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

Чтобы вернуть заводское поведение, впишите в Текущее значение то же значение, что указано в поле Значение по умолчанию.

Если значение изменить нельзя

Если свойство задано на уровне сервера приложения, поле Текущее значение будет недоступно и появится сообщение:

Невозможно изменить текущее значение, так как оно установлено на уровне сервера приложения либо свойством в файле app.properties, либо системным свойством

Такие свойства меняет администратор в конфигурационном файле сервера, изменение вступает в силу после перезапуска приложения.

5. Выгрузка свойств (перенос настроек)

  1. Отметьте одно или несколько свойств (множественный выбор — с Ctrl или Shift).
  2. Нажмите кнопку выгрузки.
  3. Откроется окно «Экспорт свойств» с готовым SQL-скриптом — его можно скопировать и выполнить на другом стенде, чтобы перенести настройки.

Ветки дерева в выгрузку не попадают — экспортируются только сами свойства.

6. Модули

Фильтр Модуль соответствует функциональным блокам системы:

Модуль Что настраивает
Приложение Общие настройки системы, авторизация, техподдержка, ключи бизнес-процессов
Контроль печати Контролируемая печать: адрес печати, шаблоны колонтитулов, ограничения на печать
Обучение Обучение и ознакомление с документами
Разработка документов Процесс разработки, режим работы с файлами (WebDAV/SharePoint), доступность полей на этапах
Отклонения и события качества Регистрация и расследование отклонений
CAPA и планы действий Планы действий и корректирующие/предупреждающие действия
Управление изменениями Процессы управления изменениями
Управление рисками Анализ и оценка рисков
Пользователи Настройки, связанные с пользователями
Компьютерное зрение Модуль распознавания
Уведомление по электронной почте Какие события рассылать по почте

7. Примеры часто используемых свойств

Свойство Модуль Назначение
webdav.urlPrefix — Адрес, по которому документы открываются в Microsoft Office. На новом стенде обязательно заменяется с адреса по умолчанию на реальный домен системы
ru.od.documentDevelopment.document_development_mode Разработка документов Определяет, идёт разработка через WebDAV или через SharePoint
ru.od.documentDevelopment.enable_edit_on_document_confirmation Разработка документов Доступность поля «Разрабатываемый файл» на этапе согласования документа
ru.od.print.printAddress Контроль печати Адрес, по которому формируется ссылка при печати документа
ru.od.print.canPrintBeforeStartOrderDate Контроль печати Разрешает печатать версии документов, у которых ещё не наступила дата начала актуальности
ru.od.print.allow_print_archive_version Контроль печати Разрешает печать архивных версий
ru.od.email_notification.* Уведомление по электронной почте Включение отдельных видов почтовых уведомлений
ru.od.support.enable_support Приложение Доступность кнопки отправки обращения в техническую поддержку

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

8. Меры предосторожности

  • Перед изменением прочитайте описание свойства целиком в окне редактирования — формулировка в таблице обрезана.
  • Записывайте прежнее значение: система хранит только текущее, отката «на предыдущее» на экране нет.
  • Не меняйте свойства с ключами бизнес-процессов (*_process_id), адресами и ключами интеграций без согласования с администратором — неверное значение остановит соответствующий процесс.
  • Секретные свойства (пароли, ключи) вводите только по указанию администратора; их значения скрыты в интерфейсе.
  • После изменения проверьте работу затронутой функции: свойство применяется сразу, но открытые у пользователей экраны могут потребовать переоткрытия.

9. Что делать, если…

Ситуация Действие
Свойство не находится поиском Проверьте, не задано ли лишнее условие (описание, модуль); попробуйте искать по части имени латиницей
Поле «Текущее значение» недоступно Свойство задано на уровне сервера приложения — обратитесь к администратору (п. 4)
Значение изменили, но поведение системы не поменялось Переоткройте экран, на который влияет настройка; убедитесь, что менялось нужное свойство и значение сохранено (колонки «Когда обновлено» / «Кем обновлено»)
Нужно перенести настройки на другой стенд Выделите свойства и воспользуйтесь выгрузкой SQL-скрипта (п. 5)
Непонятно, кто изменил настройку Посмотрите колонки Когда обновлено и Кем обновлено

Журнал изменений сущностей (просмотр)

1. Назначение

Журнал изменений сущностей — системный журнал аудита. Он отвечает на вопрос «кто, когда и что именно изменил» в данных системы: в каком объекте, какой реквизит, какое значение было до изменения и какое стало после.

Журнал используется, чтобы:

  • разобраться, кто и когда изменил конкретную запись (документ, задачу, пользователя, справочник);
  • установить, кто удалил или восстановил объект;
  • посмотреть, какие действия выполнял конкретный пользователь за период;
  • предъявить подтверждение изменений при внутреннем или внешнем аудите.

Журнал доступен только для чтения: записи в нём нельзя изменить или удалить через интерфейс — этим и обеспечивается его доказательность.

2. Как открыть

Главное меню → Администрирование → Журнал изменений сущностей.

Экран состоит из двух вкладок:

Вкладка Доступ
Просмотр Рабочая вкладка — поиск и просмотр записей журнала. Описана в этой инструкции
Настройка Определяет, какие объекты и какие их реквизиты протоколируются. Изменяется только администратором системы. Если вкладка недоступна или закрыта для изменения — это штатное ограничение прав

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

3. Важно: при открытии журнал пуст

Сразу после открытия вкладки Просмотр таблица пустая и показывает «0 строк». Это нормально: журнал содержит большой объём данных, поэтому система ничего не загружает, пока не задан запрос.

Чтобы увидеть записи, нужно:

  1. заполнить хотя бы один фильтр;
  2. нажать Поиск.

4. Фильтры поиска

Фильтр Как работает
Пользователь Выбор из списка пользователей системы — показать действия конкретного сотрудника
Тип изменения Создание, Редактирование, Удаление, Восстановление
Сущность Тип объекта системы (документ, версия документа, задача, пользователь, справочник и т. д.)
Экземпляр сущности Конкретный объект. Поле становится доступным только после выбора сущности. Кнопка с многоточием открывает список объектов этого типа для выбора, крестик очищает поле
От / До Период: дата и время начала и окончания. По умолчанию подставляется интервал «вчера — завтра», то есть журнал сразу настроен на последние сутки
Поиск Выполнить запрос и загрузить записи
Очистить Сбросить все фильтры и очистить таблицу

Фильтры работают совместно: например, Пользователь + Тип изменения «Удаление» + период покажут всё, что этот сотрудник удалил за указанное время.

Поля От и До содержат отдельно дату и время — чтобы расширить поиск на несколько дней или месяцев, измените обе даты и при необходимости время (например, с 00:00 до 23:59).

5. Как читать результаты

5.1. Левая таблица — список изменений

Колонка Что показывает
Когда Дата и время изменения с точностью до секунды
Пользователь Кто выполнил изменение
Тип изменения Создание, Изменение, Удаление или Восстановление
Сущность Тип объекта
Id Внутренний идентификатор объекта (нужен при обращении в поддержку)
Имя экземпляра сущности Название объекта в понятном виде

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

5.2. Правая таблица — что именно изменилось

Выделите строку в левой таблице — справа появится расшифровка по реквизитам:

Колонка Что показывает
Атрибут Название изменённого реквизита
Новое значение Значение после изменения
Новый Id Идентификатор нового значения, если реквизит ссылается на другой объект
Старое значение Значение до изменения
Старый Id Идентификатор прежнего значения-ссылки

Для записей типа Создание заполнены только новые значения, для Удаления — сведения об удалённом объекте.

Текст в обеих таблицах можно выделить мышью и скопировать

5.3. Дополнительный фильтр

Свёрнутая строка «Фильтр: Стандартный» над таблицей позволяет дополнительно отобрать записи среди уже загруженных и сохранить часто используемые наборы условий. Для повседневной работы достаточно основных фильтров из п. 4.

6. Типовые сценарии

Кто и когда изменил конкретный объект

  1. Сущность — выберите тип объекта (например, версия документа).
  2. Экземпляр сущности — нажмите многоточие и выберите нужный объект.
  3. От / До — задайте период, в котором могло произойти изменение (при необходимости расширьте на несколько месяцев).
  4. Поиск.
  5. Просматривайте строки слева и расшифровку справа.

Что делал пользователь за период

  1. Пользователь — выберите сотрудника.
  2. От / До — задайте период.
  3. Поиск.

Кто удалил запись

  1. Тип изменения — Удаление.
  2. При необходимости укажите Сущность и период.
  3. Поиск — в колонке Пользователь будет видно, кто выполнил удаление.

Проверить, менялось ли что-то за сутки

Откройте вкладку Просмотр (период «вчера — завтра» уже подставлен), выберите Сущность и нажмите Поиск.

7. Ограничения, о которых нужно знать

  • В журнал попадают только те объекты и реквизиты, для которых включено протоколирование на вкладке «Настройка». Если нужного объекта нет в результатах — вероятно, протоколирование для него не включено.
  • Изменения, сделанные до включения протоколирования, в журнале отсутствуют — задним числом они не восстанавливаются.
  • Служебные реквизиты (внутренние отметки о создании и обновлении записи, версия, идентификатор) не протоколируются.
  • Журнал не заменяет историю согласования и утверждения документа — маршрут и подписи смотрите в карточке документа.
  • Записи журнала нельзя изменить или удалить из интерфейса.

8. Что делать, если…

Ситуация Действие
Таблица пустая, хотя изменения точно были Расширьте период (От / До), проверьте выбранную сущность; возможно, для этого объекта протоколирование не включено — уточните у администратора
Поле Экземпляр сущности недоступно Сначала выберите значение в поле Сущность
Найдено слишком много записей, поиск идёт долго Сузьте период и добавьте фильтры по пользователю и типу изменения
Нужно включить протоколирование нового объекта или реквизита Направьте запрос администратору системы или в техническую поддержку: вкладка «Настройка» доступна только им
Нужно передать сведения в поддержку Скопируйте из таблицы значения колонок Когда, Сущность, Id и Имя экземпляра сущности

Неудачные попытки входа

1. Назначение

Реестр «Неудачные попытки входа» фиксирует каждую неуспешную попытку входа в систему: какой логин был введён, по какой причине вход не состоялся, дата и время события.

Реестр используется, чтобы:

  • разобрать обращение пользователя «не могу войти в систему» и понять, в чём была причина;
  • выявить признаки подбора пароля (много неудачных попыток за короткое время);
  • контролировать попытки входа под учётными записями уволенных сотрудников;
  • предоставить сведения службе информационной безопасности и при аудите.

Реестр доступен только для чтения: записи создаёт сама система, вручную их изменить или добавить нельзя.

2. Как открыть

Главное меню → Администрирование → Неудачные попытки входа (пункт расположен в конце раздела).

3. Что попадает в реестр

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

Успешные входы в этот реестр не попадают — сведения о состоявшихся сеансах работы смотрите в разделе Администрирование → Журнал пользовательских сессий.

4. Колонки реестра

Колонка Что показывает
Логин Текст, который был введён в поле логина — именно в том виде, как его набрал человек. Поэтому в реестре встречаются и настоящие логины (admin), и ФИО или наименования («Пользователь обучения»), и случайный набор символов
Проблема Причина отказа, два возможных значения — см. п. 5
Дата и время события Когда произошла попытка

Щелчок по заголовку колонки сортирует список по этой колонке.

5. Как читать колонку «Проблема»

Значение Что означает Типичные причины
Неверный пароль Пользователь с таким логином в системе есть, но пароль не подошёл Забыт пароль, включён Caps Lock, не та раскладка клавиатуры, пароль изменён администратором, пользователь пытается войти старым паролем
Неверные учетные данные Пользователя с таким логином в системе нет Опечатка в логине; вместо логина введены ФИО, должность или адрес почты; учётная запись удалена; попытка входа под несуществующей учётной записью

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

  • «Неверный пароль» — проблема в пароле, нужен сброс пароля;
  • «Неверные учетные данные» — сотрудник вводит не тот логин; сообщите ему точный логин учётной записи.

6. Работа с реестром

6.1. Поиск

  • Добавить условие поиска — добавить в фильтр поле (логин, проблема, дата и время события).
  • Обновить (зелёная кнопка в блоке «Фильтр») — применить условия и перечитать данные.
  • Кнопка Обновить над таблицей — перечитать список без изменения условий.

6.2. Отображение

  • Показывать строк — количество записей на странице (по умолчанию 50).
  • Стрелки справа — переход к следующим страницам; рядом отображается счётчик найденных записей.

6.3. Выгрузка в Excel

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

7. Типовые сценарии

Разобрать обращение «не могу войти»

  1. Добавьте условие поиска по логину и укажите логин сотрудника (или его вариант с опечаткой).
  2. При необходимости задайте период по колонке даты и времени.
  3. Нажмите Обновить и посмотрите значения в колонке Проблема (п. 5).

Проверить признаки подбора пароля

  1. Задайте период (например, последние сутки) и нажмите Обновить.
  2. Отсортируйте список по дате и времени.
  3. Обратите внимание на:
    • серию попыток по одному логину с интервалом в секунды-минуты;
    • множество разных несуществующих логинов подряд;
    • попытки в нерабочее время.
  4. При подозрении на подбор выгрузите выборку в Excel и передайте службе информационной безопасности.

8. Ограничения, о которых нужно знать

  • В реестре только неудачные попытки; успешные входы — в журнале пользовательских сессий.
  • Пароли в реестре не сохраняются — фиксируется только введённый логин.
  • IP-адрес и наименование рабочей станции в этом реестре не фиксируются.
  • Реестр только регистрирует события и сам по себе не блокирует учётные записи.
  • Записи нельзя изменить или удалить через интерфейс — это обеспечивает их доказательность.

9. Что делать, если…

Ситуация Действие
Сотрудник не может войти, в реестре — «Неверный пароль» Сбросьте пароль учётной записи (раздел «Пользователи») или передайте заявку администратору
Сотрудник не может войти, в реестре — «Неверные учетные данные» Сообщите сотруднику точный логин: он вводит несуществующее имя учётной записи
Записей по сотруднику нет вообще Попытки входа до системы не доходили: проверьте адрес системы, доступность сети или ошибку на стороне рабочего места
Видны массовые попытки с незнакомыми логинами Выгрузите выборку в Excel и передайте службе информационной безопасности и администратору системы
Записей слишком много Сузьте период и добавьте условие по логину; увеличивать «Показывать строк» без фильтра не рекомендуется

Журнал пользовательских сессий

1. Назначение

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

Журнал используется, чтобы:

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

Записи создаёт сама система; изменять или удалять их через интерфейс нельзя.

2. Как открыть

Главное меню → Администрирование → Журнал пользовательских сессий.

3. Как формируются записи

  • При входе пользователя создаётся запись: заполняются ID сессии, пользователь, адрес, клиент, время в колонке Начата, последнее действие — Логин.
  • При завершении сеанса та же запись дополняется: заполняется колонка Завершена, а в колонке Последнее действие проставляется способ завершения

4. Колонки журнала

Колонка Что показывает
ID сессии Внутренний идентификатор сеанса. Позволяет собрать вместе все записи одного сеанса работы
Пользователь Учётная запись, под которой выполнен вход
От имени пользователя Заполняется только при замещении — сотрудник, от имени которого ведётся работа
Последнее действие Текущее состояние сеанса или способ его завершения (см. п. 5)
IP Адрес Адрес, с которого выполнен вход
Тип клиента Каким способом выполнен вход (например, Web — веб-интерфейс)
Сервер Узел приложения, обслуживавший сеанс
Начата Дата и время начала сеанса (или момента замещения)
Завершена Дата и время окончания. Пустое значение — сеанс ещё не завершён
Информация о клиенте Браузер и операционная система рабочего места; для записей о замещении — «Замещение пользователя …»

Щелчок по заголовку колонки сортирует список. По умолчанию записи отсортированы от новых к старым.

5. Значения колонки «Последнее действие»

Значение Что означает
Логин Вход выполнен. Если колонка Завершена пустая — сеанс активен в настоящий момент
Выход Пользователь сам вышел из системы
Истечение срока Сеанс завершён системой по неактивности. Этим же значением закрываются сеансы, прерванные перезапуском сервера
Прервана Сеанс принудительно завершён (например, администратором)
Подмена пользователя Запись о замещении: работа велась от имени другого сотрудника

6. Работа с журналом

6.1. Поиск

  • Добавить условие поиска — добавить поле для отбора: пользователь, от имени пользователя, последнее действие, IP-адрес, тип клиента, даты начала и окончания.
  • Обновить (зелёная кнопка в блоке «Фильтр») — применить условия и перечитать данные.

6.2. Отображение

  • Показывать строк — количество записей на странице.
  • Стрелки справа и счётчик — переход по страницам и общее количество найденных записей.
  • Текст в таблице можно выделить мышью и скопировать.

6.3. Выгрузка в Excel

Кнопка Excel выгружает текущую выборку в файл

7. Кнопка «Запретить журналирование» — будьте внимательны

Синяя кнопка слева переключает ведение журнала для всей системы:

  • надпись «Запретить журналирование» означает, что журнал сейчас ведётся; нажатие остановит запись новых сеансов (система запросит подтверждение);
  • после остановки надпись сменится на «Разрешить журналирование», а новые входы перестанут фиксироваться.
Внимание. Пока журналирование выключено, сведения о входах не сохраняются и восстановить их задним числом невозможно — образуется пробел в аудиторском следе. Не отключайте журналирование без согласования с администратором системы и ответственным за информационную безопасность. Ранее накопленные записи при этом не удаляются.

Настройка сохраняется в системе и действует после перезапуска приложения.

8. Типовые сценарии

Кто работал в системе в определённый момент

  1. Добавьте условия по колонкам Начата и Завершена, задав интересующий интервал.
  2. Нажмите Обновить.
  3. Обратите внимание на колонку От имени пользователя: если она заполнена, фактические действия выполнял пользователь из колонки Пользователь.

Посмотреть все сеансы сотрудника за период

  1. Добавьте условие по полю Пользователь и выберите сотрудника.
  2. Задайте период по колонке Начата.
  3. Обновить, при необходимости — Excel.

Какие сеансы активны сейчас

Добавьте условие Последнее действие = Логин и обновите список: записи с пустой колонкой Завершена соответствуют активным сеансам.

Проконтролировать замещения

Добавьте условие Последнее действие = Подмена пользователя (или условие «От имени пользователя заполнено») и задайте период. В колонке Информация о клиенте будет указано, кого замещали.

9. Ограничения, о которых нужно знать

  • Журнал показывает факты входа и выхода, но не содержит сведений о том, что именно пользователь делал с данными. Изменения данных смотрите в разделе Журнал изменений сущностей.
  • Неудачные попытки входа в этот журнал не попадают — они в реестре Неудачные попытки входа.
  • Записи ведутся только за период, когда журналирование было включено (п. 7).
  • IP-адрес соответствует адресу, с которого запрос пришёл на сервер. При работе через обратный прокси-сервер или на самом сервере приложения может отображаться служебный адрес, а не адрес рабочего места сотрудника.
  • Сеансы, прерванные перезапуском сервера, закрываются со значением Истечение срока, а время в колонке Завершена соответствует моменту обработки, а не реальному окончанию работы.

10. Что делать, если…

Ситуация Действие
Нужно подтвердить, кто выполнил действие в документе Сопоставьте время действия из Журнала изменений сущностей с сеансами в этом журнале; проверьте колонку От имени пользователя
Колонка Завершена пустая у старых записей Сеанс не был завершён штатно (обрыв связи, закрытие браузера) — он закроется по истечении срока или при следующем запуске сервера
Один ID сессии повторяется много раз Это нормально: каждая запись о замещении создаётся отдельной строкой с тем же идентификатором сеанса
Журнал перестал пополняться Проверьте надпись на кнопке слева: если она гласит «Разрешить журналирование», ведение журнала отключено — обратитесь к администратору
Нужны сведения о попытках входа с неверным паролем Откройте реестр Неудачные попытки входа
Нужно передать выборку аудитору Задайте условия, нажмите Обновить, затем Excel

Раздел BProc: Modeler, Process Definitions, User Tasks

1. Что такое BProc

BProc — встроенный движок бизнес-процессов. По схемам BPMN, опубликованным в этом разделе, работают маршруты системы: разработка и утверждение документов, регистрация и расследование отклонений, управление изменениями, планы действий и CAPA, обучение и экзамены, валидация.

Раздел служебный: он управляет тем, как движутся все заявки в системе. Обычная работа пользователей ведётся в разделе Задачи и в карточках объектов, а не здесь.

Раздел содержит три пункта:

Пункт меню Назначение
Process Definitions Реестр опубликованных схем процессов: просмотр, версии, приостановка, публикация новых
Modeler Графический редактор схем BPMN
User Tasks Все текущие задачи всех пользователей: поиск, переназначение исполнителя
Важно. Интерфейс движка частично на английском языке: названия экранов и кнопок — английские, названия процессов и колонок — русские. Это штатное поведение.

2. Process Definitions — реестр процессов

2.1. Что показывает

Таблица опубликованных схем:

Колонка Что показывает
Название Понятное имя процесса («Расследование отклонения», «Document development/Разработка документа»)
Ключ Технический идентификатор (deviation_investigation_process, process_document_development). Именно по ключу система запускает процесс
Версия Номер версии схемы. Например, версия 11 означает, что схема публиковалась 11 раз

2.2. Фильтр

  • Name contains — часть названия;
  • Key contains — часть ключа;
  • Last version only — включён по умолчанию, показывает только последние версии. Снимите флажок, чтобы увидеть все версии процесса;
  • Применить — выполнить отбор.

2.3. Кнопки

Кнопка Действие
Open in modeler Открыть схему выбранного процесса в редакторе (см. п. 3)
View details Карточка процесса: реквизиты, экземпляры, исходный BPMN XML
Start process Запустить процесс вручную — в рабочей системе не использовать, см. предупреждение ниже
Upload BPMN XML Загрузить файл схемы с диска и сразу опубликовать его

2.4. Карточка процесса (View details)

Вкладка General:

  • реквизиты: Название, Ключ, Идентификатор, Версия (можно переключаться между версиями), Идентификатор развёртывания, Описание;
  • список экземпляров процесса с колонками Идентификатор, Время начала, Бизнес-ключ, Приостановлен, и кнопкой просмотра экземпляра;
  • счётчики: сколько экземпляров работает на текущей версии и сколько — на всех версиях;
  • кнопки Suspend (приостановить), Activate (возобновить), Migrate all instances (перевести экземпляры на другую версию), Delete (удалить).

Вкладка BPMN XML — исходный текст схемы, только для чтения. Удобно скопировать и передать в поддержку.

Осторожно с кнопками карточки.
Suspend останавливает процесс: новые экземпляры не запускаются, и бизнес-действия, которые должны его стартовать (например, отправка документа на согласование), перестают работать.Delete удаляет определение процесса вместе с экземплярами, историей и заданиями — об этом прямо предупреждает диалог подтверждения. Действие необратимо.Migrate all instances переводит уже идущие заявки на другую версию схемы; при несовпадении этапов это приводит к потере маршрута.
Эти действия выполняйте только по согласованию с поставщиком системы.

2.5. Как работают версии

Повторная публикация схемы не перезаписывает существующую, а создаёт новую версию:

  • уже запущенные экземпляры продолжают идти по своей версии схемы;
  • новые экземпляры запускаются по последней версии.

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

2.6. Почему нельзя запускать процесс кнопкой Start process

Штатно система запускает процесс сама и передаёт в него бизнес-ключ (идентификатор документа, отклонения, плана действий) и переменные — сам объект и его описание. Запуск из этого экрана создаёт «пустой» экземпляр без объекта: задачи по нему повиснут в списке, формы могут открываться с ошибкой, а сам экземпляр придётся удалять силами поддержки.

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


3. Modeler — редактор схем

3.1. Как открыть

  • BProc → Modeler — открывается новая пустая схема (Process id = process, Name = Process);
  • Process Definitions → Open in modeler — открывается схема выбранного процесса.

3.2. Из чего состоит экран

  • слева — палитра элементов BPMN (события, задачи, шлюзы, подпроцессы, дорожки);
  • в центре — холст с диаграммой;
  • справа — панель свойств. Когда ничего не выделено, показываются свойства процесса: Process id, Name, Starter candidates (кто может запускать), Event listeners, Signal / Message definitions. При выделении элемента панель показывает свойства этого элемента — исполнителя задачи, кандидатов, форму, слушателей, условия переходов.

3.3. Кнопки над панелью свойств (слева направо)

Значок Действие
Облако со стрелкой Deploy process — опубликовать схему в систему
Папка Open draft — открыть ранее сохранённый черновик модели
Дискета Save draft — сохранить черновик в системе
Стрелка вверх Upload BPMN XML — загрузить схему из файла на диске
Стрелка вниз Download BPMN XML — скачать текущую схему файлом
Крестик Close modeler — закрыть редактор

Черновик (draft) — это сохранённая в системе незавершённая модель. Черновики не влияют на работу системы: процесс начинает действовать только после публикации.

3.4. Публикация (Deploy process)

При нажатии система спросит подтверждение:

  • если процесса с таким ключом ещё нет — «опубликовать новое определение процесса»;
  • если процесс с таким ключом уже существует — «опубликовать новую версию процесса».

После подтверждения новая версия сразу становится действующей для новых экземпляров.

Ключ процесса менять нельзя. Система запускает процессы по ключу, который прописан в её настройках (раздел Свойства приложения, свойства вида ru.od.document_process_id, ru.od.qe_registration_process_id и подобные). Если в модели изменить Process id, опубликуется «новый» процесс, а прежний перестанет обновляться — соответствующая функция системы просто перестанет запускаться.

3.5. Практические правила работы в редакторе

  1. Перед любой правкой скачайте текущую схему (Download BPMN XML) — это ваша точка отката.
  2. Изменения отрабатывайте на тестовом стенде, а в рабочую систему публикуйте проверенную схему.
  3. Не удаляйте и не переименовывайте элементы, у которых заданы слушатели, выражения или формы: в них зашита логика системы, и правка без разработчика ломает процесс.
  4. После публикации проверьте работу на одном тестовом объекте, прежде чем запускать поток заявок.

3.6. Панель свойств элемента (на примере пользовательской задачи)

Когда на схеме выделен элемент, правая панель показывает его свойства. Ниже — разбор полей для пользовательской задачи (User task): это основной тип элемента, в котором участвует человек. Примеры значений взяты из задачи «Разработка документа» процесса process_document_development.

General — общие

Поле Значение
Id Технический идентификатор элемента в схеме. На него ссылаются условия переходов и настройки системы. Менять нельзя — сломаются связи внутри схемы
Name Название этапа, которое пользователь видит в списке задач («Разработка документа»)
Due date Срок выполнения. Задаётся длительностью в формате ISO-8601: P10D — 10 дней с момента появления задачи (P3D — 3 дня, PT4H — 4 часа). Отображается в колонке Крайний срок

Assignee — кто выполняет задачу

Поле Значение
Assignee source Способ определения исполнителя: Expression (вычисляется выражением), Process variable (берётся из переменной процесса), User provider (определяется программным поставщиком пользователей)
Expression Само выражение, если выбран тип Expression. В примере ${makers_item.id} — исполнителем становится очередной пользователь из списка разработчиков (см. Multi instance)
Candidate groups Группы пользователей-кандидатов: задача видна всем участникам группы, пока кто-то не возьмёт её в работу. Источник задаётся в отдельном окне по кнопке справа (группы, поставщик групп или выражение)
Candidate users То же, но перечислением конкретных пользователей

Если заполнен Assignee, задача сразу закреплена за сотрудником. Если заполнены только кандидаты — задача «общая», и в реестре User Tasks она ищется по полям Candidate user / Candidate group.

Form — форма задачи

Поле Значение
Form type Чем открывается задача: CUBA screen — полноценный экран системы; Input dialog — простое диалоговое окно с полями; No form — форма не нужна; Custom — нестандартная реализация
Open mode Как открывается форма: New tab (новая вкладка), This tab (текущая вкладка), Dialog (модальное окно)
Screen id Идентификатор экрана системы, который открывается при выполнении задачи (в примере — экран задачи на разработку документа). Связан с кодом системы, произвольное значение вписывать нельзя
Form params Параметры, передаваемые в форму: Name — имя параметра, Value — значение, Value source — источник (Direct value — значение задано прямо, Process variable — берётся из переменной процесса)

Outcomes — результаты выполнения

Список кнопок-исходов, которыми пользователь завершает задачу: Id — код исхода, Icon — значок.

В примере заданы approve, reject, correct — «согласовать», «отклонить», «отправить на корректировку». Эти коды используются в условиях переходов после задачи: шлюз на схеме проверяет, какой исход выбрал пользователь, и направляет процесс по нужной ветке. Переименование или удаление исхода рвёт маршрут — переход перестанет срабатывать.

Output variables — выходные переменные

Переменные, которые задача возвращает в процесс: Name — имя переменной, Outcome — при каком исходе она заполняется, Type — тип значения. Заполняется, когда форма должна передать данные дальше по процессу.

Multi instance — размножение задачи

Определяет, создаётся одна задача или несколько однотипных.

Поле Значение
Multi instance type None — одна задача; Parallel — задачи создаются всем сразу (параллельно); Sequential — по очереди, одна за другой
Collection source Откуда берётся список, по которому размножается задача: Process variable, Expression или Users provider
Process variable Имя переменной со списком. В примере makers — список разработчиков, указанных в задаче на разработку документа
Element variable Имя переменной для текущего элемента списка. В примере makers_item; именно к ней обращается выражение исполнителя ${makers_item.id}
Completion condition Условие досрочного завершения, когда ждать всех не нужно. Например, ${nrOfCompletedInstances/nrOfInstances >= 0.6} — достаточно 60 % выполненных
Cardinality Фиксированное количество экземпляров, если задача размножается не по списку, а по числу

Связка из примера читается так: «создать параллельно по одной задаче на каждого разработчика из списка makers, исполнителем каждой назначить самого разработчика, дать 10 дней».

Task listeners — обработчики событий задачи

Программный код, который выполняется в определённый момент жизни задачи: Event — событие (create — создание, assignment — назначение исполнителя, complete — завершение, delete — удаление), Implementation — что выполняется (Java-класс, выражение или делегат). Здесь реализована логика системы: смена статусов, уведомления, проверки.

Execution listeners — обработчики хода выполнения

То же, но для событий потока: start — вход в элемент, end — выход из него, take — прохождение перехода.

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

Extension properties — дополнительные свойства

Произвольные пары Name / Value, которые читает код системы (например, признаки поведения этапа). Значения осмысленны только вместе с обрабатывающим их кодом.

Other → Documentation

Текстовое описание этапа. В системе оно показывается пользователю как пояснение к заданию — в примере: «Вам необходимо разработать проект документа, проверить правильность заполнения согласующих лиц и утверждающего (при необходимости изменить). Завершите задание нажав кнопку Завершить».

Это единственное поле панели, которое можно безопасно править силами заказчика: изменение текста подсказки не влияет на маршрут. После правки не забудьте опубликовать схему (Deploy process) — изменение вступит в силу для новых экземпляров процесса.

Свойства других элементов

У остальных типов элементов набор полей отличается, но логика та же:

  • Процесс (щелчок по пустому месту холста) — Process id, Name, Starter candidates (кто вправе запускать), Event listeners, Signal / Message definitions;
  • Переход (стрелка) — Id, Name, Condition expression: условие, при котором процесс идёт по этой ветке (часто — проверка исхода предыдущей задачи);
  • Служебная задача (Service task) — Java-класс или выражение, которое выполняет система без участия человека (в вашей схеме это шаги вида «Установка состояния…», «Перевод в состояние…»);
  • Таймер — Date / Duration / Cycle: момент, задержка или периодичность срабатывания;
  • Подпроцесс и Call activity — ключ вызываемого процесса и правила передачи переменных.

4. User Tasks — все задачи пользователей

4.1. Что показывает

Экран показывает задачи всех пользователей, а не только ваши (личные задачи — в разделе Задачи). Используется, чтобы найти «зависшую» задачу и передать её другому исполнителю.

4.2. Таблица пустая при открытии — это нормально

Список формируется по запросу. Задайте условия в фильтре (или оставьте их пустыми, чтобы получить все задачи) и нажмите Применить.

4.3. Фильтр

Поле Назначение
Process definition Процесс, к которому относится задача (список последних версий, в скобках указан ключ)
Assignee Текущий исполнитель задачи
Candidate user Пользователь-кандидат: задача ему доступна, но ещё не взята в работу
Candidate group Группа пользователей-кандидатов

4.4. Колонки

Колонка Что показывает
Task name Название этапа («Согласование документа», «Оценка изменения»)
Process definition name Процесс, в рамках которого возникла задача
Process definition version Версия схемы, по которой идёт экземпляр
Время создания Когда задача появилась
Время окончания Когда завершена (у активных задач пусто)
Исполнитель Кто должен выполнить задачу
Крайний срок Срок выполнения, если он задан в схеме
Идентификатор Технический идентификатор задачи — пригодится при обращении в поддержку

Задачи отсортированы по времени создания, новые сверху.

4.5. Кнопки

  • Reassign task — открывает окно Task reassignment: выберите нового исполнителя и подтвердите. Задача уйдёт из списка прежнего сотрудника и появится у нового.
  • Open process instance — открывает экземпляр процесса, в котором находится задача: переменные, история прохождения, текущее состояние. Это главный инструмент, чтобы понять, «где стоит» документ или отклонение.

4.6. Типовые сценарии

Задача «зависла» на отсутствующем сотруднике (отпуск, увольнение):

  1. Отфильтруйте по Assignee — выберите этого сотрудника, нажмите Применить.
  2. Выделите задачу → Reassign task → укажите нового исполнителя.

Выяснить, на ком остановился документ:

  1. Отфильтруйте по Process definition (например, «Document development/Разработка документа»).
  2. Найдите задачу по названию этапа и посмотрите колонку Исполнитель.

Разобраться в состоянии заявки: выделите задачу → Open process instance → изучите историю и переменные экземпляра.

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

5. Ограничения и меры предосторожности

  • Все действия раздела выполняются в обход бизнес-логики системы: движок не проверяет права на документ, статусы и маршруты согласования.
  • Доступ к разделу выдавайте ограниченному кругу сотрудников (администратор системы, ответственный за процессы).
  • Публикация, приостановка, удаление процессов и переназначение задач затрагивают работу всех пользователей — выполняйте их в согласованное время и с уведомлением заинтересованных.
  • Перед обращением в поддержку соберите: ключ и версию процесса, идентификатор задачи или экземпляра, время события.
odg_assist_5.0/администрирование_odg.txt · Последнее изменение: 2026/09/14 14:12 — sofia

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: GNU Free Documentation License 1.3
GNU Free Documentation License 1.3 Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki