stringtranslate.com

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

EMML , или Enterprise Mashup Markup Language , — это язык разметки XML для создания корпоративных mashup-приложений , представляющих собой программные приложения, которые потребляют и смешивают данные из различных источников. Эти приложения часто выполняют логические или математические операции, а также представляют данные.

Смешанные данные, созданные корпоративными mashup-приложениями, представлены в графических пользовательских интерфейсах в виде mashlets, виджетов или гаджетов. EMML также можно [1] считать декларативным языком mashup-приложений (DSL). DSL mashup-приложений устраняет необходимость в сложной, трудоемкой и повторяемой процедурной логике программирования для создания корпоративных mashup-приложений. EMML также предоставляет декларативный язык для создания визуальных инструментов для корпоративных mashup-приложений.

Основными преимуществами EMML являются переносимость дизайна mashup и совместимость решений mashup. Ожидается, что эти преимущества ускорят принятие корпоративных mashup-приложений за счет создания переносимых навыков для разработчиков программного обеспечения и снижения привязки к поставщику .

Ожидается, что внедрение EMML поможет ускорить тенденцию к интеграции веб-приложений и технологий сервисно-ориентированной архитектуры (SOA). [2] Bank of America был одним из первых заметных сторонников EMML. [3] Другими известными ранними сторонниками были Hewlett-Packard , Capgemini , Adobe Systems и Intel . [4]

История ЕММЛ

Радж Кришнамурти (главный архитектор в JackBe Corporation) и Дипак Алур (вице-президент по инжинирингу в JackBe Corporation) начали работать над EMML в 2006 году. Их целью было обеспечить ориентированные на пользователя и поддерживаемые пользователем mashup-приложения путем создания нового типа промежуточного программного обеспечения, называемого Enterprise Mashup Platform. Радж Кришнамурти стал главным разработчиком языка и реализатором EMML, а также возглавил команду по созданию EMML IDE на базе Eclipse под названием Mashup Studio. [5] Эта работа переросла в эталонную реализацию EMML, которая была передана в дар Open Mashup Alliance. Радж Кришнамурти продолжает оставаться одним из ключевых участников EMML через Open Mashup Alliance.

Возможности EMML

Язык EMML предоставляет богатый набор высокоуровневого словаря mashup-domain для гибкого использования и смешивания различных веб-источников данных. EMML предоставляет единый синтаксис для вызова гетерогенных стилей обслуживания: REST , WSDL , RSS / ATOM , RDBMS и POJO . Язык EMML также предоставляет возможность смешивать различные форматы данных: XML , JSON , JDBC , JavaObjects и примитивные типы.

К высокоуровневым возможностям языка EMML относятся:

EMML — это в первую очередь декларативный язык на основе XML, но он также обеспечивает возможность кодирования сложной логики с использованием встроенных скриптовых движков. XPath — это язык выражений, используемый в EMML.

Оператор Directinvoke

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" />        

Фильтровать заявление

Оператор filter[7] фильтрует содержимое переменной с помощью выражения XPath и помещает результат в новую переменную.

Пример кода для фильтрации клиентов западного побережья с использованием элемента данных региона:

<filter inputvariable= "$queryResult" filterexpr= "/customers[region='West']" outputvariable= "$westCoastOnly" />   

Сортировать заявление

Оператор sort[8] сортирует содержимое переменной типа документа или фрагмента переменной на основе ключевых выражений и помещает результат в другую переменную.

Пример кода, сортирующего тикеты по дате создания и клиенту:

<sort inputvariable= "$troubleTickets" sortexpr= "ticket" sortkeys= "xs:date(created) по убыванию, клиент по возрастанию" outputvariable= "$troubleTickets" />       

Оператор Groupby

groupby[9] обеспечивает возможность группировать и агрегировать наборы данных. Можно использовать стандартные операции агрегации XPath , а также есть механизм расширения для добавления пользовательских функций. Также поддерживаются вложенные группировки иерархических наборов данных. Есть Havingпредложение для фильтрации атрибутов Group.

Пример кода, который группирует книги по жанрам и вычисляет общее количество экземпляров для каждого жанра:

<group by= "$catalog//book/genre" outputvariable= "$groupResult" > <res:genre name= "{$group_key}" copysold= "{sum(copiessold)}" /> </group>       

Заявление о слиянии

merge[10] обеспечивает возможность объединения различных источников данных, включая каналы RSS / ATOM , XML , форматы полезной нагрузки JSON . Функция объединения похожа на SQL UNIONфункциональность, но объединяет иерархические структуры документов.

Пример кода, объединяющий каналы Yahoo! News , Financial News и Reuters :

<merge inputvariables= "$YahooRSS, $FinancialNewsRss, $ReutersRSS" outputvariable= "$NewsAggregate" />   

Аннотировать заявление

annotate[11] обеспечивает возможность обогащения семантического значения исходных данных сервиса с помощью элементов/атрибутов, подобных микроформатам. Эти аннотации данных могут использоваться машлетами или гаджетами для предоставления более богатых визуальных пользовательских интерфейсов.

Пример кода для аннотирования полезной нагрузки поставщика с помощью географических координат:

<annotate variable= "$vendors" expr= "/vendor/site" >
элемент geo:lat { $georesult//y:Широта/строка() },
элемент geo:long { $georesult//y:Долгота/строка() } </annotate>              

Присоединяйтесь к заявлению

Оператор join[12] определяет, как объединяются разрозненные иерархические форматы данных, и сопоставим с внутренними объединениями для реляционных баз данных.

Пример кода, где выходная переменная содержит <res:recommendations>элемент с повторяющимся набором <res:movie>потомков, которые являются повторяющимися элементами. Каждый <res:movie>содержит <res:movietitle>потомка с данными из переменной с именем movies и <res:rating>потомков <res:comment>с данными из переменной с именем reviews:

<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] для выполнения сложной логики mashup. Поддерживаются среды сценариев 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. ^ "Software AG". documentation.softwareag.com . Получено 2023-04-08 .
  2. ^ «Куда движется будущее SOA? Куда движется Интернет». 17 ноября 2015 г.
  3. ^ "Почему Bank of America присоединился к Open Mashup Alliance". Архивировано из оригинала 2009-10-01 . Получено 2009-09-28 .
  4. ^ "Enterprise mashup proponers start organization". Архивировано из оригинала 2009-10-03 . Получено 2009-09-28 .
  5. ^ "JackBe анонсирует бесплатное корпоративное mashup-программное обеспечение". 17 ноября 2015 г.
  6. ^ "EMML Documentation Directinvoke chapter". Архивировано из оригинала 2009-09-30 . Получено 2009-10-11 .
  7. ^ "EMML Documentation Filter chapter". Архивировано из оригинала 2009-10-17 . Получено 2009-10-11 .
  8. ^ "EMML Documentation Sort chapter". Архивировано из оригинала 29-09-2009 . Получено 11-10-2009 .
  9. ^ "EMML Documentation Groupby chapter". Архивировано из оригинала 29-09-2009 . Получено 11-10-2009 .
  10. ^ "EMML Documentation Merge chapter". Архивировано из оригинала 29-09-2009 . Получено 11-10-2009 .
  11. ^ "EMML Documentation Annotate chapter". Архивировано из оригинала 2009-09-30 . Получено 2009-10-11 .
  12. ^ "EMML Documentation Join chapter". Архивировано из оригинала 2009-09-29 . Получено 2009-10-11 .
  13. ^ "Глава по написанию сценариев в документации EMML". {{cite web}}: Отсутствует или пусто |url=( помощь )