После трансформации бизнес модель необходимо привести к формату данных, который примет соединение, созданное на этапе 2.
Чтобы процесс преобразования данных в бизнес модель принимающий стороны отделить от фазы преобразования в запрос к FTP или HTTP серверу, добавлена стадия форматирования. Это позволяет быстро менять стиль выгрузки от alfa-ftp до полноценной выгрузки в более сложную систему.
Тип данных между трансформацией и форматированием жестко не определен.
Для реализации класса форматирования необходимо наследовать базовый класс Formatter
и реализовать функцию getFormattedData
, принимающую на вход Exchange
и данные, которые вернула трансформация.
В некоторых случаях принимающей системе необходимо на каждую строку олапа/справочника отправить отдельный запрос. Так как количество строк заранее не определено или может быть большим, функционал движков здесь не подойдет.
C помощью yield и \Iterator можно сообщить сервису обмена, что при форматировании получился цикл запросов,
которые необходимо выполнить. Таким образом сервис обмена будет выполнять запросы ($exchange->getLoader()->sendRequest($item);
), пока вы их генерируете.
Пример реализации
public function getFormattedData(Exchange $exchange, $data): \Iterator
{
foreach ($data as $item)
{
yield new DataPostRequest($item);
}
}