EMML
Encyclopedia
EMML, or Enterprise Mashup Markup Language, is an XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....

 markup language
Markup language
A markup language is a modern system for annotating a text in a way that is syntactically distinguishable from that text. The idea and terminology evolved from the "marking up" of manuscripts, i.e. the revision instructions by editors, traditionally written with a blue pencil on authors' manuscripts...

 for creating enterprise mashups, which are software applications that consume and mash data from variety of sources, often performing logical or mathematical operations as well as presenting data. Mashed data produced by enterprise mashups are presented in graphical user interfaces as mashlets, widgets, or gadgets. EMML can also be considered a declarative mashup Domain Specific Language (DSL). A mashup DSL eliminates the need for complex, time-consuming, and repeatable procedural programming logic to create enterprise mashups. EMML also provides a declarative language for creating visual tools for enterprise mashups. EMML is an open language specification that is promoted by the Open Mashup Alliance
Open Mashup Alliance
The Open Mashup Alliance is a non-profit consortium that promotes the adoption of mashup solutions in the enterprise through the evolution of enterprise mashup standards like EMML. Enterprise mashup usage is expected to grow tenfold in the next five years...

 (see below), with the eventual objective of submitting the specification to a recognized industry standards body. The language is free-to-use, including technologies that embed or use it.
The primary benefits of EMML are mashup design portability and interoperability of mashup solutions. These benefits are expected to accelerate the adoption of enterprise mashups by creating transferable skills for software developers and reducing vendor lock-in
Vendor lock-in
In economics, vendor lock-in, also known as proprietary lock-in or customer lock-in, makes a customer dependent on a vendor for products and services, unable to use another vendor without substantial switching costs...

. The introduction of EMML is expected to help accelerate the trend toward the integration of Web-based applications and Service-oriented architecture
Service-oriented architecture
In software engineering, a Service-Oriented Architecture is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components that can be reused for...

 (SOA) technologies. Bank of America
Bank of America
Bank of America Corporation, an American multinational banking and financial services corporation, is the second largest bank holding company in the United States by assets, and the fourth largest bank in the U.S. by market capitalization. The bank is headquartered in Charlotte, North Carolina...

 was a high-profile early supporter of EMML. Other prominent early supporters included Hewlett-Packard
Hewlett-Packard
Hewlett-Packard Company or HP is an American multinational information technology corporation headquartered in Palo Alto, California, USA that provides products, technologies, softwares, solutions and services to consumers, small- and medium-sized businesses and large enterprises, including...

, Capgemini
Capgemini
Capgemini is a French global IT services company, one of the world's largest management consulting, outsourcing and professional services companies with a staff of 114,274 operating in 40 countries. It is headquartered in Paris and was founded in 1967 by Serge Kampf, the current chairman, in...

, Adobe Systems
Adobe Systems
Adobe Systems Incorporated is an American computer software company founded in 1982 and headquartered in San Jose, California, United States...

, and Intel.

EMML History

Raj Krishnamurthy (Chief Architect at JackBe Corporation) and Deepak Alur (VP Engineering at JackBe Corporation) started working on EMML in 2006. Their objective was to enable user-oriented and user-enabled mashups by creating what was then a new type of middleware called an Enterprise Mashup Platform. Raj Krishnamurthy became the chief language designer and implementer of EMML and also led the team to create an Eclipse
Eclipse (software)
Eclipse is a multi-language software development environment comprising an integrated development environment and an extensible plug-in system...

-based EMML IDE
Integrated development environment
An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...

 called Mashup Studio. This work evolved into the EMML reference implementation that was donated to the Open Mashup Alliance
Open Mashup Alliance
The Open Mashup Alliance is a non-profit consortium that promotes the adoption of mashup solutions in the enterprise through the evolution of enterprise mashup standards like EMML. Enterprise mashup usage is expected to grow tenfold in the next five years...

. Raj Krishnamurthy continues to be one of the key contributors to EMML through the Open Mashup Alliance
Open Mashup Alliance
The Open Mashup Alliance is a non-profit consortium that promotes the adoption of mashup solutions in the enterprise through the evolution of enterprise mashup standards like EMML. Enterprise mashup usage is expected to grow tenfold in the next five years...

.

EMML and Open Mashup Alliance

The Open Mashup Alliance
Open Mashup Alliance
The Open Mashup Alliance is a non-profit consortium that promotes the adoption of mashup solutions in the enterprise through the evolution of enterprise mashup standards like EMML. Enterprise mashup usage is expected to grow tenfold in the next five years...

  (OMA) was launched to promote enterprise mashup interoperability and portability. The OMA is developing EMML as an industry specification that is available under a Creative Commons
