Один из основных принципов архитектуры SOA – взаимодействие
сервисов между собой, что подразумевает их связку. Workflow
тоже
«выливается» в связку бизнес-блоков и элементов. У меня возник вопрос – а можно
ли построить Workflow,
используя принципы SOA?
Одно из решений я нашел. Правда, пока оно применимо только в
отношении веб-сервисов и находится в стадии беты. Но решение интересное.
Известно, что главный минус использования веб-сервисов – это
сложность при организации взаимодействия между ними. Многие существующие на
сегодняшний день веб-сервисы выдают информацию в формате RSS, могут обрабатывать и принимать
потоки данных. Как правило, практика связывания веб-сервисов предполагает
построение mashup – гибридных сервисов, которые часть задач по
взаимодействию и преобразованию решают самостоятельно, часть – делегируют
готовым решениям.
Компания Yahoo решила упростить
процесс создания mashup-ов,
предоставив свой новый сервис Pipes. Как следует из описания
сервиса, «чтобы соединить два или более
веб-сервисов между собой, уже не нужно обладать квалификацией программиста».
Сервис помогает преобразовывать потоки информации, соединяя между собой
различные сервисы. Таким образом, процесс создания mashup-ов превращается в рисование схемы
взаимодействия – а это уже напоминает Workflow. =)
Вот так в этом сервисе выглядит пример поиска документов в
системе DIRECTUM
(примерная схема взаимодействия). Имеются несколько организаций, использующие
систему DIRECTUM. У
каждой из них установлен веб-сервис поиска по документам. Тогда поиск по
документам (например, по названию и(или) дате последнего изменения) в
распределенной среде может выглядеть так:

Вот так этот pipe будет выглядеть для
пользователя:

В результате выполнения pipe вернет
информацию в следующем виде:

Как видно, результаты работы pipe – это RSS-поток. Соответственно, можно
сохранять отдельные pipe и объединять их в
новые.
На самом деле параметры pipe можно задавать не только
интерактивно, но и через URL,
позволяя полностью автоматизировать процесс.