Сервис для автоматизации бизнес-процессов в вашей организации.

В одной стандартной организации работает достаточно много людей. Большой отдел маркетинга, который постоянно генерирует миллион классных идей, большой отдел продаж, которому требуется оперативно видеть все изменения в CRM, и т.д. и т.п.

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

Вариант, когда множество систем общаются между собой напрямую уже был испробован и пришло понимание, что он не подходит, т.к. сложно поддерживать и развивать.

Чтобы избавиться от этого, принято решение реализовать центральную систему, которая будет обеспечивать взаимодействие сервисов. Некий оркестратор.

Получился конвейер обработки запросов. Пришедший набор данных встает на “конвейер” и обрабатывается по шагам. На каждом шаге данные получает один из модулей, который может быть как отдельным сервисом, так и частью целого.

Путь заявки по обработчикам задан в настройках. Пока настройки это массив PHP неограниченной вложенности, но когда-нибудь появится интерфейс.

Пример настроек:

'get-bitrix-deal'                             => [
            'id'        => 'get-bitrix-deal',
            'subsystem' => 'find-deal',
            'next'      => ['remember-deal'],
            'prev'      => ['prev-step'],
            'condition' => [
              [
                'field'     => 'get-bitrix-deal.value',
                'operation' => 'empty',
                'success'   => [
                  [
                    'field'     => 'bitrix-find-contact.ID',
                    'operation' => 'empty',
                    'result'    => ['bitrix-lead-set-default-values'],
                  ],
                ],
              ],
              [
                'field'     => 'get-bitrix-deal.value',
                'operation' => '!|empty',
                'result'    => ['get-bitrix-deal-by-id'],
              ],
            ],
          ]

Верхнеуровнево система выглядит следующим образом:

Диаграмма компонентов интеграционного хаба

Реализация на PHP и Laravel.

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

Еще одним требованием была универсальность системы. Нельзя было затачивать ее функционал под конкретные нужды, т.к. сегодня они одни, а завтра другие. Поэтому на вход могут поступать совершенно разные наборы данных, обработка которых настраивается.

Есть модуль API, который принимает запросы из-вне. Этот модуль имеет расширение, которое позволяет буферизировать запросы и выполнять их либо по расписанию, либо пачками, например, по 10 штук в минуту.

Далее формируется событие NewRequest, которое перехватывается модулем маршрутизации(supervisor). Супервайзер определяет следующий шаг и передаёт диспетчеру.

Диспетчер определяет как отправлять запрос в указанный модуль – событием внутри системы, по HTTP, либо поставить задачу в очередь.

Модуль перехватывает событие, обрабатывает как надо, добавляет в него необходимые данные и отправляет событие обратно.

Супервайзер в свою очередь перехватывает ответ модуля, фиксирует изменения, вычисляет следующий шаг и т.д. до тех пор пока не дойдет до конца бизнес-процесса.

На текущий момент реализованы следующие модули:

И основные модули:

Пример реальной схемы бизнес-процессов, построенных с помощью этих модулей:

Пример реальной схемы бизнес-процессов, построенных с помощью интеграционного хаба

Нужно подобное решение?

Оставьте свой номер телефона и мы обязательно с Вами свяжемся в самое ближайшее время, обсудим проблему и предложим решение

БЛОГ

Наши мысли

Пишем про интересные кейсы из нашей практики. И не только на технические темы.