Развертывание сервиса поиска и объединения дублей через Docker

Средний
Инструкция применима для сервиса поиска и объединения дублей версии 4.0.0.
Инструкция подходит для развертывания в своем окружении, соответствующем системным требованиям BPMSoft. При развертывании BPMSoft в инфраструктуре других облачных провайдеров необходимо учитывать особенности и возможные ограничения инфраструктуры и предоставляемых доступов. Для уточнения деталей или при возникновении вопросов рекомендуем обратиться к документации или поддержке облачного провайдера.

Подготовка к развертыванию

Перед установкой сервиса поиска и объединения дублей выполните следующее:

  1. Для предоставления доступа к архиву с файлами для развертывания обратитесь в Техническую поддержку BPMSoft.
  2. Перед установкой убедитесь в том, что среда, на которую вы хотите устанавливать сервис, соответствует системным требованиям.
  3. Для работы установите Docker Desktop версии 4.3.0 и выше.
  4. Убедитесь, что в файле ConnectionStrings.config на стороне BPMSoft присутствует параметр elasticsearchCredentials.
Микросервис рекомендуется развертывать на выделенной виртуальной машине, недоступной из внешней сети. Следует открыть только порты, необходимые для взаимодействия с основным приложением, и разрешить подключения к ним только с IP-адресов серверов основного приложения.

Развертывание сервиса поиска и объединения дублей

Для запуска сервиса необходимо:

  1. На компьютере с Linux или в WSL2 (для Windows) создайте папку для файлов Docker Compose, связанных с сервисом поиска и объединения дублей.
sudo mkdir /usr/dd
  1. Переместите файл docker-compose в домашнюю директорию пользователя (~), используя Linux или WSL2 (для Windows).
  2. Скопируйте и разархивируйте файлы docker-compose в созданную директорию. Замените на соответствующую версию релиза.
sudo cp ~/dd-<release>-docker.zip /usr/dd && cd /usr/dd && sudo unzip dd-<release>-docker.zip
  1. Откройте папку src, где хранятся файлы docker-compose.
cd src
  1. Для запуска инфраструктуры сервиса поиска и объединения дублей выполните следующую команду:
sudo docker compose -f docker-compose.infr.yaml up -d
Важно сначала запустить инфраструктуру, так как в этот момент создается сеть, которая связывает инфраструктурные сервисы и сервис поиска и объединения дублей.
  1. Перед запуском компонент сервиса поиска и объединения дублей проверьте и, при необходимости, настройте переменные окружения в файле .env:
    • DOCKER_TAG указывает версию Deduplication;
    • DOCKER_REPO определяет репозиторий, откуда Docker будет скачивать образы сервисов Deduplication. По умолчанию используется bpmsoft на docker.io (т. е. DOCKER_REPO=bpmsoft). Измените это значение, если используете собственный прокси-репозиторий в закрытых сетях без доступа в сеть Интернет, например: DOCKER_REPO=bpmsoft-docker-repo.company.ru/bpmsoft/dd.
  1. Установите сервис:
docker compose -f docker-compose.yaml up -d

Настройка на стороне BPMSoft

  1. Заполните системную настройку DeduplicationWebApiUrl значением URL к dd-web-api, строка следующего типа: http://external.deduplication-web-api:8086;
  2. Настройте права на системную операцию CanSearchDuplicates — раздайте права необходимым пользователям/ролям, которые смогут выполнять поиск дублей;
  3. Включите в системе функциональность массового поиска дублей. Для включения функциональности массового поиска дублей (Deduplication, ESDeduplication, BulkESDeduplication) необходимо выполнить SQL-скрипт:
  4. Очистите кэш, перезапустите приложение и выполните вход в приложение.

Ресурсы

Скрипт включения функциональности для Microsoft SQL Server

MSSQL_Deduplication_FeatureToggle.sql
DECLARE @DeduplicationFeature NVARCHAR(50) = 'Deduplication';
DECLARE @DeduplicationFeatureId UNIQUEIDENTIFIER = (SELECT TOP 1 Id FROM Feature WHERE Code = @DeduplicationFeature);

DECLARE @ESDeduplicationFeature NVARCHAR(50) = 'ESDeduplication';
DECLARE @ESDeduplicationFeatureId UNIQUEIDENTIFIER = (SELECT TOP 1 Id FROM Feature WHERE Code = @ESDeduplicationFeature);

DECLARE @Bulk_ES_DD_Feature NVARCHAR(50) = 'BulkESDeduplication';
DECLARE @Bulk_ES_DD_FeatureId UNIQUEIDENTIFIER = (SELECT TOP 1 Id 
FROM Feature WHERE Code =@Bulk_ES_DD_Feature);

