Настройка сервиса глобального поиска версии 1.5
Разворачиваются на отдельных серверах:
rabbitmq — брокер сообщений.
elasticsearch — поисковый движок.
mysql — база данных конфигурирования компонентов глобального поиска.
redis — хранилище данных, используемое для кеширования и быстродействия.
Разворачиваются на одном сервере:
gs-web-api — web-сервис конфигурирования компонентов глобального поиска.
gs-scheduler — планировщик задач индексации данных из bpm’online в ElasticSearch.
gs-worker — компонент индексирования данных из bpm’online в ElasticSearch по задачам планировщика.
gs-worker-replay — компонент, обрабатывающий результаты индексации (результаты работы gs-worker-а).
gs-worker-single — компонент точечной индексации данных бизнес-процессов в ElasticSearch по запросу из бизнес-процесса.
gs-worker-single-replay — компонент, обрабатывающий исключения в процессе точечной индексации (результаты работы gs-worker-single).
gs-worker-single-task — компонент для постановки задач компоненту gs-worker-single.
gs-worker-querried-single-task — компонент для формирования задач компоненту gs-worker-single.
Важно
Для продуктивной среды рекомендуем разворачивать компоненты ElasticSearch, RabbitMQ и MySQL в отказоустойчивых кластерах. Если перечисленные компоненты развернуты отдельно, то потребуется отключить развертывание этих компонентов в Docker-контейнере с помощью переменных RUN_RABBITMQ, RUN_ELASTICSEARCH и RUN_MYSQL.
Для настройки компонент скачайте исходные файлы. Скачать файлы.
На заметку
Для демонстрационных целей можно развернуть все компоненты глобального поиска на одном сервере. Для этого в файле linux/onsite-custom-env укажите переменным RUN_RABBITMQ, RUN_ELASTICSEARCH, RUN_MYSQL значение “1”.
Список портов, используемых компонентами глобального поиска
Название компонента | Исходящий порт | Входящий порт | Примечание |
---|---|---|---|
gs-web-api | 6379 | 81 | Входящий порт настраивается переменной WEB_API_PORT |
gs-web-indexing-service | 5672 | 82 | Входящий порт настраивается переменной WEB_INDEXING_SERVICE_PORT |
gs-worker | 5672 9200 Порт MSSQL или Oracle |
| Порт MSSQL или Oracle — порт общения с БД bpm’online |
gs-worker-single | 5672 9200 Порт MSSQL или Oracle |
| Порт MSSQL или Oracle — порт общения с БД bpm’online |
gs-scheduler | 3306 5672 |
|
|
gs-worker-replay | 3306 5672 |
|
|
gs-worker-single-task | 3306 5672 6379 |
|
|
gs-worker-single-replay | 3306 5672 |
|
|
rabbitmq |
| 5672 |
|
elasticsearch |
| 9200 |
|
mysql |
| 3306 |
|
redis |
| 6379 |
|
Последовательность действий для настройки глобального поиска
1.Установить Docker на физическую или виртуальную машину с операционной системой Linux. Подробнее >>>
2.Установить ElasticSearch. Подробнее >>>
3.Установить RabbitMQ. Подробнее >>>
4.Настроить MySQL. Подробнее >>>
5.Настроить переменные контейнеров. Подробнее >>>
6.Установить и запустить компоненты Global Search Service. Подробнее >>>
7.Подключить функциональность глобального поиска в bpm’online. Подробнее >>>
8.Выполнить первичное наполнение БД. Подробнее >>>
На заметку
Для демонстрационных приложений, у которых все компоненты глобального поиска установлены на одном сервере, шаги 2–4 выполнять не нужно.
Содержание
•Настройка переменных контейнеров
•Запуск контейнеров с компонентами Global Search Service
•Подключение сервиса глобального поиска в bpm’online
Для разворачивания компонентов глобального поиска необходимо установить Docker на операционную систему Linux. Для установки воспользуйтесь инструкцией в документации Docker. Подробнее >>>
Для проверки установленной версии Docker запустите команду docker --version на linux-машине.
Для установки RabbitMQ cluster для Docker воспользуйтесь инструкцией. Подробнее >>>
Для установки RabbitMQ cluster без Docker воспользуйтесь инструкцией в документации RabbitMQ. Подробнее >>>
1.Установите ElasticSearch версии 5.6.8. Для установки воспользуйтесь инструкцией в документации ElasticSearch. Подробнее >>>
2.После установки ElasticSearch установите плагин для поиска по морфологии. Для этого скачайте актуальную версию плагина Morphological Analysis Plugin for ElasticSearch по ссылке. Инструкция по установке плагина морфологи доступна в документации ElasticSearch. Подробнее >>>
3.Для установки плагина добавьте в docker-файл ElasticSearch команду:
RUN bin/elasticsearch-plugin install http://dl.bintray.com/content/imotov/elasticsearch-plugins/org/elasticsearch/elasticsearch-analysis-morphology/5.6.8/elasticsearch-analysis-morphology-5.6.8.zip
Для установки MySQL cluster для Docker воспользуйтесь инструкцией в документации Docker. Подробнее >>>
Для установки MySQL cluster без Docker воспользуйтесь инструкцией в документации MySQL. Подробнее >>>
Настройка переменных контейнеров
Все контейнеры компонентов глобального поиска конфигурируются из файла с переменными среды (environment variables). Переменные содержатся в файле Docker/linux/onsite-custom-env. Установите значения переменных, отредактировав этот файл.
Важно
При обновлении версии сервиса глобального поиска необходимо в файле Docker/linux/onsite-custom-env установить значение “1” для переменных CLEAR_ELASTICSEARCH_DATA, CLEAR_RABBITMQ_DATA, CLEAR_MYSQL_DATA.
Название переменной | Описание | Значение по умолчанию |
---|---|---|
GS_WORKER_DB_CONNECTION_STRING_PATTERN (для MS SQL) | Шаблон подключения к базе данных bpm’online. Укажите пользователя [DBLogin], пароль [DBPassword], сервер базы данных bpm’online [DBServerName] (например, dbserver\\mssql2016) и имя базы данных bpm’online [DBName]. Так как контейнеры запущены под управлением операционной системы Linux, то Windows-авторизация не поддерживается. Для авторизации необходимо создать sql-пользователя или использовать существующего. | Server=[DBServerName]; Database=[DBName]; User Id=[DBLogin]; Password=[DBPassword]; Connection Timeout=10 |
GS_WORKER_DB_CONNECTION_STRING_PATTERN (для Oracle)
| Шаблон подключения к базе данных bpm’online. Для приложений bpm’online, использующих БД Oracle, необходимо изменить переменную GS_WORKER_DB_CONNECTION_STRING_PATTERN в файле Docker/linux/onsite-custom-env. | Пример значения переменной можно найти в файле Docker/linux/oracle-env. |
GS_WORKER_DB_CONNECTION_STRING_PATTERN (для PostgreSQL) | Шаблон подключения к базе данных bpm’online. Для приложений bpm’online, использующих БД PostgreSQL, необходимо изменить переменную GS_WORKER_DB_CONNECTION_STRING_PATTERN вфайле Docker/linux/onsite-custom-env. | Пример значения переменной можно найти в файле Docker/linux/postgre-env. |
GS_ES_URL | Внутренний хост ElasticSearch. Для приложений, у которых компоненты глобального поиска развернуты на разных серверах, необходимо указать хост, по которому будет доступен ElasticSearch. Для демонстрационных приложений, у которых все компоненты глобального поиска развернуты на одном сервере ((RUN_ELASTICSEARCH=1), внутренний хост доступен в docker контейнерах gs-web-api и gs-worker-xx. | http://elasticsearch:9200 |
GS_PUBLIC_ES_URL | Внешний хост elasticsearch, который используется для доступа из bpm’online. Если ElasticSearch развернут в docker контейнере (RUN_ELASTICSEARCH=1) — укажите внешний хост, или ip-адрес машины, на которой развернут Docker. | http://[external.elasticSearchHostName]:9200 |
RUN_RABBITMQ | При установленном значении “1” будет запускаться контейнер с RabbitMQ. Если контейнер с RabbitMQ запускать не требуется, то установите “0”. | 1 |
RUN_ELASTICSEARCH | При установленном значении “1” будет запускаться контейнер с ElasticSearch. Если контейнер с ElasticSearch запускать не требуется, то установите “0”. | 1 |
RUN_MYSQL | При установленном значении “1” будет запускаться контейнер с MySQL. Если контейнер с MySQL запускать не требуется, то установите “0”. | 1 |
RUN_REDIS | При установленном значении “1” будет запускаться контейнер с REDIS. Если у вас уже развернут REDIS на внешнем сервере, то установите “0”. | 1 |
Установите значения перечисленных ниже параметров, только если компоненты RabbitMQ, ElasticSearch или MySQL развернуты отдельно.
Параметр | Описание |
---|---|
GS_ES_LOGIN | Если ElasticSearch без base64 авторизации, то оставьте параметр незаполненным. |
GS_ES_PASSWORD | Если ElasticSearch без base64 авторизации, то оставьте параметр незаполненным. |
GS_RABBITMQ_AMQP | Доступ к внешнему RabbitMQ. Параметр необходимо изменить, если компонент RabbitMq развернут отдельно. |
GS_DB_CONNECTION_STRING | Строка подключения к MySQL. Измените этот параметр в файле Docker/linux/mysql-env, если компонент MySQL развернут отдельно: •server=gs-mysql — хост; •ser id=$MYSQL_USER — пользователь; •pwd=$MYSQL_PASSWORD — пароль. |
GS_REDIS_CONNECTION_STRING | Доступ к внешнему REDIS. Параметр необходимо изменить, если компонент REDIS развернут отдельно. |
Дополнительные переменные, которые управляют параметрами индексации данных в ElasticSearch
Название переменной | Описание | Значение по умолчанию |
---|---|---|
GS_DB_BATCH_SIZE | Количество записей, формирующих одну пачку для bulk-запроса индексации на ElasticSearch. | 2000 записей |
GS_DB_INCREMENT_DAYS | Количество дней, которое необходимо проиндексировать за одну итерацию планировщика. Для сравнения используются данные колонки ModifiedOn записей системы. | 500 дней |
GS_DB_FILL_QUEUE_INTERVAL | Интервал сбора данных из БД bpm’online регулярным планировщиком. Чем меньше этот параметр, тем выше нагрузка на БД bpm’online, но быстрее происходит первичная индексация. | 30000 (указывается в миллисекундах) |
Запуск контейнеров с компонентами Global Search Service
Важно
Для корректной работы контейнеров необходимо, чтобы UTC-время на linux-машине, на которой установлен Docker, соответствовало UTC-времени на сервере БД bpm’online. Допустимое отклонение — до пяти минут. Иначе глобальный поиск может индексировать не все записи.
1.Скопируйте папку Docker из дистрибутива на linux-машину.
2.Запустите команду.
•Для приложений bpm'online, развернутых на MS SQL:
sh Docker/linux/run.sh mysql mssql 1.5 onsite
•Для приложений bpm'online, развернутых на Oracle:
sh Docker/linux/run.sh mysql oracle 1.5 onsite
•Для приложений bpm'online, развернутых на PostgreSQL:
sh Docker/linux/run.sh mysql postgre 1.5 onsite
На заметку
После повторного запуска команды sh Docker/linux/run.sh вы можете получить сообщение об ошибке, например “Error response from daemon: network with name net1 already exists”. Это сообщение появляется, так как docker network с именем net1 был создан при первом запуске команды.
После успешного запуска контейнеров будут автоматически смонтированы следующие Docker тома (volumes):
•es1, если RUN_ELASTICSEARCH=1 (es-node1);
•es2, если RUN_ELASTICSEARCH=1 (es-node2);
•mysql, если RUN_MYSQL=1;
•rabbitmq, если RUN_RABBITMQ=1.
На заметку
Информацию о созданных томах выводит команда docker volume list.
При прекращении работы одного из контейнеров (MySQL, RabbitMQ или ElasticSearch) данные будут сохраняться на внешнем диске вне docker-контейнера. Детальная информация о томах доступна в документации Docker. Подробнее >>>
Проверка удачного запуска контейнеров
Для просмотра всех запущенных контейнеров введите в консоль команду docker ps -a.
Должны быть запущены следующие контейнеры:
•gs-web-api;
•gs-web-indexing-service;
•gs-scheduler;
•gs-worker:
•gs-worker1;
•gs-worker2;
•gs-worker3;
•gs-worker-replay;
•gs-worker-single;
•gs-worker-single-replay;
•gs-worker-single-task;
•gs-worker-querried-single-task;
•ES, если RUN_ELASTICSEARCH = 1:
•es-node1;
•es-node2;
•rabbitmq, если RUN_RABBITMQ = 1;
•gs-mysql, если RUN_MYSQL = 1;
•gs-redis если RUN_REDIS=1.
Логирование
По умолчанию логирование происходит во время выполнения команды “stdout” контейнеров.
На заметку
docker logs --tail 100 gs-worker-01 выводит 100 последних строк логов из контейнера gs-worker.
На заметку
При первом запуске компонентов глобального поиска в их логах может появиться сообщение о том, что невозможно подключиться к mysql или rabbitmq. При старте возможны ситуации, когда контейнер mysql или rabbitmq временно недоступен. В этом случае продолжайте попытки подключения, пока в stdout не отобразится сообщение об удачном подключении и запуске контейнера: “Now listening on: http://[::]:80 Application started. Press Ctrl+C to shut down”.
Подключение сервиса глобального поиска в bpm’online
Действия на сервере
Для подключения глобального поиска к bpm’online выполните следующие действия на сервере:
1.Для http-запросов установите утилиту curl.
apt-get install curl
2.Выполните API-операцию AddSite, указав:
•[site name] — название базы данных bpm’online, например, SalesTeamENU;
•[gs-web-api] — внешний адрес запущенного ранее контейнера gs-web-api.
curl -v -X POST -d '{"ApiKey": "testKey", "SiteName": "[site name]"}' -H "Content-Type: application/json" http://[gs-web-api]:81/addsite
3.Выполните API-операцию AddSearch, указав:
•[site name] — название БД bpm’online, например, SalesTeamENU;
•[gs-web-api] — внешний адрес запущенного ранее контейнера gs-web-api.
curl -v -X POST -d '{"ApiKey": "testKey", "SiteName": "[site name]"}' -H "Content-Type: application/json" http://gs-web-api:81/addsearch
На заметку
Приведенный запрос вернет URL к созданному индексу в ElasticSearch. URL нужно сохранить и использовать в приведенном ниже sql-скрипте установки системных настроек.
Действия на стороне bpm’online
Для СУБД MS SQL
1.Включите в bpm’online функциональность (Feature Toggle) глобального поиска (GlobalSearch, GlobalSearch_V2 GlobalSearchRelatedEntityIndexing), выполнив sql-скрипт:
DECLARE @GS_REIndexingFeature NVARCHAR(50) = 'GlobalSearchRelatedEntityIndexing';
DECLARE @GS_REIndexingFeatureId UNIQUEIDENTIFIER = (SELECT TOP 1 Id FROM Feature WHERE
Code = @GS_REIndexingFeature);
DECLARE @GlobalSearchFeature NVARCHAR(50) = 'GlobalSearch';
DECLARE @GlobalSearchFeatureId UNIQUEIDENTIFIER = (SELECT TOP 1 Id
FROM Feature WHERE Code = @GlobalSearchFeature);
DECLARE @GlobalSearchV2Feature NVARCHAR(50) = 'GlobalSearch_V2';
DECLARE @GlobalSearchV2FeatureId UNIQUEIDENTIFIER = (SELECT TOP 1 Id
FROM Feature WHERE Code = @GlobalSearchV2Feature);
DECLARE @allEmployeesId UNIQUEIDENTIFIER = 'A29A3BA5-4B0D-DE11-9A51-005056C00008';
IF (@GlobalSearchFeatureId IS NOT NULL)
BEGIN
IF EXISTS (SELECT * FROM AdminUnitFeatureState WHERE FeatureId =@GlobalSearchFeatureId)
UPDATE AdminUnitFeatureState SET FeatureState = 1 WHERE FeatureId = @GlobalSearchFeatureId
ELSE
INSERT INTO AdminUnitFeatureState (SysAdminUnitId, FeatureState, FeatureId) VALUES (@allEmployeesId, '1', @GlobalSearchFeatureId)
END
ELSE
BEGIN
SET @GlobalSearchFeatureId = NEWID()
INSERT INTO Feature (Id, Name, Code) VALUES (@GlobalSearchFeatureId, @GlobalSearchFeature, @GlobalSearchFeature)
INSERT INTO AdminUnitFeatureState (SysAdminUnitId, FeatureState,
FeatureId) VALUES (@allEmployeesId, '1', @GlobalSearchFeatureId)
END
IF (@GlobalSearchV2FeatureId IS NOT NULL)
BEGIN
IF EXISTS (SELECT * FROM AdminUnitFeatureState WHERE FeatureId = @GlobalSearchV2FeatureId)
UPDATE AdminUnitFeatureState SET FeatureState = 1 WHERE FeatureId = @GlobalSearchV2FeatureId
ELSE
INSERT INTO AdminUnitFeatureState (SysAdminUnitId, FeatureState, FeatureId) VALUES (@allEmployeesId, '1', @GlobalSearchV2FeatureId)
END
ELSE
BEGIN
SET @GlobalSearchV2FeatureId = NEWID()
INSERT INTO Feature (Id, Name, Code) VALUES (@GlobalSearchV2FeatureId, @GlobalSearchV2Feature, @GlobalSearchV2Feature)
INSERT INTO AdminUnitFeatureState (SysAdminUnitId, FeatureState,
FeatureId) VALUES (@allEmployeesId, '1', @GlobalSearchV2FeatureId)
END
IF (@GS_REIndexingFeatureId IS NOT NULL)
BEGIN
IF EXISTS (SELECT * FROM AdminUnitFeatureState WHERE FeatureId = @GS_REIndexingFeatureId)
UPDATE AdminUnitFeatureState SET FeatureState = 1 WHERE FeatureId = @GS_REIndexingFeatureId
ELSE
INSERT INTO AdminUnitFeatureState (SysAdminUnitId, FeatureState, FeatureId) VALUES (@allEmployeesId, '1',
@GS_REIndexingFeatureId)
END
ELSE
BEGIN
SET @GS_REIndexingFeatureId = NEWID()
INSERT INTO Feature (Id, Name, Code) VALUES (@GS_REIndexingFeatureId, @GS_REIndexingFeature, @GS_REIndexingFeature)
INSERT INTO AdminUnitFeatureState (SysAdminUnitId, FeatureState, FeatureId) VALUES (@allEmployeesId, '1', @GS_REIndexingFeatureId)
END
2.Для установки системных настроек “GlobalSearchUrl”, “GlobalSearchConfigServiceURL” и “GlobalSearchIndexingApiUrl” выполните следующий скрипт:
UPDATE SysSettingsValue
SET TextValue = [укажите URL к индексу ElasticSearch, строка типа: http://external.elasticsearch:9200/indexname]
WHERE SysSettingsId = (SELECT TOP 1 Id FROM SysSettings WHERE Code ='GlobalSearchUrl')
UPDATE SysSettingsValue
SET TextValue = [укажите URL к Global Search Service, строка типа: http://gsweb-api:81]
WHERE SysSettingsId = (SELECT TOP 1 Id FROM SysSettings WHERE Code ='GlobalSearchConfigServiceUrl')
UPDATE SysSettingsValue
SET TextValue = [укажите URL к Global Search Indexing Service, строка типа: http://gs-web-indexing-service:82]
WHERE SysSettingsId = (SELECT TOP 1 Id FROM SysSettings WHERE Code ='GlobalSearchIndexingApiUrl')
3.Перезапустите приложение bpm’online, очистите redis и выполните вход в приложение.
Для СУБД Oracle
1.Включите в bpm’online функциональность (Feature Toggle) глобального поиска (GlobalSearch, GlobalSearch_V2, GlobalSearchRelatedEntityIndexing), выполнив sql-скрипт:
CREATE OR REPLACE FUNCTION
generate_uuid return varchar2 is
v_uuid varchar2(38);
v_guid varchar2(32);
BEGIN
v_guid := sys_guid();
v_uuid := lower(
'{' ||
substr(v_guid, 1,8) || '-' ||
substr(v_guid, 9,4) || '-' ||
substr(v_guid, 13,4) || '-' ||
substr(v_guid, 17,4) || '-' ||
substr(v_guid, 21) ||
'}'
);
RETURN v_uuid;
END;
/
DECLARE
GS_REIndexingFeature VARCHAR(50) := 'GlobalSearchRelatedEntityIndexing';
GS_REIndexingFeatureId VARCHAR(38) := NULL;
GS_REIndexingFeatureId_GUID VARCHAR(38) := generate_uuid();
GlobalSearchFeature VARCHAR(50) := 'GlobalSearch';
GlobalSearchFeatureId VARCHAR(38) := NULL;
GlobalSearchFeatureId_GUID VARCHAR(38) := generate_uuid();
GlobalSearchV2Feature VARCHAR(50) := 'GlobalSearch_V2';
GlobalSearchV2FeatureId VARCHAR(38) := NULL;
GlobalSearchV2FeatureId_GUID VARCHAR(38) := generate_uuid();
allEmployeesId VARCHAR(38) := '{7F3B869F-34F3-4F20-AB4D-7480A5FDF647}';
State_GlobalSearch VARCHAR(1) := NULL;
State_GlobalSearchV2 VARCHAR(1) := NULL;
State_GS_REI VARCHAR(1) := NULL;
BEGIN
SELECT MAX("Id") INTO GlobalSearchFeatureId FROM "Feature" WHERE "Code" = GlobalSearchFeature AND rownum = 1;
SELECT MAX("Id") INTO GlobalSearchV2FeatureId FROM "Feature" WHERE "Code" = GlobalSearchV2Feature AND rownum = 1;
SELECT MAX("Id") INTO GS_REIndexingFeatureId FROM "Feature" WHERE "Code" = GS_REIndexingFeature AND rownum = 1;
SELECT MAX("FeatureState") INTO State_GlobalSearch FROM "AdminUnitFeatureState" WHERE "FeatureId" = GlobalSearchFeatureId AND rownum = 1;
SELECT MAX("FeatureState") INTO State_GlobalSearchV2 FROM "AdminUnitFeatureState" WHERE "FeatureId" = GlobalSearchV2FeatureId AND rownum = 1;
SELECT MAX("FeatureState") INTO State_GS_REI FROM "AdminUnitFeatureState" WHERE FeatureId" = GS_REIndexingFeatureId AND rownum = 1;
IF (GlobalSearchFeatureId IS NULL) THEN
INSERT INTO "Feature" ("Id", "Name", "Code") VALUES (GlobalSearchFeatureId_GUID, GlobalSearchFeature, GlobalSearchFeature);
INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState", "FeatureId") VALUES (allEmployeesId, '1', GlobalSearchFeatureId_GUID);
ELSE
IF (State_GlobalSearch IS NOT NULL) THEN
UPDATE "AdminUnitFeatureState" SET "FeatureState" = 1 WHERE "FeatureId" = GlobalSearchFeatureId;
ELSE
INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState", "FeatureId") VALUES (allEmployeesId, '1', GlobalSearchFeatureId_GUID);
END IF;
END IF;
IF (GlobalSearchV2FeatureId IS NULL) THEN
INSERT INTO "Feature" ("Id", "Name", "Code") VALUES (GlobalSearchV2FeatureId_GUID, GlobalSearchV2Feature, GlobalSearchV2Feature);
INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState", "FeatureId") VALUES (allEmployeesId, '1', GlobalSearchV2FeatureId_GUID);
ELSE
IF (State_GlobalSearchV2 IS NOT NULL) THEN
UPDATE "AdminUnitFeatureState" SET "FeatureState" = 1 WHERE "FeatureId" = GlobalSearchV2FeatureId;
ELSE
INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState", "FeatureId") VALUES (allEmployeesId, '1', GlobalSearchV2FeatureId_GUID);
END IF;
END IF;
IF (GS_REIndexingFeatureId IS NULL) THEN
INSERT INTO "Feature" ("Id", "Name", "Code") VALUES (GS_REIndexingFeatureId_GUID,GS_REIndexingFeature, GS_REIndexingFeature);
INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState","FeatureId") VALUES (allEmployeesId, '1', GS_REIndexingFeatureId_GUID);
ELSE
IF (State_GS_REI IS NOT NULL) THEN
UPDATE "AdminUnitFeatureState" SET "FeatureState" = 1 WHERE "FeatureId" =GS_REIndexingFeatureId;
ELSE
INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState","FeatureId") VALUES (allEmployeesId, '1', GS_REIndexingFeatureId_GUID);
END IF;
END IF;
END;
2.Для установки системных настроек “GlobalSearchUrl”, “GlobalSearchConfigServiceURL” и “GlobalSearchIndexingApiUrl” выполните следующий скрипт:
DECLARE
URL_SETTING_ID VARCHAR(38) := NULL;
CONFIG_URL_SETTING_ID VARCHAR(38) := NULL;
IND_API_SETTING_ID VARCHAR(38) := NULL;
URL_VAL_ID VARCHAR(38) := NULL;
CONFIG_URL_VAL_ID VARCHAR(38) := NULL;
IND_API_VAL_ID VARCHAR(38) := NULL;
SYS_ADMIN_UID VARCHAR(38) := '{A29A3BA5-4B0D-DE11-9A51-005056C00008}';
ES_IND VARCHAR(500) := '[укажите URL к индексу ElasticSearch, строка, сл. типа - http://external.elasticsearch:9200/indexname]';
CONFIG_URL VARCHAR(500) := '[укажите URL к Global Search Service, строка следующего типа: http://gs-web-api:81]';
IND_API_URL VARCHAR(500) := '[укажите URL к Global Search Indexing Service, строка следующего типа: http://gs-web-indexing-service:82]';
BEGIN
SELECT "Id" INTO URL_SETTING_ID FROM "SysSettings" WHERE "Code" = 'GlobalSearchUrl';
SELECT "Id" INTO CONFIG_URL_SETTING_ID FROM "SysSettings" WHERE "Code" = 'GlobalSearchConfigServiceUrl';
SELECT "Id" INTO IND_API_SETTING_ID FROM "SysSettings" WHERE "Code" = 'GlobalSearchIndexingApiUrl';
SELECT MAX("Id") INTO URL_VAL_ID FROM "SysSettingsValue" WHERE "SysSettingsId" = URL_SETTING_ID;
SELECT MAX("Id") INTO CONFIG_URL_VAL_ID FROM "SysSettingsValue" WHERE "SysSettingsId" = CONFIG_URL_SETTING_ID;
SELECT MAX("Id") INTO IND_API_VAL_ID FROM "SysSettingsValue" WHERE "SysSettingsId" = IND_API_SETTING_ID;
IF (URL_VAL_ID IS NULL)
THEN
INSERT INTO "SysSettingsValue"
("SysSettingsId", "SysAdminUnitId", "IsDef", "TextValue")
VALUES
(URL_SETTING_ID, SYS_ADMIN_UID, '1', ES_IND);
ELSE
UPDATE "SysSettingsValue" SET "TextValue" = ES_IND WHERE "SysSettingsId" = URL_SETTING_ID;
END IF;
IF (CONFIG_URL_VAL_ID IS NULL)
THEN
INSERT INTO "SysSettingsValue"
("SysSettingsId", "SysAdminUnitId", "IsDef", "TextValue")
VALUES
(CONFIG_URL_SETTING_ID, SYS_ADMIN_UID, '1', CONFIG_URL);
ELSE
UPDATE "SysSettingsValue" SET "TextValue" = CONFIG_URL WHERE "SysSettingsId" = CONFIG_URL_SETTING_ID;
END IF;
IF (IND_API_VAL_ID IS NULL)
THEN
INSERT INTO "SysSettingsValue"
("SysSettingsId", "SysAdminUnitId", "IsDef", "TextValue")
VALUES
(IND_API_SETTING_ID, SYS_ADMIN_UID, '1', IND_API_URL);
ELSE
UPDATE "SysSettingsValue" SET "TextValue" = IND_API_URL WHERE "SysSettingsId" = IND_API_SETTING_ID;
END IF;
END;
3.Перезапустите приложение bpm’online, очистите redis и выполните вход в приложение.
Для СУБД PostgreSql
1.Включите в bpm’online функциональность (Feature Toggle) глобального поиска (GlobalSearch, GlobalSearch_V2, GlobalSearchRelatedEntityIndexing), выполнив sql-скрипт:
DO $$
DECLARE
GlobalSearchFeature VARCHAR(50) := 'GlobalSearch';
GlobalSearchFeatureId uuid;
GlobalSearchV2Feature VARCHAR(50) := 'GlobalSearch_V2';
GlobalSearchV2FeatureId uuid;
GS_RelatedEntityIndexingFeature VARCHAR(50) := 'GlobalSearchRelatedEntityIndexing';
GS_RelatedEntityIndexingFeatureId uuid;
allEmployeesId uuid := 'A29A3BA5-4B0D-DE11-9A51-005056C00008';
BEGIN
SELECT "Id" INTO GlobalSearchFeatureId FROM "Feature"
WHERE "Code" = GlobalSearchFeature
LIMIT 1;
IF (GlobalSearchFeatureId IS NOT NULL)
THEN
IF EXISTS (SELECT * FROM "AdminUnitFeatureState" WHERE "FeatureId" = GlobalSearchFeatureId) THEN
UPDATE "AdminUnitFeatureState" SET "FeatureState" = 1 WHERE "FeatureId" = GlobalSearchFeatureId;
ELSE
INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState", "FeatureId") VALUES (allEmployeesId, '1', GlobalSearchFeatureId);
END IF;
ELSE
GlobalSearchFeatureId := uuid_generate_v4();
INSERT INTO "Feature" ("Id", "Name", "Code") VALUES (GlobalSearchFeatureId, GlobalSearchFeature, GlobalSearchFeature);
INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState", "FeatureId") VALUES (allEmployeesId, '1', GlobalSearchFeatureId);
END IF;
SELECT "Id" INTO GlobalSearchV2FeatureId FROM "Feature"
WHERE "Code" = GlobalSearchV2Feature
LIMIT 1;
IF (GlobalSearchV2FeatureId IS NOT NULL)
THEN
IF EXISTS (SELECT * FROM "AdminUnitFeatureState" WHERE "FeatureId" = GlobalSearchV2FeatureId) THEN
UPDATE "AdminUnitFeatureState" SET "FeatureState" = 1 WHERE "FeatureId" = GlobalSearchV2FeatureId;
ELSE
INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState", "FeatureId") VALUES (allEmployeesId, '1', GlobalSearchV2FeatureId);
END IF;
ELSE
GlobalSearchV2FeatureId := uuid_generate_v4();
INSERT INTO "Feature" ("Id", "Name", "Code") VALUES (GlobalSearchV2FeatureId, GlobalSearchV2Feature, GlobalSearchV2Feature);
INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState", "FeatureId") VALUES (allEmployeesId, '1', GlobalSearchV2FeatureId);
END IF;
SELECT "Id" INTO GS_RelatedEntityIndexingFeatureId FROM "Feature" WHERE "Code" =GS_RelatedEntityIndexingFeature LIMIT 1;
IF (GS_RelatedEntityIndexingFeatureId IS NOT NULL)
THEN
IF EXISTS (SELECT * FROM "AdminUnitFeatureState" WHERE "FeatureId" = GS_RelatedEntityIndexingFeatureId) THEN
UPDATE "AdminUnitFeatureState" SET "FeatureState" = 1 WHERE "FeatureId" = GS_RelatedEntityIndexingFeatureId;
ELSE
INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState","FeatureId") VALUES (allEmployeesId, '1', GS_RelatedEntityIndexingFeatureId);
END IF;
ELSE
GS_RelatedEntityIndexingFeatureId := uuid_generate_v4();
INSERT INTO "Feature" ("Id", "Name", "Code") VALUES (GS_RelatedEntityIndexingFeatureId, GS_RelatedEntityIndexingFeature, GS_RelatedEntityIndexingFeature);
INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState","FeatureId") VALUES (allEmployeesId, '1', GS_RelatedEntityIndexingFeatureId);
END IF;
END $$;
2.Для установки системных настроек “GlobalSearchUrl”, “GlobalSearchConfigServiceURL” и “GlobalSearchIndexingApiUrl” выполните следующий скрипт:
UPDATE "SysSettingsValue"
SET "TextValue" = [укажите URL к индексу ElasticSearch, строка следующего типа: http://external.elasticsearch:9200/indexname]
WHERE "SysSettingsId" = (SELECT "Id" FROM "SysSettings" WHERE "Code" =
'GlobalSearchUrl' LIMIT 1 );
UPDATE "SysSettingsValue"
SET "TextValue" = [укажите URL к Global Search Service, строка следующего типа: http://gs-web-api:81]
WHERE "SysSettingsId" = (SELECT "Id" FROM "SysSettings" WHERE "Code" = 'GlobalSearchConfigServiceUrl' LIMIT 1 );
UPDATE "SysSettingsValue"
SET "TextValue" = [укажите URL к Global Search Indexing Service, строка, сл. типа - http://gs-web-indexing-service:82]
WHERE "SysSettingsId" = (SELECT "Id" FROM "SysSettings" WHERE "Code" = 'GlobalSearchIndexingApiUrl' LIMIT 1 );
3.Перезапустите приложение bpm’online, очистите redis и выполните вход в приложение.
База данных наполняется системными записями при первом запуске сервиса глобального поиска. До этого не существует даже файла базы данных, поскольку БД является автогенерируемой.
Смотрите также