Application Modelling in FrontM
Conversations with a purpose
Human interaction is built on conversations. For example, every business transaction starts with a conversation. In business, conversations are always purposeful.
FrontM's framework operates on the assumption that a user will initiate a conversation to perform some kind of business transaction. Of course, a user can perform 'Alexa'-like single actions - "turn on the light", "play my favourite song" - but they can also perform complex actions: tracking a flight location on an offline moving map; co-ordinating the tasks of a cruise ship crew; activating multiple remote sensors; troubleshooting complex machinery; helping fisherman to log their catch. The possibilities are endless.
In a FrontM conversation, the system evaluates the purpose or intention (Intent) of any message the system receives.
Moreover, in FrontM, conversations can be established not only between people and applications; Apps can also talk to each other. This means, therefore, that Apps can also have an Intent. And Apps can send structured messages as well as unstructured ones.
An App developer could put together a conversational app that processes and input and sends the output as a message to another app.
So in FrontM, even conventional user interactions are treated as conversations, which creates a very monolithic architecture to deal with transactions in multiple ways.
Each message arriving to a conversation carries information within it. This happens even if the user has only typed a small piece of text.
When the message arrives, the conversation is in a given State. In that instant, FrontM.js analyses the Intent and processes it. The message will thus modify the State, creating a new one. Conversations in FrontM are State Machines.
The FrontM model is even more powerful, in that conversations can actually keep multiple States. This means that our Apps can switch context within one single conversation, following multiple flows at the same time.