Конвейерная обработка

Связанные термины: pipeline, workflow, Pipes and Filters pattern.

Требования

Конвейер состоит из связанных между собой узлов. Узел характеризуется набором входных и выходных каналов, по которым могут передаваться объекты. Узел ожидает появления определенного набора объектов на своих входных каналах, после чего проводит вычисления и порождает объект(-ы) на своих выходных каналах (не обязательно всех). Например, узел "сумматор" имеет два входных канала и один выходной. Получая по одному объекту с каждого входного канала он их суммирует и результат отправляет в выходной канал. При этом, если входные каналы не будут синхронизованы, то в одном из них могут "скапливаться" данные, ожидающие обработки. Определите проблемно-специфичный язык (DSL) для работы с конвейерными схемами обработки данных, поддерживающий следующие элементы:

Вариант модельной задачи

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

Дополнительные требования

Обеспечьте поддержку следующих элементов: