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

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


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

Различия

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

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
odg_assist_5.0:администрирование_odg [2026/09/14 08:19] – [9. Что делать, если…] sofiaodg_assist_5.0:администрирование_odg [2026/10/05 13:50] (текущий) – [Отправка оповещений о новых задачах.] denis
Строка 1: Строка 1:
-====== Функциональные характеристики ПО “OdgAssist” ====== 
  
-**Общая информация** 
  
-Программное обеспечение OdgAssist (EQMS) предназначено для автоматизации и управления документацией в области качества.  Под документацией понимаются: 
  
-  * бумажные документы – заполняемые формы, бумажные журналы;  
-  * электронные текстовые документы – инструкции, процедуры и т.д;  
-  * электронные документы с функцией контроля – отклонения, изменения, CAPA и т.д.  
-  * 
  
-Основная задача, которую решает odgAssist: контроль за правильной реализацией всех процессов, обеспечение актуальности информации и контроль за исполнением. 
  
-**Минимальный системные требования для программного комплекса odgAssist**+====== Настройка приложения ======
  
-**Требования к аппаратному обеспечению сервера:**+Перейдите по ссылке: \\
  
-| **Параметры сервера/количество пользователей** | **50-100** | **100 -200** | **250-350** | **500** | +<code -> 
-| **Количество потоков** |  4  |  8  |  12  |  16  | +http://ip_адрес_сервера:9090/app  
-| **Тактовая частота процессора ( ГГц)** | От 2,2 | От 2,1 | От 2,4 | От 2,6 | +</code>
-| **Платформа** | 64x разрядная  | 64x разрядная  | 64x разрядная  | 64x разрядная  | +
-| **Оперативная память (ГБ)** | 12 | 16 | 24 | 32 | +
-| **Дисковое пространство** | 250Гб | 500Гб | 1Тб | 1Тб |+
  
-Рекомендовано использование RAID для обеспечения резервирования и повышения производительности базы данных.+Отобразится форма авторизации:
  
-**Требования к программному обеспечению сервера:**+{{:odg_assist_5.0:pasted:20230302-143823.png?400}}
  
-  * Операционная система: Linux Ubuntu  18.04 | 20.04 | 22.04 | 24.04 +Войдите в систему. Логин admin, пароль: admin.
-  * Сервер базы данных: Postgresql 10 + +
-  * Виртуальная машина: Open JDK 8 + +
-  * WEB сервер: Nginx 1.14.0  + +
-  * Менеджер управления процессами: SuperVisor +
-  * Интерпретатор языка Python: Python 2.7.15++
  
-**Минимальные требования к программно-аппаратному обеспечению рабочей станции пользователя:**+Для работы приложения требуется добавить лицензионный ключ. \\  Нажмите пункт меню "Администрирование", подпункт "Свойства приложения". \\  В фильтре поиска вставьте имя ru.licen.
  
-  * Процессор: 2ГГц +{{:odg_assist_5.0:pasted:20230302-132816.png?800}}
-  * Оперативная память 4ГБ +
-  * Жесткий диск (SATA): 50Гб +
-  * Операционная система: Windows 8/10 +
-  * Браузер: Google Chrome 87.0.4280.141 + +
-  * Microsoft Office: Word, Excell  2010 ++
  
-+  допустима версия ПО выше указанной+Щелкните дважды по записи и введите ключ в открывшуюся форму:
  
-Для обслуживания сервера сотрудниками исполнителя к нему необходим прямой доступ по ssh.  Сервер должен иметь доступ в интернет.+<code -> 
 +KEN9fFDUMzufuFgpI2EzCCyHkjdwT93wMC1LXu7MYRAX5JeyZL6J08fNXVtLdM+pqefODyp5tO7wYo40oI7Ovp9cZ8IAOSbXquJl0QNV5XphS0F1IaFNV/8NFBpK9xOAW/Aye04okELab+cqZXP7Gkrc3wiCQ7NnlOtx6tIDiYU= 
 +</code>
  
