Документация

bpm'online sales enterprise
PDF

Настройка глобального поиска

Сервис глобального поиска (Global Search Service) создан для интеграции ElasticSearch c bpm’online и выполняет следующие функции:

Регистрирующую:

Подписывает клиента, создавая индекс в ElasticSearch и сохраняет связь индекс-приложение.

Отключает клиента, по требованию удаляя индекс в ElasticSearch.

Транспортную:

Участвует в процессе индексации — забирает данные из базы данных.

В статье представлена инструкция по настройке глобального поиска для пользователей bpm’online версий 7.11.3 и выше.

На заметку

Настройка глобального поиска для пользователей предыдущих версий системы (по 7.11.2 включительно) описана в отдельной статье. Подробнее >>>

Для настройки необходим сервер (физическая или виртуальная машина) с установленной ОС Linux. Развертывание компонентов глобального поиска выполняется на ПО Docker.

На заметку

В зависимости от потребностей вашей компании можно использовать Docker Community Edition (CE) или Enterprise Edition (EE). Подробную информацию вы найдете в документации Docker.

Важно

Для настройки глобального поиска необходимы базовые знания администрирования ПО Docker и ОС Linux.

Рекомендуемые системные требования к серверу для настройки глобального поиска

Операционная система

Pentium 4, Athlon 64 и выше с поддержкой SSE2

ОЗУ (RAM)

3 ГБ

НЖМД (HDD)

20 ГБ

ОС

Дистрибутив Linux, в котором поддерживается Docker. Поддерживаемые семейства Linux вы найдете в документации Docker.

Компоненты глобального поиска

gs-web-api — web-сервис конфигурирования компонентов глобального поиска.

gs-scheduler — планировщик задач индексации данных из BPM в ElasticSearch.

gs-worker — компонент индексирования данных из BPM в ElasticSearch по задачам планировщика.

gs-worker-replay — компонент, обрабатывающий результаты индексации (результаты работы gs-worker-а).

rabbitmq — брокер сообщений.

elasticsearch — поисковый движок.

mysql — база данных конфигурирования компонентов глобального поиска.

Важно

Для продуктивной среды рекомендуем разворачивать компоненты ElasticSearch, RabbitMQ и MySQL в отказоустойчивых кластерах. Если перечисленные компоненты развернуты отдельно, то потребуется отключить развертывание этих компонентов в Docker-контейнере с помощью переменных RUN_RABBITMQ, RUN_ELASTICSEARCH и RUN_MYSQL.

Последовательность действий для настройки глобального поиска

1.Установить Docker на физическую или виртуальную машину с операционной системой Linux. Подробнее >>>

2.Установить ElasticSearch. Подробнее >>>

3.Установить RabbitMQ. Подробнее >>>

4.Настроить MySQL. Подробнее >>>

5.Настроить переменные контейнеров. Подробнее >>>

6.Установить и запустить компоненты Global Search Service. Подробнее >>>

7.Выполнить первичное наполнение БД. Подробнее >>>

8.Подключить функциональность глобального поиска в bpm’online. Подробнее >>>

Содержание

Установка 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/default-env. Установите значения таким переменным, отредактировав файл ./docker/linux/default-env.

Настройка переменных для Oracle

Для приложений bpm’online, использующих БД Oracle, необходимо изменить переменную GS_WORKER_DB_CONNECTION_STRING_PATTERN в файле Docker/linux/oracle-env.

Настройка переменных для MS SQL

gs_worker_db_connection_string_pattern

Шаблон подключения к базе данных bpm’online. Укажите пользователя [DBLogin], пароль [DBPassword], сервер базы данных bpm’online [DBServerName] (например, dbserver\\mssql2016) и имя базы данных bpm’online [DBName].

Так как контейнеры запущены под управлением операционной системы Linux, то Windows-авторизация не поддерживается. Для авторизации необходимо создать sql-пользователя или использовать существующего.

gs_es_url