Creative Commons
Creative Commons is a non-profit organization headquartered in Mountain View, California, United States devoted to expanding the range of creative works available for others to build upon legally and to share. The organization has released several copyright-licenses known as Creative Commons...

 Attribution No Derivatives license. The license means that EMML users are allowed to copy and distribute EMML. However, EMML can not be modified by users and the ownership of EMML by the OMA must be made clear in any redistribution. The OMA Web site provides the EMML specification , the EMML schema, a reference runtime implementation capable of running EMML scripts, sample EMML mashup scripts, and technical documentation.

The eventual objective of the OMA is to submit the EMML specification and any other OMA specifications to a recognized industry standards body.

EMML Features

EMML language provides a rich set of high-level mashup-domain vocabulary to consume and mash a variety of Web data-sources in flexible ways. EMML provides a uniform syntax to invoke heterogeneous service styles: REST
Rest
Rest may refer to:* Leisure* Human relaxation* SleepRest may also refer to:* Rest , a pause in a piece of music* Rest , the relation between two observers* Rest , a 2008 album by Gregor Samsa...

, WSDL, RSS
RSS
-Mathematics:* Root-sum-square, the square root of the sum of the squares of the elements of a data set* Residual sum of squares in statistics-Technology:* RSS , "Really Simple Syndication" or "Rich Site Summary", a family of web feed formats...

/ATOM
Atom
The atom is a basic unit of matter that consists of a dense central nucleus surrounded by a cloud of negatively charged electrons. The atomic nucleus contains a mix of positively charged protons and electrically neutral neutrons...

, RDBMS, and POJO
Pojo
Pojo may refer to:* Pohja, the Swedish name for the Finnish municipality* POJO, abbreviation of Plain Old Java Object in computer programming...

. The EMML language also provides ability to mix diverse data formats: XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....

, JSON
JSON
JSON , or JavaScript Object Notation, is a lightweight text-based open standard designed for human-readable data interchange. It is derived from the JavaScript scripting language for representing simple data structures and associative arrays, called objects...

, JDBC, JavaObjects, and primitive types.

High-level EMML language features include:
  • Filter and sort data coming from heterogeneous services
  • Join data across heterogeneous services and data formats
  • Group and aggregate data using assorted functions
  • Annotate original service data to enrich its semantic meaning
  • Merge multiple data streams into consolidated datasets
  • Split datasets to select individual data fields
  • Embedded scripting support for JavaScript
    JavaScript
    JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....

    , JRuby
    JRuby
    JRuby is a Java implementation of the Ruby programming language, being developed by the JRuby team. It is free software released under a three-way CPL/GPL/LGPL license...

    , Groovy, XQuery
    XQuery
    - Features :XQuery provides the means to extract and manipulate data from XML documents or any data source that can be viewed as XML, such as relational databases or office documents....

  • Web clipping to scrape data from HTML
    HTML
    HyperText Markup Language is the predominant markup language for web pages. HTML elements are the basic building-blocks of webpages....

     pages
  • Conditional statements - If/Then/Else, While, ForEach
  • Parallel syntax for concurrent processing


EMML is primarily a XML-based declarative language, but also provides ability to encode complex logic using embedded scripting engines. XPath
XPath
XPath is a language for selecting nodes from an XML document. In addition, XPath may be used to compute values from the content of an XML document...

 is the expression language used in EMML.

Directinvoke statement

directinvoke provides ability to invoke and consume a variety of data services. These data services may be REST
Rest
Rest may refer to:* Leisure* Human relaxation* SleepRest may also refer to:* Rest , a pause in a piece of music* Rest , the relation between two observers* Rest , a 2008 album by Gregor Samsa...

, RSS
RSS
-Mathematics:* Root-sum-square, the square root of the sum of the squares of the elements of a data set* Residual sum of squares in statistics-Technology:* RSS , "Really Simple Syndication" or "Rich Site Summary", a family of web feed formats...

/ATOM
Atom
The atom is a basic unit of matter that consists of a dense central nucleus surrounded by a cloud of negatively charged electrons. The atomic nucleus contains a mix of positively charged protons and electrically neutral neutrons...

, or SOAP services. directinvoke also supports Web clipping by allowing HTML
HTML
HyperText Markup Language is the predominant markup language for web pages. HTML elements are the basic building-blocks of webpages....

 pages to be specified as service endpoints. HTTP GET, POST, PUT, and DELETE protocols are supported in directinvoke. HTTP Header and cookie support is also available thus providing capability to consume a wide variety of REST
Rest
Rest may refer to:* Leisure* Human relaxation* SleepRest may also refer to:* Rest , a pause in a piece of music* Rest , the relation between two observers* Rest , a 2008 album by Gregor Samsa...