DECLARE @allEmployeesId UNIQUEIDENTIFIER = 'A29A3BA5-4B0D-DE11-9A51-005056C00008';
IF (@DeduplicationFeatureId IS NOT NULL)
BEGIN
      IF EXISTS (SELECT * FROM AdminUnitFeatureState WHERE FeatureId = @DeduplicationFeatureId)
       UPDATE AdminUnitFeatureState SET FeatureState = 1 WHERE FeatureId =@DeduplicationFeatureId
      ELSE
       INSERT INTO AdminUnitFeatureState (SysAdminUnitId, FeatureState, FeatureId) VALUES (@allEmployeesId, '1',
@DeduplicationFeatureId)
END;
ELSE
BEGIN
      SET @DeduplicationFeatureId = NEWID()
      INSERT INTO Feature (Id, Name, Code) VALUES
(@DeduplicationFeatureId, @DeduplicationFeature, @DeduplicationFeature)
       INSERT INTO AdminUnitFeatureState (SysAdminUnitId, FeatureState, FeatureId) VALUES (@allEmployeesId, '1', @DeduplicationFeatureId)
END;

IF (@ESDeduplicationFeatureId IS NOT NULL)
BEGIN
      IF EXISTS (SELECT * FROM AdminUnitFeatureState WHERE FeatureId = @ESDeduplicationFeatureId)
     UPDATE AdminUnitFeatureState SET FeatureState = 1 WHERE FeatureId = @ESDeduplicationFeatureId
      ELSE
       INSERT INTO AdminUnitFeatureState (SysAdminUnitId, FeatureState, FeatureId) VALUES (@allEmployeesId, '1', @ESDeduplicationFeatureId)
END;
ELSE
BEGIN
      SET @ESDeduplicationFeatureId = NEWID()
      INSERT INTO Feature (Id, Name, Code) VALUES (@ESDeduplicationFeatureId, @ESDeduplicationFeature, @ESDeduplicationFeature)
      INSERT INTO AdminUnitFeatureState (SysAdminUnitId, FeatureState, FeatureId) VALUES (@allEmployeesId, '1', @ESDeduplicationFeatureId)
END;

IF (@Bulk_ES_DD_FeatureId IS NOT NULL)
BEGIN
      IF EXISTS (SELECT * FROM AdminUnitFeatureState WHERE FeatureId = @Bulk_ES_DD_FeatureId)
       UPDATE AdminUnitFeatureState SET FeatureState = 1 WHERE FeatureId =@Bulk_ES_DD_FeatureId
      ELSE
       INSERT INTO AdminUnitFeatureState (SysAdminUnitId, FeatureState,FeatureId) VALUES (@allEmployeesId, '1', @Bulk_ES_DD_FeatureId)
END;
ELSE
BEGIN
      SET @Bulk_ES_DD_FeatureId = NEWID()
      INSERT INTO Feature (Id, Name, Code) VALUES (@Bulk_ES_DD_FeatureId, @Bulk_ES_DD_Feature, @Bulk_ES_DD_Feature)
      INSERT INTO AdminUnitFeatureState (SysAdminUnitId, FeatureState, FeatureId) VALUES (@allEmployeesId, '1', @Bulk_ES_DD_FeatureId)
END;

↑ Вернуться к шагу Настройка на стороне BPMSoft

Скрипт включения функциональности для PostgreSQL

PostgreSQL_Deduplication_FeatureToggle.sql
DO $$

DECLARE
	DeduplicationFeature VARCHAR(50) := 'Deduplication';
	DeduplicationFeatureId uuid;

	ESDeduplicationFeature VARCHAR(50) := 'ESDeduplication';
	ESDeduplicationFeatureId uuid;

	Bulk_ES_DD_Feature VARCHAR(50) := 'BulkESDeduplication';
	Bulk_ES_DD_FeatureId uuid;

  allEmployeesId uuid := 'A29A3BA5-4B0D-DE11-9A51-005056C00008';

