Корпоративный язык разметки Mashup - Enterprise Mashup Markup Language
Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
EMML, или же Корпоративный язык разметки Mashup, является XML язык разметки для создания предприятия мэшапы, которые представляют собой программные приложения, которые потребляют и смешивают данные из различных источников, часто выполняя логические или математические операции, а также представляя данные. Обработанные данные, созданные с помощью гибридных приложений предприятия, представлены в графических пользовательских интерфейсах в виде машлетов, виджетов или гаджетов. EMML также может быть[нужна цитата ] считается декларативным мэшапом предметно-ориентированный язык (DSL). Mashup DSL устраняет необходимость в сложной, трудоемкой и повторяемой логике процедурного программирования для создания корпоративных гибридных приложений. EMML также предоставляет декларативный язык для создания визуальных инструментов для корпоративных гибридных приложений.
Основными преимуществами EMML являются переносимость гибридного дизайна и возможность взаимодействия гибридных решений. Ожидается, что эти преимущества ускорят внедрение корпоративных гибридных приложений за счет создания передаваемых навыков разработчикам программного обеспечения и сокращения привязка к поставщику. Ожидается, что внедрение EMML поможет ускорить тенденцию к интеграции веб-приложений и Сервис-Ориентированная Архитектура (SOA) технологии.[1] Банк Америки был одним из первых сторонников EMML.[2] Среди других выдающихся ранних сторонников Hewlett Packard, Capgemini, Adobe Systems, и Intel.[3]
История EMML
Радж Кришнамурти (главный архитектор в JackBe Corporation) и Дипак Алур (вице-президент по проектированию в JackBe Corporation) начали работу над EMML в 2006 году. Их цель заключалась в создании ориентированных на пользователя гибридных приложений с поддержкой пользователей путем создания того, что тогда называлось промежуточным ПО корпоративная платформа Mashup. Радж Кришнамурти стал главным разработчиком языка и разработчиком EMML, а также руководил командой по созданию Затмение на основе EMML IDE называется Mashup Studio.[4] Эта работа превратилась в эталонную реализацию EMML, подаренную Open Mashup Alliance. Радж Кришнамурти продолжает быть одним из ключевых участников EMML через Open Mashup Alliance.
Возможности EMML
Язык EMML предоставляет богатый набор высокоуровневого словаря mashup-домена для гибкого использования и смешивания различных веб-источников данных. EMML предоставляет единый синтаксис для вызова разнородных стилей обслуживания: ОТДЫХ, WSDL, RSS /АТОМ, СУБД, и POJO. Язык EMML также предоставляет возможность смешивать различные форматы данных: XML, JSON, JDBC, JavaObjects и примитивные типы.
Возможности языка EMML высокого уровня включают:
- Фильтрация и сортировка данных, поступающих из разнородных сервисов
- Объединяйте данные из разнородных сервисов и форматов данных
- Группируйте и объединяйте данные с помощью различных функций
- Аннотируйте исходные данные сервиса, чтобы обогатить его семантическое значение
- Объединяйте несколько потоков данных в консолидированные наборы данных
- Разделение наборов данных для выбора отдельных полей данных
- Встроенная поддержка сценариев для JavaScript, JRuby, Groovy, XQuery
- Веб-вырезка для очистки данных HTML страницы
- Условные утверждения -
Если
/потом
/Еще
,Пока
,Для каждого
- Параллельный синтаксис для параллельной обработки
EMML - это прежде всего декларативный язык на основе XML, но он также обеспечивает возможность кодирования сложной логики с использованием встроенных механизмов сценариев. XPath это язык выражений, используемый в EMML.
Заявление Directinvoke
направлять
[5] предоставляет возможность вызывать и использовать различные службы данных. Эти услуги передачи данных могут быть ОТДЫХ, RSS /АТОМ, или же МЫЛО Сервисы. направлять
также поддерживает веб-вырезку, позволяя HTML страницы, которые необходимо указать как конечные точки службы. HTTP GET
, ПОЧТОВЫЙ
, ПОЛОЖИТЬ
, и УДАЛИТЬ
протоколы поддерживаются в направлять
. Также доступна поддержка HTTP-заголовков и файлов cookie, что дает возможность использовать широкий спектр ОТДЫХ /МЫЛО Веб-сервисы. Можно использовать направлять
с прокси-сервером.
Пример кода передачи атрибутов в качестве параметров службе:
конечная точка ="http://www.myCompany.com/rest-services/getItems" метод ="ПОЛУЧАТЬ" outputvariable ="$ результат" запрос ="items = all" appID ="67GYH30N25" /> конечная точка ="http://www.svcsltd.com/getReservation" метод ="ПОЛУЧАТЬ" outputvariable ="$ новости" xmlns: sc ="http://www.svcltd.com/" sc: date ="20070515" sc: ночи ="3"/>
Заявление о фильтре
В фильтр
[6] оператор фильтрует содержимое переменной с помощью XPath выражение и помещает результат в новую переменную.
Пример кода для фильтрации клиентов с западного побережья с использованием элемента данных региона:
<фильтр inputvariable ="$ queryResult" filterexpr ="/ клиенты [регион = 'Запад']" outputvariable ="$ westCoastOnly"/>
Сортировка выписки
В Сортировать
[7] оператор сортирует содержимое переменной типа документа или фрагмента переменной на основе ключевых выражений и помещает результат в другую переменную.
Пример кода, который сортирует заявки по дате создания и клиенту:
<сортировать inputvariable ="$ TroubleTickets" sortexpr ="проездной билет" sortkeys ="xs: дата (создания) по убыванию, клиент по возрастанию" outputvariable ="$ TroubleTickets"/>
Заявление Groupby
группа по
[8] предоставляет возможность группировать и агрегировать наборы данных. Стандарт XPath Можно использовать операции агрегирования, и есть механизм расширения для добавления пользовательских функций. Также поддерживается вложенная группировка наборов иерархических данных. Существует Имея
предложение для фильтрации атрибутов группы.
Пример кода, который группирует книги по жанрам и вычисляет общее количество копий для каждого жанра:
<группа автор ="$ catalog // книга / жанр" outputvariable ="$ groupResult"> имя ="{$ group_key}" copysold ="{сумма (продано копий)}"/> </group>
Заявление о слиянии
слияние
[9] предоставляет возможность комбинировать различные источники данных, включая RSS /АТОМ кормит, XML, JSON форматы полезной нагрузки. Функция слияния похожа на СОЕДИНЕНИЕ SQL
функциональность, но объединяет иерархические структуры документов.
Пример кода, который объединяет Yahoo! Новости, Финансовые новости, и Рейтер кормит:
<объединить inputvariables ="$ YahooRSS, $ FinancialNewsRss, $ ReutersRSS" outputvariable ="$ NewsAggregate"/>
Аннотировать заявление
аннотировать
[10] обеспечивает возможность обогащения семантического значения исходных служебных данных элементами / атрибутами, подобными микроформату. Эти аннотации к данным могут использоваться машлетами или гаджетами для обеспечения более богатого визуального пользовательского интерфейса.
Пример кода для аннотирования полезной нагрузки поставщика с помощью географических координат:
<аннотировать переменная ="$ vendors" expr ="/ поставщик / сайт" > element geo: lat {$ georesult // y: Latitude / string ()}, element geo: long {$ georesult // y: Longitude / string ()} </annotate>
Заявление о присоединении
В присоединиться
[11] Оператор определяет, как объединяются разрозненные иерархические форматы данных, и сопоставим с внутренними объединениями для реляционных баз данных.
Пример кода, где выходная переменная содержит <res:recommendations>
элемент с повторяющимся набором <res:movie>
children, которые являются повторяющимися элементами. Каждый <res:movie>
содержит <res:movietitle>
дочерний элемент с данными из переменной с именем movies и <res:rating>
и <res:comment>
дети с данными из переменной с именем reviews:
<присоединиться outputvariable ="$ joinResult" joincondition ="$ movies / movie / @ id = $ reviews / review / movie / title"> <выберите имя ="res: рекомендации"> <res:movie> <res:movietitle>{$ фильмы / название}</res:movietitle> <res:rating>{$ отзывов / рейтинг}</res:rating> <res:comment>{$ отзывов / комментарий}</res:comment> </res:movie> </select> </join>
Скрипты в EMML
EMML - это декларативный язык, но он предоставляет программные сценарии.[12] расширения для выполнения сложной логики mashup. JavaScript, JRuby, Groovy, POJO, XQuery Поддерживаются среды сценариев. Данные беспрепятственно передаются между EMML и средами сценариев.
Пример кода, где JavaScript сниппет используется для извлечения токена аутентификации, который требуется для последующих вызовов переменной "результат", которая распространяется на JavaScript среда:
<сценарий тип="текст / javascript"><![CDATA[ вар р = новый Нить(результат) вар ар = р.расколоть("="); авторизация = ар[ар.длина-1]; авторизация = авторизация.ломтик(0, -1) ]]></сценарий>
Рекомендации
- ^ «Куда движется будущее SOA? Куда идет Интернет».
- ^ «Почему Bank of America присоединился к Open Mashup Alliance».
- ^ «Сторонники корпоративного мэшапа начинают организовывать».
- ^ «JackBe объявляет о выпуске бесплатного гибридного программного обеспечения для предприятий».
- ^ "Глава EMML Documentation Directinvoke".
- ^ "Глава EMML Documentation Filter".
- ^ "Глава" Сортировка документации EMML ".
- ^ «Группа документации EMML по главам».
- ^ "Глава о слиянии документации EMML".
- ^ "Документация по EMML с аннотациями к главе".
- ^ "Документация по EMML Присоединиться к главе".
- ^ «Глава о сценариях документации EMML». Отсутствует или пусто
| url =
(помощь)