/SOAP Web service
Web service
A Web service is a method of communication between two electronic devices over the web.The W3C defines a "Web service" as "a software system designed to support interoperable machine-to-machine interaction over a network". It has an interface described in a machine-processable format...

s. It is possible to use directinvoke with a proxy server.

Code sample of passing attributes as parameters to a service:




method="GET" outputvariable="$result" query="items=all"

appID="67GYH30N25" />


method="GET" outputvariable="$news" xmlns:sc="http://www.svcltd.com/"

sc:date="20070515" sc:nights="3"/>


Filter statement

The filter statement filters the content of a variable using an XPath
XPath
XPath is a language for selecting nodes from an XML document. In addition, XPath may be used to compute values from the content of an XML document...

 expression and places the result in a new variable.

Code sample for filtering west-coast customers using region data-item:



filterexpr="/customers[region='West']" outputvariable="$westCoastOnly"/>

Sort statement

The sort statement sorts the content of a document-type variable or variable fragment based on key expressions and places the result in another variable.

Code sample that sorts tickets based on created date and customer:



sortexpr="ticket"

sortkeys="xs:date(created) descending, customer ascending"

outputvariable="$troubleTickets"/>


Groupby statement

groupby provides the ability to group and aggregate data sets. Standard XPath
XPath
XPath is a language for selecting nodes from an XML document. In addition, XPath may be used to compute values from the content of an XML document...

 aggregation operations can be used and there is an extension mechanism for adding user-defined functions. Nested Grouping of hierarchical data sets are also supported. There is a Having clause to filter Group attributes.

Code sample that groups books by genre and computes total copies for each genre:








Merge statement

merge provides ability to combine various data sources including RSS
RSS
-Mathematics:* Root-sum-square, the square root of the sum of the squares of the elements of a data set* Residual sum of squares in statistics-Technology:* RSS , "Really Simple Syndication" or "Rich Site Summary", a family of web feed formats...

/ATOM
Atom
The atom is a basic unit of matter that consists of a dense central nucleus surrounded by a cloud of negatively charged electrons. The atomic nucleus contains a mix of positively charged protons and electrically neutral neutrons...

 feeds, XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....

, JSON
JSON
JSON , or JavaScript Object Notation, is a lightweight text-based open standard designed for human-readable data interchange. It is derived from the JavaScript scripting language for representing simple data structures and associative arrays, called objects...

 payload formats. The merge feature is similar to SQL UNION functionality but merges hierarchical document structures.

Code sample that merges Yahoo! News, Financial News, and Reuters feeds:



outputvariable="$NewsAggregate"/>

Annotate statement

annotate provides ability to enrich the semantic meaning of source service data with microformat-like elements/attributes. These data annotations can be used by mashlets or gadgets to provide richer visual user interfaces.

Code sample for annotating vendor payload with geo-coordinates:




element geo:lat { $georesult//y:Latitude/string },

element geo:long { $georesult//y:Longitude/string }



Join statement

The join statement defines how disparate, hierarchical data formats are joined and is comparable to inner joins for relational databases.

Code sample where output variable contains a element with a repeating set of children, which are the repeating items. Each contains a child with data from the variable named movies and and children with data from the variable named reviews:



joincondition="$movies/movie/@id = $reviews/review/movie/title">





Scripting in EMML

EMML is a declarative language, but provides programmatic scripting extensions for performing complex mashup logic. JavaScript
JavaScript
JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....

, JRuby
JRuby
JRuby is a Java implementation of the Ruby programming language, being developed by the JRuby team. It is free software released under a three-way CPL/GPL/LGPL license...

, Groovy, POJO
Pojo
Pojo may refer to:* Pohja, the Swedish name for the Finnish municipality* POJO, abbreviation of Plain Old Java Object in computer programming...

, XQuery
XQuery
- Features :XQuery provides the means to extract and manipulate data from XML documents or any data source that can be viewed as XML, such as relational databases or office documents....

 scripting environments are supported. Data flows seamlessly between EMML and scripting environments.

Code sample where JavaScript
JavaScript
JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....

 snippet is used to extract authentication token that is required for subsequent calls "result" variable that gets propagated to JavaScript
JavaScript
JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....

 environment:




See also

  • Open Mashup Alliance
    Open Mashup Alliance
    The Open Mashup Alliance is a non-profit consortium that promotes the adoption of mashup solutions in the enterprise through the evolution of enterprise mashup standards like EMML. Enterprise mashup usage is expected to grow tenfold in the next five years...

  • Mashup (web application hybrid)
    Mashup (web application hybrid)
    In Web development, a mashup is a Web page or application that uses and combines data, presentation or functionality from two or more sources to create new services...

  • Domain-specific language (DSL)

Further reading


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK