Enterprise Mashup Markup Language
   HOME

TheInfoList



OR:

EMML, or Enterprise Mashup Markup Language, is an
XML Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. T ...
markup language Markup language refers to a text-encoding system consisting of a set of symbols inserted in a text document to control its structure, formatting, or the relationship between its parts. Markup is often used to control the display of the document ...
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 A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging ...
(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. 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 In economics, vendor lock-in, also known as proprietary lock-in or customer lock-in, makes a customer dependent on a vendor for products, unable to use another vendor without substantial switching costs. The use of open standards and alternat ...
. The introduction of EMML is expected to help accelerate the trend toward the integration of Web-based applications and
service-oriented architecture In software engineering, service-oriented architecture (SOA) is an architectural style that focuses on discrete services instead of a monolithic design. By consequence, it is also applied in the field of software design where services are provid ...
(SOA) technologies.
Bank of America The Bank of America Corporation (often abbreviated BofA or BoA) is an American multinational investment bank and financial services holding company headquartered at the Bank of America Corporate Center in Charlotte, North Carolina. The bank ...
was a high-profile early supporter of EMML. Other prominent early supporters included
Hewlett-Packard The Hewlett-Packard Company, commonly shortened to Hewlett-Packard ( ) or HP, was an American multinational information technology company headquartered in Palo Alto, California. HP developed and provided a wide variety of hardware components ...
, Capgemini,
Adobe Systems Adobe Inc. ( ), originally called Adobe Systems Incorporated, is an American multinational computer software company incorporated in Delaware and headquartered in San Jose, California. It has historically specialized in software for the cre ...
, and
Intel Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California. It is the world's largest semiconductor chip manufacturer by revenue, and is one of the developers of the x86 ser ...
.


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 An eclipse is an astronomical event that occurs when an astronomical object or spacecraft is temporarily obscured, by passing into the shadow of another body or by having another body pass between it and the viewer. This alignment of three c ...
-based EMML IDE called Mashup Studio. This work evolved into the EMML reference implementation that was donated to the Open Mashup Alliance. Raj Krishnamurthy continues to be one of the key contributors to EMML through the Open Mashup Alliance.


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, WSDL, RSS/
ATOM Every atom is composed of a nucleus and one or more electrons bound to the nucleus. The nucleus is made of one or more protons and a number of neutrons. Only the most common variety of hydrogen has no neutrons. Every solid, liquid, gas, a ...
,
RDBMS A relational database is a (most commonly digital) database based on the relational model of data, as proposed by E. F. Codd in 1970. A system used to maintain relational databases is a relational database management system (RDBMS). Many relatio ...
, and POJO. The EMML language also provides ability to mix diverse data formats:
XML Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. T ...
,
JSON JSON (JavaScript Object Notation, pronounced ; also ) is an open standard file format and data interchange format that uses human-readable text to store and transmit data objects consisting of attribute–value pairs and arrays (or other se ...
, 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 (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of websites use JavaScript on the client side for webpage behavior, of ...
, JRuby, Groovy,
XQuery XQuery (XML Query) is a query and functional programming language that queries and transforms collections of structured and unstructured data, usually in the form of XML, text and with vendor-specific extensions for other data formats (JSON, b ...
* Web clipping to scrape data from
HTML The HyperText Markup Language or HTML is the standard markup language for documents designed to be displayed in a web browser. It can be assisted by technologies such as Cascading Style Sheets (CSS) and scripting languages such as JavaS ...
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 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, RSS/
ATOM Every atom is composed of a nucleus and one or more electrons bound to the nucleus. The nucleus is made of one or more protons and a number of neutrons. Only the most common variety of hydrogen has no neutrons. Every solid, liquid, gas, a ...
, or
SOAP Soap is a salt of a fatty acid used in a variety of cleansing and lubricating products. In a domestic setting, soaps are surfactants usually used for washing, bathing, and other types of housekeeping. In industrial settings, soaps are us ...
services. directinvoke also supports Web clipping by allowing
HTML The HyperText Markup Language or HTML is the standard markup language for documents designed to be displayed in a web browser. It can be assisted by technologies such as Cascading Style Sheets (CSS) and scripting languages such as JavaS ...
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/
SOAP Soap is a salt of a fatty acid used in a variety of cleansing and lubricating products. In a domestic setting, soaps are surfactants usually used for washing, bathing, and other types of housekeeping. In industrial settings, soaps are us ...
Web services. It is possible to use directinvoke with a proxy server. Code sample of passing attributes as parameters to a service:


Filter statement

The filter statement filters the content of a variable using an XPath expression and places the result in a new variable. Code sample for filtering west-coast customers using region data-item: egion='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:


Groupby statement

groupby provides the ability to group and aggregate data sets. Standard XPath 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/
ATOM Every atom is composed of a nucleus and one or more electrons bound to the nucleus. The nucleus is made of one or more protons and a number of neutrons. Only the most common variety of hydrogen has no neutrons. Every solid, liquid, gas, a ...
feeds,
XML Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. T ...
,
JSON JSON (JavaScript Object Notation, pronounced ; also ) is an open standard file format and data interchange format that uses human-readable text to store and transmit data objects consisting of attribute–value pairs and arrays (or other se ...
payload formats. The merge feature is similar to SQL UNION functionality but merges hierarchical document structures. Code sample that merges
Yahoo! News Yahoo! News is a news website that originated as an internet-based news aggregator by Yahoo!. The site was created by a Yahoo! software engineer named Brad Clawsie in August 1996. Articles originally came from news services such as the Associate ...
,
Financial News ''Financial News'' is a financial newspaper and news website published in London. It is a weekly newspaper, published by eFinancial News Limited, covering the financial services sector through news, views and extensive people coverage. ''Fi ...
, and
Reuters Reuters ( ) is a news agency owned by Thomson Reuters Corporation. It employs around 2,500 journalists and 600 photojournalists in about 200 locations worldwide. Reuters is one of the largest news agencies in the world. The agency was est ...
feeds:


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 , element geo:long


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:


Scripting in EMML

EMML is a declarative language, but provides programmatic scripting extensions for performing complex mashup logic.
JavaScript JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of websites use JavaScript on the client side for webpage behavior, of ...
, JRuby, Groovy, POJO,
XQuery XQuery (XML Query) is a query and functional programming language that queries and transforms collections of structured and unstructured data, usually in the form of XML, text and with vendor-specific extensions for other data formats (JSON, b ...
scripting environments are supported. Data flows seamlessly between EMML and scripting environments. Code sample where
JavaScript JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of websites use JavaScript on the client side for webpage behavior, of ...
snippet is used to extract authentication token that is required for subsequent calls "result" variable that gets propagated to
JavaScript JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of websites use JavaScript on the client side for webpage behavior, of ...
environment:


References

{{DEFAULTSORT:Emml Scripting languages Domain-specific programming languages Query languages Open standards Web services XML markup languages Markup languages User interface markup languages XML-based standards Mashup (web application hybrid) Software architecture Web development software Rich web applications