Creatio administration
Это документация Creatio версии 7.13.0. Мы рекомендуем использовать новую версию документации.

Настройка сервиса глобального поиска версии 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 выполнять не нужно.

Содержание

Установка Docker

Установка RabbitMQ

Установка ElasticSearch

Установка MySQL

Настройка переменных контейнеров

Запуск контейнеров с компонентами Global Search Service

Подключение сервиса глобального поиска в bpm’online

Первичное наполнение БД

Установка Docker

Для разворачивания компонентов глобального поиска необходимо установить Docker на операционную систему Linux. Для установки воспользуйтесь инструкцией в документации Docker. Подробнее >>>

Для проверки установленной версии Docker запустите команду docker --version на linux-машине.

Установка RabbitMQ

Для установки RabbitMQ cluster для Docker воспользуйтесь инструкцией. Подробнее >>> 

Для установки RabbitMQ cluster без Docker воспользуйтесь инструкцией в документации RabbitMQ. Подробнее >>> 

Установка ElasticSearch

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

Для установки 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 и выполните вход в приложение.

Первичное наполнение БД

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

Смотрите также

Описание API сервиса глобального поиска

Глобальный поиск

Был ли данный материал полезен?

Как можно улучшить эту статью?