| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
| odg_assist_5.0:администрирование_odg [2026/09/14 13:52] – [10. Что делать, если…] sofia | odg_assist_5.0:администрирование_odg [2026/10/05 13:50] (текущий) – [Отправка оповещений о новых задачах.] denis |
|---|
| ====== Функциональные характеристики ПО “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. **Системные роли** |
| Нажмите пункт меню "Администрирование", подпункт "Назначенные задания". Заполните поля формы: \\ 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}} |
| - Не удаляйте и не переименовывайте элементы, у которых заданы слушатели, выражения или формы: в них зашита логика системы, и правка без разработчика ломает процесс. | - Не удаляйте и не переименовывайте элементы, у которых заданы слушатели, выражения или формы: в них зашита логика системы, и правка без разработчика ломает процесс. |
| - После публикации проверьте работу на одном тестовом объекте, прежде чем запускать поток заявок. | - После публикации проверьте работу на одном тестовом объекте, прежде чем запускать поток заявок. |
| | |
| | ==== 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. User Tasks — все задачи пользователей ===== |