Skip to content

Latest commit

 

History

History
38 lines (26 loc) · 2.41 KB

Formatter.md

File metadata and controls

38 lines (26 loc) · 2.41 KB

Форматирование

После трансформации бизнес модель необходимо привести к формату данных, который примет соединение, созданное на этапе 2.

Чтобы процесс преобразования данных в бизнес модель принимающий стороны отделить от фазы преобразования в запрос к FTP или HTTP серверу, добавлена стадия форматирования. Это позволяет быстро менять стиль выгрузки от alfa-ftp до полноценной выгрузки в более сложную систему.

Тип данных между трансформацией и форматированием жестко не определен.

Для реализации класса форматирования необходимо наследовать базовый класс Formatter и реализовать функцию getFormattedData, принимающую на вход Exchange и данные, которые вернула трансформация.

Выгрузка нескольких файлов

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

yield

C помощью yield и \Iterator можно сообщить сервису обмена, что при форматировании получился цикл запросов, которые необходимо выполнить. Таким образом сервис обмена будет выполнять запросы ($exchange->getLoader()->sendRequest($item);), пока вы их генерируете.

Пример реализации

public function getFormattedData(Exchange $exchange, $data): \Iterator
{
	foreach ($data as $item)
	{
		yield new DataPostRequest($item);
	}
}