The architecture of the framework has two main elements:
- Messages: A message can me sent by a human, a system or a machine and can have any type of format that the architecture can understand. It can be a simple string saying “Hello”, calls from other systems using JSON or XML formats or even messages sent by machines in MQTT streams or SMPP.
- Intents: In frontm.js an intent is an object that is able to understand and resolve a message intention.
A frontM.js application is a directed graph created by a sequence of messages connected by intents.
The main job of the developers is to code the intent resolutions and the rules that the architecture will follow to understand what intent to run.
In the example in the diagram below we can see a vessel tracking application. The application flow is very simple. The satellite terminal installed in a vessel sends SMS messages with the current location every 10 minutes.
When a message arrives to the FrontM cloud, the architecture proceeds to identify the intention of the message received. Once the intent is determined, in this case the intent “Location Processor”, the system executes the intent resolution code which messages the DB intents that store the encrypted location in our multi-tenanted database.
On another flow a user opens the FrontM web application which sends an authenticated message to FrontM requesting the location trail of the vessel. The platform again first tries to determine the intention of the message and once the intention is identified, in this case “”Location Request, it proceeds to resolve it by sending a message to the DB intents requesting the location trail. Once the message from the DB is received, the “”Location Request” intent sends a response to the web app.
The FrontM Platform reduces the complexity of an application to functions that receive messages and send responses. The platform implements an abstraction layer that hides the complexity of the platform capabilities like networking, storage, API access, etc.