Jump to content

Язык разметки корпоративных коллажей

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>
  1. ^ «Софтвер АГ» . document.softwareag.com . Проверено 8 апреля 2023 г.
  2. ^ «Куда движется будущее SOA? Куда движется Интернет» . 17 ноября 2015 г.
  3. ^ «Почему Bank of America присоединился к Open Mashup Alliance» . Архивировано из оригинала 1 октября 2009 г. Проверено 28 сентября 2009 г.
  4. ^ «Сторонники корпоративных коллажей начинают организовываться» . Архивировано из оригинала 3 октября 2009 г. Проверено 28 сентября 2009 г.
  5. ^ «JackBe объявляет о выпуске бесплатного корпоративного программного обеспечения для создания гибридных веб-приложений» . 17 ноября 2015 г.
  6. ^ «Глава Directinvoke документации EMML» . Архивировано из оригинала 30 сентября 2009 г. Проверено 11 октября 2009 г.
  7. ^ «Глава «Фильтр документации EMML»» . Архивировано из оригинала 17 октября 2009 г. Проверено 11 октября 2009 г.
  8. ^ «Глава о сортировке документации EMML» . Архивировано из оригинала 29 сентября 2009 г. Проверено 11 октября 2009 г.
  9. ^ «Группировка документации EMML по главам» . Архивировано из оригинала 29 сентября 2009 г. Проверено 11 октября 2009 г.
  10. ^ «Глава «Объединение документации EMML»» . Архивировано из оригинала 29 сентября 2009 г. Проверено 11 октября 2009 г.
  11. ^ «Глава аннотаций документации EMML» . Архивировано из оригинала 30 сентября 2009 г. Проверено 11 октября 2009 г.
  12. ^ «Глава объединения документации EMML» . Архивировано из оригинала 29 сентября 2009 г. Проверено 11 октября 2009 г.
  13. ^ «Глава сценариев документации EMML». {{cite web}}: Отсутствует или пусто |url= ( помощь )
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d4e9de14a3ec291f8baa8fdb5885e87b__1713553500
URL1:https://arc.ask3.ru/arc/aa/d4/7b/d4e9de14a3ec291f8baa8fdb5885e87b.html
Заголовок, (Title) документа по адресу, URL1:
Enterprise Mashup Markup Language - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)