-====== Установка odgassist 5.0 ======+{{:odg_assist_5.0:pasted:20230302-133531.png?400}}
  
-Установить приложение можно вручную или автоматически. +Добавить ключ, кол-во конкурентных пользователей: \\
- +
-===== Ручная установка приложения: =====+
  
-Для работы приложения odgassist необходимы следующие программы: \\+{{:odg_assist_5.0:pasted:20230616-165026.png?800}}
  
-  * Postgres 12 и выше  +<code -> 
-  * Nginx  +B8yA7lLZQCcmg9dhqChbKM6LDlzzEuZQ/yVhARRXtyIRJG6WAWULfOCFjbzKRi5Vf4Fm1qR/46+shOw1F8UPJ8cGbwlj/dA6AHzD1+9yHnWlMIuUgBj+7MYuMZcNegCK4tdvto7WC54yiwnPhGlP574Le9joq10mSZifo/kbOII=
-  * Supervisor  +
-  * Open jdk 8  +
-  * LibreOffice +
- +
-== Команды для установки требуемого программного обеспечения == +
- +
-Обновить и установить пакеты программного обеспечения: \\ +
- +
-<code bash> +
-sudo apt-get update &&  sudo apt-get -y upgrade;+
 </code> </code>
  
-Установить openjdk: \\+После добавления ключа необходимо перезапустить приложение через терминал сервера: \\  ''sudo supervisorctl restart cuba''
  
