Articulo de referencia

Lenguaje de marcado de mashup empresarial

El lenguaje de marcado EMML ( Enterprise Mashup Markup Language ) es un lenguaje de marcado XML para crear mashups empresariales , que son aplicaciones de software que consumen ...

El lenguaje de marcado EMML ( Enterprise Mashup Markup Language ) es un lenguaje de marcado XML para crear mashups empresariales , que son aplicaciones de software que consumen y combinan datos de diversas fuentes. Estas aplicaciones suelen realizar operaciones lógicas o matemáticas, además de presentar los datos.

Los datos combinados producidos por las aplicaciones mashup empresariales se presentan en interfaces gráficas de usuario como mashlets, widgets o gadgets. EMML también puede considerarse [ 1 ] un lenguaje específico de dominio (DSL) declarativo para aplicaciones mashup . Un DSL para aplicaciones mashup elimina la necesidad de una lógica de programación procedimental compleja, laboriosa y repetitiva para crear aplicaciones mashup empresariales. EMML también proporciona un lenguaje declarativo para crear herramientas visuales para aplicaciones mashup empresariales.

Las principales ventajas de EMML son la portabilidad del diseño de mashups y la interoperabilidad de las soluciones de mashups. Se espera que estas ventajas aceleren la adopción de mashups empresariales al generar habilidades transferibles para los desarrolladores de software y reducir la dependencia de un único proveedor .

Se espera que la introducción de EMML ayude a acelerar la tendencia hacia la integración de aplicaciones web y tecnologías de arquitectura orientada a servicios (SOA). [ 2 ] Bank of America fue uno de los primeros y más destacados partidarios de EMML. [ 3 ] Otros partidarios destacados fueron Hewlett-Packard , Capgemini , Adobe Systems e Intel . [ 4 ]

Historia de EMML

Raj Krishnamurthy (arquitecto jefe de JackBe Corporation) y Deepak Alur (vicepresidente de ingeniería de JackBe Corporation) comenzaron a trabajar en EMML en 2006. Su objetivo era habilitar mashups orientados al usuario y habilitados por el usuario mediante la creación de lo que entonces era un nuevo tipo de middleware llamado Enterprise Mashup Platform. Raj Krishnamurthy se convirtió en el diseñador principal del lenguaje e implementador de EMML y también lideró al equipo en la creación de un IDE EMML basado en Eclipse llamado Mashup Studio. [ 5 ] Este trabajo evolucionó hasta convertirse en la implementación de referencia de EMML que se donó a la Open Mashup Alliance. Raj Krishnamurthy continúa siendo uno de los principales contribuyentes a EMML a través de la Open Mashup Alliance.

Características de EMML

El lenguaje EMML proporciona un vocabulario de dominio de mashup de alto nivel para consumir y combinar diversas fuentes de datos web de forma flexible. EMML ofrece una sintaxis uniforme para invocar estilos de servicio heterogéneos: REST , WSDL , RSS / ATOM , RDBMS y POJO . Además, el lenguaje EMML permite combinar diversos formatos de datos: XML , JSON , JDBC , JavaObjects y tipos primitivos.

Las características de alto nivel del lenguaje EMML incluyen:

  • Filtra y ordena los datos procedentes de servicios heterogéneos.
  • Combinar datos de servicios y formatos de datos heterogéneos.
  • Agrupe y agregue datos utilizando diversas funciones.
  • Anote los datos originales del servicio para enriquecer su significado semántico.
  • Combinar múltiples flujos de datos en conjuntos de datos consolidados.
  • Divida los conjuntos de datos para seleccionar campos de datos individuales.
  • Soporte de scripting integrado para JavaScript , JRuby , Groovy y XQuery.
  • Recorte web para extraer datos de páginas HTML .
  • Sentencias condicionales - If/ Then/ Else, While,ForEach
  • Sintaxis paralela para el procesamiento concurrente

EMML es principalmente un lenguaje declarativo basado en XML, pero también permite codificar lógica compleja mediante motores de scripting integrados. XPath es el lenguaje de expresiones utilizado en EMML.

Declaración DirectInvoke

directinvoke[ 6 ] proporciona la capacidad de invocar y consumir una variedad de servicios de datos. Estos servicios de datos pueden serserviciosREST,RSS/ATOMoSOAPdirectinvokeTambién admite el recorte web al permitir queHTMLse especifiquen como puntos finales del servicio.Se admiten los protocolosHTTP GET, ,POST,PUTy. También está disponible la compatibilidad con encabezados HTTP y cookies, lo que proporciona la capacidad de consumir una amplia variedad deservicios webREST/SOAP. Es posible utilizarlocon un servidor proxy.DELETEdirectinvokedirectinvoke

Ejemplo de código para pasar atributos como parámetros a un servicio:

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

Declaración de filtro

La instrucción filter[ 7 ] filtra el contenido de una variable usando una expresión XPath y coloca el resultado en una nueva variable.

Ejemplo de código para filtrar clientes de la costa oeste utilizando el elemento de datos de región:

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

instrucción de ordenación

La instrucción sort[ 8 ] ordena el contenido de una variable de tipo documento o fragmento de variable en función de expresiones clave y coloca el resultado en otra variable.

Ejemplo de código que ordena los tickets según la fecha de creación y el cliente:

<sort inputvariable= "$troubleTickets" sortexpr= "ticket" sortkeys= "xs:date(created) descending, customer ascending" outputvariable= "$troubleTickets" />