EMML или Enterprise Mashup Markup Language - это язык разметки XML для создания корпоративных гибридных приложений , которые представляют собой программные приложения, которые потребляют и смешивают данные из различных источников, часто выполняя логические или математические операции, а также представляя данные. Обработанные данные, созданные с помощью гибридных приложений предприятия, представлены в графических пользовательских интерфейсах в виде машлетов, виджетов или гаджетов. EMML также можно [ ссылка ] считать декларативным языком, зависящим от предметной области.(DSL). Mashup DSL устраняет необходимость в сложной, трудоемкой и повторяемой логике процедурного программирования для создания корпоративных гибридных приложений. EMML также предоставляет декларативный язык для создания визуальных инструментов для корпоративных гибридных приложений.
Основными преимуществами EMML являются переносимость гибридных проектов и возможность взаимодействия гибридных решений. Ожидается, что эти преимущества ускорят внедрение корпоративных гибридных приложений за счет создания передаваемых навыков разработчикам программного обеспечения и уменьшения привязки к поставщику . Ожидается, что внедрение EMML поможет ускорить тенденцию к интеграции веб-приложений и технологий сервис-ориентированной архитектуры (SOA). [1] Bank of America был одним из первых сторонников EMML. [2] Среди других видных первых сторонников были Hewlett-Packard , Capgemini , Adobe Systems и Intel . [3]
История EMML
Радж Кришнамурти (главный архитектор в JackBe Corporation) и Дипак Алур (вице-президент по проектированию в JackBe Corporation) начали работу над EMML в 2006 году. Их цель заключалась в создании ориентированных на пользователя гибридных приложений с поддержкой пользователей путем создания того, что тогда называлось промежуточным ПО Платформа Enterprise Mashup. Радж Кришнамурти стал главным разработчиком языка и разработчиком EMML, а также руководил командой по созданию IDE EMML на основе Eclipse под названием Mashup Studio. [4] Эта работа превратилась в эталонную реализацию EMML, подаренную Open Mashup Alliance. Радж Кришнамурти продолжает быть одним из ключевых участников EMML через Open Mashup Alliance.
Возможности EMML
Язык EMML предоставляет богатый набор высокоуровневого словаря mashup-домена для гибкого использования и смешивания различных веб-источников данных. EMML предоставляет единый синтаксис для вызова разнородных стилей обслуживания: REST , WSDL , RSS / ATOM , RDBMS и POJO . Язык EMML также предоставляет возможность смешивать различные форматы данных: XML , JSON , JDBC , JavaObjects и примитивные типы.
Возможности языка EMML высокого уровня включают:
- Фильтрация и сортировка данных, поступающих из разнородных сервисов
- Объединяйте данные из разнородных сервисов и форматов данных
- Группируйте и объединяйте данные с помощью различных функций
- Аннотируйте исходные служебные данные, чтобы обогатить их семантическое значение
- Объединяйте несколько потоков данных в консолидированные наборы данных
- Разделение наборов данных для выбора отдельных полей данных
- Встроенная поддержка сценариев для JavaScript , JRuby , Groovy , XQuery
- Веб-вырезка для очистки данных с HTML- страниц
- Условные операторы -
If
/Then
/Else
,While
,ForEach
- Параллельный синтаксис для параллельной обработки
EMML - это прежде всего декларативный язык на основе XML, но он также обеспечивает возможность кодирования сложной логики с использованием встроенных механизмов сценариев. XPath - это язык выражений, используемый в EMML.
Заявление Directinvoke
directinvoke
[5] предоставляет возможность вызывать и использовать различные службы данных. Эти службы данных могут быть службами REST , RSS / ATOM или SOAP . directinvoke
также поддерживает веб-вырезку, позволяяуказывать HTML- страницы в качестве конечных точек службы. HTTP GET
,POST
,PUT
, ИDELETE
протоколы поддерживаются вdirectinvoke
. Также доступна поддержка HTTP-заголовков и файлов cookie, что дает возможность использовать широкий спектр веб-служб REST / SOAP . Возможно использованиес прокси-сервером.directinvoke
Пример кода передачи атрибутов в качестве параметров службе:
endpoint = "http://www.myCompany.com/rest-services/getItems" method = "GET" outputvariable = "$ result" query = "items = all" appID = "67GYH30N25" /> endpoint = "http://www.svcsltd.com/getReservation" method = "GET" outputvariable = "$ news" xmlns: sc = "http://www.svcltd.com/" sc: date = "20070515 " sc: ночи = " 3 " />
Заявление о фильтре
Оператор filter
[6] фильтрует содержимое переменной с помощью выражения XPath и помещает результат в новую переменную.
Пример кода для фильтрации клиентов с западного побережья с использованием элемента данных региона:
inputvariable = "$ queryResult" filterexpr = "/ customers [region = 'West']" outputvariable = "$ westCoastOnly" />
Сортировка выписки
Оператор sort
[7] сортирует содержимое переменной типа документа или фрагмента переменной на основе ключевых выражений и помещает результат в другую переменную.
Пример кода, который сортирует заявки по дате создания и клиенту:
inputvariable = "$ TroubleTickets" sortexpr = "ticket" sortkeys = "xs: дата (создана) по убыванию, клиент по возрастанию" outputvariable = "$ TroubleTickets" />
Заявление Groupby
groupby
[8] предоставляет возможность группировать и агрегировать наборы данных. Могут использоватьсястандартныеоперации агрегирования XPath, а также есть механизм расширения для добавления пользовательских функций. Также поддерживается вложенная группировка иерархических наборов данных. ЕстьHaving
пункт для фильтрации атрибутов группы.
Пример кода, который группирует книги по жанрам и вычисляет общее количество копий для каждого жанра:
by = "$ catalog // book / genre" outputvariable = "$ groupResult" > name = "{$ group_key}" copysold = "{sum (copysold)}" />
Заявление о слиянии
merge
[9] предоставляет возможность комбинировать различные источники данных, включая каналы RSS / ATOM ,форматы полезной нагрузки XML , JSON . Функция слияния аналогичнаSQL UNION
функциональности, но объединяет иерархические структуры документа.
Пример кода, объединяющего Yahoo! Новости , финансовые новости и каналы Reuters :
inputvariables = "$ YahooRSS, $ FinancialNewsRss, $ ReutersRSS" outputvariable = "$ NewsAggregate" />
Аннотировать заявление
annotate
[10] предоставляет возможность обогащать семантическое значение исходных данных службы элементами / атрибутами, подобными микроформату. Эти аннотации данных могут использоваться машлетами или гаджетами для обеспечения более богатого визуального пользовательского интерфейса.
Пример кода для аннотирования полезной нагрузки поставщика с помощью географических координат:
variable = "$ vendors" expr = "/ vendor / site" > element geo: lat {$ georesult // y: Latitude / string ()}, element geo: long {$ georesult // y: Longitude / string ()}
Заявление о присоединении
Оператор join
[11] определяет, как объединяются разрозненные иерархические форматы данных, и сравним с внутренним объединением для реляционных баз данных.
Пример кода, в котором выходная переменная содержит
элемент с повторяющимся набором
дочерних элементов , которые являются повторяющимися элементами. Каждый
содержит
ребенок с данными из переменных с именем фильмов и
и
детей с данными переменных с именем отзывов:
outputvariable = "$ joinResult" joincondition = "$ movies / movie / @ id = $ reviews / review / movie / title" > name = "res: рекомендации" > { $ movies / title} {$ reviews / rating} {$ reviews / comment}
Скрипты в EMML
EMML является декларативным языком, но предоставляет расширения программного сценария [12] для выполнения сложной логики гибридных приложений. Поддерживаются среды сценариев JavaScript , JRuby , Groovy , POJO , XQuery . Данные беспрепятственно передаются между EMML и средами сценариев.
Пример кода, в котором фрагмент кода JavaScript используется для извлечения токена аутентификации, необходимого для последующих вызовов переменной "result", которая распространяется в среду JavaScript :
< script type = "text / javascript" > [ CDATA [ var r = новая строка ( результат ) var ar = r . сплит ( "=" ); auth = ar [ ar . длина - 1 ]; auth = auth . slice ( 0 , - 1 ) ]] > script >
Рекомендации
- ^ «Куда движется будущее SOA? Куда идет Интернет» .
- ^ «Почему Bank of America присоединился к Open Mashup Alliance» .
- ^ «Сторонники корпоративного мэшапа начинают организовываться» .
- ^ «JackBe объявляет о выпуске бесплатного гибридного программного обеспечения для предприятий» .
- ^ "Глава EMML Documentation Directinvoke" .
- ^ «Глава о фильтре документации EMML» .
- ^ «Глава EMML Documentation Sort» .
- ^ «Группировка документации EMML по главам» .
- ^ «Глава слияния документации EMML» .
- ^ «Документация по EMML с аннотациями к главе» .
- ^ «Документация EMML Присоединиться к главе» .
- ^ «Глава о сценариях документации EMML». Отсутствует или пусто
|url=
( справка )