Движок - понятие внутри системы iikoWeb, обозначающее одно законченное действие на конкретном этапе процесса. Движки могут быть взаимозаменяемы или последовательны, в зависимости от архитектуры приложения.
При выполнении обмена между внешней системой и iiko возможны бизнес сценарии, когда за 1 итерацию при одних и тех же параметрах подключения и сопоставления необходимо выгрузить несколько файлов или
отправить во внешнюю систему несколько отчетов. В данном случае ломается система
выгрузить данные -> преобразовать -> загрузить данные
, так как данное действие необходимо выполнять несколько раз.
Для этого есть механизм группировки действий (движок).
# Пример объявления сервиса
exchange.acme.engine:
class: iikoExchangeBundle\Engine\ExchangeEngine
arguments: [ 'ENGINE_CODE' ]
calls:
- [ setRequests, [ [ '@exchange.acme.request.sales' ] ] ]
- [ setFormatter, [ '@exchange.acme.formatter.sales' ] ]
- [ setTransformer, [ '@exchange.acme.transformer' ] ]
В движок подключаются
- запросы
- форматер
- трансформер
Подробнее про каждый подключаемый модуль можно найти на главной странице документации.
При такой архитектуре, появляется возможность выгрузить N файлов, например, и попросить пользователя только 1 раз заполнить данные для подключения, сопоставления и другие общие настройки.
Так же настройки могут быть и уникальными для каждого движка.
Как конкретно работает механизм обмена и как взаимодействуют движки на примере кода можно посмотреть в ExchangeManager::runExchange