Understanding Applications
Updated on Sep 23, 2022 11 minutes to readApplications and Metadata
An application is a set of tools to organize the data and automate business processes.
From the user perspective, every application consists of a variety of features and modules. These features have to be described (developed) by an application developer.
From the application developer perspective, an application consists of a variety of objects with specific properties and behaviour. These objects are also called metadata objects.
Here are some high-level metadata object types offered by Every8.Cloud Platform: lists, pages, enumerations, data providers, reports, business processes, image library, widgets, and resources. For example, a list as a metadata object can have attributes, forms, print-forms, triggers – these are second-level metadata objects.
As you probably know, the metadata is basically data about data. You can find a lot of information about metadata and different types of metadata, but the most important notion you have to understand is that metadata objects intend to describe the properties and the behaviour of the data objects.
Let’s assume that we are developing a CRM system and we need to create a list of clients.
Application builder (metadata object) | Application (data object) |
Developer Metadata object type: List Metadata object name: Clients | User List: Clients Client: Far Far Away Kingdom |
Attributes: Name: String (100) Address: String (255) City: String (100) ZIP / Postal code: String (10) Phone number: String (20) | Data: Name: Far Far Away Kingdom Address: Royal street City: Unbelieville ZIP / Postal code: 55555 Phone number: 1-555-555-5555 |
The Application builder works with metadata objects while the Application handles data objects. There is no data in the Application builder, the same way there is no metadata objects in the application.
You can think about Application builder as of Metadata editor.
You would be surprised to find out to which extent we live in a world driven by metadata.
People are usually scared when they see a snake, especially in the places where they are not supposed to be. At the same time, they are usually not afraid of cats even if cats are usually bigger than snakes. Our brain already has a set of information about snakes and their degree of danger is much higher comparing to cats. It is considered normal to shake a hand of a stranger you have never met before, but it would be unthinkable to pet a wild lion. The descriptive metadata our brain possesses about snakes, cats, humans, and lions dictate our behaviour when we interact with them. Even if we do not know anything about this specific snake or lion, we know that they represent a much higher danger than another human or a cat. The snake can be harmless, and a stranger can be a serial killer, but these specific characteristics belong to these specific exemplars and do not affect much the general descriptions of their kinds. It would not be exaggeration to assume that 99% of the everyday decisions are taken based on this general descriptions or metadata and not on the data about the objects themselves. That is how important is the role the metadata plays in our day-to-day life.
Let’s find out how it helps in the application development process. Basically, a database table is already a metadata object. If you think about it, that is exactly what it is. It has fields of some types that define the structure of the data and, to some extent, its behaviour.
Speaking about metadata we cannot omit the notion of the level of abstraction. A table in a database can be viewed as a metadata object and it is perfectly fine to use in a discussion with a software developer, but if you use it in a discussion with a business owner, your chances of being understood decreases drastically.
Describing a business model using tables is possible but this description would never be complete. Business models should be described using other types of metadata objects that encompass not only the information about the structure of the data but also the rules of how this data has to be handled. All the types of metadata objects in the Application builder were designed to make the application development process easier and predictable.
Now let’s see what kind of metadata objects are offered by the Application builder.
Lists
List objects help you manage lists of data. Every company has data about its own employees, products, customers (clients), etc. All these examples may be described as list objects. Based on the described business model, the Application builder will automatically create all necessary database tables.
By definition, a list must have items – for example, ‘John Smith’ (or any other name) can be an item in the Employees list. Users can manually add new list items any time, e.g., new employees, new products, new customers.
In a database, each list item is its own record in the main table, where all of the list data is stored.
Enumerations
Enumerations are a structure that store constant value sets. An example could be storing genders (Male and Female). These values are defined during the application development, and users cannot make any changes to these values (adding, modifying, or deleting them) when they use the application.
Every8.Cloud uses enumerations to create a database table with a set of stored constant values. Which brings us to an important feature of enumerations: enumerated values are very important and can be used reliably by application script algorithms.
Pages
With a critical mass of collected data, you can use Reports (see below) to gain insight into this raw data. But every business has volatile aspects that can impact its overall performance. With Pages, you can conveniently have your data in one place.
Using pages, you can display information in different ways, including graphs, buttons, panels, embedded links, etc., that is why pages are often used to develop KPIs, dashboards, etc.
You can combine data from multiple sources and pull them together into a complex screen that shows more complex data – thus making pages (potentially) visually appeasing and intuitive.
Can you just use regular object forms? You sure can. We have added the page components to emphasize that they are not linked directly to a specific list object.
Reports
Reports are used to compile the data from different lists and display it in a way that helps you make sense of it. Reports define algorithms that help users get the necessary output data.
Roles
Roles allow you to define user rights – which user gets access to what.
This can be extremely important for companies that handle sensitive or confidential information, but it can also be helpful for companies that simply want to keep some departments separate – reducing clutter for each employee.
If a single user is assigned multiple roles, access can be granted or denied based on the following rules:
- If any one of the roles has permission, access is granted.
- If none of the roles have permission, access is denied.
Data Providers
Data providers allow you to create and use a virtual view of the data, and then use it in different places in the application.
For example, you might want to create a custom list of overdue invoices which can be used to create different types of charts on the Dashboard.
Essentially, a data provider is an SQL query that you will not need to re-write from scratch each time.
Business Processes
With business processes, you can automate routine tasks in your applications.
This involves actions that are carried out at specific points, to automate routines. When a business process is triggered, it sets off the associated actions.
Resources
At times, you might need an interface feature not currently offered by the Application builder. A resource component allows you to upload most JavaScript and CSS libraries, and easily integrated them into your application.
For example, suppose a client wants to develop a solution for them with a Gantt chart. The Application builder does not support Gantt charts yet – but you can import an external library that allows you to create a Gantt chart and use it as part of your solution.
Widgets
Want your own, custom Lego piece that you can re-use anywhere in your application (e.g. for the same pop-up to appear when you hover your mouse over a client’s name)? Widget feature allows you to create reusable components that could be used in different places of the application.
Images
Application builder offers thousands of integrated icons – but if you would like to use your own, you can create your own image library to give your application your own look and feel.