Укажите [LinuxHostName]. Если компонент ElasticSearch развернут вместе с остальными компонентами, то это IP-адрес или имя хоста linux-машины. Если ElasticSearch развернут отдельно — это IP-адрес хоста, на котором развернут ElasticSearch.

run_rabbitmq

Значение по умолчанию — 1. При установленном значении “1” будет запускаться контейнер с RabbitMQ. Если контейнер с RabbitMQ запускать не требуется, то установите “0”.

run_elasticsearch

Значение по умолчанию — 1. При установленном значении “1” будет запускаться контейнер с ElasticSearch. Если контейнер с ElasticSearch запускать не требуется, то установите “0”.

run_mysql

Значение по умолчанию — 1. При установленном значении “1” будет запускаться контейнер с MySQL. Если контейнер с MySQL запускать не требуется, то установите “0”.

Установите значения перечисленных ниже параметров, только если компоненты 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 — пароль.

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

Важно

Для успешного запуска контейнера gs-web-api должен быть свободен 81 порт. В противном случае необходимо изменить переменную $WEB_API_PORT.

1.Скопируйте папку Docker из дистрибутива на linux-машину.

2.Если приложение bpm'online развернуто на MS SQL, то запустите команду:

sh Docker/linux/run.sh mysql mssql 1.0

3.Если приложение bpm'online развернуто на Oracle, то запустите команду:

sh Docker/linux/run.sh mysql oracle 1.0

После успешного запуска контейнеров будут автоматически смонтированы следующие Docker тома (volumes):

globalsearch (используют gs-web-api, gs-worker);

es1, если RUN_ELASTICSEARCH=1 (es-node1);

es2, если RUN_ELASTICSEARCH=1 (es-node2);

mysql, если RUN_MYSQL=1;

rabbitmq, если RUN_RABBITMQ=1.

На заметку

Монтирование внутри контейнеров глобального поиска выполняется по пути /usr/share/globalsearch.
Информацию о созданном томе выводит docker volume inspect globalsearch.
При прекращении работы одного из контейнеров (MySQL, RabbitMQ или ElasticSearch) данные будут сохраняться на внешнем диске вне docker-контейнера. Детальная информация о томах доступна в документации Docker. Подробнее >>>

Проверка удачного запуска контейнеров

Для просмотра всех запущенных контейнеров введите в консоль команду docker ps -a.

Должны быть запущены следующие контейнеры:

gs-scheduler;

gs-worker:

gs-worker1;

gs-worker2;

gs-worker3;

gs-worker-replay;

gs-web-api — по умолчанию внешний порт 81;

ES, если RUN_ELASTICSEARCH = 1:

es-node1;

es-node2;

rabbitmq, если RUN_RABBITMQ = 1;

gs-mysql, если RUN_MYSQL = 1.

Логирование

По умолчанию логирование происходит во время выполнения команды “stdout” контейнеров.

На заметку

docker logs --tail 100 gs-worker выводит 100 последних строк логов из контейнера gs-worker.

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

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

Подключение сервиса глобального поиска в 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 выполните следующие действия:

1.Включите в bpm’online функциональность (Feature Toggle) глобального поиска (GlobalSearch, GlobalSearch_V2), выполнив sql-скрипт:

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

2.Для установки системных настроек (GlobalSearchUrl, GlobalSearchConfigServiceURL) выполните следующий скрипт:

UPDATE SysSettingsValue
SET TextValue = [укажите URL к индексу ElasticSearch, строка, сл. типа - http://elasticsearch.local:9200/indexnamelong]
WHERE SysSettingsId = (SELECT TOP 1 Id FROM SysSettings WHERE Code =
 'GlobalSearchUrl')

UPDATE SysSettingsValue
SET TextValue = [укажите URL к Global Search Service, строка, сл. типа - http://gs-web-api:81]
WHERE SysSettingsId = (SELECT TOP 1 Id FROM SysSettings WHERE Code ='GlobalSearchConfigServiceUrl')

3.Перезапустите приложение bpm’online, очистите redis и выполните вход в приложение.

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

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

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

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

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