 | Yahoo Pipes: Обзор функциональных возможностей
Ловкий и захватывающий
Для начала давайте рассмотрим инструментальные средства.
Если честно, разработчики данной среды действительно выполнили интересную работу по созданию дружественного пользователю и привлекательного интерфейса.
Конечной целью является помещение содержимого в инструментальную программу, поэтапное выполнение каких-либо действий с ним и, наконец, вывод в новый поток. Этот процесс определенно поддерживается подобного рода визуально ориентированной программой, преобразующей его в последовательность операций. Возможности переноса и расположения компонентов, установки атрибутов с использованием встроенных в эти компоненты форм и прорисовки соединений выхода одного с входом другого являются очень мощными и простыми.
Базовая среда
Основой инструментальной среды является координатная сетка редактора и палитра компонентов (см. рисунок 1).
Рисунок 1. Палитра компонентов и редактор
Как и ожидалось, можно перетаскивать интересующие вас компоненты с палитры и сбрасывать на координатную сетку редактора. Для подключения компонента в схему просто рисуется канал передачи от выхода одного компонента ко входу другого, как показано на рисунке 2. Довольно просто.
Рисунок 2. Перетаскивание и сброс компонентов с палитры в редактор
Кроме того, имеется информационная панель и вид (view) отладчик/содержимое. Они будут очень полезны.
При выборе компонента в палитре отображается его краткое описание, а так же ссылка на пример использования. Аналогично, при выборе компонента в редакторе отображается его влияние на содержимое в отладчике. Если пользователь выбирает различные компоненты в схеме преобразования, отладчик отображает обновленное содержимое фида. На рисунке 3 изображено подмножество оригинального фида, основанное на правиле, описанном в компоненте filter.
Рисунок 3. Информационная панель и панель отладчика
Источники данных
Чтобы начать что-нибудь делать, необходимо иметь фид. Можно использовать либо реальный RSS-поток, либо указать сайт, например Google или Yahoo, используя компонент source, представленный на палитре. Последний вариант значительно мощнее для сгенерированного заново содержимого, поскольку не все доступно через каким-либо образом указанный фид содержимого, - иногда лучше просто что-то найти. Следовательно, если вы хотите активировать в Google Base поиск работы конкретного типа, либо (как показано на рисунке 4) использовать Yahoo Local для поиска событий определенного типа в данном регионе, вам необязательно знать о конкретном фиде, предоставляющем эту информацию.
Рисунок 4. Пример источника данных Yahoo Local
Можно просто непосредственно указать URL существующего фида содержимого, как показано на рисунке 5.
Рисунок 5. Использование компонента Fetch для указания конкретного потока содержимого
После определения первоначального источника данных содержимое передается в инструментальную программу, где другие компоненты начинают дорабатывать, анализировать и преобразовывать данные во что-то новое и более полезное.
Операторы
Большая часть базовых операций принадлежит группе компонентов Operators. Эти операторы предоставляют возможности от фильтрации и сортировки до циклов и ввода регулярных выражений, а также специфичных функций, таких как преобразование языков и извлечение полезных подробностей.
На рисунках 6 и 7 изображен фильтр, помещенный после оригинального содержимого, записываемого в канал. Фильтр ограничивает отображаемую информацию, показывая только те элементы, которые содержат текст "Wii".
Рисунок 6. Добавление фильтра Wii к потоку (отладчик отображает содержимое оригинального RSS до фильтра)
Рисунок 7. Добавление фильтра Wii к потоку (отладчик отображает отфильтрованное содержимое RSS после фильтрации)
Как можно заметить на снимках экранов, есть возможность реализовать несколько других операторов в вашем канале данных. Опишем некоторые из них:
-
For Each: Annotation: Предоставляет средство прохода в потоке по каждому элементу, добавляя новый узел, содержащий выходные данные из другого потока.
-
For Each: Replace: Предоставляет средство прохода по элементам в фиде, в котором выходные данные другого фида замещают элемент оригинального фида.
В обоих компонентах For Each атрибуты оригинального элемента могут передаваться во вторичный поток. Например, фид job bank, содержащий открытые вакансии, может выполнить цикл, передавая ключевые слова каждому элементу в новом фиде, который выдает резюме, содержащие эти ключевые слова.
-
Rename: Позволяет переименовать атрибуты.
-
Split: Разделяет потоки данных на основе некоторого критерия.
-
Count: Количество возвращенных элементов. Его можно использовать для установки поля количества в другом месте.
-
Truncate: Ограничивает количество элементов, которые разрешено передавать.
-
Content Analysis: Анализирует содержимое элемента, находя важную описательную информацию.
-
Sort: Сортирует элементы.
-
Regex: Обрабатывает с использованием регулярных выражений.
-
BabelFish: Переводит на (с) различные языки.
-
Location Extractor: Определяет адрес, выполняя поиск различных форматов месторасположения в теле текста.
-
Unions: Объединяет потоки. Обычно используется после оператора split, в котором выполняется разнообразная обработка на основе определенного критерия, а затем части объединяются заново.
-
Unique: Ограничивает повторяющиеся элементы на основе заданного атрибута.
 |