BEGIN

	SELECT "Id" INTO DeduplicationFeatureId FROM "Feature"
	WHERE "Code" = DeduplicationFeature
	LIMIT 1;
	IF (DeduplicationFeatureId IS NOT NULL)
		THEN
			IF EXISTS (SELECT * FROM "AdminUnitFeatureState" WHERE "FeatureId" = DeduplicationFeatureId) THEN
				UPDATE "AdminUnitFeatureState" SET "FeatureState" = 1 WHERE "FeatureId" = DeduplicationFeatureId;
			ELSE
				INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState", "FeatureId") VALUES (allEmployeesId, '1', DeduplicationFeatureId);
			END IF;
	ELSE
		DeduplicationFeatureId := uuid_generate_v4();
		INSERT INTO "Feature" ("Id", "Name", "Code") VALUES (DeduplicationFeatureId, DeduplicationFeature, DeduplicationFeature);
		INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState", "FeatureId") VALUES (allEmployeesId, '1', DeduplicationFeatureId);
	END IF;

	SELECT "Id" INTO ESDeduplicationFeatureId FROM "Feature"
	WHERE "Code" = ESDeduplicationFeature
	LIMIT 1;
	IF (ESDeduplicationFeatureId IS NOT NULL)
		THEN
			IF EXISTS (SELECT * FROM "AdminUnitFeatureState" WHERE "FeatureId" = ESDeduplicationFeatureId) THEN
				UPDATE "AdminUnitFeatureState" SET "FeatureState" = 1 WHERE "FeatureId" = ESDeduplicationFeatureId;
			ELSE
				INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState", "FeatureId") VALUES (allEmployeesId, '1', ESDeduplicationFeatureId);
			END IF;
	ELSE
		ESDeduplicationFeatureId := uuid_generate_v4();
		INSERT INTO "Feature" ("Id", "Name", "Code") VALUES (ESDeduplicationFeatureId, ESDeduplicationFeature, ESDeduplicationFeature);
		INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState", "FeatureId") VALUES (allEmployeesId, '1', ESDeduplicationFeatureId);
	END IF;

	SELECT "Id" INTO Bulk_ES_DD_FeatureId FROM "Feature"
	WHERE "Code" = Bulk_ES_DD_Feature
	LIMIT 1;
	IF (Bulk_ES_DD_FeatureId IS NOT NULL)
		THEN
			IF EXISTS (SELECT * FROM "AdminUnitFeatureState" WHERE "FeatureId" = Bulk_ES_DD_FeatureId) THEN
				UPDATE "AdminUnitFeatureState" SET "FeatureState" = 1 WHERE "FeatureId" = Bulk_ES_DD_FeatureId;
			ELSE
				INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState", "FeatureId") VALUES (allEmployeesId, '1', Bulk_ES_DD_FeatureId);
			END IF;
	ELSE
		Bulk_ES_DD_FeatureId := uuid_generate_v4();
		INSERT INTO "Feature" ("Id", "Name", "Code") VALUES (Bulk_ES_DD_FeatureId, Bulk_ES_DD_Feature, Bulk_ES_DD_Feature);
		INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState", "FeatureId") VALUES (allEmployeesId, '1', Bulk_ES_DD_FeatureId);
	END IF;
END $$;

↑ Вернуться к шагу Настройка на стороне BPMSoft

Рекомендуем изучить

Сервис поиска и объединения дублей

Материал был полезен для вас?
Запросить демонстрацию
Купить приложение
Заявка на индивидуальный тренинг
Заявка на обучение в формате тренинга
Заявка на консультацию по обучению
Готовы сделать выбор CRM? (детальная)
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Предпочитаемый способ связи
Вебинар: 10 ноября в 11:00
Разберём, как повысить эффективность управления ИТ-инфраструктурой с помощью ITSM и Service Desk. Обсудим, как сократить операционные затраты и ускорить бизнес-процессы в 2 раза, на реальном опыте ПАО «Трубная металлургическая компания» (ТМК) и Группы Rubytech.
Готовы сделать выбор CRM?
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Предпочитаемый способ связи
Готовы сделать выбор CRM? (детальная)
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Предпочитаемый способ связи
Готовы сделать выбор CRM?
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Предпочитаемый способ связи
Регистрация на мероприятие
Типовое внедрение
Внедрите BPMSoft CRM в свою компанию всего за 8 рабочих дней по фиксированной цене! Заполните заявку для уточнения условий.
Предпочитаемый способ связи
Оставить заявку
Оставьте свои контакты, и наш менеджер свяжется с Вами в ближайшее время.
Предпочитаемый способ связи
Демонстрационная версия BPMSoft
Заполните заявку для получения бесплатного доступа к демонстрационному стенду на 14 дней.
Заказать презентацию
Наш менеджер свяжется с Вами в ближайшее время.
Предпочитаемый способ связи
Рассчитать стоимость
Предпочитаемый способ связи
Лучшие CRM-системы в России: выводы Фонда «Сколково»
Задать вопрос
Предпочитаемый способ связи
Есть вопросы?
Не нашли для себя подходящую вакансию, или остались вопросы?
*
Есть вопросы?
Не нашли для себя подходящую вакансию, или остались вопросы?
*
Присоединяйтесь к партнерской сети BPMSoft
Оставьте свои контакты, и наш менеджер свяжется с Вами в ближайшее время
Тип партнерства*
Управление полным жизненным циклом клиента: от генерации лидов и продаж до внедрения, поддержки и продления подписки.
Разработка собственного Приложения – производного программного обеспечения, созданного на платформе BPMSoft (Базовое ПО).
Заявка на онлайн-консультации по BPMSoft
Оставьте свои контакты, и наш менеджер свяжется с Вами в ближайшее время
Стать образовательным партнёром
Оставьте свои контакты, и наш менеджер свяжется с Вами в ближайшее время.
Заявка на консультацию
Оставьте свои контакты, и наш менеджер свяжется с Вами в ближайшее время.
Подписка
Спасибо!
Ваша заявка принята.
Спасибо!
Ваша заявка принята.
Наш сотрудник свяжется с вами в течение 1-2 рабочих дней.
Внимание!
Обнаружена ошибка.
Внимание!
Обнаружена ошибка.
Вы подписаны на новостную рассылку от BPMSoft.
Вы подписаны на новостную рассылку от BPMSoft.
MAX Подписаться
Уважаемые клиенты! Предупреждаем о случаях недобросовестной конкуренции и мошенничестве в сети Интернет.
Подробнее