2024-08-21 12:23:42 +03:00
# Описание параметров конфигурации сервера приложений
Файл /standalone/configuration/standalone.xml
## Общие
- `webbpm.db.pool_size` . Нужен только для `webbpm.mode` = development.
- `webbpm.mode` . Режим работы приложения. Значения - development, production.
2024-09-25 16:43:51 +03:00
- development - в этом режиме используется соединение к БД проекта, заданное в Studio.
- production - в этом режиме используется соединение к БД проекта, заданное с помощью jndi
имени.
2024-08-21 12:23:42 +03:00
## jBPM
- `com.arjuna.ats.arjuna.allowMultipleLastResources`
- `webbpm.jbpm.audit-log.disabled` - флаг, отвечающий за включение/отключение аудита jBPM
2024-09-25 16:43:51 +03:00
- `webbpm.jbpm.cleaner_cron` - cron расписание автоматической очистки БД JBPM, по умолчанию "-" т.е .
выключен. Очищаются незавершенные процессы.
- `webbpm.jbpm.cleaner_timeout` - время, спустя которое процесс считается устаревшим. По умолчанию -
10 часов.
- `webbpm.jbpm.finished_process_cleaner_cron` - cron расписание автоматической очистки аудита
процессов в БД JBPM, по умолчанию "-"
2024-08-21 12:23:42 +03:00
т.е . выключен
- `webbpm.jbpm.finished_process_cleaner_timeout` - время, спустя которое процесс считается устаревшим. По умолчанию - 10 часов.
Пример:
```xml
< property name = "com.arjuna.ats.arjuna.allowMultipleLastResources" value = "true" / >
< property name = "webbpm.db.pool_size" value = "5" / >
< property name = "webbpm.mode" value = "development" / >
```
### jBPM Runtime Strategy
Возможные варианты runtime strategy:
- SINGLETON
- PER_REQUEST (значение по умолчанию)
- PER_PROCESS_INSTANCE
- PER_CASE
Пример:
```xml
2024-09-25 16:43:51 +03:00
< property name = "webbpm.jbpm.runtime_strategy" value = "PER_PROCESS_INSTANCE" / >
2024-08-21 12:23:42 +03:00
```
2024-09-25 16:43:51 +03:00
## Способы авторизации:
2024-08-21 12:23:42 +03:00
2024-09-25 16:43:51 +03:00
- По Jwt токену, указанному в заголовке Authorization
2024-08-21 12:23:42 +03:00
2024-09-25 16:43:51 +03:00
### Настройка авторизации по JWT
2024-08-21 12:23:42 +03:00
2024-09-25 16:43:51 +03:00
По умолчанию все верификации токена отключены. Для того, чтобы нстроить авторизацию, следует использовать
следующие переменные среды:
2024-08-21 12:23:42 +03:00
2024-09-25 16:43:51 +03:00
| Название переменной | Тип | Описание | Пример | Значение по умолчанию |
|------------------------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------|---------------------|-----------------------|
| security.jwt.validation.enable | boolean | Включает базовую верификацию токена, включающее в себя поле exp. | true | false |
| security.jwt.validation.issuer | String | Включает верификацию по issuer, включается только при security.jwt.validation.enable = true. При пустом значении не верифицируется. | https://example.com | null |
| security.jwt.validation.secret-key | String(base64) | Включает верификацию по ключу, включается только при security.jwt.validation.enable = true. При пустом значении не верифицируется. | ZGFzaGJvYXJk | null |
| security.roles.allowed | String[] | Включает авторизацию по ролям. В случае, если пользователь не имеет ни одной указанной роли, доступ к ресурсам отклоняется | role1,role2,role3 | null |
2024-08-21 12:23:42 +03:00
2024-09-25 16:43:51 +03:00
## Настройка MFe:
2024-08-21 12:23:42 +03:00
2024-09-25 16:43:51 +03:00
Собранный образ фронтенда имеет возможность работать как полноценное standalone приложение, так и как удалённый модуль MFe. Для настройки Mfe следует указать следующие переменные:
2024-08-21 12:23:42 +03:00
2024-09-25 16:43:51 +03:00
* MFE_BASE_URL - указывается frontend/.env, либо в переменных среды сборки приложения. При изменении переменной приложение надо пересобирать. По умолчанию /mfe/dashboard
* backend.url - если необходимо настроить url бэкенда, е г о можно указать в frontend/src/resources/app.config.json
2024-08-21 12:23:42 +03:00
## Статистика
### jbpm hibernate statistics
Статистика hibernate jbpm доступна по jmx по пути `org.hibernate:type=Stats,name=jbpm` .
Полный список параметров можно посмотреть через jconsole.
По умолчанию включена, отключить можно настройкой `webbpm.jbpm.hibernate_statistics.enabled` :
```xml
2024-09-25 16:43:51 +03:00
2024-08-21 12:23:42 +03:00
< property name = "webbpm.jbpm.hibernate_statistics.enabled" value = "false" / >
```
## Schedulers по очистке базы *jbpm*.
- Очистка таблиц аудита от завершенных процессов по истечении таймаута
2024-09-25 16:43:51 +03:00
- `webbpm.jbpm.finished_process_cleaner_cron` - задает расписание (*spring cron*), если
настройка не задана - джоб не запускается
- `webbpm.jbpm.finished_process_cleaner_timeout` - таймаут в часах (*целое числовое значение*)
2024-08-21 12:23:42 +03:00
Пример:
2024-09-25 16:43:51 +03:00
2024-08-21 12:23:42 +03:00
```xml
< property name = "webbpm.jbpm.finished_process_cleaner_cron" value = "0 * * * * *" />
< property name = "webbpm.jbpm.finished_process_cleaner_timeout" value = "2" / >
```
2024-09-25 16:43:51 +03:00
2024-08-21 12:23:42 +03:00
## Ограничения для запросов БД.
2024-09-25 16:43:51 +03:00
- `webbpm.db.query_limit_enabled` - флаг, отвечающий за вывод сообщений о превышении лимитов на
количество возвращаемых записей. По умолчанию - false.
2024-08-21 12:23:42 +03:00
2024-09-25 16:43:51 +03:00
- `webbpm.db.select_records_max_limit` - максимальный лимит возвращаемых строк для запросов в БД,
при превышении/равенстве данного лимита будет выброшена ошибка (*целое числовое значение*). По
умолчанию - 100000
2024-08-21 12:23:42 +03:00
2024-09-25 16:43:51 +03:00
- `webbpm.db.select_records_min_limit` - минимальный лимит возвращаемых строк для запросов в БД, при
превышении/равенстве данного лимита в логи будет выведен warning (*целое числовое значение*). По
умолчанию - 1000
2024-08-21 12:23:42 +03:00
2024-09-25 16:43:51 +03:00
- `webbpm.db.execution_time_threshold` . The threshold for time of executing a statement. Система
выводит сообщение в логи при превышении. Действует для запросов, созданных в jOOQ. По умолчанию -
1000 миллисекунд
2024-08-21 12:23:42 +03:00
2024-09-25 16:43:51 +03:00
- `webbpm.db.result_read_time_threshold` . The threshold for time of fetching a set of records from a
ResultSet.
. Система выводит сообщение в логи при превышении. Действует для запросов, созданных в jOOQ. По
умолчанию - 50 миллисекунд
2024-08-21 12:23:42 +03:00
2024-09-25 16:43:51 +03:00
- `webbpm.db.results_count_threshold` . Система выводит сообщение в логи при превышении. Действует
для запросов, созданных в jOOQ. По умолчанию - 1000 записей
2024-08-21 12:23:42 +03:00
2024-09-25 16:43:51 +03:00
- `webbpm.db.full_time_threshold` . Ограничение на полное время выполнения запроса. Система выводит
сообщение в логи при превышении. Действует для запросов, созданных в jOOQ. По умолчанию sum(
webbpm.db.result_read_time_threshold, webbpm.db.execution_time_threshold) миллисекунд
2024-08-21 12:23:42 +03:00
2024-09-25 16:43:51 +03:00
- `webbpm.db.query_timeout` . Ограничение на время выполнения запроса. При превышении запрос будет
отклонен. Действует для запросов, созданных в jOOQ в dev режиме. По умолчанию 120 секунд.
2024-08-21 12:23:42 +03:00
Пример:
```xml
2024-09-25 16:43:51 +03:00
2024-08-21 12:23:42 +03:00
< property name = "webbpm.db.query_limit_enabled" value = "false" / >
< property name = "webbpm.db.select_records_max_limit" value = "100000" / >
< property name = "webbpm.db.select_records_min_limit" value = "1000" / >
< property name = "webbpm.db.execution_time_threshold" value = "1000" / >
< property name = "webbpm.db.results_count_threhold" value = "50" / >
< property name = "webbpm.db.result_read_time_threshold" value = "50" / >
< property name = "webbpm.db.full_time_threshold" value = "300" / >
< property name = "webbpm.db.query_timeout" value = "120" / >
```
## Добавление версии приложения в URL при запросах к backend-у
2024-09-25 16:43:51 +03:00
При сборке приложения с профилем enable-version-in-url в URL будет добавляться версия приложения,
указанная в pom.xml.
2024-08-21 12:23:42 +03:00
Шаблон URL:
```
< protocol > //< hostname > :< port > /backend< app-version > /< some-controller >
```
## Включение регистрации пользователя
2024-09-25 16:43:51 +03:00
1. Укажите конфигурацию почтового сервера для отправки писем с подтверждением регистрации.
Для этого в файле проекта *jndi-resources.xml* добавьте р е с у р с SmtpConfiguration.
Шаблон:
2024-08-21 12:23:42 +03:00
```
< jndi-resource name = "java:comp/env/webbpm/testResource" type = "bpmn.handler.common.SmtpConfiguration" > {"host":"host","port":1234,"login":"user","password":"password","from":"email_from","senderName":"sender_name","isSecured":true}< / jndi-resource >
```
2024-09-25 16:43:51 +03:00
Почтовый сервер - зарегистрированный актуальный почтовый адрес. В поле password нужно указывать не
пароль для входа в почту, а создать пароль для приложений в учетке почты и указать е г о .
2024-08-21 12:23:42 +03:00
2. Для включения регистрации добавьте в *standalone.xml* свойство
2024-09-25 16:43:51 +03:00
2024-08-21 12:23:42 +03:00
```
< property name = "registration.enabled" value = "true" / >
```
2024-09-25 16:43:51 +03:00
3. Также в *standalone.xml* укажите р е с у р с для отправки писем для подтверждения регистрации (из п.1)
2024-08-21 12:23:42 +03:00
```
< property name = "mail.jndi.resource.name" value = "java:comp/env/webbpm/testResource" / >
```
2024-09-25 16:43:51 +03:00
4. При необходимости, отредактируйте шаблон письма для подтверждения регистрации
(resources/src/main/resources/mail/confirmation.html)
2024-08-21 12:23:42 +03:00
2024-09-25 16:43:51 +03:00
5. При необходимости, отредактируйте шаблон письма для восстановления пароля
(resources/src/main/resources/mail/reset_password.html)
2024-08-21 12:23:42 +03:00
#### Настройка браузера для входа в систему с помощью Kerberos
1. Запустите браузер firefox.
2. В адресной строке введите about:config, нажать кнопку "я принимаю на себя риск"
2024-09-25 16:43:51 +03:00
3. С помощью поиска найдите параметр network.negotiate-auth.trusted-uris и в качестве значения
ввести домен(например для домена example.com надо ввести .example.com)
4. Откройте в браузере приложение. Пример [http://app.example.com/ ](http://app.example.com/ ) .
Приложение должно открыться без запроса логина/пароля
2024-08-21 12:23:42 +03:00
## Восстановление структуры БД
2024-09-25 16:43:51 +03:00
Н а основе БД проекта с помощью jOOQ генерируются Java классы для каждого объекта БД. Это происходит
по нажатию кнопки Обновить на панели БД в студии. При необходимости можно сформировать DDL на основе
данных классов. Пример класса для генерации DDL
2024-08-21 12:23:42 +03:00
```
package ru.cg.webbpm.test_project.db_beans;
import org.jooq.*;
import org.jooq.impl.*;
public class Main {
public static void main (String args []) {
DefaultConfiguration defaultConfiguration = new DefaultConfiguration();
defaultConfiguration.setSQLDialect(SQLDialect.POSTGRES);
Queries ddl = DSL.using(defaultConfiguration).ddl(DefaultCatalog.DEFAULT_CATALOG);
for (Query query : ddl.queries()) {
System.out.println(query);
}
}
}
```
** ВНИМАНИЕ: **
- этим способом нельзя восстановить функции/процедуры БД
2024-09-25 16:43:51 +03:00
см.
также [Generating DDL from objects ](https://www.jooq.org/doc/latest/manual/sql-building/ddl-statements/generating-ddl/ )
2024-08-21 12:23:42 +03:00
## Распределенный кэш (Hazelcast)
2024-09-25 16:43:51 +03:00
В платформе подключен кэш. Он используется для подсчёта количества пользователей и кэширования
подсистемы безопасности
2024-08-21 12:23:42 +03:00
- `webbpm.cache.hazelcast.port` - входящий порт hazelcast. по дефолту 5701.
- Обязательное задать одно из двух следующих параметров
2024-09-25 16:43:51 +03:00
- `webbpm.cache.hazelcast.hosts` - список хостов серверов приложений.
webbpm.cache.hazelcast.hosts = hostname1,hostname2,hostname3
- `webbpm.cache.hazelcast.kubernetes.service_name` - имя сервиса в среде kubernetes,
используемый для обнаружения других подов. Подходит как стратегия обнаружения, если
используется
kubernetes
- `webbpm.cache.hazelcast.outbound_port_definitions` - исходящие порты hazelcast. по дефолту не
задано, система сама выбирает свободные порты. Задать диапазон 5801 - 5820
- `webbpm.cache.hazelcast.backup_count` . Нужны чтобы когда сервер выключается был доступен бекап.
Если предполагается выключать несколько серверов за раз, то нужно увеличить.
Данный бекап делает копии синхронно с основной записью и операция записи ждет пока будет записана
везде. Можно делать бекап асинхронно, настраивается через async_backup_count
подробнее про
бекапы [Hazelcast IMDG Reference Manual ](https://docs.hazelcast.org/docs/3.11/manual/html-single/index.html#backing-up-maps ) .
по дефолту 1
2024-08-21 12:23:42 +03:00
- `webbpm.cache.hazelcast.async_backup_count`
- `webbpm.cache.hazelcast.public_address`
- `webbpm.cache.hazelcast.interfaces`
Пример конфигурации:
```xml
2024-09-25 16:43:51 +03:00
< property name = "webbpm.cache.hazelcast.hosts" value = "app1,app2" / >
< property name = "webbpm.cache.hazelcast.outbound_port_definitions" value = "5801-5820" / > `
2024-08-21 12:23:42 +03:00
```
## Подключение компоненты адреса в режиме ГАР (Государственный адресный реестр)
Необходимо задать параметры:
2024-09-25 16:43:51 +03:00
- `gar.enable` - флаг, который включает/отключает сервис для работы с ГАР. Должен быть задан для
работы компоненты в режиме ГАР. По умолчанию true, для отключения задать false.
2024-08-21 12:23:42 +03:00
- `gar.elastic.url.host` - хост на котором развернут elasticsearch.
- `gar.elastic.password` - пароль для аутентификации elasticsearch.
Дополнительные параметры:
- `gar.elastic.url.port` - порт на котором развернут elasticsearch.
- `gar.elastic.username` - логин для аутентификации elasticsearch.
Пример конфигурации:
```xml
2024-09-25 16:43:51 +03:00
< property name = "gar.enable" value = "true" / >
< property name = "gar.elastic.url.host" value = "localhost" / >
< property name = "gar.elastic.password" value = "password" / >
2024-08-21 12:23:42 +03:00
```
## Метрики
Отчет
Отчет собирается раз в 30 секунд по дефолту, меняется параметром `webbpm.metrics.report_period_ms` .
В с е метрики идут за отчетный период, после с б о р а отчета они сбрасываются.
2024-09-25 16:43:51 +03:00
Получить json с о всеми метриками можно по урлу `backend/metrics/v1/all` - метрики будут с последнего
собранного отчета, запрос не триггерит с б о р отчета - это независимые операции. Отчет содержит только
метрики по которым был совершен хотя бы один вызов в отчетный период. Т о есть, если какая-то
операция не была совершена в отчетный период, то соответствующая ей метрика не попадет в отчет - е е
не будет в json.
2024-08-21 12:23:42 +03:00
### Значения метрик
В с е метрики идут за отчетный период, после с б о р а отчета они сбрасываются.
Н а с в основном интересуют `callsCountSum` , `latencyMin` , `latencyAvg` , `latencyMax`
- `callsCountSum` - количество завершенных вызовов
- `latencyMin` - минимальное время выполнения
- `latencyAvg` - среднее время выполнения
- `latencyMax` - максимальное время выполнения
- `activeCallsCountMax` - количество начатых, но еще не завершенных вызовов.
- `activeCallsLatencyMax` - длительность самого долгого еще не завершенного вызова
### Текущие метрики приложения
- Получение коннекта из пула
2024-09-25 16:43:51 +03:00
- `webbpm.jbpm.db.connection.acquire`
- `webbpm.security.db.connection.acquire`
- `webbpm.db.connection.acquire`
2024-08-21 12:23:42 +03:00
- Время с момента получения коннекта до возврата е г о в пул
2024-09-25 16:43:51 +03:00
- `webbpm.jbpm.db.connection.in_use`
- `webbpm.security.db.connection.in_use`
- `webbpm.db.connection.in_use`
2024-08-21 12:23:42 +03:00
- Время выполнения запроса на бд проекта
2024-09-25 16:43:51 +03:00
- `webbpm.db.query.success.execution_time`
2024-08-21 12:23:42 +03:00
- Время выполнения запроса на бд проекта + время получения коннекта из пула
2024-09-25 16:43:51 +03:00
- `webbpm.db.query.success.full_time`
2024-08-21 12:23:42 +03:00
- active-users-count.indicatorMax
- active-users-count-ttl.indicatorMax
2024-09-25 16:43:51 +03:00
2024-08-21 12:23:42 +03:00
# Количество пользователей
2024-09-25 16:43:51 +03:00
- `webbpm.active_users_counter.enabled` - включает подсчет пользователей, нужно чтобы не запускать
hazelcast на дев машинах. по дефолту false. Н а боевых серверах необходимо установить в true.
2024-08-21 12:23:42 +03:00
2024-09-25 16:43:51 +03:00
- `webbpm.active_users_counter.max_time_between_operations_in_seconds` - время, которое пользователь
считается активным после действия. по дефолту 15 минут.
2024-08-21 12:23:42 +03:00
2024-09-25 16:43:51 +03:00
- `webbpm.active_users_counter.hazelcast.app_pool_size` . Запись в hazelcast производится асинхронно
в отдельном пуле, не блокируя обработку http запроса. Это размер этого пула. по дефолту 4. Можно
пока оставить 4 и последить за метриками pool.hazelcast-executor.queue.indicatorMax и
pool.hazelcast-executor.activeThreads.indicatorMax. Если очередь будет сильно копиться, то
увеличить.
2024-08-21 12:23:42 +03:00
## Настройка логов
В с е настройки делаются в файле `standalone.xml` , если не указано иначе.
### Общие настройки
2024-09-25 16:43:51 +03:00
Платформа Web-bpm использует корневую категорию логирования `ru.cg.webbpm` , рекомендуется выставлять
е е в уровень `info` . todo check prod config
2024-08-21 12:23:42 +03:00
```xml
2024-09-25 16:43:51 +03:00
2024-08-21 12:23:42 +03:00
< logger category = "ru.cg.webbpm" >
2024-09-25 16:43:51 +03:00
< level name = "INFO" / >
2024-08-21 12:23:42 +03:00
< / logger >
```
При этом компоненты используемые в проекте могут использовать другие категории.
### Параметры конфигурации
**Рекомендованное использование:** всегда в `info` .
2024-09-25 16:43:51 +03:00
В с е параметры конфигурации загружаемые платформой web-bpm и пользовательским приложением через api
webbpm логируются категорией `ru.cg.webbpm.modules.core.app_info.api.property.BaseProperty` . Она
всегда должна быть выставлена в `info` .
2024-08-21 12:23:42 +03:00
Пример вывода:
```
2017-12-04 16:02:19,074 INFO [ru.cg.webbpm.modules.core.app_info.api.property.BaseProperty] (EclipseGeminiBlueprintExtenderThread-1) System property [webbpm.active_users_counter.enabled] not set. Using default value [false]
2017-12-04 16:02:19,074 INFO [ru.cg.webbpm.modules.core.app_info.api.property.BaseProperty] (EclipseGeminiBlueprintExtenderThread-1) System property [webbpm.active_users_counter.hazelcast.hosts] set to [127.0.0.1]
```
### БД проекта
#### Логирование запросов в бд security и бд проекта
**Рекомендованное использование:** только при разработке.
Использовать только при разработке. Категория `org.jooq.tools.LoggerListener` в `debug` уровень.
```xml
2024-09-25 16:43:51 +03:00
2024-08-21 12:23:42 +03:00
< logger category = "org.jooq.tools.LoggerListener" >
2024-09-25 16:43:51 +03:00
< level name = "DEBUG" / >
2024-08-21 12:23:42 +03:00
< / logger >
```
Пример вывода:
```
2017-12-04 18:21:10,391 DEBUG [org.jooq.tools.LoggerListener] (default task-19) Executing query : select "department"."department_name", "department"."department_id", "department"."parent_department_id", "department"."parent_department_id", "department"."department_id", (select (count(*) < > ?) from "public"."department" as "$$child" where "$$child"."parent_department_id" = "department"."department_id") as "$$hasChildren" from "public"."department" as "department" limit ?
2017-12-04 18:21:10,395 DEBUG [org.jooq.tools.LoggerListener] (default task-19) -> with bind values : select "department"."department_name", "department"."department_id", "department"."parent_department_id", "department"."parent_department_id", "department"."department_id", (select (count(*) < > 0) from "public"."department" as "$$child" where "$$child"."parent_department_id" = "department"."department_id") as "$$hasChildren" from "public"."department" as "department" limit 2147483647
2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) Fetched result : +-----------------+-------------+--------------------+--------------------+-------------+-------------+
2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) : |department_name |department_id|parent_department_id|parent_department_id|department_id|$$hasChildren|
2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) : +-----------------+-------------+--------------------+--------------------+-------------+-------------+
2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) : |Головной офис 1 | 8| {null}| {null}| 8|true |
2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) : |Головной офис 2 | 9| {null}| {null}| 9|true |
2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) : |Головной офис 3 | 10| {null}| {null}| 10|true |
2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) : |Подразделение 1.1| 11| 8| 8| 11|true |
2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) : |Подразделение 1.2| 12| 8| 8| 12|true |
2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) : +-----------------+-------------+--------------------+--------------------+-------------+-------------+
2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) : |...55 record(s) truncated...
```
#### Логирование больших запросов
2024-09-25 16:43:51 +03:00
**Рекомендованное использование:** всегда в `info` , с подобранными для проекта значениями. В проде
значения должны быть проверены что они не вызывают излишнее логирование.
1. Для отслеживания больших запросов в пользовательскую базу нужно задать параметры что считать
большими запросами, логироваться будут запросы больше заданных показателей.
Чтобы логировать все запросы можно задать значение `-1` . Добавляются как property в
раздел `system-properties` :
2024-08-21 12:23:42 +03:00
```xml
< property name = "webbpm.db.full_time_threshold" value = "1050" / >
< property name = "webbpm.db.results_count_threshold" value = "1000" / >
```
2024-09-25 16:43:51 +03:00
2024-08-21 12:23:42 +03:00
В `info` режиме работают:
2024-09-25 16:43:51 +03:00
- `webbpm.db.full_time_threshold` - полное время выполнения запроса в миллисекундах. Включает
построение запроса библиотекой, выполнение и загрузку результатов. Пример
сообщения < br > `2023-01-11 13:09:38,361 WARN [ru.cg.webbpm.modules.database.impl.analytics.PerformanceListener] (default task-33) Query full time threshold exceeded. full_time=[6565ms] execution_time=[6565ms] read_time=[0ms] results_count=[4] query=[<your query>]`
- `webbpm.db.results_count_threshold` - количество записей, которое вернул запрос. Пример
сообщения < br > `2023-01-11 13:10:34,088 WARN [ru.cg.webbpm.modules.database.impl.analytics.PerformanceListener] (default task-41) Query results count threshold exceeded. results_count=[11177] query=[<your query>]`
2024-08-21 12:23:42 +03:00
В `debug` режиме дополнительно к работающим в info:
2024-09-25 16:43:51 +03:00
- `webbpm.db.execution_time_threshold` - время выполнения запроса + построения запроса
библиотекой.
- `webbpm.db.result_read_time_threshold` - время чтения результатов запроса
2. После задания настроек нужно настроить логирование -
категория `ru.cg.webbpm.modules.database.impl.analytics.PerformanceListener` , уровень `info`
или `debug` .
2024-08-21 12:23:42 +03:00
```xml
< logger category = "ru.cg.webbpm.modules.database.impl.analytics.PerformanceListener" >
< level name = "INFO" / >
< / logger >
```
### JBPM
#### Основные настройки
2024-09-25 16:43:51 +03:00
JBPM использует 3 корневых категории логирования – `org.jbpm` , `org.drools` , `org.kie` . В с е они
должны быть выставлены в `warn` .
2024-08-21 12:23:42 +03:00
```xml
2024-09-25 16:43:51 +03:00
2024-08-21 12:23:42 +03:00
< logger category = "org.jbpm" >
2024-09-25 16:43:51 +03:00
< level name = "WARN" / >
2024-08-21 12:23:42 +03:00
< / logger >
< logger category = "org.drools" >
2024-09-25 16:43:51 +03:00
< level name = "WARN" / >
2024-08-21 12:23:42 +03:00
< / logger >
< logger category = "org.kie" >
2024-09-25 16:43:51 +03:00
< level name = "WARN" / >
2024-08-21 12:23:42 +03:00
< / logger >
```
#### Логирование запросов в БД
**Рекомендованное использование:** только при разработке.
Для логирования sql запросов нужно включить категорию `org.hibernate.SQL` в `debug` :
```xml
2024-09-25 16:43:51 +03:00
2024-08-21 12:23:42 +03:00
< logger category = "org.hibernate.SQL" >
2024-09-25 16:43:51 +03:00
< level name = "DEBUG" / >
2024-08-21 12:23:42 +03:00
< / logger >
```
2024-09-25 16:43:51 +03:00
Чтобы вывести параметры запросов и результат выполнения –
категорию `org.hibernate.type.descriptor.sql` в `trace` :
2024-08-21 12:23:42 +03:00
```xml
2024-09-25 16:43:51 +03:00
2024-08-21 12:23:42 +03:00
< logger category = "org.hibernate.type.descriptor.sql" >
2024-09-25 16:43:51 +03:00
< level name = "TRACE" / >
2024-08-21 12:23:42 +03:00
< / logger >
```
Пример вывода:
```
18:21:06,938 DEBUG [org.hibernate.SQL] (default task-47) select names0_.Task_Names_Id as Task_Nam7_16_0_, names0_.id as id1_16_0_, names0_.id as id1_16_1_, names0_.language as language2_16_1_, names0_.shortText as shortTex3_16_1_, names0_.text as text4_16_1_ from I18NText names0_ where names0_.Task_Names_Id=?
18:21:06,939 TRACE [org.hibernate.type.descriptor.sql.BasicBinder] (default task-47) binding parameter [1] as [BIGINT] - [180]
18:21:06,940 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] (default task-47) extracted value ([id1_16_1_] : [BIGINT]) - [539]
18:21:06,940 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] (default task-47) extracted value ([language2_16_1_] : [VARCHAR]) - [en-UK]
18:21:06,940 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] (default task-47) extracted value ([shortTex3_16_1_] : [VARCHAR]) - [Список записей]
18:21:06,941 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] (default task-47) extracted value ([text4_16_1_] : [CLOB]) - [Список записей]
18:21:06,941 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] (default task-47) extracted value ([Task_Nam7_16_0_] : [BIGINT]) - [180]
18:21:06,942 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] (default task-47) extracted value ([id1_16_0_] : [BIGINT]) - [539]
```
#### Дополнительные логи hibernate
**Рекомендованное использование:** только при разработке в случае необходимости.
1. Время выполнения запроса и количество результатов.
2024-09-25 16:43:51 +03:00
Включаются категорией `org.hibernate.stat` в `debug` . При этом в hibernate должен быть включен
с б о р статистики.
2024-08-21 12:23:42 +03:00
Похоже что логируется только hql select запросов.
2024-09-25 16:43:51 +03:00
2024-08-21 12:23:42 +03:00
```xml
< logger category = "org.hibernate.stat" >
< level name = "DEBUG" / >
< / logger >
```
2024-09-25 16:43:51 +03:00
2024-08-21 12:23:42 +03:00
Пример вывода:
2024-09-25 16:43:51 +03:00
2024-08-21 12:23:42 +03:00
```
18:21:06,858 DEBUG [org.hibernate.stat.internal.ConcurrentStatisticsImpl] (default task-41) HHH000117: HQL: select t from AuditTaskImpl t where t.taskId = :taskId, time: 6ms, rows: 1
```
2. Показатели hibernate сессий
2024-09-25 16:43:51 +03:00
Включаются категорией `org.hibernate.engine.internal.StatisticalLoggingSessionEventListener`
в `info` .
При этом в hibernate должен быть включен с б о р статистики. Тут может быть интересно количество
запросов, флашей и общее время на все запросы сессией.
2024-08-21 12:23:42 +03:00
Пример вывода:
2024-09-25 16:43:51 +03:00
2024-08-21 12:23:42 +03:00
```
2017-12-04 17:25:58,493 INFO [org.hibernate.engine.internal.StatisticalLoggingSessionEventListener] (default task-21) Session Metrics {
63408365 nanoseconds spent acquiring 17 JDBC connections;
521509 nanoseconds spent releasing 17 JDBC connections;
65732621 nanoseconds spent preparing 17 JDBC statements;
31471897 nanoseconds spent executing 17 JDBC statements;
0 nanoseconds spent executing 0 JDBC batches;
0 nanoseconds spent performing 0 L2C puts;
0 nanoseconds spent performing 0 L2C hits;
0 nanoseconds spent performing 0 L2C misses;
297556 nanoseconds spent executing 1 flushes (flushing a total of 16 entities and 0 collections);
430168 nanoseconds spent executing 1 partial-flushes (flushing a total of 16 entities and 16 collections)
}
```
#### Логирование hbm2ddl
**Рекомендованное использование:** всегда в `trace` .
2024-09-25 16:43:51 +03:00
Должно быть включено всегда. Позволяет убедиться что hibernate не накатывал никакие миграции на
базу. Этот функционал отключен у нас в коде.
2024-08-21 12:23:42 +03:00
```xml
2024-09-25 16:43:51 +03:00
2024-08-21 12:23:42 +03:00
< logger category = "org.hibernate.tool.hbm2ddl" >
2024-09-25 16:43:51 +03:00
< level name = "TRACE" / >
2024-08-21 12:23:42 +03:00
< / logger >
```
# Описание параметров конфигурации клиентской части
2024-09-25 16:43:51 +03:00
Свойства задаются в файле frontend/src/resources/app-config.json или
frontend.war/src/resources/app-config.json
2024-08-21 12:23:42 +03:00
## Общие
2024-09-25 16:43:51 +03:00
- `dev_mode` - настройка задающая dev_mode для просмотра логов (true/false). При отсутствие
оставляет значение при сборке
- `guard.confirm_exit` - выводить или нет диалог подтверждения, если обнаружены несохраненные данные
в форме. Значение по умолчанию - false.
2024-08-21 12:23:42 +03:00
- `password.pattern` - Регулярное выражение для валидации пароля.
- `password_pattern_error` - Сообщение о б ошибке валидации.
2024-09-25 16:43:51 +03:00
- `show.client.errors` - отвечает за отображение ошибок javascript-a пользователю (должна
использоваться только в тестовых контурах) по умолчанию выключена
- 'available_task.single_fetch' - Отвечает за количество запросов available_task при завершении
процесса. true - одиночный запрос, false/не указано - 10 запросов(старая реализация).
2024-08-21 12:23:42 +03:00
## Вывод сообщений
2024-09-25 16:43:51 +03:00
- `message_service_error_timeout` время в мс, в течение которого будет отображено сообщение о б
ошибке. Значение по умолчанию - таймаут не задан (окно не закрывается).
- `message_service_warning_timeout` время в мс, в течение которого будет отображено предупреждающее
сообщение. Значение по умолчанию - таймаут не задан (окно не закрывается).
- `message_service_success_timeout` время в мс, в течение которого будет отображено сообщение о б
успехе. Значение по умолчанию - таймаут не задан (окно не закрывается).
- `message_service_info_timeout` время в мс, в течение которого будет отображено информационное
сообщение. Значение по умолчанию - таймаут не задан (окно не закрывается).
2024-08-21 12:23:42 +03:00
## Электронная подпись
### Esmart
2024-09-25 16:43:51 +03:00
- `electronic_sign.esmart_extension_url` - url для создания расширенной подписи. Подробная
информация по ссылке [http://demo.esmart.ru ](http://demo.esmart.ru )
2024-08-21 12:23:42 +03:00
- `electronic_sign.tsp_address` - адрес сервера службы штампов времени
Пример:
```text
"electronic_sign.esmart_extension_url": "http://dsig.ibsdemo.ru/ibs_dsig/ibs_dSig.asmx"
```
## Способ аутентификации
2024-09-25 16:43:51 +03:00
- `auth_method` - способ аутентификации. Может принимать одно значение из списка: form, kerberos,
cert_over_db, cert_over_ldap
2024-08-21 12:23:42 +03:00
## Таймер очистки закешированных значений фильтров
2024-09-25 16:43:51 +03:00
- `filter_cleanup_interval_hours` - время жизни закешированного значения фильтра в часах. По
умолчанию - 720 часов,
- `filter_cleanup_check_period_minutes` - период проверки наличия просроченных закешированных
значений в минутах. По умолчанию - 30 минут
2024-08-21 12:23:42 +03:00
## Добавление версии приложения в URL при запросах к frontend-у
В модуле frontend в src/resources/app-config.json добавлены 2 переменные
2024-09-25 16:43:51 +03:00
- `"enable.version.in.url": "%enable.version.in.url%"` - подставлять ли версию в URL приложения. По
умолчанию false. Если сборка произведена
2024-08-21 12:23:42 +03:00
- `"app.version": "%project.version%"` - версия приложения.
с профилем `enable-version-in-url` , то значение будет true.
## Добавление Jivo чат в проект
2024-09-25 16:43:51 +03:00
Свойства задаются в файле frontend/src/resources/app-config.json или
frontend.war/src/resources/app-config.json
2024-08-21 12:23:42 +03:00
2024-09-25 16:43:51 +03:00
- `jivo_chat_widget_api_url` - API url для работы Jivo чата. Необходимо заменить {WIDGET_ID} на
реальный Widget API ID
- `jivo_chat_widget_enabled` - параметр отвечающий за активацию Jivo чата. По дефолту false, для
активации задать true.
2024-08-21 12:23:42 +03:00
Пример:
```json
"jivo_chat_widget_api_url": "https://code.jivo.ru/widget/{WIDGET_ID}",
2024-09-25 16:43:51 +03:00
"jivo_chat_widget_enabled": false
2024-08-21 12:23:42 +03:00
```
# Прочее
## Смена удалённого репозитория
2024-09-25 16:43:51 +03:00
1. Смените адрес NPM registry в файле frontend.npmrc. Пример -
registry=https://repo.example.com/repository/npm-all/
2024-08-21 12:23:42 +03:00
2. Поменяйте ссылки в блоке , файла pom.xml