Пользовательский ввод данных
Другими ключевыми компонентами в палитре являются инструменты пользовательского ввода данных (user input). Для большинства инструментов в различных компонентах можно вручную определить или создать поля для сбора динамических данных. Эти динамические данные, хотя и обозначенные как пользовательский ввод данных (user input), не ограничиваются только вводом данных пользователей, а являются входными данными, предоставляемыми чем-то, определенным в другом месте.
Если пользователь реализует канал данных от интерфейса Yahoo Pipes, то это, фактически, компонент user input, и интерфейс динамически создает и отображает необходимые компоненты формы "на лету". Однако, как вы увидите в последнем демонстрационном примере данного руководства, поле user input может заполняться некоторой другой частью структурной схемы обработки.
Так или иначе, эти компоненты ввода данных позволяют схеме преобразования генерировать выходные данные, основываясь на некоторой настраиваемой части информации, и увеличивать ее гибкость. Например, можно подключиться к фиду технического журнала, используя фильтр для извлечения подмножества элементов на основе определенного пользователем критерия. В одной реализации пользователь может передать в один день ключевое слово "цифровые фотоаппараты", а в другой день - "принтеры"; в обоих случаях будут извлекаться только соответствующие элементы. В другой реализации динамические входные данные могут передаваться из ключевых слов, извлеченных из другого фида "новые товары", отображая только элементы технического журнала, содержащие недавно выпущенные товары, какими бы они ни были.
На рисунке 8 показано, как можно определить текст, который вы хотите использовать в качестве фильтра для потока содержимого. Точнее говоря, текст фильтра не кодируется жестко в компоненте filter; в этом примере он предоставляется в форме, и эти данные направляются в поле компонента filter. Кроме того, как вы увидите в последнем демонстрационном примере, можно также связать некоторое доступное свойство с входным компонентом field. При этом динамические данные определяются тем, что обрабатываются где-то в другом месте, а не непосредственным вводом пользователя.
Рисунок 8. Подключения компонента user input к filter
Связать входной элемент с конкретным полем можно просто путем перемещения точки соединения от входа к точке соединения данного поля. На рисунке 8 изображены различные типы компонентов user input.
Другие компоненты
В дополнение к компонентам URL, String и Date для последующей обработки этих типов Yahoo Pipes предлагает еще одну очень мощную возможность: способность накладывать каналы данных из раздела My Pipes.
My Pipes отображает все разработанные вами процессы, которые можно встроить в другие схемы обработки. Это позволяет организовать определенный уровень повторной используемости и разбиения на компоненты. Все, созданное при помощи компонентов user input, становится потенциальным местом для атрибута, который можно связать каналом с другими используемыми фидами.
На рисунке 9 определен некий процесс для поиска антиквариата на Craigslist. Процесс отображает один динамически указываемый поисковый запрос, обозначенный query. Поле input позволяет пользователю (или, как в данном случае, другому фиду) передать конкретные поисковые запросы в схему обработки antique. Вы можете вручную указать этот запрос (например, как "стол" или "буфет") или принять его по каналу откуда-то еще, как в данном примере. На рисунке 9 показано объединение фида New York Times, связанного с мебелью, и элементов, доступных на Craigslist, на основе ключевых слов, перекрывающих оба источника данных. Ключевые слова передаются из фида New York Times при помощи компонента Content Analysis, который заполняет атрибут y:content_anaysis в оригинальном фиде. Обратите внимание на указание этого выражения в цикле For Each для использования в поле query. Этот цикл For Each: Annotate создает новый атрибут stuff_on_craigslist для каждого элемента оригинального фида и заполняет его информацией, возвращенной из подпроцесса antique.
Рисунок 9. Использование атрибутов одного фида в качестве входных данных для другого вложенного фида
Заключение
Инструментальную программу Yahoo Pipes (с ее интерфейсом с перемещаемыми компонентами) использовать очень легко. В нее также входит много вспомогательных инструментальных средств базового преобразования, которые вы, возможно, захотите использовать. В следующих разделах мы рассмотрим процесс создания некоторых демонстрационных преобразований, к которым можно обратиться, запустить и (при условии сохранения собственной копии) изменить в интерактивном режиме.
|  |