1. About
Essential is a Metamodeling Framework with a strong focus on the Web.
Implemented in TypeScript (and therefore traspiled to JavaScript) provides a great amount of versatility as it can be used to run in the browser or in the cloud with NodeJS with dedicated resources or serverless frameworks.
Essential for the Web is, currently, in active development and in open Beta for users to test and report feedback.
Origin
The first version of Essential was develop on 2009 using .Net as a standalone Windows application. It was used to create full-complete commercial code generators for years.
Now, this new version is porting all this proven technology to the Web taking full advantage of the Web Platform.
2. Overview
Essential was designed to enable the creation of MDE (Model Driven Engineering) tecnologies in a delcarative way. Metamodels, models, model to model (M2M), model-to-text (M2T) and control DSL are provided to allow the creation of modeling environments and code generators.
The modularity of the approach allows to reuse assets.
Use Cases
Essential can be use used for:
- Create metamodels
- Instanciate metamodels into documents
- Edit the documents with a projectional editor
- Validate a document (model) accordingly to its metamodel
- Create complete and usable Web Forms from metamodels (the document interpreter can be embeded in a thrid-party website)
- Create code generators
- Generate code
- Interpret models
3. Metamodel
The metamodel allows to create the basic building block of almost all metamodels:
- classes (or entities) as the main encapsulation primitive
- properties: to structurally describe the classes
- enumerations: for closed values
- namespaces: to organize it
- The quoted concepts can be extended using Attributes or decorators.
Supported Data Types are:
-
Primitive types:
string
,char
,bool
,int
,long
,float
,decimal
,date
,time
,datetime
,html
,markdown
- A class is a type
- An enumeration is a type
-
Generic lists:
List<IT>
where IT is the item's type. -
Generic dictionaries:
Dictionary<KT, IT>
where KT is the key's type and IT is the item's type. -
Union Types:
A | B | C
(expressing alternatives: same semantics as the oneOf operator in JSONSchema)
Nullable Semantics
Some languages consider properties as nullable or not. Essential considers the nullable property or not as part of the type itself.
For example: a string in some languages is implicitly nullable. In
Essential string
is required but
string?
is nullable.
Import / Export
Load and Save commands suports the following formats:
- Essential: navite concrete syntax. Concise, minimal verbosity
- EMF: Eclipse Modeling Framework ECore format, used for interoperability
- JSON Schema
4. Document Editor
The document editor allow to instantiate a metamodel.
Validation rules defined by the metamodel are enforced on the editor.
A projectional editor is built on the fly for the document.
A projectional editor is built on the fly for the document.
Load command suports: JSON format
Save command suports: JSON, YAML and, XML formats
5. License
Essential is a product created, hosted and offered by Metadev S.L, a Spanish company.
To use it on the web you must adhere the general Terms and Conditions and can use it as is.
Comercial licences for Essential are also available for diverse usage scenarios. In case you needed, feel free to contact us.