MashZone NextGen 10.2 | Appendix | Legacy Presto components | MashZone NextGen APIs, Specifications and Extension Points | Enterprise Mashup Markup Language: The Mashup Domain Language
 
Enterprise Mashup Markup Language: The Mashup Domain Language
The Enterprise Mashup Markup Language (EMML) is the domain language for mashups from the Open Mashup Alliance (OMA). MashZone NextGen provides a full implementation of EMML and extends its capabilities to work with all types of MashZone NextGen mashables and mashups within MashZone NextGen governance as well as large, streaming datasets using RAQL.
The EMML DSL provides a simple, declarative vocabulary in XML. You create mashup scripts using MashZone NextGen tools that provide a visual or code perspective of the mashups script. Mashup scripts are written in EMML that is interpreted by the MashZone NextGen Server at runtime.
EMML in MashZone NextGen provides simple, straight-forward semantics to address a wide range of mashup requirements, including:
*Invoking MashZone NextGen mashable information sources or other mashups, within defined access policies.
*Invoking any web-based service or URL where access should not be limited.
*Invoking SQL commands directly for multiple database tables in a single datasource.
*Loading, storing or querying and analyzing streaming datasets using the Real-Time Analytics Query Language .
*Defining variables and parameters with simple types or complex types. Complex types are represented as well-formed XML documents, allowing any level of structure or hierarchy needed.
*Variable scoping for flexibility.
*Constructing variables and results with static or dynamic content. Selecting specific records or specific columns.
*Combining data that is structurally identical (a merge) or that shares a relationship (a join).
*Providing common flow-control logic such as for loops, if-then-else or sequential flows.
*Transforming data including:
*Sorting.
*Filtering.
*Grouping.
*Assigning simple values or whole or partial complex structures.
*Annotating to add data or meta-data to existing structures.
*XPath functions, both standard and user-defined for data conversions, validations, calculations and formatting.
*XSLT stylesheets to handle complex transformations or leverage existing logic.
*Providing character encoding support and CDATA escaping.
*Handling transactions, both for database mashables and direct SQL commands.
Note: EMML does not support distributed transactions.
*Including metadata, both user-defined and defined by MashZone NextGen.
*Supporting debugging needs with assertions or dynamic messages.
*Supporting exception handling with try/catch.
*Allowing dynamic expressions and templating for EMML properties, including XPath expressions.
*Extension points to easily support domain-specific and custom logic at different levels within mashups. See Mashup Extensions in EMML for details.
Using an XML vocabulary allows EMML to be easily written by tools or off-the-shelf editors. It builds on the XPath, XQuery and XSLT standards for strong query and transformation features.
Mashup Extensions in EMML
EMML supports several extension points for mashups.
This includes:
*Mashups can themselves be reusable logic designed to provide common functionality to other mashups.
For example, a mashup can log in to a specific mashable and provide authentication tokens or cookies as output to any mashup that needs to work with that mashable.
*Macros define custom statements in EMML. They accept input, provide output and can include any mashup logic, including defining and calling other macros.
Macros can be used in just one mashup or macro. Or they can be published in libraries for use in any mashup or macro. Macros also provide an extension point for Wires.
Note: MashZone NextGen registers macros in the MashZone NextGen Repository just as it does with mashups to support easier deployment and straight forward visibility in clustered environments.
For example, a macro can perform a domain-specific weighted average calculation or can encrypt/decrypt data for a specific encryption algorithm.
*Hooks to call scripts in Groovy or JavaScript or to access Java classes. This provides direct, easy access to existing logic or enables custom logic using familiar languages.
Scripting does have an impact on performance. In many cases, a custom XPath function is a better solution.
*Custom XPath functions written with the MashZone NextGen Custom XPath API are particularly useful for logic that transforms data or perform calculations or validation. XPath functions also provide better performance than scripting.
You can use these extensions in Mashup Editor, the EMML code editor. Many of these extensions can also be used in Wires, the visual tool editor.

Copyright © 2013-2018 | Software AG, Darmstadt, Germany and/or Software AG USA, Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates and/or their licensors.
Innovation Release