Cyberrail se décompose en différents modules. Chaque module est un processus différent qui communique avec d’autres modules par l’intermédiaire d’un noeud central. Pour que la communication entre les modules soit efficace, il est souhaitable qu’un modèle de données soit partagé entre ces différents modules.
Parmis ces modules, on peut citer :
L’ensemble de ces modules émettent des messages permettant de communiquer des évènements, des ordres, des informations (voir protocole). Ces messages n’ont pas de destinataire particulier. Chaque module doit par contre annoncer quels sont les messages qu’il souhaite recevoir (afin de ne pas être inondé d’informations peu pertinente pour son fonctionnement propre).
Plusieurs instances du même module peuvent être présente dans le système. Si cette fonctionnalité n’est pas souhaitée, c’est à la charge de chaque module de vérifier qu’une autre instance de ce même module n’est pas déjà présente.
Ces modèles de données sont utilisés par les modules de base de Cyberrail. Cela dit, des modules tiers ne sont pas obligés de suivre ces modèles, seul le respect du protocole étant important.