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