-<code bash> +Ознакомится с интерфейсом приложения можно перейдя по ссылке: [[https://wiki.odgassist.ru/doku.php/odg_assist_5.0:%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0#%D0%BF%D1%83%D0%BD%D0%BA%D1%82_%D0%BC%D0%B5%D0%BD%D1%8E_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5|Описание приложения.]]
-sudo apt-get -y install openjdk-8-jdk; +
-</code>+
  
-Скачать и установить Postgres :\\+Ссылка на скачивание приложения и необходимых файлов: \\
  
-<code bash> +{{:odg_assist_5.0:app.jar|odg5}} \\
-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; +
-</code>+
  
-Добавить базу данных для odgassist: \\+{{:odg_assist_5.0:nofileonserver.docx|empty file}} \\
  
-<code sql> +{{ :odg_assist_5.0:cubaodg1.zip }}
-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'"; +
-</code>+
  
-Установить nginx: \\+{{ :odg_assist_5.0:install.sh.gz }}
  
-<code bash> +=== Настройка после установки ===
- apt-get -y install nginx;  +
-</code>+
  
-Установить supervisor: \\ 
  
-<code bash> 
-sudo apt-get -y install supervisor; 
-</code> 
  
-Установить LibreOffice: \\+После установки проверить время сохраняемых и изменяемых сущностей. Например добавить папку и проверить время ее создания или изменения.
  
-<code bash> +==== Назначенные задания ====
- apt-get install libreoffice  +
-</code>+
  
-Добавьте пользователя runner: \\+Пункт меню "Администрирование", подпункт "Назначенные задания". \\  Подпункт меню позволяет настраивать автоматическое выполнение рутинных задач. \\  Например обработка документов, рассылка оповещений пользователям и т.д.
  
-<code -> +//**Отправка оповещений о новых задачах.**//
-sudo useradd -m -p $(openssl rand -base64 12) runner  +
-</code>+
  
-Добавьте необходимые директории для работы приложения odgassist: \\+<color brown> Описание: </color> \\  После активации каждой задачи на нее назначается исполнитель. Исполнитель добавляется в список для рассылки оповещений о новых задачах. Рассылка осуществляется всем пользователям из списка каждые 60 секунд.
  
-<code bash> +<color brown>Настройка: </color> \\
-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; +
-</code>+
  
-Скачайте необходимые файлы для работы приложения odgassist: \\+Нажмите пункт меню "Администрирование", подпункт "Назначенные задания". Заполните поля формы: \\  Defined By: ''Bean'' \\  Bean Name: ''cuba_Emailer'' \\  Method Nmae: ''processQueuedEmails()'' \\  Sheduling Type: ''Period'' \\  Cron Expression: ''60'' \\  Singleton: ''V''
  
-<code bash> +{{:odg_assist_5.0:pasted:20230419-141932.png?800}}
-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; +
-</code>+
  
-Добавьте в конфигурацию supervisor  файл /etc/supervisor/conf.d/cubaodg.conf:+Пример содержимого письма: \\  {{:odg_assist_5.0:pasted:20230419-142535.png?800}}
  
-<code bash> +//**Отправка оповещений назначенным по задачам**//
-[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 +
-</code>+
  
-Обновите конфигурацию supervisor: \\+<color brown> Описание: </color> \\  Если у пользователя нет просроченных задач, то ему отправляется весь список задач каждый понедельник. \\  Если есть просроченные задачи или задачи близкие к крайнему сроку, то оповещения отправляются каждое утро в 9:00.
  
-<code bash> +<color brown>Настройка: </color> \\  Нажмите пункт меню "Администрирование", подпункт "Назначенные задания". Заполните поля формы: \\  Defined By: ''Bean'' \\  Bean Name: ''odgassist5_TasksReportService'' \\  Method Nmae: ''sendTaskStatesToAllUsers'' \\  Sheduling Type: ''Cron'' \\  Cron Expression: ''0 0 9  * * *''
-sudo supervisorctl reread && sudo supervisorctl update; +
-sudo supervisorctl status; +
-</code>+
  
-Статус приложения cuba должно быть RUNNING \\+{{:odg_assist_5.0:pasted:20230419-134029.png?800}}
  
-После запуска приложения подождите 5 минут пока производится настройка базы данных. Затем переходите к следующему  [[https://wiki.odgassist.ru/doku.php/odg_assist_5.0:%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_odg#%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F|этапу]]. \\+Пример содержимого письма: \\
  
-===== Установка в автоматическом режиме. =====+{{:odg_assist_5.0:pasted:20230417-133423.png?800| отображение письма оповещения}}
  
- \\  Будут установлены следующие пакеты: \\  -Postgres 12 -Nginx -Supervisor -Open jdk 8+**Отправка оповещений по действиям**
  
-Скачайте файл автоматической установки через терминал сервера:+<color brown> Описание: </color> \\  В список на отправку попадают отчеты:
  
-<code -> +  * крайний срок выполнения сегодня 
- wget https://wiki.odgassist.ru/lib/exe/fetch.php/odg_assist_5.0:install.sh.gz  +  * крайний срок выполнения наступит через ''ru.od.notify_before_days'' 
-</code>+  * просроченные действия
  
- \\+''ru.od.notify_before_days'' - параметр, который хранит количество дней. (Уведомить за n дней). \\  Настройка производится через пункт меню "Администрирование", подпункт "Свойства приложения". \\  В поле "Поиск по имени свойства" ввести:  ''ru.od.notify_before_days'' \\
  
-или по ссылке: {{ :odg_assist_5.0:install.sh.gz }}+{{:odg_assist_5.0:pasted:20230419-140759.png?800}}
  
-Разархивируйте документ и запустите его в терминале сервера Ubuntu: \\+<color brown>Настройка: </color> \\  Нажмите пункт меню "Администрирование", подпункт "Назначенные задания". Заполните поля формы: \\  Bean Name: ''odgassist5_TaskReportService'' \\  Method Nmae: ''notifyUserAboutOverdueActions''
  
-''gunzip odg_assist_5.0\:install.sh.gz;'' \\  ''chmod +x odg_assist_5.0\:install.sh;'' \\  ''sudo ./odg_assist_5.0\:install.sh;'' \\+{{:odg_assist_5.0:pasted:20230419-113823.png?800}}
  
-После выполнения скрипта подождите 5 минут пока производится настройка базы данных. \\  Затем переходите к следующему этапу.+**Описание полей формы настройки "Назначенное задание":**
  
-====== Настройка приложения ====== +  * 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-выражения, представляющего собой последовательность из шести полей, разделенных пробелами:  
 +    * секунда, минута, час, день, месяц, день недели. Месяц и день недели могут быть представлены первыми тремя буквами английского названия. Примеры выражений:
  
 <code -> <code ->
-http://ip_адрес_сервера:9090/app +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 ? - каждое Рождество в полночь.
 </code> </code>
  
-Отобразится форма авторизации:+  * Period - с помощью интервала между выполнениями. 
 +  * Fixed Delay - задача будет запускаться с указанной в Period задержкой после окончания предыдущего выполнения. 
 +  * Period - период или задержка запуска задания в секундах если Scheduling type установлен в Period или Fixed Delay. 
 +  * Start date - дата/время первого запуска для Scheduling type = Period. Если не установлено, то задание запускается сразу при старте сервера. Если установлено, то задание запускается в момент startDate + period * N, где N - целое число.
  
-{{:odg_assist_5.0:pasted:20230302-143823.png}}+Start date имеет смысл указывать только для "нечастых" заданий - раз в 1 час, 1 сутки и т.п.
  
-Войдите в систему. Логин admin, пароль: admin.+  * Timeout - время в секундах, по истечении которого считается, что задание закончило выполнение, независимо от того, есть ли информация о завершении задания, или нет. Если timeout не задан явно, он принимается равным 3 часам.
  
-Для работы приложения требуется добавить лицензионный ключ. \\  Нажмите пункт меню "Администрирование", подпункт "Свойства приложения". \\  В фильтре поиска вставьте имя ru.licen.+Для Singleton-задач в кластерном деплойменте рекомендуется всегда устанавливать таймаут в реалистичное значение. Если останавливается узел кластера, выполняющий задачу, то при стандартном значении другие узлы кластера будут ждать 3 часа перед тем, как запустить задачу снова.
  
-{{:odg_assist_5.0:pasted:20230302-132816.png}}+  * Time frame - в случае заданного Start date или Cron expression определяет временное окно в секундах, в течение которого будет запущено задание, если время startDate + period * N прошло. Если Time frame не задано явно, оно принимается равным period / 2.
  
-Щелкните дважды по записи и введите ключ в открывшуюся форму:+Если Start date не указано, то Time frame не принимается во внимание, т.е. задание будет запущено в любое время после прохождения промежутка времени Period после предыдущего выполнения задания.
  
-<code -> +  * Start delay - задержка выполнения в секундах после запуска сервера и активации выполнения задач. Используйте данный параметр для тяжелых задач, если вы считаете что они тормозят запуск сервера. 
-KEN9fFDUMzufuFgpI2EzCCyHkjdwT93wMC1LXu7MYRAX5JeyZL6J08fNXVtLdM+pqefODyp5tO7wYo40oI7Ovp9cZ8IAOSbXquJl0QNV5XphS0F1IaFNV/8NFBpK9xOAW/Aye04okELab+cqZXP7Gkrc3wiCQ7NnlOtx6tIDiYU= +  * Permitted servers - список перечисленных через запятую идентификаторов серверов, на которых возможен запуск данного задания. Если список не задан, то задание может выполняться на любом сервере.
-</code>+
  
-{{:odg_assist_5.0:pasted:20230302-133531.png}}+Для синглтон-заданий порядок перечисления серверов указывает их приоритет - первый имеет больший приоритет чем последний. Сервер с большим приоритетом перехватит выполнение синглтона следующим образом: если сервер с большим приоритетом обнаруживает, что предыдущий раз задание было выполнено сервером с меньшим приоритетом, то он запускает задание независимо от того, пройден ли Period или нет. Приоритет серверов работает только в случае Scheduling type равного Period и  не указанного атрибута Start date. В противном случае, старт происходит в  одно и то же время, и перехват невозможен.
  
-Добавить ключ, кол-во конкурентных пользователей: \\+  * Log start - признак регистрации факта запуска задания в таблице SYS_SCHEDULED_EXECUTION, соответствующей сущности ScheduledExecution.
  
-{{:odg_assist_5.0:pasted:20230616-165026.png}}+Если задание является синглтоном, то в текущей реализации регистрация факта запуска производится в любом случае, независимо от данного признака.
  
-<code -> +  * Log finish - признак регистрации факта завершения задания в таблице SYS_SCHEDULED_EXECUTION, соответствующей сущности ScheduledExecution.
-B8yA7lLZQCcmg9dhqChbKM6LDlzzEuZQ/yVhARRXtyIRJG6WAWULfOCFjbzKRi5Vf4Fm1qR/46+shOw1F8UPJ8cGbwlj/dA6AHzD1+9yHnWlMIuUgBj+7MYuMZcNegCK4tdvto7WC54yiwnPhGlP574Le9joq10mSZifo/kbOII= +
-</code>+
  
-После добавления ключа необходимо перезапустить приложение через терминал сервера: \\  ''sudo supervisorctl restart cuba''+Если задание является синглтоном, то в текущей реализации регистрация факта завершения производится в любом случае, независимо от данного признака.
  
-Ознакомится с интерфейсом приложения можно перейдя по ссылке: [[https://wiki.odgassist.ru/doku.php/odg_assist_5.0:%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0#%D0%BF%D1%83%D0%BD%D0%BA%D1%82_%D0%BC%D0%B5%D0%BD%D1%8E_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5|Описание приложения.]]+  * Description - произвольное текстовое описание задания.
  
-Ссылка на скачивание приложения и необходимых файлов: \\+Задание также имеет признак активности, который устанавливается в экране списка заданий. Неактивные задания не запускаются.
  
-{{:odg_assist_5.0:app.jar|odg5}} \\ 
  
-{{:odg_assist_5.0:nofileonserver.docx|empty file}} \\ 
- 
-{{ :odg_assist_5.0:cubaodg1.zip }} 
- 
-{{ :odg_assist_5.0:install.sh.gz }} 
  
 ===== Добавление ролей ===== ===== Добавление ролей =====
  
----- 
  
 В приложении доступны два типа ролей: \\  1. **Системные роли** В приложении доступны два типа ролей: \\  1. **Системные роли**
Строка 694: Строка 628:
 Нажмите пункт меню "Администрирование", подпункт "Назначенные задания". Заполните поля формы: \\  Defined By: ''Bean'' \\  Bean Name: ''cuba_Emailer'' \\  Method Nmae: ''processQueuedEmails()'' \\  Sheduling Type: ''Period'' \\  Cron Expression: ''60'' \\  Singleton: ''V'' Нажмите пункт меню "Администрирование", подпункт "Назначенные задания". Заполните поля формы: \\  Defined By: ''Bean'' \\  Bean Name: ''cuba_Emailer'' \\  Method Nmae: ''processQueuedEmails()'' \\  Sheduling Type: ''Period'' \\  Cron Expression: ''60'' \\  Singleton: ''V''
  
-{{:odg_assist_5.0:pasted:20230419-141932.png}}+{{:odg_assist_5.0:pasted:20230419-141932.png?800}}
  
 Пример содержимого письма: \\  {{:odg_assist_5.0:pasted:20230419-142535.png}} Пример содержимого письма: \\  {{:odg_assist_5.0:pasted:20230419-142535.png}}
Строка 1462: Строка 1396:
 | Нужно включить протоколирование нового объекта или реквизита | Направьте запрос администратору системы или в техническую поддержку: вкладка «Настройка» доступна только им | | Нужно включить протоколирование нового объекта или реквизита | Направьте запрос администратору системы или в техническую поддержку: вкладка «Настройка» доступна только им |
 | Нужно передать сведения в поддержку | Скопируйте из таблицы значения колонок **Когда**, **Сущность**, **Id** и **Имя экземпляра сущности** | | Нужно передать сведения в поддержку | Скопируйте из таблицы значения колонок **Когда**, **Сущность**, **Id** и **Имя экземпляра сущности** |
 +
 +====== Неудачные попытки входа ======
 +
 +===== 1. Назначение =====
 +
 +Реестр **«Неудачные попытки входа»** фиксирует каждую неуспешную попытку входа в систему: какой логин был введён, по какой причине вход не состоялся, дата и время события.
 +
 +Реестр используется, чтобы:
 +
 +  * разобрать обращение пользователя «не могу войти в систему» и понять, в чём была причина;
 +  * выявить признаки подбора пароля (много неудачных попыток за короткое время);
 +  * контролировать попытки входа под учётными записями уволенных сотрудников;
 +  * предоставить сведения службе информационной безопасности и при аудите.
 +
 +Реестр доступен **только для чтения**: записи создаёт сама система, вручную их изменить или добавить нельзя.
 +
 +===== 2. Как открыть =====
 +
 +Главное меню → **Администрирование** → **Неудачные попытки входа** (пункт расположен в конце раздела).
 +
 +===== 3. Что попадает в реестр =====
 +
 +Запись создаётся автоматически при **каждой неуспешной** попытке аутентификации — как в веб-интерфейсе, так и при подключении внешних клиентов.
 +
 +Успешные входы в этот реестр **не попадают** — сведения о состоявшихся сеансах работы смотрите в разделе **Администрирование → Журнал пользовательских сессий**.
 +
 +===== 4. Колонки реестра =====
 +
 +^ **Колонка** ^ **Что показывает** ^
 +| **Логин** | Текст, который был введён в поле логина — именно в том виде, как его набрал человек. Поэтому в реестре встречаются и настоящие логины (''admin''), и ФИО или наименования («Пользователь обучения»), и случайный набор символов |
 +| **Проблема** | Причина отказа, два возможных значения — см. п. 5 |
 +| **Дата и время события** | Когда произошла попытка |
 +
 +Щелчок по заголовку колонки сортирует список по этой колонке.
 +
 +===== 5. Как читать колонку «Проблема» =====
 +
 +^ **Значение** ^ **Что означает** ^ **Типичные причины** ^
 +| **Неверный пароль** | Пользователь с таким логином в системе **есть**, но пароль не подошёл | Забыт пароль, включён Caps Lock, не та раскладка клавиатуры, пароль изменён администратором, пользователь пытается войти старым паролем |
 +| **Неверные учетные данные** | Пользователя с таким логином в системе **нет** | Опечатка в логине; вместо логина введены ФИО, должность или адрес почты; учётная запись удалена; попытка входа под несуществующей учётной записью |
 +
 +Практический вывод: если сотрудник жалуется на невозможность входа, посмотрите его последние записи:
 +
 +  * «Неверный пароль» — проблема в пароле, нужен сброс пароля;
 +  * «Неверные учетные данные» — сотрудник вводит не тот логин; сообщите ему точный логин учётной записи.
 +
 +===== 6. Работа с реестром =====
 +
 +==== 6.1. Поиск ====
 +
 +  * **Добавить условие поиска** — добавить в фильтр поле (логин, проблема, дата и время события).
 +  * **Обновить** (зелёная кнопка в блоке «Фильтр») — применить условия и перечитать данные.
 +  * Кнопка **Обновить** над таблицей — перечитать список без изменения условий.
 +
 +==== 6.2. Отображение ====
 +
 +  * **Показывать строк** — количество записей на странице (по умолчанию 50).
 +  * Стрелки справа — переход к следующим страницам; рядом отображается счётчик найденных записей.
 +
 +==== 6.3. Выгрузка в Excel ====
 +
 +Кнопка **Excel** выгружает содержимое таблицы в файл для отчёта или дальнейшего анализа. Выгружаются колонки в том виде, как они отображаются на экране, с учётом применённого фильтра.
 +
 +===== 7. Типовые сценарии =====
 +
 +==== Разобрать обращение «не могу войти» ====
 +
 +  - Добавьте условие поиска по логину и укажите логин сотрудника (или его вариант с опечаткой).
 +  - При необходимости задайте период по колонке даты и времени.
 +  - Нажмите **Обновить** и посмотрите значения в колонке **Проблема** (п. 5).
 +
 +==== Проверить признаки подбора пароля ====
 +
 +  - Задайте период (например, последние сутки) и нажмите **Обновить**.
 +  - Отсортируйте список по дате и времени.
 +  - Обратите внимание на:
 +    * серию попыток по одному логину с интервалом в секунды-минуты;
 +    * множество разных несуществующих логинов подряд;
 +    * попытки в нерабочее время.
 +  - При подозрении на подбор выгрузите выборку в **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. Типовые сценарии =====
 +
 +==== Кто работал в системе в определённый момент ====
 +
 +  - Добавьте условия по колонкам **Начата** и **Завершена**, задав интересующий интервал.
 +  - Нажмите **Обновить**.
 +  - Обратите внимание на колонку **От имени пользователя**: если она заполнена, фактические действия выполнял пользователь из колонки **Пользователь**.
 +
 +==== Посмотреть все сеансы сотрудника за период ====
 +
 +  - Добавьте условие по полю **Пользователь** и выберите сотрудника.
 +  - Задайте период по колонке **Начата**.
 +  - **Обновить**, при необходимости — **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. Практические правила работы в редакторе ====
 +
 +  - Перед любой правкой скачайте текущую схему (**Download BPMN XML**) — это ваша точка отката.
 +  - Изменения отрабатывайте на тестовом стенде, а в рабочую систему публикуйте проверенную схему.
 +  - Не удаляйте и не переименовывайте элементы, у которых заданы слушатели, выражения или формы: в них зашита логика системы, и правка без разработчика ломает процесс.
 +  - После публикации проверьте работу на одном тестовом объекте, прежде чем запускать поток заявок.
 +
 +==== 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. Типовые сценарии ====
 +
 +**Задача «зависла» на отсутствующем сотруднике** (отпуск, увольнение):
 +
 +  - Отфильтруйте по **Assignee** — выберите этого сотрудника, нажмите **Применить**.
 +  - Выделите задачу → **Reassign task** → укажите нового исполнителя.
 +
 +**Выяснить, на ком остановился документ:**
 +
 +  - Отфильтруйте по **Process definition** (например, «Document development/Разработка документа»).
 +  - Найдите задачу по названию этапа и посмотрите колонку **Исполнитель**.
 +
 +**Разобраться в состоянии заявки:** выделите задачу → **Open process instance** → изучите историю и переменные экземпляра.
 +
 +>**Переназначение — учётное действие.** После него задачу выполняет и подписывает другой сотрудник. Согласуйте замену с владельцем процесса и зафиксируйте основание в соответствии с вашими процедурами.
 +
 +----
 +
 +===== 5. Ограничения и меры предосторожности =====
 +
 +  * Все действия раздела выполняются **в обход бизнес-логики** системы: движок не проверяет права на документ, статусы и маршруты согласования.
 +  * Доступ к разделу выдавайте ограниченному кругу сотрудников (администратор системы, ответственный за процессы).
 +  * Публикация, приостановка, удаление процессов и переназначение задач затрагивают работу всех пользователей — выполняйте их в согласованное время и с уведомлением заинтересованных.
 +  * Перед обращением в поддержку соберите: ключ и версию процесса, идентификатор задачи или экземпляра, время события.
  
  
odg_assist_5.0/администрирование_odg.1789373942.txt.gz · Последнее изменение: — sofia

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